Estoy intentando compilar un diseño que consta de varios archivos. Hay archivos de biblioteca con los primitivos, que archivos de lista de red para el diseño, archivos de vectores de prueba utilizados con el banco de pruebas y el archivo del banco de pruebas en sí. Hay varios casos que necesitan ser evaluados y para esto es posible que tenga que escribir muchos bancos de pruebas y muchos archivos vectoriales en los que solo un par de líneas cambian. Creo que debería ser posible usar directivas de "preprocesador" en el verilog para simplificar esta tarea. Por lo tanto, escribo un archivo por lotes que tiene una lista de comandos vlog para compilar todo. Dentro de él defino algunas constantes (como hacemos con #define en lenguaje C). Más adelante, en el archivo verilog vector y testbench, puedo usar 'if para averiguar si alguna parte del archivo debe compilarse o excluirse.
Ahora he hecho este tipo de cosas en C pero no en verilog. ¿Puede alguien proporcionarme los pasos y los comandos que necesito usar? Tenga en cuenta que escribiré un archivo por lotes con una lista de comandos vlog y lo llamaré desde QuestaSim usando el comando do. Esto compilará todos los archivos que necesito para la simulación y también se espera que contenga la "constante". Dentro del banco de pruebas, quiero que, dependiendo del valor de una vez que se haya "pasado", se compilarán diferentes secciones del código en el archivo. Estas diferentes secciones se incluyen en ifdef
endif Esto se puede hacer en C usando las directivas de preprocesador #ifdef, #endif, #ifndef y #define. Tenga en cuenta que estoy usando QuestaSim, que es similar a ModelSim, más como su hermano mayor. Nunca he usado esta función de "preprocesador" de verilog antes.
El problema es que el archivo de proceso por lotes contiene comandos para questasim, mientras que los archivos que se compilan contienen instrucciones de verilog para la descripción del hardware.
Entonces la pregunta es, ¿cómo hago esto o incluso es posible hacerlo?