Чем полезна декларация компонента? - PullRequest
0 голосов
/ 14 октября 2018

С VHDL '93, вводящим прямое создание экземпляров, когда бы вы фактически использовали компонент сейчас, когда ваша сущность находится в VHDL?Следующее - единственный раз, когда требуется компонент, о котором я могу думать:

  1. Компонент сопоставляется с источником не VHDL (Verilog, netlist и т. Д.)
  2. У вас нет источникаи вам нужно что-то скомпилировать (например, коллега еще не закончил свой код)
  3. Вы связываете различные пары сущностей / архитектур с конкретными компонентами в определенных сущностях через конфиги.(но кто на самом деле это делает? Может быть, если у вас есть арка моделирования и синтезаторная арка - но опять же - никогда не видел, чтобы она использовалась каким-либо осмысленным образом)позволяет мне видеть карту портов в том же файле "или" наличие библиотеки компонентов позволяет мне видеть все ".Это в основном подход старой школы, к которому привыкли люди.На мой взгляд, поддерживать один и тот же код в двух местах не имеет смысла.

    Есть ли другие, которые я пропустил?

1 Ответ

0 голосов
/ 22 октября 2018

Извините за поздний ответ на Невозможно скомпилировать пакет VHDL - Ошибка Modelsim: (vcom-1576) ожидает END

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

  1. Чтобы написать независимый от платформы код, нужно реализовать, например, решение Altera и Xilinx.Этот код будет ссылаться на библиотеки конкретного поставщика, такие как alter_mf или unisim.Обе реализации конкретного поставщика могут быть выбраны с помощью if ... generate -statement или с VHDL-2008 с помощью case ... generate -statement.
    Но даже с генерировать -статемии, это решение должно создавать экземпляры компонентов, поскольку экземпляры прямого экземпляра сущности связаны независимо от того, что некоторые экземпляры никогда не появятся в разработанной модели.(Я считаю, что это ошибка в языке - но у нас не было времени исследовать и исправить ее для VHDL-2018.) Поскольку объект немедленно связывается, инструмент пытается загрузить библиотеку поставщика, на которую ссылаются, и ее пакеты.
    Давайтепредположим, что вы скомпилируете на Altera с Quartus, он будет жаловаться на неизвестную библиотеку unisim и неизвестный пакет vcomponents.То же самое происходит в Xilinx, когда Vivado жалуется на неизвестную библиотеку altera_mf.
    Таким образом, чтобы отрезать (прямое) дерево создания экземпляров, требуется создание экземпляров компонентов.

    Этот метод используется PoC-библиотека .См., Например, реализацию PoC.misc.sync.Bits для стандартного синхронизатора двойного FF с различными атрибутами, применяемыми к реализации Altera, Xilinx или универсальному.

  2. В Методология проверки VHDL с открытым исходным кодом (OSVVM) , компоненты используются для двух вариантов использования:

    1. В DUT верхнего уровня экземпляры IP-ядер создаются как компоненты, поэтому они могут быть заменены фиктивными реализациями.Либо как несвязанные компоненты, либо как компоненты, загружающие фиктивную архитектуру.Это может ускорить моделирование, уменьшить возможные источники ошибок при тестировании, заменить сложные медленные реализации, такие как MGT или контроллеры памяти, на более простые и быстрые реализации, ...
    2. В OSVVM управление тестированием реализовано в отдельной сущности, называемойTestController.Этот объект имеет несколько архитектур для реализации разных тестовых случаев, применяемых к одной и той же твердости.Архитектуры связаны с конфигурацией верхнего уровня для каждого теста / архитектуры.Таким образом, запуск «испытательного стенда» означает разработку и моделирование одной из этих конфигураций.
...