Tengo un sistema en el que un diseño y un diseño secundario tienen arquitecturas diferentes. de la misma entidad; Así que este es un caso de instanciación recursiva. Primero la configuración:
-- common entity
entity MyEntity is port(A : in integer; B : out integer);end;
-- first architecture
architecture MyArc1 of MyEntity is begin B<=A+1;end;
-- second architecture intneded to include the first
architecture MyArc2 of MyEntity is
component MyEntity port(A : in integer; B : out integer);end component;
signal C : integer;
begin
u1 : MyEntity port map (A,C);
u2 : MyEntity port map (C,B);
end;
lo anterior funciona bien con Modelsim. El problema surge cuando intento mover el declaración del componente en un paquete:
-- package that declares components
package MyPackage is
component MyEntity port(A : in integer; B : out integer);end component;
end;
-- second architecture as above but using the package
use work.MyPackage.all;
architecture MyArc2 of MyEntity is
-- component declaration moved into package
signal C : integer;
begin
u1 : MyEntity port map (A,C);
u2 : MyEntity port map (C,B);
end;
Por alguna razón, a Modelsim no le gusta esto: El identificador "myentity" no identifica una declaración de componente
No veo por qué tiene problemas con esto ahora. Mi experiencia con Modelsim es que es bueno para apoyar el estándar; Entonces, ¿hay una sutileza aquí o hace ¿Modelsim tiene un problema?
Gracias,