您好,欢迎访问三七文档
VCSTheVerilogCompilerSimulator仿真的过程编译CompileVCS对源文件进行编译,生成中间文件和可执行文件仿真Simulate运行可执行文件,对设计进行仿真调试通过观察波形、设置断点、追踪信号、查看schematic等来发现错误,并进行纠正覆盖率测试通过在编译时,加入覆盖率测试的选项、仿真后,生成包含覆盖率信息的中间文件来显示测试平台的正确性和完备性。一、编译:VCS一个常见的编译命令如下:vcsdesign.v-ffile.f-ylib_dir+libext+.v-vlib_filepli.c\-Ppli.tab-Mupdate-obin_name-llog_file+v2k-R-RI-s\-debug_all+vcsd+define+m1+m2+timopt+period-line\+incdir+dir1+dir2+memopt[+2]-sverilog-mhdl+ad\-full64-comp64+nospecify+notimingcheck-ntb+race\-ova_filefile_ova+vpdfile+file_vpd+vpdfilesize+nMB\+vpdupdate+cli+1|2|3|4+vcs+initmem+0|1|x|z\+vcs+initreg+0|1|x|z+vc-cmline|tgl|cond|fsm|path|branch-cm_dirdir\一、编译:VCS-vlib_filelib_file是Verilog文件,包含了引用的module的定义,可以是绝对路径,也可以是相对路劲。-ylib_dirlib_dir是参考库的目录,vcs从该目录下寻找包含引用的module的Verilog文件,这些文件的文件名必须和引用的module的名一样+libext+.v+.vhd+...vcs在参考库目录下寻找以.v和.vhd为扩展名的文件。多个扩展名之间用“+”连接。+incdir+dir1+dir2+…vcs从dir1和dir2等目录下寻找源代码中`include指示的文件。-full64vcs以64位模式编译,生成64位的simv。-comp64vcs以64位模式编译,生成32位的simv。-filelist_filelist_file文件中式源文件的列表以及编译选项。-debug_pp产生vpd文件,enableDVEforpost-processing。-debug相对于-debug_pp,多了UCLI调试功能。-debug_all相对于-debug,多了单步调试功能。-gui在仿真时,使用dve调试-assertdveenableSystemverilogassertiontracingintheVPDfile-R编译后立即进行仿真-pvalue+parameter_hierarchical_name=value改变设计中的参数值,例如:vcs-pvalue+test.d1.param1=33-parametersfilename更改filename中的参数值-notice给出详细的编译信息-q不在终端输出编译时的信息-llog_file将日志写入制定的log_file中+define+macro1=value+macro2=value+…将macro1和macro2,…传给源文件中同名的宏,如果value是字符串的话,要用双引号括起来-obin_name产生bin_name的可执行文件,而不产生simv+v2k支持Verilog2001标准+vcs+initmem+0|1|x|z初始化存储器和多位寄存器数组+vcs+initreg+0|1|x|z初始化reg变量,不初始化其他寄存器型变量-xzcheck当一个条件等于x、z值时,VCS给出警告信息,可以在某些模块中加入$xzcheckoff和$xzcheckon来屏蔽该选项-RI执行完编译后,立即运行VirSim,该选项不能和+vcds联用-s编译之后,运行simv时,仿真时刻停止0处+define+macro1+…将宏macro1传给源代码。-sverilog提供对SystemVerilog的支持一、编译:VCS一、编译:VCS-line实现单步仿真,将会极大地增加运行时间-mhdl实现混合HDL语言的编译和仿真+ad=filename实现混合信号的编译和仿真-nospecify禁止模块路径延迟和时序检查,提高仿真速度+notimingcheck禁止时序检查任务,可以改善仿真速度+vpdfile+filename指定要写入的vpd文件名,而不用vcdplus.vpd+vpdupdate同时读写vpd文件+vpdfilesize+nMB指定vpd文件的最大size+race自动产生一个race.out文件,列出了竞争+cli+1|2|3|4指明仿真时用UCLI模式,后边不同的数字代表了不同的操作级别,一般用3既可+prof产生一个名为vcs.prof的文件,报告CPU和memory的使用情况-parallel+fc[=No1]|+sva[=No2]|+tgl[=No3]|+vpd[=No4]使用多核处理器的选项,若每个参数后不跟数字,则表示使用1级;fc为多核功能覆盖,sva为多核SystemVerilog断言,tgl为多核toggle覆盖,vpd为多核VCD+dumping。No实际上就是使用的cpu核的个数。-parallel-opara_bin_name指定一个能使用多核技术的可执行文件名。-timescale=1ns/10ps指定仿真单位和时间精度一、编译:VCS+memcbk对存储器进行检查,使用$vcdplusmemon时使用该选项+rad开启仿真时的radiant技术,会增加编译时间-ffilenamefilename中包含了源文件和编译选项,但是有些编译选项是有限制的,如下:1)除了+comp64,+full64,+memopt外,所有以+开头的options都可以包含在该文件中;2)-f、-gen_asm、-gen_obj、-line、-l、-u、-v、-y可以包含于该文件中,其他一“-”开头的options都不能包含在该文件中;3)不能包含C源文件和PLI应用程序;4)不能包含$、`、!这3个符号;5)不能有//、/**/这两种注释符。使用-filefilename选项可以克服-f选项的限制。-jNN为处理器的个数,注意N和j之间没有空白符-sysliblibs指明创建可执行文件时使用的系统库-timescale=time_unit/time_precision指明时间尺度-ucli指明在运行仿真时,进入ucli模式-Vt给出警告信息,和每条命令执行所用的时间+tetramax和teramax混合仿真时,加上该选项+timopt+clock_period指明设计中最快的时钟的周期+vcs+dumpvars代替源代码中没有参数的$dumpvars任务一、编译:VCS——脉冲控制VCS默认的路径延迟(modulepathdelay)、sdf文件反标的互联延迟(INTERCONNECTdelay)为惯性延迟;而原语门、开关、连续赋值语句和MIPD(moduleinputportdelay)的延迟则只能是惯性延迟。+transport_path_delays+pulse_e/num1+pulse_r/num2+transport_int_delays+pulse_int_e/num1+pulse_int_r/num2上述两个选项开启了传输延迟模式,后面的两个选项是必须的;num1和num2都是延时的百分比,小于num2的脉冲会被过滤掉(filterout),大于num2但小于num1的脉冲会被x值代替。如果想实现真正的传输延迟,将num1和num2设置为0,即可。对惯性延迟,是默认的,以下两个选项同前所述。+pulse_e/num1+pulse_r/num2+pulse_int_e/num1+pulse_int_r/num2窄脉冲的尾沿安排的时间会取消起始沿安排的时间。若想使sdf反标的线网不使用原语、连续赋值、MIPD的惯性延迟模型,要加上+multisource_int_delays选项,否则使用MIPD的惯性延迟模型。对惯性延迟,num1=0和num2=0并不表示传输延迟,而是指小于延时的脉冲宽度都被忽略。这两个选项对分布延迟不起作用+pulse_on_detect探测到脉冲宽度小于延时,立即在对应时刻给出x,该选项对分布延迟不起作用+no_pulse_msg当脉冲宽度小于延时的时候,不给出信息+pulse_on_event对上升、下降延时不同的情况是,给出x一、编译:VCS——延时说明+delay_mode_path模块的延时使用路径延时+delay_mode_distributed模块的延时使用分布延时,对分布延时,只要脉冲宽度小于#后的数字,直接过滤掉(针对惯性延时)。+delay_mode_unit模块的延时使用所有时间精度中的最小值,specify中的延迟不起作用,#后的所有数字变为1,单位使用最小精度+delay_mode_zero模块的延时使用0延时不指定延时模式时,VCS使用路径延时和分布延时中的最大值。二、仿真:simv运行选项命令:simvruntime_options,以下是运行选项的说明:-cmline|cond|fsm|tgl|path|branch-cm_dirdirectory指明仿真将中间文件存在哪里-llog_file记录DVE或VCS的log文件-gui启动DVE-ucli进入UCLI交互模式-doucli_command_fileucli_command_file是UCLI命令的列表文件+vcs+stop+time指定仿真运行中断的的时间+vcs+finish+time指定仿真运行结束的时间-cm_glitchperiod对于小于period的脉冲不进行覆盖-cm_namefilename指明test文件的文件名-cm_tglfilefilename-cm_logfilename指明仿真期间关于coverage的log文件名-q安静模式-sverilog-Vverbosemode二、仿真:simv运行选项-vcdfilename指明一个VCD文件名-xzcheck当检查到一个变量为x或z时,给出warnings+notimingcheck不进行时序检查,加快仿真速度+vcs+dumparrays在VCD中dump存储器和多维数组,必须和+memcbk编译选项联用+vcs+dumpon+time告诉vcs直到time时刻,$dumpvars才能起作用+vcs+dumpoff+time告诉vcs直到time时刻,$dumpvars才不起作用+vcs+dumpvarsoff关闭$dumpvars系统任务+vcs+flush+dump加快将缓冲中的数据写入vcd文件+vcs+flush+all加快将缓冲中的数据写入各种文件三、调试:DVE$dumpvars创建一个VCD文件$vcdplusfile(“filename”);指定一个vpd文件名义代替默认的vcdplus.vpd$vcdpluson(level,instance,net_or_reg)开始创建一个vpd文件,level表示记录的层次,0或缺省表示所有层;instance为模块的例化名;net_or_reg为net变量或reg变量,缺省时记录所有的net和reg变量$vcdplusoff(instanc,net_or_reg)停止写vpd文件,这两个系统任务用在initial块中,两个任务之间的时间段内会写vpd文件$vcdplusautoflushon当vcs遇到中断时,将仿真结果写入vpd文件中$vcdplusautoflushoff关闭自动flush$test$pluseargs在testbench中包括该任务,可以在仿真
本文标题:VCS简明使用教程
链接地址:https://www.777doc.com/doc-1568303 .html