Answers:
该语法称为索引部分选择。第一项是位偏移,第二项是宽度。它允许您为偏移量指定一个变量,但是宽度必须恒定。
SystemVerilog 2012 LRM中的示例:
logic [31: 0] a_vect;
logic [0 :31] b_vect;
logic [63: 0] dword;
integer sel;
a_vect[ 0 +: 8] // == a_vect[ 7 : 0]
a_vect[15 -: 8] // == a_vect[15 : 8]
b_vect[ 0 +: 8] // == b_vect[0 : 7]
b_vect[15 -: 8] // == b_vect[8 :15]
dword[8*sel +: 8] // variable part-select with fixed width
最后,我得到了它的源页面,这称为索引矢量部分选择(“ +:”)。
多说明一点
PQR_AR[44*8 +: 64];
通过在Verilog 2000中添加的索引矢量部分选择,您可以选择总线的一部分,而不是整个总线。
44 * 8 part是零件选择变量的起点,而64是零件选择的宽度并且是常数。这意味着如果最初我们已经初始化
input [415:0] PQR;
我们正在使用选择PQR的特定部分
PQR_AR[44*8 +: 64];
即PQR_AR [352+:64]或它意味着我们正在从352到415的一部分(从0到415)。