Элемент контекста, на который ссылается VHDL

Я что-то внедряю в VHDL, и я не понимаю ошибки, которые я получаю:

library IEEE;
use IEEE.std_logic_1164.all;
use work.primitive.all;

entity LogicF is
    port(A,B,C:in std_logic; Y:out std_logic);
end LogicF;
architecture STRUCTURAL of LogicF is
signal notA, notB, andSign:std_logic;
begin  
    inv1:inverter port map (i=>A,o=>notA);
    inv2:inverter port map (i=>B,o=>notB);
    si1:and2 port map (i1=>notA, i2=>notB, o=>andSign);
    sau1:or2 port map (i1=>andSign, i2=>C, o=>Y);
end STRUCTURAL;

Ошибка: (3,10): не удается найти указанный элемент контекста. Ошибка: (8,1): не удается найти объявление сущности, на которую ссылаются, "LogicF"

1 ответ

Как Брайан указывает на строку 3, символ 10 (3,10) является первым символом слова primitive в use.work.primitive.all;, Похоже, пакет не был в рабочей библиотеке.

%% ghdl -a LogicF.vhdl
LogicF.vhdl: 3: 10: первичный модуль "примитив" не найден в библиотеке "работа"
ghdl: ошибка компиляции
%%

Вопрос о том, какой инструмент возникает из-за второй ошибки в (8,1), объект LogicF не был успешно проанализирован и не был помещен в рабочую библиотеку.

IEEE Std 1076 (LRM), Проектирование единиц и их анализ, Порядок анализа:

Если при попытке проанализировать единицу проектирования обнаруживается какая-либо ошибка, то попытка анализа отклоняется и никак не влияет на текущую рабочую библиотеку.

Вторая ошибка исходит от сущности LogicF не присутствовать в указанной библиотеке.

(LRM) тот же раздел (11,4 -1993, 13,5 -2008):

Правила, определяющие порядок, в котором можно анализировать единицы проектирования, являются прямыми следствиями правил видимости. Особенно:

a.  A primary unit whose name is referenced within a given design unit must be analyzed prior to the analysis of the given design unit.

b.  A primary unit must be analyzed prior to the analysis of any corresponding secondary unit.  

Сущность является основной единицей (LogicF) архитектура (STRUCTURAL) является вторичной единицей.

Когда я использовал ghdl для анализа вашего файла "file", он вышел после первой ошибки. В этом случае, поскольку второй проектный модуль был вторичным, первый отказ был достаточным, чтобы остановить анализ. Если бы существовали другие несвязанные конструктивные единицы, их анализ мог бы продолжаться, если бы они оказались безошибочными (и не зависели от примитивов пакета).

В сообщениях об ошибках отсутствуют объяснения любых предположений, которые обычно встречаются в документации реализации инструмента.

Чтобы ответить на вопрос Брайана в своем комментарии, формат сообщения об ошибке взят от Aldec, по-видимому, инструмента Aldec-HDL (Google полезен раньше).

Это был вопрос профессионального любопытства, Брайан - один из разработчиков ghdl. VHDL не требует, чтобы из-за ошибки не анализировались дополнительные единицы проектирования, найденные в том же файле проекта. Это деталь реализации, где теперь мы знаем, что делает Aldec.

Aldec не распространяет другую документацию, кроме как с клиентами, что затрудняет обращение к сторонней помощи. Вы видите, что многие университеты публикуют учебные пособия по использованию инструментов Aldec.

Я нашел сообщение об ошибке на другом стороннем форуме, где был определен поставщик.

Другие вопросы по тегам