cadence,有两大验证仿真工具。一个是IUS,一个是IES。ui
IUS是cadence之前的仿真工具,功能略弱。表明工具,ncverilog。spa
官方介绍:3d
IUS(incisive unified simulator)code Cadence IUS allows to perform behavioral simulation on Verilog and VHDL code.orm |
IES是cadence如今的仿真工具,功能强大。表明工具,irunblog
官方介绍:ci
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。
1、仿真模式
cadence的仿真工具,分为单步仿真模式,和多步仿真模式。单步仿真模式,是指,只要一个命令,便可实现仿真。而多步仿真模式,是指,须要多个命令的组合,才能够实现仿真。
cadence的不少工具,带有nc做为前缀。
nc,指native compile,将不一样的HDL code转化成一种中间语言(native language),而后统一仿真,为了实现混合语言仿真。
一、多步仿真模式
使用ncvlog(ncsc,ncvhdl),ncelab,ncsim命令来实现仿真。
ncvlog,编译源代码
ncelab,对编译的结果,进行elaborate,创建snapshot文件
ncsim,对snapshot文件进行仿真
如下是仿真的flow
对于不一样的源文件,使用不一样的工具进行编译
-
systemC: 使用ncsc工具编译
-
VHDL: 使用ncvhdl工具编译
-
VERILOG: 使用ncvlog工具编译
编译完成后,使用ncelab工具,对编译结果进行elaborate,获得snapshot文件,最后在使用ncsim工具,对其进行仿真。
多命令模式的例子:
1
2
3
|
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启动图形化界面。
二、单步仿真模式
单步仿真模式,包括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。 |
2、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 |