Verilog: 多ビットのスライス(indicing)

多bitから1bit抜き取る際のindexは変数でもよいが、スライスの際には定数でなければならない。
しかし、次の記法ならスライス表記ができる。xをスタート地点にして、そこからNこ上がるか下がるかする。

bit[x+:N]  // bit[x: x+N-1]
bit[x-:N]  // bit [x:x-N+1]

これなら

range must be bounded by constant expressions

で怒られることもない。これならforループの中でイテレータ変数をindicesに使える。

参考
system verilog - Indexing vectors and arrays with +: - Stack Overflow

コメント