Assert Base Verification (ABV),  Verificación

Uso de aserciones en microprocesadores

Voy a plantear una utilidad de las aserciones concurrentes para verificación del buen hacer de vuestros diseños de microprocesadores, sobre todo ahora que estáis uniendo vuestro bloques funcionales del single-cycle.

Supongamos que teneis un core cómo el que ahora os describo

Pensad que posiblemente dentro del DATA_PATH tengáis el banco de registros con un nombre de instanciación RF1, y supongamos que la variable interna del registro la hemos llamado

Vamos a incluir una aserción que nos permita verificar una de mis operaciones de R_format: la ADD.

Puesto que verilog/systemverilog puede acceder a cualquier variable de todo el diseño a través de su path jerárquico, podemos acceder perfectamente desde el «core» que acabamos de visualizar. El siguiente código nos permite detectar fallos (si los hubiera) en la ejecución de dicha instrucción y de paso dar visibilidad en caso de error, de detalles sobre lo que deberíamos obtener y que obtenemos realmente.

La idea es que si todo va bien, no aparezca ningún mensaje.

Si la instrucción fallara en vuestro «core», aparecería un mensaje de error con el mensaje «R format add» fruto de la aserción. Para tener detalles del error he incluido un cover property que tiene la misma sintaxis que las assert property y que está chequeando justamente la condición contraria a la correcta. Por tanto se ejecutaría y sacaría por pantalla un display con la suficiente información para saber en qué consiste el error.

La secuencia correcta la hemos llamado s0 y la incorrecta no_s0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *