Відповіді:
Цей синтаксис називається індексованим вибором частини . Перший доданок є зміщенням біта, а другий член - шириною. Це дозволяє вказати змінну для зміщення, але ширина повинна бути постійною.
Приклад з LRM SystemVerilog 2012:
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 частина є початковою точкою вибору частини змінної, а 64 - шириною вибору деталі і є постійною. Це означає, що якщо ми спочатку ініціалізували
input [415:0] PQR;
ми вибираємо певну частину PQR за допомогою
PQR_AR[44*8 +: 64];
це PQR_AR [352+: 64], або це означає, що ми беремо участь від 352 до 415 з 0 до 415.