VHDL iterar sobre una "lista" de nombres externos

1

Estoy usando nombres externos introducidos en VHDL-2008 para acceder a un montón de señales (digamos 1000) en una jerarquía de diseño con muchos niveles.

<< signal dut.signal_1 : std_logic >>  
<< signal dut.signal_2 : std_logic >>  
...  
<< signal dut.signal_1000 : std_logic >>

Quiero recorrer estas 1000 señales y forzarlas a '0' o '1' para realizar algunas pruebas de fallas y, por lo tanto, sería conveniente tener algo como este pseudo código:

alias test_vector : std_logic_vector(999 downto 0) is (dut.signal_1, dut.signal_2, ..., dut.signal_1000)

I.e. Quiero construir un "vector de alias" con todos mis nombres externos. Con este vector puedo hacer algo como esto:

test_vector(random_number) <= force '0';

Parece que no puedo encontrar una manera fácil de hacer esto. La única forma en que puedo pensar es usar un alias y, con un script, copiar los nombres externos uno a la vez en el archivo, ejecutar la simulación y luego repetir para las 1000 señales.

¡Cualquier ayuda o idea es muy apreciada!

    
pregunta sandberg

1 respuesta

3

Tal vez debería buscar la interfaz VHPI (Interfaz de procedimiento VHDL).

Los marcos de prueba como Cocotb utilizan esta API estandarizada para conectar un simulador como QuestaSim / ModelSim, Riviera-PRO o. ... a un lenguaje de programación externo como Python.

Por lo tanto, el banco de pruebas está escrito en código Python y se conecta a través del VHPI al DUT. Los estímulos son generados por el código de Pathon y los resultados se transfieren de nuevo a Python para su verificación. VHPI tiene la capacidad de acceder a cada señal y, por supuesto, iterar sobre cada "nodo" en el diseño. También puede forzar / conducir señales.

Para que pueda compilar su propia herramienta VHPI o tal vez extender Cocotb para acceder a la señal que se encuentra debajo del nivel superior. Si interpreto este derecho, Cocotb ya puede acceder a señales profundas: Guía de inicio rápido: acceso al diseño

Preguntas relacionadas:

respondido por el Paebbels

Lea otras preguntas en las etiquetas