首页 > 其他分享 >vcs

vcs

时间:2023-04-10 19:23:17浏览次数:28  
标签:仿真 文件 波形 覆盖率 编译 vcs coverage

VCS

  编译型verilog仿真器,先将.v文件转化为C文件,在linux下编译生成可执行文件,运行simv得到仿真结果

  在实际工程中,通常使用VCS生成fsdb格式的波形文件,将其导入Verdi查看波形,代替DVE进行联合仿真。

    在tb文件加入$vcdpluson();  --在仿真结束后会生成vcdplus.vpd文件,这个文件记录仿真过程所有信号的波形,可以使用DVE打开。

    补充:1.+define+DUMP_VPD表示在编译时定义 DUMP_VPD 这个宏

        2.在编译时,使用 +vpdfile+filename 可以更改生成 VPD 文件的文件名,默认为 vpdplus.vpd。

        3.调用 $vcdpluson() 时可以加入一些参数,如果什么都不加,则默认记录顶层模块下所有子模块的信号波形。参数格式:$vcdpluson(level_number, module_instance, ... , ... )。比较重要的参数为前两个。数字设计里面的 module 是层次化/结构化的,类似于一层一层的黑盒子不断包含下去。module_instance 表示从哪一个module开始记录波形,level_number表示查看 module_instance 下子模块多少层的波形。下面使用一些例子来说明。

$vcdpluson() 或者 $vcdpluson(0, addertb) 记录 addertb 及其所有子模块的波形。

$vcdpluson(1, addertb) 只记录 addertb 层的波形。

$vcdpluson(2, addertb) 记录 addertb 层和 u1(add8) 层的波形。

$vcdpluson(3, addertb) 记录 addertb , u1(add8) ,u1(add4),low_add, high_add 层的波形。

 

仿真覆盖率的问题

  在进行功能验证时,给设计添加激励信号,查看仿真结果,需要考虑覆盖率的问题。覆盖率分为代码覆盖率(code coverage)和功能覆盖率(function coverage)。功能覆盖率就是检查设计的功能是否完善,需要考虑很多不同的情况,是使用System verilog的重点内容。代码覆盖率是检查代码是否存在冗余,检查所有的代码是否都已经执行,状态机所有的状态是否都有到达,检查 if else 和 case 条件语句的条件是否都有使用。防止一些不必要的代码浪费芯片面积,我们这里只讨论代码覆盖率。

  Line coverage :行覆盖率,检查语句是否被执行。

  Toggle coverage:检查电路的每个节点是否都有 0 -> 1 和 1 -> 0 的跳变。这种检查通常会使仿真变慢很多。

  conditional coverage:检查条件语句是否覆盖了所有的情况。 比如有时写了if 语句,没有写else语句。

  FSM coverage: 状态机覆盖率,检查状态机所有的状态是否都到达过。

  path coverage:在always语句块和initial语句块中,有时会使用 if ... else 和 case 语句,在电路结构上便会产生一系列的数据路径。检查这些路径的覆盖情况。

  VCS在统计代码覆盖率的过程中,我们通常在编译和仿真命令上添加对应的开关选项,生成一个 .vdb文件记录覆盖率的情况。再使用dve打开该文件查看。下面介绍一些选项。

  1. -cm <coveragetype> :打开对应类型的覆盖率,例如 -cm cond+tgl+lin+fsm+path为统计上述所有覆盖率。可根据需要增减。

  2. -cm_name:设置记录有覆盖率信息文件的名字。

  3. -cm_dir:指定生成文件的目录。

  以上三个选项编译仿真过程都要加上。下面的选项在编译过程加上。

  -cm_log + filename.log:.log文件记录仿真过程中统计覆盖率的信息。用的比较少。

  -cm_nocasedef: 在统计case语句的条件覆盖率时,不考虑default条件未达到的情况。

  -cm_hier vcs_cov.cfg:通过.cfg文件(名字随便取)选择要查看覆盖率的模块/文件。

    +”代表查看,“-”代表不查看。tree代表查看某个模块调用的子模块。

    在文件内部,可以使用特殊注释来打开和关闭代码覆盖率的统计:

    //VCS coverage on 统计代码覆盖率

      .......

    //VCS coverage off 不统计代码覆盖率

    在上述注释之间的内容,统计覆盖率。其余地方不统计。

VCS编译选项

  -Muldate 增量编译    代码量很大,只是修改一小部分时候,不需要重新编译,做增量编译,与原来的代码进行衔接,节约时间

  -R 自动执行simv   自动执行编译后的可执行文件 .simv

  -o filename 默认生成的可执行文件是 simv,可以通过这个指令输出指定的文件名 如:filename (可以忽略,没什么用)

  -gui   启动dev界面(写的Makefile 里边有相应启动操作,无需注意)

  -l readme.log 编译过程中会产生包含warning等信息的文件,将其输出到readme.log中

  -v lib_file 如果用到了某些厂商的工艺库,到这个工艺库文件中寻找

  -y lib_dir 指定寻找工艺库文件的目录

  +libext+lib_rxt  如果用到很多工艺库,通过指定的文件后缀lib_ext(指定后缀),来寻找指定目录下的指定后缀文件

  +incdir+./inc_dir.h search inc_dir directory for ‘include files’有时候,我们需要用到头文件,特别是在ifdef语法中。在tb文件中添加头文件,需要再编译的时候加上+incdir+./inc_dir.h  否则会提示找不到头文件。

  +define+宏的名字  直接在命令里面定义宏

 

芯王国示例工程

  创建一个存储文件路径的文件,方便Makefile使用,如:filelist.f

    在工程文件路径下,使用:find -name "*.v" >filelist.f生成所有.v文件的路径

  打开仿真文件,在里边加入生成.fsdb文件的语句

initial begin
    $fsdbDumpfile("tb.fsdb");//产生名字为 tb.fsdb 的文件
    $fsdbDumpvars;
end

  使用make clean命令清除之前编译结果

  make vcs

  make verdi

标签:仿真,文件,波形,覆盖率,编译,vcs,coverage
From: https://www.cnblogs.com/VicentZJ/p/17303660.html

相关文章

  • VCS用法
      1.时钟频率点击,鼠标左键点击波形上升沿,中间滚轮点击,然后选择hz,就显示当前信号时钟频率。2.窗口乱掉,找不到文件列表,右下角点击弹出选择instance。3.bus地址查找,选择信号,然后蓝色框选择value,输入地址,点击左右找相同地址的操作。......
  • 后端基础——vcs后仿delay
    贴上参考文章,写的很好:negativetimingcheck和negativedelay-知乎(zhihu.com),如有需要可以参考原文一,vcs后仿两个关键的option在做vcs后仿时,有两个参数:+neg_tchk和-......
  • 07-逻辑仿真工具VCS-Post processing with VCD+ files
    逻辑仿真工具-VCS编译完成不会产生波形,仿真完成之后,生成波形文件,通过dve产看波形vcd是波形文件的格式,但是所占的内存比较大,后面出现了vpd(VCD+)波形文件将一些系......
  • 06-逻辑仿真工具VCS-Debug
    逻辑仿真工具VCSverdi只进行debug进行使用,不进行编译,只进行产生波形之后的debug仿真速度和代码质量有关系,选项也会影响仿真速度,行为级>RTL>门级信号的可见性和......
  • 05-逻辑仿真工具VCS-详解01
    VerilogSimulationEventQueue主要了解VCS是如何处理交给它的代码的Verilog的仿真事件队列,介绍VCS如何处理交给它的代码。VCS是Synopsys公司的,支持多种语言。1.Verilo......
  • Reset [email protected] and root password VCSA
    Resetadministrator@vsphere.localandrootpasswordVCSA7OCTOBER2019KABIRIfyoufindyourselfinasituationwherenobodyknowswhattheadministratorpa......
  • 02-逻辑仿真工具VCS使用
    逻辑仿真工具VCS使用1Makefile执行VCS仿真#Makefileforsimulatingthefull_adder.vwiththesimulatorVCS#------------------------------------------------......
  • 01-逻辑仿真工具VCS使用
    1逻辑仿真工具VCS的使用在书写完成RTL代码之后,确保自己书写的代码和自己想要的逻辑是一致的。VCS是synopsys公司下的的仿真工具。1VCS仿真过程编译-->仿真-->debug/......
  • vcs仿真vivado独立IP和的方法
    转载:VCS独立仿真VivadoIP核的一些方法总结-知乎(zhihu.com)最近,需要使用VCS仿真一个高速并串转换的Demo,其中需要用到Vivado的SelectIOIP核以及IDELAYCTRL,IDELAY2原语......
  • VCSA6.5及之前版本更新STS签名证书
    创建顶级目录以保存新证书并确认该目录的位置。​Plaintextmkdirnewstscdnewstspwd#resultingoutput:/root/newst​将certool.cfg文件复制到新目录中。​Plaintextc......