浅谈VCS的两种仿真flow

几乎所有的芯片设计、芯片验证工程师,每天都在和vcs打交道,但是由于验证环境的统一化管理,一般将不同的编译仿真选项集成在一个文件里,只需要一两个人维护即可。所以大部分人比较少有机会去深入地学习vcs的仿真flow。基于此,本文将介绍vcs仿真的 两种flow ,概述这两种flow分别做了哪些事!
vcs是一个高性能、高容量的编译代码仿真器,它将高级抽象的验证技术集成到一个开放的本地平台中。它能够分析、编译和编译verilog、vhdl、systemverilog和openvera所描述的design,并且还提供了一组仿真和调试功能来验证design,这些特性提供了源代码级debug和仿真结果。支持原生测试平台、systemverilog、验证规划、覆盖率分析和收敛。
除了标准verilog、vhdl和混合hdl和systemverilog编译和仿真功能,vcs包括以下集成的功能和工具集:
systemc
verdi
unified command-line interface ( ucli )
built-in coverage metrics
directc interface
vcs还可以与第三方工具集成,如specman、denali和其他加速和仿真系统。
下面介绍vcs的两种仿真flow: two-step flow 和 three-step flow
two-step flow
只支持verilog hdl和systemverilog设计,包括两个步骤:
compilation 编译
simulation 仿真
compilation:编译是仿真design的第一步,此时vcs构建实例层次结构并生成一个二进制可执行的simv,之后用于仿真。 在此阶段,我们可以选择以优化模式或调试模式编译design。
使用vcs,语法如下:
vcs [编译选项] verilog_files
常用选项如下:
-h 或 -help
列出最常用的vcs编译和运行时选项的描述
-标识
返回有用的信息,如vcs版本和构建日期,vcs编译器版本,以及工作站名称、平台和主机id
-v 文件名
指定verilog库文件,vcs在这个文件中查找模块定义和在源代码中找到的udp实例
-y 目录
指定verilog库目录,vcs在这个目录的源文件中搜索模块定义和udp实例。 vcs在这个目录中搜索与实例中模块或udp标识符同名的文件(不是实例名)。 如果找到了这个文件,vcs会在文件中搜索模块或udp定义来解析实例
ps:如果你在不同的库中有多个同名的模块,vcs会选择用第一个-y选项指定的库中定义的模块
+incdir+目录+
指定vcs搜索包含文件的directory目录,可以使用加号(+)字符指定多个目录
+扩展+扩展+
指定vcs只在库目录中搜索具有指定文件扩展名的文件,可以指定多个扩展名,用加号(+)分隔扩展名。 例如,+libext+ .v+ . v+,指定在库中搜索扩展名为.v或.v的文件
+图书馆
指定在vcs找到实例的库的剩余部分中搜索未解析的模块实例的模块定义
-全64
支持64位模式下的编译和仿真
-文件名
指定包含文件列表和编译时选项的文件
-给
启动verdi
-r
编译后立即启动仿真
-p值+parameter_hierarchical_name=值
将指定的参数更改为指定的值
-参数文件名
将文件中指定的参数更改为文件中指定的值
-通知
启用详细诊断消息
-q
quiet模式; 抑制消息,例如关于vcs使用的c编译器、vcs解析的源文件、顶层模块或指定的timescale的消息
-在
verbose模式; 打印消息,例如编译器驱动程序在运行c编译器、汇编器和链接器时打印它执行的命令
-l 文件名
指定vcs记录编译消息的文件,如果还有-r选项,vcs将在同一个文件中记录编译和仿真的消息
+定义+宏=值+
将源代码中的文本宏定义为值或字符串,可以在verilog源代码中使用`ifdef编译器指令来测试这个定义
simulation :在编译过程中,vcs生成一个二进制可执行文件simv,使用simv来运行仿真。 根据编译的方式,可用两种模式运行仿真:
交互模式
在初始阶段以交互模式(调试模式)编译design。 在这个阶段,可以使用gui或通过命令行调试design问题。 通过gui进行调试可以使用verdi,通过命令行进行调试可以使用ucli (unified command line interface)
批处理模式
当大多数design问题解决后,可以使用批处理模式(优化模式)编译design。 在这个阶段,可以以最小的debug性能来换取更好的性能来运行回归
使用下面的命令行来仿真设计:
simv_executable [runtime_options]
缺省情况下,vcs生成可执行的二进制文件simv,但也可以在vcs命令行中使用编译时间选项 -o 来生成具有指定名称的二进制可执行文件
-图形用户界面
当设置了verdi_home时,此选项启动verdi
-乌克利
该选项在ucli模式下启动simv
三步流程
支持verilog、vhdl和混合hdl设计,包括三个步骤:
analysis 分析
elaboration 细化
simulation 仿真
analysis:分析是仿真design的第一步,在此阶段将使用vhdlan或vlogan分析vhdl、verilog、systemverilog和openvera文件。 下面的部分包括几个分析设计文件的示例命令行:
分析 vhdl 文件:
vhdlan [vhdlan_options] file1.vhd file2.vhd
分析您的 verilog 文件:
vlogan [vlogan_options] 文件1.v 文件2.v
分析您的系统verilog文件:
vlogan -sverilog [vlogan_options] file1.sv file2.sv file3.v
分析您的 openvera 文件:
vlogan -ntb [vlogan_options] file1.vr file2.vr file3.v
分析您的systemverilog和openvera文件:
vlogan -sverilog -ntb [vlogan_options] file1.sv file2.vr file3.v
由于一般使用verilog,故本文只介绍vlogan常用选项:
-帮助
显示vlogan的使用信息
-q
忽略所有vlogan消息
-f 文件名
指定包含源文件列表的文件
-全64
分析 64 位仿真设计
-忽略keyword_argument
根据指定的关键字参数,忽略警告消息
-l 文件名
指定vcs记录分析器消息的日志文件
-sverilog
启用分析systemverilog源代码
-sv_pragma
指示vcs在单行或多行注释中编译sv_pragma关键字后面的systemverilog断言代码
-时间刻度=time_unit/time_precision
为不包含timescale编译器指令的源文件指定unit和precision,并在包含时间表的源文件之前指定时间表
-v library_file
指定用于搜索模块定义的verilog库文件
-作品库
将设计库名称映射到接收vlogan输出的逻辑库名称work
**elaboration:**细化是仿真design的第二步,在这个阶段,使用分析过程中生成的中间文件,vcs构建实例层次结构并生成一个二进制可执行的simv,该二进制可执行文件之后用于仿真。 可选择优化模式或调试模式来细化design。
常用选项如下:
-h 或 -help
列出最常用的vcs编译和运行时选项的描述
-标识
返回有用的信息,如vcs版本和构建日期,vcs编译器版本,以及工作站名称、平台和主机id
-全64
支持64位模式下的编译和仿真
-文件名
指定包含文件列表和编译时选项的文件
-l 文件名
指定vcs记录编译消息的文件,如果还有-r选项,vcs将在同一个文件中记录编译和仿真的消息
simulation:仿真是最后一步,在细化过程中,使用生成的中间文件,vcs创建了一个二进制可执行文件simv。 使用simv来运行仿真。 可以使用以下两种模式运行仿真:
交互模式
在初始阶段以交互模式(调试模式)细化design。 在这个阶段,可以使用gui或通过命令行调试design问题。 通过gui进行调试可以使用verdi,通过命令行进行调试可以使用ucli (unified command line interface)
批处理模式
当大多数design问题解决后,可以使用批处理模式(优化模式)编译design。 在这个阶段,可以以最小的debug性能来换取更好的性能来运行回归
使用下面的命令行来仿真设计:
simv_executable [runtime_options]
缺省情况下,vcs生成可执行的二进制文件simv,但也可以在vcs命令行中使用编译时间选项 -o 来生成具有指定名称的二进制可执行文件
-图形用户界面
当设置了verdi_home时,此选项启动verdi
-乌克利
该选项在ucli模式下启动simv
以上内容介绍了使用两种仿真flow的基本步骤,其余功能需要用的时候再查vcs® user guide就行了!


信息安全是“新基建”的防线,天翼云打造安全可信云服务
不会断电的无线鼠标套装:罗技推无线鼠标+无线充电鼠标垫
意法半导体推出新STSAFE安全单元为开发者提供经过认证的资产跟踪和品牌保护解决方案
圆形连接器的分类和作用
澳洋顺昌已具备Mini LED芯片生产能力
浅谈VCS的两种仿真flow
汽车MEMS传感器的市场状况和主要厂商
艾迈斯欧司朗推出全球合作伙伴网络计划,激励创新并加速客户设计进程
NXP iMX8MP开发板的试用体验
保险丝选型要素及举例
春色满园好出游,OPPO R9s助你留住每一刻
分布式发电与配电网有什么关联性?怎样才能接入配电网?
利用扭矩传感器进行电动磨牙棒测试
3M 451系列插座组件和452系列板安装针座介绍
嵌入式和单片机不一样?那它们的区别在哪?
光纤通信:“抗弯光纤”和“细径光纤”
电源欠压过压报警保护器的制作,Over voltage alarm
D-Link Covr-C1203 智能多路由Wi-Fi系统,能简单有效的布置无死角Wi-Fi信号
详解硬件-软件接口(HSI)的例内容有哪些?
小米MIX2什么时候上市?小米MIX2最新消息:小米MIX2骁龙836+8G+全面屏,更大屏占比、更强的性能