您好,欢迎访问三七文档
VCS简易教程1.编译所有点v文件:vcs*.v-debug_all-R-gui-ltop_log-debug_all表示调用UCLI和DVE,并为进一步的DVE调试建立必要的文档;-R表示编译之后立即运行仿真;-gui表示在仿真0时刻打开DVE界面;-l表示记录编译过程日志,后跟日志文件名2.在HierarchyBrowser窗口中选中module(左图),则其端口信号会显示在DataPane窗口中(右图)在DataPane窗口中选中要显示的信号,右击addtowaves-newwaveview(波形窗口打开)4.设置仿真时间在空格栏中输入仿真时间,点击左边的下箭头,开始仿真,右下角的2,1/2是波形放大缩小5.调试波形显示后,如果又添加了新的信号,则重新点restart图标,这时波形不显示(modelsim仍然保留),点击工具栏的加载波形,如下图的下拉箭头如果要调试内部某个模块的信号,先在HierarchyBrowser窗口选中module(上面的第3步),可以通过RTL代码的例化名查找,如上例:例化了双口RAM例化名为code_u,添加code_u的所有信号都波形窗口,信号很多,包括内部的很多wire,buffer等。可在波形窗口中过滤这些信号,只留下输入输出端口,方法如下:点击上图中过滤信号下拉箭头,将不需要的信号过滤(把勾号去掉,默认为所有勾都选上)Wave窗口中只剩下输入输出信号。然后进行仿真。若要区分不同的信号组,以便观察,可以插入分割信号:菜单signale-InsertDivider后端网表仿真》后仿真,需在tb文件中加入sdf文件,如下:initialbegin$sdf_annotate(XXXX.sdf,top_module_name);//例:(“xxx.sdf”,soc_i)end(sdf要在PT中生成,DC输出的sdf可能会有写warning)》标准单元库文件有两种,分别为tsmc18_neg和tsmc18,前者支持neg_tchk负延迟检查,后者不支持。因为holdtimecheck的值是负的,所以要进行negativetimingcheck,否则默认将会使负值的holdtimecheck改为0,对holdtime负值的检查,在vcs时加上+neg_tchk这个option。1.编译源文件并启动软件图形界面vcssoc_lvs.v./tb/*.v./tb/mem/*.v./tb/uart/*.v./TSMC.18/*.v-debug_all-R-gui-lsoc_log+incdir+./tb./tb/uart./tb/mem+v2k-toptb-negdelay+neg_tchk+maxdelays+sdfverbose+no_notifier(需输出编译日志加“soc_vcs.log”表示运行log存于soc_vcs.log)参数解释:(参考VCS仿真指南(第二版))-debug_all表示调用UCLI和DVE,并为进一步的DVE调试建立必要的文档;-R表示编译之后立即运行仿真;-gui表示在仿真0时刻打开DVE界面;-l表示记录编译过程日志,后跟日志文件名;+incdir+表示文件搜索路径+v2k表示支持verilog2001标准-top设置编译顶层模块,后跟顶层modele名,不是文件名。-negdelay消除负延迟引起的error(也可不加,忽略这个error)+neg_tchk支持负延迟检查,主要是检查holdtime,否则反标中会把负值忽略为0+maxdelays用SDF文件中的延迟,取代仿真库中的延时(仿真库中通常是建立时间1ns,保持时间0.5ns),取SDF文件中的最大延迟+mindelays用SDF文件中的延迟,取代仿真库中的延时,取SDF文件中的最小延迟(保持时间检查)+sdfverbose显示所有的sdf反标错误+no_notifier关闭时序检查函数中的不定态生成传播,即通过这个参数,如果有时序违规,控制台会报告,但不会影响逻辑功能的正确输出。只做网表的功能仿真可以用+nospecify:消除所以延迟;而+notimingchecks只是消除延迟违规断言,避免输出不定态,但延迟还在。因此+nospecify的作用包括了+notimingchecks运行后控制台有warning:SDFWarning:Cannotfindtimingcheck$setup(posedgeCLKB,posedgeCLKA,…)以及error:SDFError:NegativeDELAYignoredandreplacedby0.》Warning是因为PT输出SDF时,根据双口RAM的时序模型有检查CLKA和CLKB时序,而设计方案中用的是单一时钟,因此该warning可忽略。Error是因为SDF文件中有负延迟,VCS将其忽略,并用0取代负值。可忽略,不影响。》加参数-negdelay可消除负延迟导致的error,变成warning:SDFWarning:NegativeIOPATHDELAYAtoYignored.2.添加波形》如要观察tb顶层端口的信号,点Data.1,切换到信号窗口,可选中所有窗口中的信号,然后右击,addtowave-newwaveview。》后仿真中,经常需要观察内部的信号,而此时内核结构已经被打散成统一的网表,不易像RTL级仿真一样找到对应的module。可在Hierarchy区域右击,点expandall,则展开区域中所有的加号,包括module,reg等等,然后在顶部的Sim栏中,填入模糊搜索的module名,找到module后,选中,则该module的可观测信号显示在右侧的Data1栏中,然后可在其中添加需要的信号到wave。该方法只能添加端口信号,内部信号的输入输出。如果要追踪某条关键路径,追踪某个寄存器的时序违规,则必须在Hierarchy中找信号对应的寄存器,这样才能在Data1中看到这个寄存器所有的端口。比如要观察SDRAM的输入数据s_data_i,这个是端口信号,连接到寄存器的D端,寄存器的信号名为dp_rdata,则在Sim栏中先输入“**”,然后在两个*号之间输入信号名,“*dp_rdata*”,则Hierarchy窗口中就会显示对应的信号了,如图3选中所有dp_rdata信号(16bit矢量),addtowave-newwaveview,则所有信号都显示在波形窗口中,包括所有的使能信号等,如图4在信号列表顶端输入要显示的信号名,可过滤无用的信号,如:输入Q则信号列表只显示所有寄存器的输出Q端,如图5,同理要保留输入信号D,则输入D即可。为了观察信号数据,可将位矢量还原成BUS类型:选中列表中所有Q信号,右击setbus,弹出如下窗口如上图所示,信号从高到低(15~0),按高位到低位建立总线,要注意高低位是否对应,如图6就对应反了,此时可选择所有信号,按左边的顺时针图标,则所有信号排序上下对调,如图7在Name栏中填入要创建的总线名称,我们填入dp_rdata,然后点下方的Create,则生成了总线并显示在窗口顶部,如图8在窗口顶部,选中已经生成的总线,点右边的AddtoList图标,如图9至此,总线型信号添加完毕,关闭总线创建窗口。观察波形窗口的分组显示下拉栏,可看到刚才添加到list的dp_rdata,命名为Group1,选中它,即可显示在窗口中。如图10添加其他信号同理,要通过波形观察时序时,时序的参考时钟必须选对应寄存器的输入时钟,即要将dp_rdata寄存器的CK添加到波形窗口中,而非soc_i顶层的clk,因为时钟树综合后中间插入了很多buffer。3.信号跟踪要跟踪某个信号的前级驱动(如某个信号出现不定态),可直接在波形窗口中选中对应的信号,右击,showschematic,可显示原理图。在原理图中找前级驱动,可直接把原理图中的信号拖到波形窗口中显示。其他很多操作,与modelsim类似。4.UPF低功耗调试,可添加到WAVE仿真后看各电压域电压
本文标题:VCS简易图文教程
链接地址:https://www.777doc.com/doc-4600519 .html