1,logic類型:
verilog中最常使用的數據類型是變量(reg)和線網(wire),在編碼或測試的時候經常需要區分兩種數據類型的不同使用方法。在SV中定義logic可以取代這兩種數據類型。
logic不僅能夠作為變量,而且可以被連續賦值,門單元和模塊所驅動。但是logic不能夠被多個結構體驅動。下面這段代碼展示了logic的使用方法。
module logic_test(input logic rst_h
);
parameter CYCLE = 20;
logic q,q_1,d,clk,rst_1;
initial
begin
clk = 0;
forever #(CYCLE/2) clk = ~clk; // 過程賦值
end
assign rst_1 = ~ rst_h; //連續賦值
not n1(q_1,q); //q_1被門驅動
my_dff d1(q,d,clk,rst_1); //q被模塊驅動
endmodule
2,雙狀態數據類型。
相比於verilog中的4狀態數據類型(1,0,x,z),SV引入雙狀態數據類型有利於提高仿真器的性能並減少內存的使用量。下面逐例解釋。
bit b; // 雙狀態 單bit
bit [31:0] b32; // 雙狀態,32bit,無符號
int unsigned ui; // 雙狀態,32bit,無符號
int i; // 雙狀態,32bit,有符號
byte b8; // 雙狀態,8bit ,有符號
shortint s; // 雙狀態,16bit,有符號
longint l; // 雙狀態,64bit,有符號
integer i4; // 四狀態,32bit,有符號
time t; // 四狀態,64bit,無符號
real r; // 雙狀態,雙精度浮點數。