¿Cómo se llama a este operador como “+:” en verilog?

11

Pasé por el caso de prueba de verilog y encontré una declaración

assign XYZ = PQR_AR[44*8 +: 64];

¿Por qué el operador "+:" se conoce como. Intenté encontrar esto en google pero no obtuve ninguna respuesta relevante.

    
pregunta shailendra

2 respuestas

18

Esa sintaxis se denomina selección parcial indexada . El primer término es el desplazamiento de bits y el segundo término es el ancho. Le permite especificar una variable para el desplazamiento, pero el ancho debe ser constante.

Ejemplo del 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
    
respondido por el dwikle
2

Finalmente obtuve la página de origen para esto, esto se llama como parte Vector indexado Seleccionar ("+:") .

Para explicarlo un poco más

PQR_AR[44*8 +: 64];

Con la selección de parte de vector indexado, que se agrega en Verilog 2000, puede seleccionar una parte del bus en lugar de seleccionar todo el bus.

44 * 8 parte es el punto de inicio de la variable de selección de parte y 64 es el ancho de selección de parte y es constante. Esto significa que si inicialmente se ha inicializado

input [415:0] PQR;

estamos seleccionando una parte particular de PQR usando

PQR_AR[44*8 +: 64];

que es PQR_AR [352+: 64] o significa que estamos participando de 352 a 415 de 0 a 415.

    
respondido por el shailendra

Lea otras preguntas en las etiquetas