cadence,有两大验证仿真工具。一个是IUS,一个是IES。
IUS是cadence以前的仿真工具,功能略弱。代表工具,ncverilog。
官方介绍:
IUS(incisive unified simulator)Cadence IUS allows to perform behavioral simulation on Verilog and VHDL code. |
IES是cadence现在的仿真工具,功能强大。代表工具,irun
官方介绍:
IES(incisive Enterprise Simulator)cadence IES is considered to be one of the most considered tool to automates testbench generation, design verification and analysis from the system level to the gate level. |
不过,现在cadence又开发出了新的仿真工具,叫xcelium。代表工具,xrun。
一、仿真模式
cadence的仿真工具,分为单步仿真模式,和多步仿真模式。单步仿真模式,是指,只要一个命令,即可实现仿真。而多步仿真模式,是指,需要多个命令的组合,才可以实现仿真。
cadence的很多工具,带有nc作为前缀。
nc,指native compile,将不同的HDL code转化成一种中间语言(native language),然后统一仿真,为了实现混合语言仿真。
1、多步仿真模式
使用ncvlog(ncsc,ncvhdl),ncelab,ncsim命令来实现仿真。
ncvlog,编译源代码
ncelab,对编译的结果,进行elaborate,建立snapshot文件
ncsim,对snapshot文件进行仿真
以下是仿真的flow
对于不同的源文件,使用不同的工具进行编译
- systemC: 使用ncsc工具编译
- VHDL: 使用ncvhdl工具编译
- VERILOG: 使用ncvlog工具编译
编译完成后,使用ncelab工具,对编译结果进行elaborate,得到snapshot文件,最后在使用ncsim工具,对其进行仿真。
多命令模式的例子:
123 | ncvlog -f run.f ncelab tb -access wrc ncsim tb –gui |
第一个命令,run.f是整个RTL代码列表, ncvlog执行以后将生成一个名为INCA_libs的目录和一个名为worklib的目录。
第二个命令,-access选项是确定读取文件的权限,其中的tb是tb文件内的顶层模块名字。ncelba要选择tb文件的顶层module,elaborate之后,会生成snapshot。
第三个命令,选择snapshot进行仿真,-gui启动图形化界面。
2、单步仿真模式
单步仿真模式,包括ncverilog和irun。
早期的IUS,使用ncverilog,进行单步仿真模式,ncverilog,内部会自动调用ncvlog,ncelab,ncsim工具进行仿真。
从IUS8.1开始,ncverilog命令,被替换成irun命令,使用ncverilog,将直接调用irun命令。而irun工具,内部也会自动调用ncvlog,ncelab,ncsim工具进行仿真。
以下是官方文档中说明的:
because irun supports all features of ncverilog, including its command-line options, Cadence is replacing ncverilog with irun. Beginning with the IUS 8.1 release, using the ncverilog command will invoke irun。 |
二、irun工具
irun支持各种源程序文件输入,verilog,systemverilog,VHDL,verilog AMS,VHDL AMS,specman e,和其他语言程序编写的文件如C,C++,并且使用合适的编译器对其进行编译。当输入的文件,都编译完毕后,irun自动启动ncelab,去elaborate,产生snapshot,最后启动ncsim仿真器去仿真snapshot。
- .v文件,使用ncvlog
- .sv文件,使用ncvlog
- .vhd文件,使用ncvhdl
- .e文件,使用sn_compile.sh脚本
irun启动后,会在生成目录,自动创建INCA_libs文件夹。
irun只是个脚本,能根据源程序的类型(如verilog,VHDL等)自动调用相应的编译程序(ncvlog,ncvhdl等),然后依次是elaborate,simulate。
irun的选项很多,下面列举一些常用选项:
选项 | 说明 |
-64bit | 使用64bit irun模式 |
-f | 指定file list |
-vlog_ext | 修改verilog文件的默认后缀如 -vlog_ext .vvv,.vv ,修改verilog的默认后缀为.vvv和.vv |
-c | 只生成snapshot,不仿真 |
-access | 设置访问权限 |
-nclibdirpath | 指定 INCA_libs 目录 |
-R | 只仿真,需要有提前生成的snapshot |
-sv | 支持systemverilog语言 |
-uvm | 开启uvm,自动编译uvm库 |
-uvmhome | 指定uvm库位置CDNS-1.2 默认IES中的uvm-1.2版本 |
-uvmnoautocompile | 不自动编译uvm库 |
-clean | 在run执行之前,删除INCA_libs文件夹 |
-l | 指定输出log文件 |
-seed | 指定随机种子数 |
-top | 指定顶层模块 |
-hdlvar | 指定 hdl.var文件 |
-cdslib | 指定cds.lib文件 |
-loadpli1 | 指定读取外部读取的库文件 |
-prep | 打开prep mode,不仿真,生成多步仿真的脚本文件生成4个文件,ncvlog_ver.args: ncvlog工具的参数文件ncelab.args ncelab工具的参数文件ncsim.args: ncsim工具的参数文件RUN_NC: 仿真的脚本文件,调用ncvlog,ncelab,ncsim。 |
-checkargs | 检查irun的输入参数,是否有误 |
-helpargs | 打印每个输入参数的作用 |
-helpall | 打印帮助信息 |
+xxx=yyy | 向验证环境传递仿真参数xxx,值为yyy |