Specman UVM: ¿Cuál es la diferencia entre write_reg {.field == 2;}; y write_reg_fields?

1

Estoy trabajando con vr_ad package para e. Mi pregunta es: ¿Cuál es la diferencia entre 2 macros siguientes para modificar registros (suponga que el registro foo consiste en 2 campos field1 y field2 ):

1)

write_reg foo {.field1 == 1;};

2)

write_reg_fields foo {.field1 = 1};

Realmente aprecio cualquier ayuda

    
pregunta Halona

1 respuesta

1

La respuesta que tengo (gracias al usuario 3467290):

Hay una diferencia muy importante entre estas formas.

En el primero, se generará el valor de registro, utilizando todas las restricciones definidas, + la restricción que escribió en esta acción (campo1 == 1). El nuevo valor generado se escribirá en el DUT.

En el segundo código, lo que dice es que desea modificar solo un campo del registro - campo1. Lo que sucederá es que vr_ad obtendrá el valor actual del registro del modelo e (el modelo de sombra), cambiará el campo1 y escribirá el nuevo valor del registro en el DUT. Ninguno de los otros campos de registro será cambiado. Además, no se verifica si el valor que asigna a field1 cumple con las restricciones definidas en este registro.

    
respondido por el Halona

Lea otras preguntas en las etiquetas