-html
irun有意思的地方,其幫助命令linux
irun -helphelpgit
irun -helpallshell
---------------數據庫
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庫設置起來:post
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
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致使;
2、方法
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
Ncverilog使用。
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操做(尤爲是單步模式)更適合於大批量操做
>ncvlog -f run.f >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: 一、NC-VERILOG在建立工程時會生成兩個文件:cds.lib和hdl.var。 二、testbench和DUT固然是不一樣的文件。 三、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> 附:命令行輸入 !!↙ 是執行上一條命令, 命令行輸入 !* ↙ (*表明字母) 是執行最近的以*開頭的命令。 上述附註對命令輸入速度提升有所幫助。