QuestaSim 仿真常用命令
1.编译命令 vlog
-
命令格式:
vlog [options] <filename>[<filename>...]
-
命令选项
-
-cover[=<spec>]
,<spec>可指定为{b|c|e|s|f|t} -
+define+<macro_name>[=<macro_text>]
,该选项等同于在编译源文件时添加``define <macro_name> <macro_text>`也可在一个+define后添加多个宏定义(也可以分开)vlog +define+one=r1+two=r2+three=r3 test.v
-
(-f | -file)<filename>
,对应一个参数文件,文件内可添加更多的编译选项内容 -
+incdir+<directory>
,指明对于源文件中使用`include编译导向时将会查找对应文件的文件夹 -
(-l | -logfile)<filename>
生成编译时的log记录文件。 -
-L <libname>
指定在编译时在哪些库中搜索预先编译的模块。 -
-novopt
编译时不作优化 -
-lint
编译时作语义检查(例如,为input端口赋值、访问未声明的变量、访问数组的范围越界等) -
{+initmem | +initreg}[=<spec>][+{0|1│X│Z}]
,初始化{数组│变量},<spec>
可以为(r|b|e)
,只对静态变量(例如硬件信号或者static变量)起作用 -
-quiet
过滤一些加载库的信息,使得log信息更简洁 -
-timescale[ =]I[ ]<time_units>/<time_precision>
指明那些未指定时间单位的module/interface/program/package等。-timescale=1ns/1ps
-
-warning <msg_number>[,<msg_number>..]
将指定消息严重级别降为warning级别 -
-work <library_name>
在编译时将目标编译到指定的库中,库名可以是逻辑库名或者库的对应路径
-
2.编译相关命令 vlib/vdir
vlib <library_name>
按照库指定路径和库名去创建库。vdir -all
显示当前所有编译库、预编译库中的内容。vdir [-lib <library _name>][<design_unit>]
,显示指定库(库名或路径)的内容,或者指定模块的信息。verror [-fmt | -full][-kind <tool>] {-all | <msgNum>}
显示{全部│指定msgNum},有关某一个指令<tool>的错误描述内容,便于理解错误。
3.仿真命令 vsim
-
命令格式:
vsim [options]
-
命令选项
[-batch | -c | -gui | -i ]
采用后台模式(-batch)、命令行模式(-c) 、用户界面模式(-gui)或者交互模式(-i) 。-do "<command_string>" | <do_file_name>
传入并执行Tcl命令或者脚本文件。-f <filename>
传入带有仿真选项的文件,可在仿真过程中解析并采用这些仿真选项。[-g |-G]<Name>=<Value> ...
, -g可以覆盖那些没有被显式赋值(采取默认值)的参数,而-G则可以覆盖那些已经被显式赋值的参数。-immedassert | -noimmedassert
,使能或禁止立即断言( immediate assertion)。-solvefaildebug=<value>
,使能随机化失败调试,如果value不给值,则使能基本调试功能。-sv_lib <shared_obj>
导入DPI共享对象(shared object),用于导入DPI方法。-sv_seed <integer>| random
,用于指定仿真时的随机种子。-title <title>
在仿真窗口指定当前仿真的"标题",便于调试多个同时进行的仿真窗口。-wlf <file_name>
指定保存的保存文件,默认输出vsim.wlf。-coverage
使能覆盖率收集,但要求编译时添加+cover选项。-viewcov [<dataset_name>=]<UCDB_filename>
调用coverageview模式查看UCDB覆盖率数据。-coverstore <dir_path> -testname <name>
在仿真结束时保存覆盖率数据结果,必须要单独调用coverage save命令。-default_radix <radix>
在仿真时指定变量显示的默认格式({ascii | binary | decimal | hexadecimal | octal | symbolic | unsigned}
)-uvmcontrol={all | certe | disable | msglog | none | struct | trlog | verbose}
使能UVM有关调试功能。-classdebug -msgmode both -uvmcontrol=all
(应用方式)
4.存储相关命令 mem
-
mem list [-r][<path>]
∶显示目标路径下的数组信号/变量。 -
mem display
:显示目标mem的内容,相关命令mem search。 -
mem load
:向目标mem中加载指定数据(从文件中或者命令行参数)。 -
mem save
:将目标mem中的数据保存到指定文件。
5.类调试相关命令 classinfo
classinfo instances <class_type>
:显示目标类的实例。classinfo isa <class_type>
:显示继承于目标类的子类。classinfo stats
:显示当前仿真有关类占据内存的状态信息。classinfo types <pattern>
:显示正则表达式中相关的类型名。
6.虚拟信号相关命令 virtual
virtual region
:创建虚拟层次。virtual signal
:创建虚拟信号。virtual function
:创建虚拟组合逻辑(可添加延迟)信号。virtual show
:显示仿真中的虚拟层次、信号。virtual describe
:对virtual信号进行详细说明。virtual delete
:移除virtual信号。
7.UVM调试交互
前提: vsim -uvmcontrol=all -classdebug
uvm configtracing {0 | 1}
︰跟踪configuration database set & get。uvm displayobjections [<uvm_object_path>]
:返回当前仿真中的objections raise & drop。uvm findregisters [-acc] <uvm_reg_block_path>
:返回寄存器模型后门映射的寄存器路径。uvm findsequences [<component_path>]
:返回当前仿真中的activesequences。uvm handle <uvm_object_path>
:返回UVM对象的句柄值。uvm printconfig [<uvm_component_path> [<config_obj_name>]]
:显示与目标组件和配置对象相关的配置信息。uvm printfactory
:打印已经在工厂注册的各个UVM类型。uvm printtopology
:打印UVM层次结构。uvm setverbosity <uvm_report_verbosity level>[<uvm_component_path>]
:设置UVM冗余度。
8.覆盖率相关命令
coverage 记录功能:
coverage open <filename>[<logicalname>]
:在GUI模式下打开某个UCDB文件,并为其指定某个逻辑名称。coverage open last.ucdb test
coverage attribute
:用来显示或者设置与当前UCDB/Test/Object有关的属性(attribute) 。coverage ranktest
:根据在已合并的UCDB数据库中的各个test对于覆盖率的贡献进行排序。coverage tag
:将覆盖率数据库中的不同数据目标贴上标签(tag),继而跟验证计划(xml)中的覆盖目标进行映射。coverage testnames
:显示目前加载UCDB数据库中包含的各个test名。coverage save
:在仿真中将覆盖率数据保存为UCDB文件。
vcover 处理功能:
-
vcover attribute
:显示当前加载UCDB的属性。
vcover attribute -ucdb [-name <attribute> ...] <ucdb_file> | <coverstore>[ : test]
-
vcover merge
:将多个通过"coverage save"命令创建的UCDB文件进行合并。
vcover merge <merge_options> { [-out] <outfile><file1>[<file2> ...<filen>] }
-
vcover remove
:将已合并进去的测试计划(testplan)相关数据和映射链接移除。
vcover remove -tplan { [-out] <outfile>} <infile> [-[wprof=<filename>] [-proftick=<integer>] [-stats [=[+ | -]<feature>[,[+ | -]<mode>] ]
-
vcover report
:从之前已经保存或者处理的UCDB数据中打印覆盖率信息或者过滤信息。
vcover report <rpt_args> <ucdb__or_coverstore_test>
vcover report -html <input_ucdb> <rpt_args>
-
vcover testnames
:显示指定UCDB数据中的test集合。vcover testnames <file> <options>
-
vcover history
:显示目标UCDB文件的生成过程(命令记录)。vcover history < hist_options > <file>
9.常用仿真内建命令
do <filename> [<parameter_value>..….]
:执行一个DO tcl脚本。echo [<text_string>]
:在Transcript窗口显示信息。[environment | env] [-dataset | -nodataset] [<pathname> | -forward | -back]
:显示或改变当前的数据/信号所在的路径,相关命令show。[examine | exa]
:显示一个或者多个目标变量/信号的数值。exit [-f]
:退出当前仿真。quit [{-force | -f}| -sim]
:强制退出,或者卸载当前仿真但不退出SIM,相关命令stop。find
:按照指定类型和名称找到信号/变量。force {<object_name> <value>[[@]<time_info>][,[@]<time_info>]... [-freeze | -deposit | -drive][-cancel [@]<time_info>][-repeat [@]<time__info>]
:如下
force -freeze /top/p/addr 0 100,1 150 -r 200 -cancel 2000
noforce
:去除在某些信号上已添加的force效用。log
:创建波形文件并且将对应数据保存到WLF格式文件中。setenv <varname>[<value>]
︰设置环境变量,相关命令: unsetenv,printenv。simstats
:显示与编译、仿真有关的数据信息。report [files | where | simulator control | simulator state]
:报告与仿真有关的文件、配置、控制和状态,相关命令: wherecheckpoint <filename>
:将仿真状态、波形等文件均保存下来,并且在当前仿真中可以利用restore命令回退。when
:在信号状态或者仿真时间满足条件时,可执行预定任务。wlf2log | wlf2vcd
:将WLF波形文件转换为log或者vcd格式,相关命令vcd2wlf。vcd file | vcd add | vcd {on | off}
:用来记录信号变化的vcd格式文件的相关命令。