У меня есть система, описанная в vhdl, которая должна работать с разными конфигурациями. Для этого я поместил последние в разные файлы пакетов. Затем у меня есть глобальный пакет, в котором я раскомментирую конфигурацию, которую хочу синтезировать. Я использую этот глобальный пакет везде, где затем объявляю свои объекты.
Но проблема в том, что на самом деле при синтезе типы и константы, объявленные в конфиг-пакетах, не видны.
Я попытался объявить «использовать my_package.all» в файле глобального пакета выше объявления глобального пакета, и я попытался также внутри глобального пакета.
Я имею в виду, что я пытался:
use work.config1.all;
package global_package is
...
end global_package;
и я пробовал:
package global_package is
use work.config1.all;
...
end global_package;
что на самом деле принимает синтезатор.
У кого-нибудь есть решение? Мне очень не хочется комментировать и раскомментировать во всех своих файлах нужный мне конфиг.
Благодарю вас!
РЕДАКТИРОВАТЬ :
Например, если у меня есть:
файл 1:
package config1 is
constant my_variable : integer := 1;
end config1;
файл 2:
package config2 is
constant my_variable : integer := 2;
end config2;
файл 3:
use work.config1.all
-- use work.config2.all
package global is
constant another_variable : integer := 5;
end global;
файл 4:
use work.global.all
entity my_entity is
port(clk : in std_logic);
end my_entity ;
architecture Behavioral of my_entity is
signal sig1, sig2 : integer;
begin
sig1 <= another_variable; -- I can see and use here the constant "another_variable".
sig2 <= my_variable; -- Error ! I would like to have access here to the constant "my_variable" that the synthesizer can't see.
end Behavioral;
Имея тогда эти 4 файла, я не могу получить доступ к "my_variable" только через "глобальный" пакет. Кроме того, я хотел бы, чтобы эта константа имела значение, указанное в пакете config1 или config2, в зависимости от того, что не прокомментировано.