3.3  Un segundo ejemplo

Con los ficheros del primer ejemplo, utilizaremos los diferentes modos del GHDL:


$ ls
hola_mundo.vhdl inversor.vhdl tb_inversor.vhdl
 

Sin necesidad de abrir ningún fichero, podemos conocer qué entidades y arquitecturas están definidas:


$ ghdl -f inversor.vhdl

entity inversor
architecture beh of inversor
 

Importamos todas las unidades de diseño en la librería. No tenemos que conocer el diseño:


$ ghdl -i *.vhdl
 

Visualizamos todas las unidades que hay en la librería:


$ ghdl -d

entity hola_mundo
architecture beh of hola_mundo
entity inversor
architecture beh of inversor
entity tb_inv
architecture beh of tb_inv
 

En nuestro diseño, sabemos que la entidad superior (top level) es tb_inv. No obstante, si el diseño no lo hemos hecho nosotros, podemos intentar descubrir cuál es la entidad superior utilizando el modo de búsqueda:


$ ghdl -f *.vhdl

entity hola_mundo **
architecture beh of hola_mundo
entity inversor
architecture beh of inversor
entity tb_inv **
architecture beh of tb_inv
 

Las entidades superiores son las que se indican con doble asterisco.

En vez de analizar ``a mano'' (usando la opción -a), es mejor utilizar el modo make, que hace todo lo necesario para elaborar la entidad indicada:


$ ghdl -m tb_inv

analyze tb_inversor.vhdl
analyze inversor.vhdl
elaborate tb_inv
 

Se analizan las dependencias, se hace el análisis y finalmente la elaboración. Sin embargo, es mucho más cómodo generar un fichero Makefile y trabajar directamente con make:


$ ghdl -gen-makefile tb_inv > Makefile
 

Ahora, podemos modificar cualquier de los ficheros .vhdl con un editor de texto, y al hacer make, automáticamente se analizarán sólo los ficheros actualizados y se realizará la elaboración de la nueva entidad:


$ make

ghdl -a tb_inversor.vhdl
ghdl -a inversor.vhdl
ghdl -e tb_inv
 

El comando make se puede invocar directamente desde entornos de trabajo como Emacs o Anjuta.

Juan Gonzalez 2004-10-01