Я не думаю, что можно делать то, что вы хотите - установить универсальный пакет равным обычному универсальному, а затем использовать его в качестве порта. Однако вы можете использовать отложенную константу в пакете, подобном следующему:
Этот код компилируется один раз и является стабильным:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package dependent_types is
generic (generic_value : natural);
subtype dependent_type is std_ulogic_vector (generic_value - 1 downto 0);
end package;
package constants is
constant generic_value : natural;
end package;
Этот код должен бытьперекомпилируется каждый раз, когда константа изменяется:
package body constants is
constant generic_value : natural := 16;
end package body ;
use work.all;
use work.constants.all;
package instantiated_types is new dependent_types
generic map (generic_value => generic_value);
use work.instantiated_types.all;
entity dependent_entity_with_dependent_port is
port (dependent_port : out dependent_type);
end dependent_entity_with_dependent_port;
architecture A of dependent_entity_with_dependent_port is
begin
end;
https://www.edaplayground.com/x/3vfd