Paso 4: Interface y scoreboard

En este paso, vamos a incluir los dos siguientes elementos:

  1. Los “interface”, Nos permitirá hacer la comunicación -conexión y sincronización entre el testbench y el DUV. La sincronización como siempre correrá a cargo de clocking blocks que introduciremos dentro del interface
  2.  Un “scoreboard” en forma de una clase. La realización de la misma y el manejo conjunto con el interface en su modo de monitorización nos obligará a manejar “virtual interface” para hacer posible el manejo de interface desde objetos.

Interface

La estructura es la visible en la siguiente figura:

Scoreboard

Hemos trasladado los “tasks” de monitorización de entradas y salidas a una clase dedicada al scoreboard. Como se puede observar , se está monitorizando las señales a través del clocking block de monitorización (md), que está ahora situado en el interfaz asociado al “modport” denominado monitor. Podemos destacar varias cosas:

  • La asociación de los modports del interfaz con clocking-blocks de sincronización es una técnica bastante habitual
  • Para manipular las variables de este modport (leerlas en este caso puesto que son todas ellas de tipo input) dentro de la clase “scoreboard”, es necesario instanciar de alguna forma el interface (directamente instanciar el interfaz físico no está permitido). la forma de realizarlo es mediante una especie de puntero al interfaz físico que recibe el nombre de “virtual interface”. Este puntero puede ser fácilmente manipulado en los métodos pertenecientes a la clase y es cuando un objeto de dicha clase es creado (mediante el constructor new) cuando se le es pasado como referencia el interfaz físico.
  • Fijémonos sin embargo  como el “program” sigue utilizando directamente el interfaz físico para la generación de los estímulos.
  • El siguiente paso sería encapsular en clases los procedimientos de generación de estímulos y observación de resultados, que a su vez incluyera en su interior la creación del objeto scoreboard.  Esta clase suele recibir el nombre de “driver”; pero en este ejemplo no hemos hecho esa opción.

Tanto el modport test como el modport monitor disponen de su “cloking block” de sincronización. De nuevo es interesante observar el comportamiento de dichos bloques en la diferencia entre el estímulo generado por el “program” (/prueba_radicador/interfaz/sd/empieza) , dicho estímulo como es percibido por el DUV (/prueba_radicador/duv/radicador_duv/START) y como es muestreado y enviado al modelo de referencia situado en el scoreboard (/prueba_radicador/interfaz/md/empieza).

Laboratorio virtual

https://www.edaplayground.com/x/3Hgr