k0b0's record.

Computer Engineering, Arts and Books

Introduction to SystemVerilog. Data type and numeric expression

SystemVerilogのデータタイプと数値表現

 SystemVerilogのいくつかのデータタイプをテストしてみる。

データタイプ

データタイプ ビット幅 内容
bit 1 2値の符号なし整数(ビット幅指定可)
byte 8 2値の符号付き整数
shortint 16 2値の符号付き整数
int 32 2値の符号付き整数
longint 64 2値の符号付き整数
logic 1 4値(0,1,x,z)の符号なし論理値(ビット幅指定可)

数値表現の例

数値 ビット幅 基数 2進数表現
128 32 10 000...10000000
1'b1 1 10 1
8'hff 8 16 11111111
8'o33 8 8 011011
8'bz 8 2 zzzzzzzz
8'b1111_1101 8 2 11111101
'hf0 32 16 000...11110000
8'd15 8 10 1111
8'sh8 8(符号付き) 16 11111000
'sh8 32(符号付き) 16 111...11111000

データタイプのテスト(test_dtype.sv)

 いくつかのデータタイプ(int、longint、logic)をテストする記述。各データタイプの仕様とその数値表現は上記の表を参照。

/* test_dtype.sv */
module test_dtype();

// int(32bit)
int sig_int = 'hffff;

// longint(64bit)
longint sig_longi = 'hffff;

// logic(16bit)
logic[15:0] sig_logic = 16'b1111_1111_1111_1111;

// logic(32bit)
logic[31:0] sig_logic_l = 32'hffff_eeee;

initial
begin
    $display("##################################################");
    $display("### Test type of int(32bit). ###");
    $display("sig_int(Binary) = %b", sig_int);
    $display("sig_int(Hex) = %h", sig_int);
    $display("sig_int(Decimal) = %d", sig_int);	
    $display("##################################################\n");

    $display("##################################################");
    $display("### Test type of longint(64bit). ###");
    $display("sig_longi(Binary) = %b", sig_longi);
    $display("sig_longi(Hex) = %h", sig_longi);
    $display("sig_longi(Decimal) = %d", sig_longi);	
    $display("##################################################\n");

    $display("##################################################");
    $display("### Test type of logic(16bit). ###");
    $display("sig_logic(Binary) = %b", sig_logic);
    $display("sig_logic(Hex) = %h", sig_logic);
    $display("sig_logic(Decimal) = %d", sig_logic);	
    $display("##################################################\n");

    $display("##################################################");
    $display("### Test type of logic(32bit). ###");
    $display("sig_logic_l(Binary) = %b", sig_logic_l);
    $display("sig_logic_l(Hex) = %h", sig_logic_l);
    $display("sig_logic_l(Decimal) = %d", sig_logic_l);	
    $display("##################################################\n");
end
endmodule