En VHDL 2008 hay una nueva unidad de diseño (desgin unit) llamada Context Declaration, o Declaración de Contexto (DC).
Que es y que hace la DC?
En primer lugar el estándar VHDL-2008 pre-define una declaración de contexto
de la siguiente manera
para usar el paquete numeric_std:
1 context ieee_std_conext is
2 library ieee;
3 use ieee.std_logic_1164.all;
4 use ieee.numeric_std.all;
5 end;
2 library ieee;
3 use ieee.std_logic_1164.all;
4 use ieee.numeric_std.all;
5 end;
De este modo en mi proyecto puedo directamente escribir:
1 context ieee.ieee_std_conext;
2
3 entity ...
2
3 entity ...
Pero, así como está pre-definido el contexto arriba mencionado, VHDL2008 permite definir 'user defined' contextos, permitiendo de este modo juntar en un solo archivo TODOS los paquetes que se usan para un proyecto específico. Por ejemplo puedo definir:
1 context mis_paquetes is
2 library ieee;
3 use ieee.std_logic_1164.all;
4 use ieee.numeric_std.all;
5 use my_library.all;
6 use ieee.fixed_pkg.all;
7 .....
8 end;
2 library ieee;
3 use ieee.std_logic_1164.all;
4 use ieee.numeric_std.all;
5 use my_library.all;
6 use ieee.fixed_pkg.all;
7 .....
8 end;
Donde se escribe una DC?
Ahora bien, como ya dije al comienzo una DC es una design unit, tal como lo es una entidad, un paquete, una configuración, por lo que una DC DEBE escribirse en un archivo aparte, por ejemplo mis_paquetes_context.vhd, e incluirlo dentro del proyecto como cualquier otro desing unit (del mismo modo que se incluye un paquete por ejemplo, puedes ver el blog al respecto).
Uso del DC?
Una vez definida, se debe incluir en el proyecto la design unit, para usarla en los diferentes componentes del proyecto.
De este modo en cada otra design unit se debería escribir lo siguiente:
De este modo en cada otra design unit se debería escribir lo siguiente:
1 context work.mis_paquetes;
2
3 entity . . . .
2
3 entity . . . .
El uso de 'work.' se debe a que por defecto la mayoría de las herramientas compilan los unidades de diseño en esa librería. Esto puede cambiarse a gusto por el diseñador.
Cuidado/Advertencia -> Compatibilidad
Antes de hacer uso de esta característica de VHDL 2008 deberías verificar que tu herramienta de síntesis soporte VHDL 2008. Debido q esto depende de q herramienta de síntesis estés usando, XST, Quartus, Synplify, Precision, etc; no te puedo guiar al respecto, pero normalmente es una tarea sencilla.
El otro problema q uede presentarse es que la herramienta de síntesis soporte VHDL 2008, pero la de simulación no ! :) ... Por lo que directamente aconsejo verificar ambas herramientas antes de comenzar a trabajar con CD.
Hasta pronto !