本文全部來自群內網友的智慧,我只是做一些整理的工作。以免高質量的內容被埋沒,同時也希望這些好東西可以幫助到更多的朋友。


rx_data?位寬固定是128,bist_wdata位寬參數化
[m +:?n]的含義是:從bit[m]位置向上取n bit;
[m -:?n]的含義是:對應的從?bit m向下取?n bit。





下圖中第65行的”==”應該寫成”===”,詳細的原因,請參考本公眾號的文章:
verilog中==/!=和===/!==的區別




Q:?請問大家有沒有什么辦法可以將仿真過程中某個時刻的所有寄存器還有memory的數值全部保存下來,下次開始仿真用這些數值作為初始值?
A: Verdi nwave窗口選中信號?file-report selected signals?設置下文件名?option -of b/h/d -period?采樣時間,出來的.txt在tb內$readmem就行了。保存的時刻是兩個marker的位置。那個嘗試了,report生成的中信號名稱不全,而且如果說設計很大,寄存器數量太多重新加載也不好對應的readmem。Verdi有這個功能,apps。

A:?你加個set_addr_range在頂層ENV里面連接,然后通過config_db_set;然后在自己的組件里面get_mem就可以使用了。


example.svt??如下圖所示,svt支持的所有的example都在這里了



ctrl+m增加marker,shift+m管理marker.
-coverage all -coverfile /xx/yy/zz/xyz/config.ccf
Q:請教各位,有個現象:我在seq里declare_p_sequencer為vir_seqr,接下來body里做了賦值cfg = p_sequencer.cfg;如果在test里掛載到vir_seqr,就是對的。但如果掛載到vir_seqr的子一級seqr,就報賦值語句錯。如果vseqr里定義多個seqr,那必須向下掛載,該怎么辦呢??我現在就是env里聲明vseqr,在vseqr里有seqr及cfg,然后就到test里seq.start(env.vseqr.seqr);感覺這樣會把seqr當做p_sequencer,所以報錯。但不知道多個seqr時怎么寫start,或者什么結構。
A: virtual sqr相當于一個梳理器 把需要的seqr的句柄都放進去,然后你的seq需要用哪個seqr方便指向,virtual seq里面的子seq如果在不同的sqr上 做好對應關系,可以直接把virtual seq掛在virtual sqr上。掛載到ver_seqr.seqr上,此時的m_sequencer是seqr,所以p_sequencer應該也是seqr,非vseqr。對,如果p_sequencer的掛載不一致,就報cast錯誤。



轉自芯片驗證日記,感謝關注。