數字IC驗證——SystemVerilog學習

一般來說,在數字IC驗證中,編寫testbench文件會採用verilog,但隨着設計越來越複雜,爲了更方便例化模塊,面向對象編程的SystemVerilog(以下簡稱SV)越來越流行。

1.SV簡介

2.SV語法

SV和Verilog的語法類似,基本SV可包含Verilog的所有規則,若有相異處下文會特意指出。
Verilog語法鏈接:https://blog.csdn.net/qq_39815222/article/details/89601331

  • 數據類型
  1.   二值邏輯
    包括 bit, byte, shortint, int, longint;這些類型的值只包含{0,1},目的是提高仿真性能,節約空間。若有四值邏輯數給其賦值,x,z會自動被賦值爲0,因此二值邏輯數要遠離DUT
  2. logic
    四值類型,類似於verilog裏的reg
  • 通配符 .*
    可以把相同名字的net和port連在一起

test   test1( .a(a), .b(b), .c(c) );      //或者 test   test1( .a, .b, .c );  
等同於
test test1( .* );

  • clocking Block
    爲了避免冒險競爭,通常會把clk驅動的同步信號封裝在一個模塊裏,由interface調用。
  • interface
    將多個信號集合,簡化連接,方便調用,調用非常自由。

/***** 聲明******/
interface signal_test( input bit clk );             
     logic [1:0] A, B;
     logic reset;
    clocking dram @( posedge clk)
           input #1ps A;
           input #5    
           output #6 B;
     endclocking
     modport user1( output A, input  B, reset);  //聲明的端口可以在不同的modport裏定義爲不同的輸入輸出模式
     modport user2( clocking cb, input reset);    //調用clocking,port輸入輸出和user1不一樣
endinterface
/***** 調用 ******/
always #5 clk = ~clk;
signal_test.user1  signal1(clk);                     //調用user1模式
signal_temp signal2( .A(signal1.A), ......);     //interface互相直接連接
test test1( signal1 );                                      //interface與module連接

  • 賦值

data0 = 'x                //SV中賦值可無需添加b,o,h等代表進制的符號
data1 = '1               //SV中可給某個值賦值全1,注意Verilog中不行

 

 

 

 

 

 

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