Combine un archivo de configuración vhdl y verilog

0

Estoy tratando de crear una prueba de concepto simple con respecto a la configuración de nuestro banco de pruebas (vinculando las entidades correctas a los componentes / módulos).

La estructura es la siguiente:

top (entidad VHDL)

--sub_vhdl (componente VHDL)

--sub_verilog (componente Verilog)

---- sub_sub_verilog_1 (componente Verilog)

---- sub_sub_verilog_2 (componente Verilog)

Quiero poder controlar a qué entidad VHDL se une sub_vhdl y a qué módulo sub_sub_verilog_2 se une (para simulación en Questasim).

Según tengo entendido, con un archivo de configuración VHDL puedo controlar el enlace de sub_vhdl y sub_verilog, pero no puedo definir los módulos más bajos que sub_verilog.

Y si escribiera un contenedor verilog para la entidad superior, tendría el problema opuesto (no poder controlar el enlace de los componentes a las entidades de la estructura VHDL).

¿Hay una solución para mi problema? Algunas secuencias de comandos (por ejemplo, generar el archivo de configuración VHDL con una secuencia de comandos basada en la situación) no es un problema.

    
pregunta Michael Fivez

1 respuesta

0

Lo resolví de la siguiente manera, y debería ser utilizable para cualquier mezcla de verilog / vhdl sin importar lo compleja que sea:

1) Para configurar el VHDL utilizo las configuraciones de VHDL. Una configuración de este tipo puede configurarse desde su nivel hacia abajo en la búsqueda hasta que se alcance un módulo verilog. Si luego carga la configuración de una entidad en lugar de la entidad en la RTL, puede forzar el uso de esta configuración.

2) Luego paso una configuración de verilog como parámetro al iniciar mi simulación. Para esto, el nivel superior debe escribirse en verilog. Entonces, si ese no es el caso, use un envoltorio simple de verilog. En esta configuración verilog puede definir cualquier ruta a un módulo vhdl y definir de qué biblioteca debería obtenerla, no importa si hay capas VHDL entre ellas.

Un ejemplo:

Hiearchy:

dut_wrapper (Verilog)

- dut (VHDL)

---- dut_sub_1 (VHDL)

---- dut_sub_2 (Verilog)

------ dut_sub_sub_1 (VHDL)

------ dut_sub_sub_2 (Verilog)

Para configurar todas estas entidades / módulos:

1) Realice una configuración VHDL de dut_cfg que defina de qué biblioteca deben provenir dut_sub_1 y dut_sub_2. Y defina este dut_cfg en el dut_wrapper en lugar de solo la entidad dut.

2) Haz lo mismo para dut_sub_sub_1

3) Haga una configuración de Verilog donde defina el nivel superior (dut_wrapper). Y luego sobrescriba los módulos Verilog en el diseño especificando la ruta completa a ellos y la biblioteca donde deberían obtener su versión. Esta ruta puede pasar a través de las entidades VHDL (use los nombres de instancia)

Un consejo cuando intente esto usted mismo: vi un comportamiento extraño con respecto al orden de compilación de mis unidades de diseño. A veces parecía que la configuración verilog no se usaba realmente por algún motivo (usé Questasim 10.5c para las pruebas). Así que tal vez intente reordenar cuando no parece funcionar

    
respondido por el Michael Fivez

Lea otras preguntas en las etiquetas