SystemVerilog:配列/bit幅に「-」値指定

bit幅に「-(マイナス)」値を使った書き方ができるとは。。。
私自身書いたことがなかったので、試しに書いてみました。

  • サンプルコード
module testbench;

  int tmp[-2:5];
  int data;

  initial begin
    for(int i=-2; i<5; i++) begin
      tmp[i] = data + 1;
      data++;
    end
    for(int i=-2; i<5; i++) begin
      $display("tmp[%2d] = %0d", i, tmp[i]);
    end
  end

endmodule
  • 実行結果
# tmp[-2] = 1
# tmp[-1] = 2
# tmp[ 0] = 3
# tmp[ 1] = 4
# tmp[ 2] = 5
# tmp[ 3] = 6
# tmp[ 4] = 7

ちなみに、こちらの記述は Verilog-HDL(2001)から出来るようです。