3.3. Ajustando el contenido de los archivos generados

xil_project.pl genera los siguientes archivos:

  1. PROYECTO.prj Contiene un listado completo de todos los fuentes que componen nuestra síntesis. Es equivalente al .prj generado por ISE.

  2. PROYECTO.xcf Contiene los constraints de nuestro diseño. Es opcional y en algunas placas contiene detalles específicos de las mismas.

  3. PROYECTO.xst Contiene opciones de síntesis utilizadas por XST (el sintetizador).

  4. Makefile o PROYECTO.mak Contiene las reglas para sintetizar el proyecto, transferir el resultado a la FPGA y/o PROM y eliminar los archivos generados.

  5. .cvsignore Utilizado por la herramienta cvs, indica que archivos han sido generados, y que, por lo tanto, no deben incluirse en el repositorio.

El contenido del .prj puede ser controlado por completo utilizando los parámetros Source e Include. En el caso de los .xcf, .xst y del archivo de make es muy probable que necesitemos ajustar algún detalle. Esto se logra generando archivos del tipo PROYECTO.in.EXT, así, si deseamos agregar constraints podemos colocarlos en PROYECTO.in.xcf.

En el caso del archivo de make podemos agregar target clean adicionales (ver Sección 3.1.9) y reglas para generar algunos de los archivos que componen nuestro proyecto. Debemos tener en cuenta que todos los fuentes de nuestro proyecto son mencionados como dependencias del target de síntesis. De esta manera es posible agregar las reglas que los construyen.

Un ejemplo un tanto particular es la generación del módulo INTERCON de WISHBONE utilizando la herramienta WISHBONE Builder. En el Ejemplo 3-7 se muestra como generar la INTERCON especificada en un archivo wb_debug.defines. Este texto se incluiría en el archivo Makefile.in.

Ejemplo 3-7. Como generar la INTERCON de WISHBONE

wb_dbg_intercon.vhdl wb_dbg_intercon_package.vhdl wb_dbg_intercon.inc: \
	wb_debug.defines
	wishbone.pl nogui gen-header $<

wb_clean:
	rm -rf wb_dbg_intercon*
       

En este caso deberíamos especificar ExtraClean=wb_clean , de esta manera al ejecutar el target clean se borrarían todos los archivos generados por WISHBONE Builder.

Otro ejemplo interesante es como mantener actualizados los archivos procesados por la herramienta vhdlspp.pl. Esta herramienta permite generar declaraciones de componentes en forma automática y es útil para generar memorias ROM y estructuras similares. En el Ejemplo 3-8 se muestra como podemos asegurarnos que la descripción hello5.vhdl, que contiene una memoria ROM, se mantenga actualizada. En este caso el componente definido en hello5.vhdl se encuentra declarado en pm_pkg.vhdl. En el ejemplo existe un archivo make en el directorio ../../prgs/ encargado de mantener estos dos archivos. Notar el uso de un target del tipo PHONY para evitar que la síntesis se lleve a cabo aun en el caso en que los archivos no hayan cambiado y, al mismo tiempo, evitar mencionar las dependencias de los archivos en cuestión.

Ejemplo 3-8. Como manejar archivos generados con vhdlspp.pl

# Asegurarse que la ROM esté actualizada.
.PHONY : updaterom

../../prgs/pm_pkg.vhdl ../../prgs/hello5/hello5.vhdl : updaterom

updaterom:
	$(MAKE) -C ../../prgs/ pm_pkg.vhdl hello5
       
Copyright © 2006-2013 INTI - Ing. Salvador E. Tropea