芯片驗證的一些記錄

1、`define宏的使用:
define經常用來代替某些複雜的文本內容或數字,也可以用來構造字符串。

1、`define D(x,y) initial $display("start", x , y, "end")2、`define test_num 14143、`define append(f) f``_master =》`append(clock)   =》  clock_master

2、模塊A input類型信號口所對接的模塊B,這兩個模塊如果不是一個時鐘域,要檢查模塊A的輸入信號是否要經過同步處理,常用有打拍、DMUX,FIFO等。

3、條件執行標誌來控制測試用例testcase的條件執行,所有語句都被編譯,但是條件執行它們,這樣就不用重新編譯浪費時間。有兩個系統任務關鍵字可用於條件執行;testtestplusargs和valuevalueplusargs。如下例子:

if($test$plusargs("DISPLSY"))
    $display("abcd");

僅當在運行時設置了標誌DISPLAY時,纔會執行display任務打印abcd;

string test_string;
if($value$pluargs(test_name=%s,test_sring))
    $display("test_string is %s",test_string);

如果在仿真進行時,有找到test_name這個匹配項,就把test_name得值賦給test_string,且valuevaluepluargs返回1,反正爲0。

4、對模塊的寄存器存在耦合關係,或者取值可以在一定範圍內變動的,一定要在用例裏當做背景隨機配置起來,以免漏驗證某些場景。當然,可以把重點場景隨機到的比例增大點。

5、在構造激勵的時候一定要想好可複用性,並在最大範圍隨機性,以免不斷返工修改,浪費時間和精力;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章