-
irun有意思的地方,其幫助命令
irun -helphelp
irun -helpall
---------------
yxr:簡單點說,就是添加動態庫的路徑名,LD_LIBRARY_PAH,然后調用時添加
-loadpli1 debpli:novas_pli_boot 或者 +loadpli1=debpli:novas_pli_boot
原文:https://blog.csdn.net/steven_yan_2014/article/details/41778825
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
VCS無法使用的問題困擾了好久,暫且放下,下面要搞定ncverilog和verdi結合使用dump fsdb的問題。
其實很簡單,如果正確安裝了Ncverilog和Verdi,只需要兩步就可以搞定。
1.設置環境變量,也就是把Verdi的PLI庫設置起來:
export LD_LIBRARY_PATH=/usr/cad/verdi-2012.10/share/PLI/IUS/LINUX/boot:$LD_LIBRARY_PATH
2.在Ncverilog的仿真命令里加入command如下:
+ncaccess+rwc +loadpli1=debpli:novas_pli_boot
比如ncverilog test_top.v +ncaccess+rwc +loadpli1=debpli:novas_pli_boot
並且在test_top.v的initial塊種加入fsdbdump的命令
initial begin
$fsdbDumpfile("system.fsdb");
$fsdbDumpvars(0,test_top);
end
---------------------
irun就是cadence verilog/vhdl最新的仿真命令。
最老的是ncvlog/ncvhdl、ncelab、ncsim三步式;
ncverilog和irun類似,都可以理解是腳本命令;真實仿真,還是依賴三步式的命令。
雖然原理,依然是三步式;但單命令方式,使用起來更簡單。
irun,可以認為就是三步式命令。所以支持的功能feature,都是完全一致的。這一行的話,是我自己理解的。。
ncverilog已經過時,irun是主流。可以查看EDA工具,確認ncverilog就是irun的鏈接符號。
---------------------
https://www.cnblogs.com/digital-wei/p/6017812.html
【開發環境】 irun(ncverilog)無法dump fsdb波形問題解決方法
2. IRUN運行時出現如下錯誤:$fsdbDumpfile和$fsdbDumpvars 函數不能識別;
Building instance overlay tables: .................... Done Generating native compiled code: worklib.HANDSHAKE_TB:v <0x45f2bf0a> streams: 1, words: 554 Building instance specific data structures. Loading native compiled code: .................... Done Design hierarchy summary: Instances Unique Modules: 2 2 Registers: 15 15 Scalar wires: 7 - Always blocks: 7 7 Initial blocks: 5 5 Cont. assignments: 0 2 Simulation timescale: 100ps Writing initial simulation snapshot: worklib.HANDSHAKE_TB:v Loading snapshot worklib.HANDSHAKE_TB:v .................... Done $fsdbDumpfile("test.fsdb"); | ncsim: *E,MSSYSTF (./tb.v,75|14): User Defined system task or function ($fsdbDumpfile) registered during elaboration and used within the simulation has not been registered during simulation. $fsdbDumpvars (0,TB); | ncsim: *E,MSSYSTF (./handshake_tb.v,76|14): User Defined system task or function ($fsdbDumpvars) registered during elaboration and used within the simulation has not been registered during simulation.
原因: irun未能正確加載debpli.so導致;
二、方法
1. 設置LD_LIBRARY_PATH如下:
其中NOVAS_HOME為VERDI安裝目錄,注意此處CentOS為32位系統,64位系統需要直到的目錄;
#32bit CentOS
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NOVAS_HOME/share/PLI/lib/LINUX:$NOVAS_HOME/share/PLI/IUS/LINUX/boot"
#64bit CentOS export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NOVAS_HOME/share/PLI/lib/LINUX64:$NOVAS_HOME/share/PLI/IUS/LINUX64/boot"
2. 設置IRUN運行參數如下:
irun -access +rwc -loadpli1 debpli:novas_pli_boot -f XXXXXXX.f
3.設置完成后可正常運行;
--------------------------------------------------------------
https://www.douban.com/note/209157096/
ncverilog 現在叫irun
irun
2010-05-27 16:31
(轉);本人不用c的軟件。
在NC自帶的幫助Cadence NC-Verilog Simulator Help中都可以找到。
以下整理自網絡,有點亂 :(
ncverilog是shell版的,nclaunch是以圖形界面為基礎的,二者調用相同內核;
ncverilog的執行有三步模式和單步模式,在nclaunch中對應multiple step和single step
ncverilog的三步模式為:ncvlog(編譯) ncelab(建立snapshot文件) ncsim(對snapshot文件進行仿真)
基於shell的ncverilog操作(尤其是單步模式)更適合於大批量操作
>ncelab tb -access wrc
>ncsim tb -gui
第一個命令中,run.f是整個的RTL代碼的列表,值得注意的是,我們需要把tb文件放在首位,這樣可以避免出現提示timescale的錯誤
注意:ncvlog執行以后將產生一個名為INCA_libs的目錄和一個名為worklib的目錄
第二個命令中,access選項是確定讀取文件的權限。其中的tb是你的tb文件內的模塊名字。
注意:ncelab要選擇tb文件的module,會在snapshot文件夾下生成snapshot的module文件
第三個命令中,gui選項是加上圖形界面
在這種模式下仿真,是用“ - ”的。而下邊要說的ncverilog是采用“ + ”的
三命令模式下GUI界面較好用,其對應的命令會在console window中顯示
注意:選擇snapshot文件夾下生成的module文件進行仿真
單命令模式:
>ncverilog +access+wrc rtl +gui
在這里,各參數與三命令模式相同。注意“ + ”
通常都使用單命令模式來跑仿真,但要配置好一些文件
單命令模式下文件的配置:
目錄下有源文件、測試台文件、file、run四個文件
在linux下執行source run后再執行simvision來查看
run文件內容: ncverilog +access+rw -f file
file文件內容: cnt_tb.v(注意把tb文件放在前)
cnt.v
tb文件中應該包含:
initial
begin
$shm_open("wave.shm"); //打開波形保存文件wave.shm
$shm_probe(cnt_tb,"AS"); //設置探針
end
A -- signals of the specific scope 為當前層信號設置探針
S -- Ports of the specified scope and below, excluding library cells
C -- Ports of the specified scope and below, including library cells
AS -- Signals of the specified scope and below, excluding library cells 為當前層以以下層信號都設置探針,這是最常用的設置方法
AC -- Signals of the specified scope and below, including library cells
還有一個 M ,表示當前scope的memories, 可以跟上面的結合使用, "AM" "AMS" "AMC"
什么都不加表示當前scope的ports;
$shm_close //關閉數據庫
查看結果時可以在source schemic wave register四個窗口同時查看
保存波形信號的方法:
1.SHM數據庫可以記錄在設計仿真過程中信號的變化. 它只在probes有效的時間內記錄你set probe on的信號的變化.
2.VCD數據庫也可以記錄在設計仿真過程中信號的變化. 它只記錄你選擇的信號的變化.
$dumpfile("filename"); //打開數據庫
$dumpvars; //depth = all scope = all
$dumpvars(0); //depth = all scope = current
$dumpvars(1, top.u1); //depth = 1 scope = top.u1
$dumpoff //暫停記錄數據改變,信號變化不寫入庫文件中
$dumpon //重新恢復記錄
3.Debussy fsdb數據庫也可以記錄信號的變化,它的優勢是可以跟debussy結合,方便調試.
如果要在ncverilog仿真時,記錄信號, 首先要設置debussy:
a. setenv LD_LIBRARY_PATH :$LD_LIBRARY_PATH(path for debpli.so file (/share/PLI/nc_xl//nc_loadpli1))
b. while invoking ncverilog use the +ncloadpli1 option. ncverilog -f run.f +debug +ncloadpli1=debpli:deb_PLIPtr
fsdb數據庫文件的記錄方法,是使用$fsdbDumpfile和$fsdbDumpvars系統函數,使用方法參見VCD
注意: 在用ncverilog的時候,為了正確地記錄波形,要使用參數: "+access+rw", 否則沒有讀寫權限
ncverilog編譯的順序: ncverilog file1 file2 ....
有時候這些文件存在依存關系,如在file2中要用到在file1中定義的變量,這時候就要注意其編譯的順序是
從后到前,就先編譯file2然后才是file2.,
信號的強制賦值force:
首先, force語句只能在過程語句中出現,即要在initial 或者 always 中間. 去除force 用 release 語句.;
initial begin force sig1 = 1'b1; ... ; release sig1; end,
force可以對wire賦值,這時整個net都被賦值; 也可以對reg賦值.
Verilog和Ncverilog命令使用庫文件或庫目錄
ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //一般編譯文件在run.f中, 庫文件在lib.v中,lib2目錄中的.v文件系統自動搜索,使用庫文件或庫目錄,只編譯需要的模塊而不必全部編譯
Q:我的files里面只有一個help文件夾,里面是一個叫ncprotect文件,沒有你所說的hdl.var文件啊
A:
1、NC-VERILOG在創建工程時會生成兩個文件:cds.lib和hdl.var。
2、testbench和DUT當然是不同的文件。
3、sdf是standard delay format文件,由綜合和后端工具產生,供后仿用。
(1) 先建立
cds.lib
DEFINE work ./work_lib
hdl.var
DEFINE WORK work
(2)
mkdir work_lib
(3) ncvlog .....
$>cdsdoc
啟動cadence 文檔窗口,是文檔是html格式的.這里,我的需要先啟動firefox,然后才能開cdsdoc。
$> (tool_name) -help
$> nchelp [options] tool_name message_code *******
ncsim> help [help_options] [command | all [command_options]
提高NC-Verilog仿真效率的技巧
下面是一些用來禁止時序檢查的一些命令行。
% ncverilog +delay_mode_distributed +notimingcheck +noneg_tchk
或
% ncelab –delay_mode dist –notimingchecks –noneg_tchk
下面還列出了關於時序的全局選項:
ncverilog option ncelab option
+nonotifier -nonotifier Disables notifier register
+notimingcheck -notimingchecks Disables timing check
+delay_mode_unit -delay_mode unit Delay 1 simulation time unit
+delay_mode_zero -delay_mode zero Zero delay
+delay_mode_distributed -delay_mode dist Ignores specify block delays
提高SDF的精度
時序信息通過SDF文件傳遞給一個設計。在LDV 3.1以前的版本里,缺省的SDF精度是10ps。從LDV 3.1開始,所有的時序寬度(包括小於10ps的)都允許使用,這樣仿真的時序結果
更加精確,但是仿真變得更慢。在多數情況下,10ps就足夠了,因此你也許想用下面的方法來改變精度:
% ncverilog +ncelabargs+”-sdfprecision 10ps” <other options>
或
% ncelab –sdf_precision [10ps|1ps|100fs] <other_options>
關於負時序(negative timing)檢查
負時序檢查有下列的選項:
ncverilog option ncelab option
+neg_tchk -neg_tchk Still exists for backward compatibility
+noneg_tchk -noneg_tchk Sets negative timing checks to zero
(matches previous behavior)
設置訪問屬性
缺省情況下,NC在非調試模式運行,仿真速度很快。可以通過設置訪問屬性和行調試(line-debug)功能來配置在仿真過程中信號、模塊、和代碼的訪問屬性。這樣做降低了仿真
的速度。
如果你想在代碼中設置斷點,就必須使用行調試選項。該選項對仿真效率影響非常大。
% ncverilog +linedebug <other options>
或
% ncvlog –linedebug <other_options> <verilog_source_files>
也可以設置設計的全局訪問屬性。下列的命令可以用來配置設計為允許讀、寫和交叉訪問(connectivity access)。
% ncverilog +access+[rwc] <other options>
或
% ncelab –access [rwc] snapshot_name <other_options>
r : read capability for waveform dumping, code coverage, etc
w : write access for modifying values through PLI or tcl code
c : connectivity access to querying drivers and loads in C or tcl
前面曾經提到過,這些選項將降低仿真的速度。讀屬性是通常要使用的,它對仿真性能影響非常小。
為了給部分對象、模塊或實例設置訪問屬性,可以創建一個訪問屬性文件,並在文件中說明那些對象的訪問屬性。然后用在運行 elaborator 時使用 –afile選項。
% ncverilog +ncafile+<access_filename> <other _options>
or
% ncelab -afile <access_filename> snapshot_name <other_options>
% ncsim snapshot_name <other options>
也可以用 –genafile 選項來自動生成訪問屬性文件。當仿真使用了Tcl、PLI或probing功能,無法提前確定對象的訪問屬性,就可以采用自動生成訪問屬性文件的方法。
Elaborator 在生成仿真快照(snapshot)時會考慮你給出的 –genafile選項;然后,當運行仿真時,Tcl或PLI訪問過的對象就會被記錄下來。退出仿真的時候,訪問屬性文件就
生成了。舉個例子:
% ncverilog +ncgenafile+access.txt <other _options>
或
% ncelab -genafile access.txt test.top <other_options>
% ncsim test.top <other options>
仿真運行完成后,生成了一個access.txt 文件。你可以通過 –afile 選項來使用這個文件(象前面介紹的那樣):
% ncverilog +ncafile+access.txt <other _options>
或
% ncelab -afile access.txt test.top <other_options>
附:命令行輸入
!!↙
是執行上一條命令,
命令行輸入
!* ↙ (*代表字母)
是執行最近的以*開頭的命令。
上述附注對命令輸入速度提高有所幫助。