加快modelsim仿真速度的方法(原創)


①仿真精度越高,仿真效率月底。

仿真時采用`timescale 1ns/1ns比采用1ns/100ps的仿真效率高

simulation was two billion ns.

②clock generation coding tips

 

 

 

 

 

(from<A BFM Simulation Strategy for Verilog>)

②減少層次結構

在設計中層次結構越少,仿真速度越快,這是因為參數在module中通過端口傳遞會消耗仿真器的時間

③進程越少,仿真效率越高

代碼中出現的進程越少,仿真越快。因為仿真器在多個進程之間切換也需要時間。

④減少門級原語的使用,盡量采用行為描述

建模的抽象層次越高,仿真效率越高。描述同樣的功能盡量采用行為描述,少使用門級原語

⑤盡量使用case語句,而不是if ...else語句

如果使用case語句和if..else語句能夠實現相同的電路,則盡量使用case語句,以提高仿真效率。

⑥減少begin...end語句塊的使用

在語義不發生歧義的情況下,盡量減少使用begin...end語句塊,以提高仿真效率

⑦減少仿真器的輸出顯示

過多使用仿真器的輸出顯示任務,如$display,$fdisplay等,會降低仿真器執行的速度。

 

注意:以上幾點只是用來提高仿真效率的建議,並不是說設計代碼一定要這樣做,而是建議在保證代碼功能,可讀性,可維護性和安全性的前提下,

盡量采用提高仿真效率的方法,節約仿真和調試的時間。畢竟代碼功能,可讀性,可維護性和安全性才是最重要的。

 

①使用增量編譯,當整個仿真系統有大量文件組成時,每修改某個module中的部分信號后,想查看時序波形的時候,如果所有文件都編譯一遍,會浪費大量時間。這時,增量編譯可以有效的節約仿真時間

vlog -incr 

vcom -incr

②不啟用GUI界面,不啟用modelsim的GUI界面一樣可以完成仿真的所有工作,而且速度會比較快;記錄下仿真波形(仿真完后再看波形:do wave.do;或將觀察的信號打印到文件,直接比對)

vsim -c -do run_sim.do -l vsim.log -wlf vsim.wlf

xxx ③啟用nodebug模式(默認是debug模式),速度會有所提高,但某些調試功能將被禁止,比如trace x功能就不能用了

  vlog -nodebug

 

④避免顯示不必要的信號

使用 log -r /* (記錄所有的信號,運行這個命令后即使在仿真前沒有把信號加入wave窗口,仿真完成后直接加入wave窗口就可以查看波形,比較方便,但是缺點是當工程較大和仿真時間很長時仿真速度較慢,占用內存也較大。)

好處是:可以記錄所有信號的波形,方便后續查看到所有想查看的波形

缺點是:會降低仿真速度

⑤如果調用了IPCORE,研究官方的UG,加速仿真速度(ex:SRIO加速開關)

 

⑥修改設計,在不影響仿真結果的情況下,修改設計文件,加速仿真速度(ex:將counter從1024改為128)

⑧Use the vopt command to increase simulation speed.(modelsim.ini文件中:“VoptFlow = 1”默認打開優化)

vsim -vopt 

-vopt                              Run vopt optimization before elaborating the simulator
-voptargs="<arglist>"      Pass the specified arguments to vopt

-novopt
(optional) Forces vlog to produce code if the VoptFlow variable is set to 1 (optimizations
turned on) in the modelsim.ini. (VoptFlow = 1 is the default behavior.) Use this argument
together with the vsim -novopt command to run the simulator without any optimizations.
For example, you may want to use this argument when you are coding an RTL block with a
small testcase.

 

 

 

-voptargs="+acc"   :

The +acc switch is more
related to those, and is used to preserve visibility to certain categories of objects that might
otherwise be optimized away. Objects that get optimized away can make your debug and
analysis efforts more difficult

⑨為了提高仿真性能,應該使采樣最小化。

減少仿真輸出的總數,可以加快仿真仿真過程。使用計算機的輸出設備會減慢程序的運行,因此,記錄仿真輸出的過程會使仿真變慢。

$monitor $write $display $strobe等系統函數的運用有助於debug,但會減慢仿真速度,根據實際做好平衡。

一個有效的減少數據采樣的辦法是:當進入testcase中感興趣的地方時,令激勵器打開采樣過程。可以通過下面兩個系統任務啟動和關閉監控:

$monitoron(啟動最近關閉的監控任務) ,$monitoroff(關閉激活的監控任務)


免責聲明!

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



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