У меня есть тестовый файл VHDL a.vhd.Если существует два компонента одного и того же имени, один в пакете и другой в архитектуре, какой из них имеет приоритет?
кошка a.vhd
package pak is
component b is -- 1st definition of component b.
end component
end pak;
use work.pak.all; -- 1st definition visible through this package use clause
entity a is
port (in1 : in std_logic);
end a;
architecture a of a is
component b -- 2nd definition of component b.
port (in11 : in std_logic);
end component;
begin
inst : b port map (in11=> in1); -- there are two definitions of component b at this instance.
end a;
entity b is
port (in11 : in std_logic);
end b;
architecture b of b is
begin
end b;
Таким образом, при работе с ModelSim на него, не было никакого предупреждения/ошибки перегруженной компонента. Всегда ли мы отдаем предпочтение компоненту, объявленному в архитектуре над компонентом того же самого имени, объявленного в пакете. Может ли кто-нибудь сказать мне, что говорит LRM об этом? Пожалуйста, объясните это.
Рассмотрите случай, когда компонент b, объявленный в пакете, также имеет тот же интерфейс, что и заявленный в архитектуре. В этом случае вы говорите, что во время разработки я должен увидеть work.pack.b. Я хочу знать, как принято отдавать предпочтение компоненту пакета над другим? Является ли это конкретным инструментом или это указано в VHDL LRM? – Dharmendra
Извините, я не говорю, что вы увидите work.pack.b, если интерфейсы были идентичны. Я ожидаю местный «b». Я не могу указать точное правило LRM, которое разъясняет, что происходит, но это основной принцип в других областях VHDL (и его родительской Ada), что локальная декларация (например, локальная переменная) обычно скрывает эквивалентную, но более удаленную декларацию , В случаях, когда два варианта ARE видны (например, объявления функции «+» из разных библиотек), соглашение заключается в том, чтобы скрыть оба, а не делать произвольное и, возможно, неправильное решение между ними. –
Thanx Brian.In LRM 1076-2008 Раздел 12.4 Использование статьи гласит: Для того, чтобы определить, какие заявления делаются непосредственно видимыми в данном месте путем использование положений, рассмотрит множество деклараций идентифицированного всех пункты назначения которых прицелы приложите это место. Любое объявление в этом наборе является потенциально видимым объявлением. Потенциально видна декларация на самом деле сделана непосредственно видимый за исключением следующих трех случаев: а) потенциально видна декларация не производится непосредственно видимым, если место считаются находится в непосредственной области видимости омографа декларации. – Dharmendra