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 |