轉https://blog.csdn.net/limanjihe/article/details/49924057
Verilog提供一系列系統(tǒng)任務用于記錄信號值變化初厚,常見的格式有vcd,fsdb等橡羞。
$dumpfile("file. dump"); 打開一個VCD數(shù)據(jù)庫用于記錄
$dumpvars(level,start_module); 要記錄的信號丢间,level=0表示記錄所有
$dumpflush; 將VCD數(shù)據(jù)保存到磁盤 不明白
$dumpoff; 停止記錄
$dumpon; 重新開始記錄
$dumplimit(); 限制VCD文件的大小(以字節(jié)為單位)
$dumpall; 記錄所有指定的信號值
用法:
initial
begin
$dumpfile (“verilog. dump”);
$dumpvars (0, testfixture);
end
舉例:
$dumpvars; // Dump所有層次的信號
$dumpvars (1, top); // Dump top模塊中的所有信號
$dumpvars (2, top. u1); // Dump實例top. u1及其下一層的信號
$dumpvars (0, top. u2, top. u1\. u13\. q); // Dump top.u2及其以下所有信號,以及信號top. u1\. u13\. q弧圆。
$dumpvars (3, top. u2, top. u1); // Dump top. u1和top. u2及其下兩層中的所有信號毛雇。
https://blog.csdn.net/immeatea_aun/article/details/80961258
Verdi主要在以下方面使用:
IC驗證工程師(Debug)
IC設計工程師(Review)
能夠生成fsdb波形逊朽;
能夠查看fsdb波形晶渠;
能夠追蹤RTL代碼凰荚。
生成FSDB波形
VERDI_HOME/NOVAS_HOME:仿真器默認,且為設置PATH做準備
PATH:讓系統(tǒng)(Linux)找到verdi
LD_LIBRARY_PATH:讓系統(tǒng)(Linux)能夠找到Verdi需要的庫文件.
三個命令
echo(可配合sed):查詢環(huán)境變量
echo $PATH | sed ‘s/\:/\n/g’
echo $LD_LIBRARY_PATH | sed ‘s/\:/\n/g’
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/libLINUX64
/home/.tools/synopsys/Verdi3_L-2016.06-1/share/PLI/IUS/LINUX64/boot
+ which :查詢當前軟件是否設置褒脯,若設置成功便瑟,會顯示軟件路徑
+ uname -i:查詢當前系統(tǒng)信息,如硬件平臺64bit為x86_64/amd64,32bit平臺為i386
兩大方法
使用Verilog系統(tǒng)函數(shù)
initial begin
$fsdbDumpfile("top_tb.fsdb");
$fsdbDumpvars(0,"tob_tb");
end
* 使用UCLI番川、TCL接口(VCS使用tcl腳本到涂,irun脊框、questa與該腳本類似)
1
global env
fsdbDumpfile "$env(demo_fifo).fsdb"
fsdbDumpvars 0 "top_tb"
run
Dump波形的兩類主要方法優(yōu)缺點比較
基于系統(tǒng)函數(shù)
優(yōu)點 1.新員工熟悉Verilog代碼,接受較快
缺點 1.需要重新編譯系統(tǒng)践啄,浪費時間(不使用value
plusargs時)浇雹;2.Verilog是低級語言,對于文本處理比較困難屿讽,不支持正則表達式
基于ucli/tcl接口
1.不需要重新編譯仿真頂層箫爷; 2.使用高級語言接口,容易完成復雜處理聂儒,例如傳遞變量,例如使用正則表達式硫痰;3.交互式接口衩婚,控制靈活,仿真過程可修改dump信息效斑,如dumpon/dumpoff
缺點 1.新員工大多不熟悉Tcl非春,接受較慢
- 三大EDA廠商
- Synopsys:VCS + Verdi
- Cadence :irun + Verdi
- Mentor :Questa + Verdi
VCS腳本:與Verdi有關的為注釋內(nèi)容,使用ucli接口
com:
vcs -full64
-sverilog
-debug_pp \ # 使能UCLI命令
-LDFLAGS \ # 傳遞參數(shù)給VCS的linker,與以下三行配合使用
-rdynamic \ # 指示需加載的動態(tài)庫缓屠,如libsscore_vcs201209.so
-P {PLATFORM}/novas.tab \ # 加載表格文件
{PLANTFORM}/pli.a \ # 加載靜態(tài)庫
-f ../${demo_name}/tb_top.f
+vcs+lic+wait
-l compile.log
sim:
./simv
-ucli -i ../scripts/dump_fsdb_vcs.tcl \ # ucli的輸入文件(-i)為tcl腳本
+fsdb+autoflush \ # 命令行參數(shù)autoflush奇昙,一邊仿真一邊dump波形,如果沒有該參數(shù)敌完,那么不會dump波形储耐,需要在ucli命令run 100ns后鍵入fsdbDumpflush才會dump波形
-l sim.log
其中dump_fsdb_vcs.tcl(ucli腳本為tcl語言)
global env # tcl腳本引用環(huán)境變量,Makefile中通過export定義
fsdbDumpfile "$env(demo_name).fsdb" # 設置波形文件名滨溉,受環(huán)境變量env(demo_name)控制 # demo_name在makefile中使用export demo_name=demo_fifo
fsdbDumpvars 0 "tb_top" # 設置波形的頂層和層次什湘,表示將tb_top作為頂層,Dump所有層次
run # 設置完dump信息晦攒,啟動仿真(此時仿真器被ucli控制) 可以run 100ns會在仿真100ns的時候停下來下來
也可以使用交互式仿真:注釋內(nèi)容可以在仿真過程中鍵入
global env
fsdbDumpfile "$env(demo_name).fsdb"
fsdbDumpvars 0 "top_tb"
run 200ns
fsdbDumpoff
run 100ns
fsdbDumpon
run
irun編譯運行腳本:
com:
irun
-elaborate
-access +r \ # 表示需要有讀的權限
-f ../${demo_name}/tb_top.f
-top tb_top
-licqueue
-l compile.log
sim:
irun
-R
-input ../scripts/dump_fsdb_irun.tcl
+fsdb+autoflush
-licqueue
-l sim.log
dump_fsdb_irun.tcl
global env
call fsdbDumpfile "$env(demo_name).fsdb" # 需要使用call,與vcs區(qū)別之一
call fsdbDumpvars 0 "tb_top"
run
quit # 需要使用quit闽撤,irun不自動結束
questa腳本
compile:
vlib work
vmap work work
vlog
-64
-sv
+acc \ # +acc使加載PLI有效
-f ../${demo_name}/tb_top.f
-l com.log
run:
vsim
-64
-batch
-novopt
-pli {PLATFORM}/novas_fli.so \ # 加載共享對象
work.tb_top
-do ../scripts/dump_fsdb_questa.tcl
+fsdb_autoflush
-l sim.log
dump_fsdb_questa.tcl
gloal env
fsdbDumpfile "$env(demo_name).fsdb"
fsdbDumpvars 0 "tb_top"
run -all
quit -sim
不同場景dump波形的需求
verdi 加載設計的腳本
debug:
verdi
-sv \ # 支持sv
-f ../${demo_name}/tb_top.f \ # 加載設計文件列表
-top tb_top \ # 指定設計頂層
-nologo # 關掉歡迎界面
PS:
Verdi加載設計的參數(shù)與VCS類似
支持+incdir+xx 設置include文件目錄
+libext+.v 設置庫文件后綴
-v 設置可搜索設計的文件
-y 設置可搜索設計的目錄
加載FSDB波形
dbg:
verdi -sv \ #支持SV
-f ../{waveform}
-nologo #關閉歡迎界面
verdiLog文件夾里面的compile.log是verdi編譯信息
重復加載設計和波形:(reload)
避免重復開關gui
避免頻繁申請license(license資源問題,手中掌握資源脯颜,霸占…)
verdi界面
ntrace:file -> reload design,一般重新加載設計的同時會重新load wave
nwave :file -> reload
拓撲結構:topology(在nTrace)
源碼(nTrace)
選擇信號方式:
在設計中選擇信號哟旗,按快捷鍵ctrl+w
在nWave界面使用通配符,可以選擇in/out/inout/net(wire)/register等信號
查看波形
目標 快捷鍵 鼠標操作
100%波形 F 點擊100%符號
縮小波形 z(推薦) -
放大波形 shift+z 左鍵拖選放大范圍(推薦)
移動信號 中鍵選擇位置+信號+M 鼠標中鍵按住信號拖拽
拷貝波形 ctrl+p 右鍵選擇
粘貼信號 中間選擇位置+Ins 右鍵選擇
刪除信號 Del 右鍵選擇
顯示結構 h(開/關) -
時間差
- nWave:waveform -> marker 標記 :輸入名字栋操,然后add
- nWave:waveform -> Signal Value Radix修改進制;
- nWave:waveform -> Signal Value Notation設置信號闸餐。無符號unsigned,有符號一般選擇Signed 2's Complement
查看信號變化:
對于狀態(tài)機:點擊nTrace中類似與門的信號矾芙,點擊打開電路圖后波形就變成了rtl中的設置的狀態(tài)機的不同狀態(tài)(三段式容易被verdi識別是狀態(tài)機绎巨,標注狀態(tài))
信號分組:右鍵rename組名,結構清晰蠕啄,便于對照
總線操作:選中信號右鍵Bus Operations ->Create Bus
這里取反是bit取反场勤,非byte
save和restore
存儲當前查看波形的工程
將當前所有信號存成一個*.rc文件
重新打開波形界面時戈锻,restore信號
nwave:file -> Save Signal/Restore Signal
debug 追蹤波形
快速熟悉一個設計:雙擊RTL中的信號,追蹤波形
掌握設計拓撲結構:通過nTrace界面獲取
熟悉設計的輸入和媳、輸出
Trace(Input)
哪些信號驅動了當前信號
Load(Output)
當前信號驅動了哪些信號
找到ntrace中的L格遭、D
同時可以在trace界面右鍵Collapse All,Expand All,save等操作
在設計之間跳轉,回退 上、下留瞳、前拒迅、后等
快速找到應用實例:nTrace : Source -> Find Signal/Instance/Instport
勾選Search Full Scope ,選擇輸入要例化的模塊(支持通配符)
- 獲取波形里面的信號數(shù)值:nTrace:source -> Active Annotation,將所有的信號標值
————————————————
版權聲明:本文為CSDN博主「254她倘、小小黑」的原創(chuàng)文章璧微,遵循 CC 4.0 BY-SA 版權協(xié)議,轉載請附上原文出處鏈接及本聲明硬梁。
原文鏈接:https://blog.csdn.net/immeatea_aun/article/details/80961258
dump memory波形和查看
https://www.cnblogs.com/OneFri/p/5989033.html