QuestaSim 仿真常用命令

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]:报告与仿真有关的文件、配置、控制和状态,相关命令: where
  • checkpoint <filename>:将仿真状态、波形等文件均保存下来,并且在当前仿真中可以利用restore命令回退。
  • when:在信号状态或者仿真时间满足条件时,可执行预定任务。
  • wlf2log | wlf2vcd:将WLF波形文件转换为log或者vcd格式,相关命令vcd2wlf。
  • vcd file | vcd add | vcd {on | off}:用来记录信号变化的vcd格式文件的相关命令。
  • 8
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值