マーティの優れた回答に加えて、SystemVerilog 仕様はbyte
データ型を提供します。以下は、4x8 ビット変数 (4 バイト) を宣言し、各バイトに値を割り当て、すべての値を表示します。
module tb;
byte b [4];
initial begin
foreach (b[i]) b[i] = 1 << i;
foreach (b[i]) $display("Address = %0d, Data = %b", i, b[i]);
$finish;
end
endmodule
これは出力します:
Address = 0, Data = 00000001
Address = 1, Data = 00000010
Address = 2, Data = 00000100
Address = 3, Data = 00001000
これは、コンセプトがマーティの に似ていreg [7:0] a [0:3];
ます。ただし、byte
データ型は 2 状態 (0 と 1) ですが、reg
4 状態 (01xz) です。を使用byte
するには、この SystemVerilog 構文をサポートするツール チェーン (シミュレータ、シンセサイザなど) も必要です。よりコンパクトなforeach (b[i])
ループ構文にも注意してください。
SystemVerilog 仕様は、さまざまな多次元配列タイプをサポートしています。LRM は私よりもうまく説明できます。IEEE Std 1800-2005の第 5 章を参照してください。