nc-sim (irun)和verdi ncverilog,


 -

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

dorada  dorada  2012-04-10 18:50:37
 
  >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:
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>

附:命令行輸入
!!↙
是執行上一條命令,
命令行輸入
!* ↙ (*代表字母)
是執行最近的以*開頭的命令。
上述附注對命令輸入速度提高有所幫助。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM