Verdi fsdb分塊記錄方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
常用的fsdb分塊記錄使用的方法主要有以下兩種:$fsdbAutoSwitchDumpfile和$fsdbSwitchDumpfile。下面將示例說明兩種方法的用法。
1 按照指定大小分割波形
Verdi支持在仿真時(shí),指定dump的波形達(dá)到一定大小后自動(dòng)進(jìn)行分塊保存,其命令格式如下:
$fsdbAutoSwitchDumpfile(File_size | File_Size_var,”FSDB_Name” | FSDB_name_var,Number_of_files | Number_of_Files_var[,”log_filename”|,log_filename_var]);其中
File_size(fsdb塊的大小也可以通過變量File_Size_var指定)指定分塊fsdb的大小,即生成的單個(gè)fsdb的大小,這里需要注意,指定的最小File_size為10(即10MB),如果指定的數(shù)值小于10,那么實(shí)際dump時(shí)將會(huì)按照10MB進(jìn)行dump(話說都10MB了,也沒有必要分塊了);
FSDB_Name(fsdb名也可以使用存放在變量FSDB_Name_var中名字)指定生成的fsdb文件名;
Number_of_files(產(chǎn)生文件的個(gè)數(shù)也可以通過變量Number_of_files_var指定)指要產(chǎn)生的fsdb文件最大個(gè)數(shù),如果指定為0則產(chǎn)生的文件數(shù)沒有限制;
log_filename(dump過程中保存log信息的文件名也可以通過變量log_filename_var指定)指定dump過程中保存log信息的文件名;
【示例】
initial begin$fsdbDumpvars(0,u_dut);$fsdbAutoSwitchDumpfile(15,”test.fsdb”,30);end
上述代碼片段指定了生成的fsdb名稱格式為test_num.fsdb,即生成的第一個(gè)波形文件為test_000.fsdb,第二個(gè)為test_001.fsdb......直到仿真結(jié)束,此時(shí)根據(jù)仿真產(chǎn)生的波形文件的大小,最終dump的文件可能會(huì)出現(xiàn)以下幾種情況:
仿真波形總的大小不超過30*15MB時(shí),將生成波形為test_001.fsdb~test_n.fsdb,其中n=(波形總大小/15MB);
仿真波形總的大小大于30*15MB時(shí),超過test_029.fsdb后產(chǎn)生的波形將會(huì)依次從test_000.fsdb開始覆蓋,如果不期望覆蓋,達(dá)到指定個(gè)數(shù)后停止dump,則可以使用參數(shù)“+fsdb+no_overwrite”,例如;
initial begin$fsdbDumpvars(0,u_dut);????$fsdbAutoSwitchDumpfile(15,”test.fsdb”,30,“+fsdb+no_overwrite”);end
所以,在具體使用時(shí),一定要注意仿真波形的大小,建議將函數(shù)中的Number_of_files設(shè)置的大一些。
2 按照指定時(shí)間間隔分割波形
除了產(chǎn)生固定大小的波形分塊外,Verdi還支持在仿真時(shí),根據(jù)指定的不同時(shí)間區(qū)間產(chǎn)生對(duì)應(yīng)的波形文件,當(dāng)一個(gè)波形文件開始dump時(shí),前一個(gè)已經(jīng)dump的fsdb波形文件就已經(jīng)關(guān)閉了,即此時(shí)可以使用Veridi打開前一個(gè)已經(jīng)完成dump關(guān)閉的fsdb波形文件。dump波形的命令格式如下:
$fsdbSwitchDumpfile(“NewFileName”|NewFileName_var[,”+fsdbfile+pre_file”|,pre_file_var]);這里需要注意,如果指定”+fsdbfile+pre_file”,那么波形記錄將從此刻開始記錄新的波形到文件NewFileName中,原來的pre_file波形文件關(guān)閉;如果沒有指定”+fsdbfile+pre_file”,那么波形記錄將從當(dāng)前激活的正在記錄的波形文件切換至新的波形文件NewFileName中,而之前記錄波形的文件將關(guān)閉。
【示例】?

【仿真結(jié)果】?




?從仿真結(jié)果來看,仿真波形的記錄從test1.fsdb切換到test2.fsdb,然后從test2.fsdb切換到test3.fsdb。當(dāng)200ns仿真波形從test1.fsdb切換到test2.fsdb時(shí),test1.fsdb波形保存關(guān)閉,此時(shí)可以通過Verdi打開觀測(cè)到已經(jīng)dump的波形,并且此時(shí)同時(shí)開始記錄仿真波形到test2.fsdb中,當(dāng)400ns仿真波形從test2.fsdb切換到test3.fsdb時(shí),test2.fsdb波形保存關(guān)閉,也可以通過Verdi打開觀測(cè)到已經(jīng)dump的波形,同時(shí)開始記錄仿真波形到test3.fsdb中,直到仿真結(jié)束。
從上例可以看出,使用$fsdbSwitchDumpfile切換時(shí)如果沒有指定“+fsdbfile+pre_file”,此時(shí)將會(huì)從當(dāng)前處于正在記錄狀態(tài)的波形切換至新的要dump的波形。
當(dāng)然,關(guān)于Verdi如何dump波形,還有很多其他的工具自帶方法,大家可以查看對(duì)應(yīng)的工具手冊(cè)查看,一般情況下,這些doc都在工具的安裝路徑下可以找到,當(dāng)然你也可以在網(wǎng)上搜索。





