VCS和UVM常用编译选项

VCS编译选项
-full64在64bit模式下编译、仿真,用于64位操作系统
-j8指定编译器可以并行编译的进程数为8
-timescale=1ns/1ps指定仿真时间和精度
-y <dir_pathname>指定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=<directory>指定一个目录让VCS存储编译产生的文件,默认是csrc
-Mlib=<directory>指定一个目录让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 <options>指定覆盖率的类型,包括:line(行覆盖)、cond(条件覆盖)、fsm(状态机覆盖)、tgl(翻转率覆盖)、path(路径覆盖)、branch(分支覆盖)和assert(断言覆盖)。如果包括两种或以上的覆盖率类型,可用“+”,如-cm line+cond+fsm+tgl
-cm_assert_hier <filename>将SVA覆盖率统计限定在文件列表中指定的module层次
-cm_cond <arguments>进一步细化条件覆盖率的统计方式,包括:basic,std,full,allops,event,anywidth,for,tf,sop等选项。
-cm_count在统计是否覆盖的基础上,进一步统计覆盖的次数
-cm_dir <directory_path_name>指定覆盖率统计结果的存放路径,默认是simv.cm
-cm_hier <filename>指定覆盖率统计的范围,范围在文件中定义,可以指定module名、层次名和源文件等。
-cm_log <filename>指定仿真过程中记录覆盖率的log文件名
-cm_name <filename>指定保存覆盖率结果的文本文件的名称
-o <name>指定编译生成的可执行文件的名称,默认是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=<time_unit>/<time_precision>源代码文件中有的包括timescale编译指令,有的不包括,如果在VCS命令行中,不包括timescale的源代码文件在最前面,VCS会停止编译。使用-timescale选项为这些在前面且又没有`timescale的源文件指定timescale
-override_timescale=<time_unit>/<time_precision>让源文件统一使用指定的timescale
-pvalues+<parameter_name>=<value>改变指定参数的值
-pvalue选项支持在编译阶段去更改parameter的值;然后直接在makefile里控制parameter的随机即可
-parameters <filename>通过文件的方式改变参数的值,参数的路径和改变的值均在文件中定义
+error+<n>将编译时运行的NTB错误增加到N
-vcd <filename>指定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

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

常见的UVM宏有:

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

指定用例:+UVM_TESTNAME=xxx_tc

打印出所有的命令行参数:<sim command> +UVM_DUMP_CMDLINE_ARGS

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

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

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

打开phase的调试功能:<sim command> +UVM_PHASE_TRACE

打开objection的调试功能:<sim command> +UVM_OBJECTION_TRACE

打开config_db的调试功能: <sim command> +UVM_CONFIG_DB_TRACE

 打开resource_db的调试功能: <sim command> +UVM_RESOURCE_DB_TRACE

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

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

  • 4
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VCS 2016是一种流行的硬件描述语言仿真器,由Synopsys公司开发。它提供了许多功能和工具,可用于验证和仿真芯片级设计。 UVM(统一验证方法)是一种用于验证设计的模块化和可重用验证方法学。UVM 1.2是最早版本的UVM,它提供了一种基于基类的验证方法学,使用SystemVerilog语言进行描述。 VCS 2016与UVM 1.2的结合可以为设计验证工程师提供更高效和准确的验证环境。VCS 2016提供了对UVM的全面支持,包括UVM 1.2的所有特性和功能。 通过将VCS 2016与UVM 1.2结合使用,验证工程师可以更轻松地构建复杂的验证环境,编写可重用的测试类和组件,并进行仿真和调试。使用VCS 2016的仿真器,验证工程师可以高效地运行UVM 1.2验证环境,并跟踪和分析仿真结果。 此外,VCS 2016还具有更高的性能和更好的调试能力,可以加速验证过程并减少验证周期。验证工程师可以利用VCS 2016的先进调试功能,如波形查看器和覆盖分析器,快速定位和解决验证问题。 总之,VCS 2016与UVM 1.2的结合提供了验证工程师所需的强大工具和方法,使他们能够更高效地验证芯片级设计,并确保其功能和可靠性。 ### 回答2: vcs2016是一个流行的EDA工具,用于数字电路设计和仿真。它为设计工程师提供了强大的功能和性能,可以在各种设计阶段进行仿真和验证。 UVM(Universal Verification Methodology)是一个用于验证系统级集成电路(SoC)设计的标准方法学。它提供了一种结构化的、可重复使用的验证环境,可以加速和简化验证过程,并增强团队之间的协作。 vcs2016和UVM1.2可以很好地结合使用,以实现高效的验证。vcs2016具有对UVM1.2标准的完全支持,可以轻松地集成UVM环境。使用vcs2016进行仿真和验证时,可以充分利用UVM1.2中提供的各种验证组件和方法。 通过vcs2016和UVM1.2的结合,设计工程师可以创建复杂的验证环境,包括生成测试用例、检测设计中的错误和漏洞,以及跟踪和调试仿真结果。此外,vcs2016和UVM1.2还提供了详细的报告和覆盖率分析,可以帮助工程师评估验证的完整性和覆盖率。 总的来说,vcs2016和UVM1.2是一对强大的工具组合,可以使设计工程师更高效地进行数字电路的仿真和验证工作。它们的使用可以显著提高设计的质量,并缩短产品开发周期。 ### 回答3: vcs2016是一种常见的硬件验证工具,而UVM1.2则是一种通用验证方法。VCS2016是由Synopsys公司开发的一款高性能仿真工具,主要用于硬件设计验证和功能验证。它支持多种语言,如Verilog、SystemVerilog和VHDL,可以进行功能仿真、时序仿真、功耗仿真等多种仿真场景。 而UVM1.2(Universal Verification Methodology)是一种通用验证方法,它基于SystemVerilog编程语言,并结合了基于类的对象编程和事务级建模的思想。UVM提供了一系列的类和方法,用于验证硬件设计的正确性和功能性。它能够对设计进行自动化的验证,包括测试生成、结果收集和分析等。 VCS2016和UVM1.2在硬件验证中常常配合使用。VCS2016作为一个仿真工具,可以通过UVM1.2提供的验证方法和库,对设计进行仿真和验证。UVM1.2提供了一套丰富的验证组件和机制,如驱动器、监视器、代理等,可以方便地完成仿真和验证的任务。通过VCS2016和UVM1.2的组合使用,验证工程师可以更高效地完成硬件设计的验证工作。 总结起来,VCS2016和UVM1.2都是在硬件验证中常用的工具和方法。VCS2016是一款强大的仿真工具,而UVM1.2提供了一种通用的验证方法。它们的配合使用可以提高硬件验证的效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值