提高NC-Verilog模擬效率的技巧

admin @ 2014-03-26 , reply:0

    本文回顧了一些NC-Verilog的命令行選項,並說明這些選項如何影響模擬效率。同時,我們也展示了一些技巧,以幫助用戶的NC-Verilog在最大效率下模擬一個設計和測試平台。

    文中的命令行選項語法採用單步啟動的方式(ncverilog +<options>),這些選項也適合多步啟動模式(ncvlog, ncelab, 或ncsim)。

 安裝最新發布的軟體

      首先確認你是否安裝了最新的Cadence LDV版本。自動1996年發布第一版NC-Verilog以來,我們的研發隊伍一直把模擬器的模擬效率作為重點來研究。在後來推出的新版本里,不斷按各種設計風格優化模擬器,因此使用最新版本是最有利的。直到2002年2月,最新版本是LDV 3.4(s1)。

使用NC-Verilog內置的profiler

            NC-Verilog在模擬引擎內開發了一個profiler工具。該工具每秒中斷模擬器100次,並將終端時的結構記錄下來,生成一個日誌文件。日誌文件里列出了被中斷次數最多的模塊、代碼行和結構類型。這些信息可以幫助你診斷是哪些代碼或模塊在模擬時耗費了最多的時間。通過修改這些模塊,就能提升模擬效率。

            Profiler功能很容易啟動,並對模擬只產生非常小的影響。

% ncverilog +ncprofile <other_options> or

% ncsim –profile snapshot_name <other_options>

            在模擬結束時,profiler會創建一個日誌文件(ncprof.out),文件里列出了profile運行的細節。關於如何利用profiler日誌文件,可參考Cadence在線文檔(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 14)。

禁止時序驗證來提升效率

            預設情況下,如果在設計中考慮了時序,NC-Sim將進行標準延遲格式(SDF)的全時序標註(annotation),並在模擬時檢查時序。在進行功能驗證時,如果你不需要模擬時序,就可以通過禁止一些時序檢查功能來提高NC-Sim的模擬速度。這樣雖然不能驗證時序,但是提高了模擬效率,減少了模擬內存需求。

            下面是一些用來禁止時序檢查的一些命令行。

% 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

            Cadence LDV 3.3(2001年7月)增加了通過一個時序控制文件來為各個模塊設置時序選項的功能。你可以模塊為單位來設置是否進行時序檢查,是否允許I/O路徑延遲、埠延遲、庫單元延遲和全時序檢查。時序控制文件里要寫明要配置的實例(instance)。命令行語法是:

% ncverilog +nctfile <timing_ctl_file> <other options>

% ncelab –tfile <timing_ctl_file> snapshot_name

<other_options>

            時序控制文件的語法在Cadence 在線文檔(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 8)中可以找到。

提高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)檢查

LDV 3.3預設的模擬配置為負時序檢查。這樣,LDV 3.3和以前的版本的模擬結果就有所不同。

負時序檢查有下列的選項:

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>

            訪問屬性文件的語法可在Cadence 在線文檔(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 8) 中找到。

小結

            本文提供各種提高模擬速度的方法。

            提高模擬效率的最簡單辦法是選用最新版的Cadence LDV。我們應該經常運行NC-Sim Profiler來判斷模擬器在哪裡耗費最多的時間。然後集中精力優化那些代碼。

            還可以使用命令行選項來提高模擬效率。你可以通過這些選項來配置時序功能、改變SDF精度和配置對象的訪問屬性。提高模擬效率、可靠性和準確性對於驗證設計都很重要。




[admin via 研發互助社區 ] 提高NC-Verilog模擬效率的技巧已經有11132次圍觀

http://cocdig.com/docs/show-post-43355.html