VCS和UVM常用编译选项

您所在的位置:网站首页 VCS工具加速编译指令 VCS和UVM常用编译选项

VCS和UVM常用编译选项

2024-07-13 09:26| 来源: 网络整理| 查看: 265

VCS编译选项 -full64在64bit模式下编译、仿真,用于64位操作系统-j8指定编译器可以并行编译的进程数为8-timescale=1ns/1ps指定仿真时间和精度-y 指定verilog库路径+libext+.v+.V+.sv+.svh识别.v、.sv、.svh等多种格式文件-sverilog支持system verilog 语法的编译选项-f xxx.lisf 指定包含所有设计文件列表的文件名-top test设置顶层模块为test。(指包含DUT和TB的top?)-l  xx.log编译log输出到指定的文件xx.log+define+XX_MACRO定义一个宏变量XX_MACRO,可作用到dut或tb文件中。也可以具体给这个宏定义一个具体的值:+define+XX_MACRO = 9+incdir+/xx/xx/指定 `include指令使用的包含文件的目录,可以指定多个-M使能增量编译,即编译时只对修改的文件进行重新编译-Mdir=指定一个目录让VCS存储编译产生的文件,默认是csrc-Mlib=指定一个目录让VCS搜索某个模块是否需要重新编译。与-Mdir配合,可以实现不同模块的增量编译。-Mupdate[=0]默认情况下,VCS编译时会覆盖上次编译生成的makefile。如果想保留上次的makefile,使用-Mupdate=0;如果不带=0,则进行增量编译,并覆盖上次的makefile。-noIncrComp关闭增量编译-notice

`-notice`是VCS编译器的一个选项,用于控制编译过程中的警告信息的显示方式。

通过使用`-notice`选项,您可以获得更多关于编译和仿真过程的信息,并且能够找到潜在的问题或改进的建议。这对于调试和优化设计非常有用。

-R编译完成后立即执行simv命令进行仿真;(一般还是先编译,再仿真;方便debug和调试)+memcbk使能多维数组变量的回调。为了可以查看多维数组变量的波形(vcs默认是不能查看多维数组或memory型变量)+warn=none忽略所有warning,不予显示+warn=all显示所有warning-debug_access+all-debug_all将debug的信息全部保存下来,如波形文件等-debug 或 -debug_all使能UCLI命令行-kdb

选项在执行仿真时,打开KDB调试模式,以便可以通过命令行进行交互式的调试操作。

-cm 指定覆盖率的类型,包括:line(行覆盖)、cond(条件覆盖)、fsm(状态机覆盖)、tgl(翻转率覆盖)、path(路径覆盖)、branch(分支覆盖)和assert(断言覆盖)。如果包括两种或以上的覆盖率类型,可用“+”,如-cm line+cond+fsm+tgl-cm_assert_hier 将SVA覆盖率统计限定在文件列表中指定的module层次-cm_cond 进一步细化条件覆盖率的统计方式,包括:basic,std,full,allops,event,anywidth,for,tf,sop等选项。-cm_count在统计是否覆盖的基础上,进一步统计覆盖的次数-cm_dir 指定覆盖率统计结果的存放路径,默认是simv.cm-cm_hier 指定覆盖率统计的范围,范围在文件中定义,可以指定module名、层次名和源文件等。-cm_log 指定仿真过程中记录覆盖率的log文件名-cm_name 指定保存覆盖率结果的文本文件的名称-o 指定编译生成的可执行文件的名称,默认是simv+v2k支持Verilog-2001标准+vcs+initmem+0/1/x/z初始化设计中所有存储器的值+vcs+initreg+0/1/x/z初始化设计中所有寄存器的值+vcs+lic+wait一直等待license

+nospecify

是一种仿真运行时的选项。它用于控制VCS在仿真过程中如何处理Verilog中的`specify`块。 `specify`块是一种用于描述和约束时序电路中时序行为的特殊语言结构。它可以定义信号的时序延迟、校准和约束规则等。在仿真过程中,通常使用`specify`块进行时序约束的模拟。

,当我们希望对设计进行功能仿真或性能分析时,并不需要考虑`specify`块中的时序约束,而只关注设计本身的逻辑行为。这时,可以使用`+nospecify`选项告诉VCS在仿真过程中忽略`specify`块。 具体地说,当使用了`+nospecify`选项时,VCS会在编译时将`specify`块从Verilog源代码中移除,并在仿真过程中忽略时序约束,从而将仿真重点放在逻辑行为上。

+notimecheck

是一种仿真运行时的选项。它用于控制VCS在仿真过程中是否执行时序约束的检查。

Verilog中的时序约束用于描述和约束时序电路中的时序行为,例如信号的时序延迟、时钟和数据的关系等。在仿真过程中,VCS默认会执行时序约束的检查,以确保设计是否满足约束规定的时序要求。 然而,有时在进行功能仿真或性能分析时,并不需要进行严格的时序约束检查,而只关注设计本身的逻辑行为。这时可以使用`+notimecheck`选项告诉VCS在仿真过程中跳过时序约束的检查。 具体来说,当使用了`+notimecheck`选项时,VCS会忽略时序约束,不执行相关的检查。这将加快仿真速度,并且更侧重于逻辑行为的仿真。

上面这2个编译有时候需要加上,之前遇到了自己的makefile跑用例没有问题,但是eman回归就有问题,最后发现是两边的编译选项不一样;仿真选项(SIM)+ntb_random_seed-line使能VriSim中的单步运行-ntb使能ntb(Native TestBench),支持OpenVera验证平台语言结构。-timescale=/源代码文件中有的包括timescale编译指令,有的不包括,如果在VCS命令行中,不包括timescale的源代码文件在最前面,VCS会停止编译。使用-timescale选项为这些在前面且又没有`timescale的源文件指定timescale-override_timescale=/让源文件统一使用指定的timescale-pvalues+=改变指定参数的值 -pvalue选项支持在编译阶段去更改parameter的值;然后直接在makefile里控制parameter的随机即可-parameters 通过文件的方式改变参数的值,参数的路径和改变的值均在文件中定义+error+将编译时运行的NTB错误增加到N-vcd 指定VCD波形文件名,默认是verilog.dump,会被源代码文件中的$dumpfile覆盖

分离(块)(编译选项: -partcomp=adaptive_sched    -fastpartcomp=j8 

分离编译的优点

(1)拆分成多个线程去并行执行编译,节省了编译时间。-fastpartcom=jn,n代表并行线程的数量 (2)将DUT和TB分成若干partition,未修改的partition不需要重新编译

参考链接:

vcs 分离编译_vcs分块编译_卓麻麻的博客-CSDN博客

参考:vcs常用仿真选项_lobbiy的博客-CSDN博客

vcs把verilog文件编译完成后,会生成simv文件;

(跑仿真:./simv -l sim.log)

跑仿真:./simv  +ntb_random_seed=12345  -l sim.log;(自动化脚本中,随机种子一般在makefile里面通过变量SEED传递进来)

vcs的单步仿真: 

生成波形文件:在top_tb.sv中加入下面这个initial块

把数组型数据生成到波形文件中:

-F/-f的区别:

1. -F 使用相对路径索引include的文件。

2.-f  使用绝对路径索引include的文件。

UVM常用编译选项: 

参考:

UVM实战 卷I学习笔记18——UVM常用宏汇总_菜鸡想要飞的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41979380/article/details/121656373UVM实战 卷I学习笔记17——UVM命令行参数汇总_菜鸡想要飞的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41979380/article/details/121656117宏与运行时的命令行参数不同。它有两种定义方式,一是直接在源文件中中使用define进行定义:

`define MACRO 100

二是在编译时的命令行中使用如下方式: +define+MACRO=100

常见的UVM宏有:

信息打印级别:USER_VCS_RUN_OPTS += +UVM_VERBOSITY=UVM_HIGH

指定用例:+UVM_TESTNAME=xxx_tc

打印出所有的命令行参数: +UVM_DUMP_CMDLINE_ARGS

在命令行中设置冗余度阈值:+UVM_VERBOSITY=UVM_HIGH

ERROR到达一定数量退出仿真: +UVM_MAX_QUIT_COUNT=6,NO  (6数error数,no是不重载)( +UVM_MAX_QUIT_COUNT=, )

设置全局的超时时间: +UVM_TIMEOUT="300ns, YES"

打开phase的调试功能: +UVM_PHASE_TRACE

打开objection的调试功能: +UVM_OBJECTION_TRACE

打开config_db的调试功能:  +UVM_CONFIG_DB_TRACE

 打开resource_db的调试功能:  +UVM_RESOURCE_DB_TRACE

拓展寄存器模型的数据位宽:`define UVM_REG_DATA_WIDTH 128

拓展寄存器模型的地址位宽:`define UVM_REG_ADDR_WIDTH 64 自定义字选择位宽(很少见):`define UVM_REG_BYTENABLE_WIDTH 8  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3