1、`define宏的使用:
define經常用來代替某些複雜的文本內容或數字,也可以用來構造字符串。
1、`define D(x,y) initial $display("start", x , y, "end");
2、`define test_num 1414;
3、`define append(f) f``_master =》`append(clock) =》 clock_master
2、模塊A input類型信號口所對接的模塊B,這兩個模塊如果不是一個時鐘域,要檢查模塊A的輸入信號是否要經過同步處理,常用有打拍、DMUX,FIFO等。
3、條件執行標誌來控制測試用例testcase的條件執行,所有語句都被編譯,但是條件執行它們,這樣就不用重新編譯浪費時間。有兩個系統任務關鍵字可用於條件執行;plusargs和plusargs。如下例子:
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,且pluargs返回1,反正爲0。
4、對模塊的寄存器存在耦合關係,或者取值可以在一定範圍內變動的,一定要在用例裏當做背景隨機配置起來,以免漏驗證某些場景。當然,可以把重點場景隨機到的比例增大點。
5、在構造激勵的時候一定要想好可複用性,並在最大範圍隨機性,以免不斷返工修改,浪費時間和精力;