2015-11-23 2 views
0

У меня есть дизайн VHDL, состоящий из нескольких объектов и пакета. Субъекты используют некоторые определения из пакета и могут использовать друг друга в качестве компонентов.Каков рекомендуемый способ переноса кода VHDL?

Предположим, я создал его с помощью одного инструмента, но через некоторое время я хотел бы взять этот код и использовать его в другом инструменте.

Что такое «правильный путь» для переноса дизайна VHDL по этому пути? Должен ли я создавать библиотеку? (И могу ли я позже «импортировать» эту библиотеку в другие инструменты, чем она была создана?) То, что я хотел бы достичь, - это нечто вроде пакета Java, который можно легко обрабатывать и включать в разные проекты. Есть ли способ «повторить» это в VHDL?

Я читал this SO question, и это каким-то образом смутило меня. Должен ли я просто держать свои объекты и архитектуры в «работе» и просто переместить пакет в библиотеку?

+1

Исходный код VHDL переносится между реализациями инструмента VHDL. Когда блок дизайна успешно анализируется, он хранится в библиотеке, по умолчанию, что когда-либо работает, в контексте. Форматы библиотек определяются реализацией и не переносятся. – user1155120

+0

Хорошо, так что в основном переносите отдельные файлы вокруг? – 3yakuya

+1

Да, несите файлы вокруг. «Библиотека дизайна - это хранилище, зависящее от реализации, для ранее проанализированных блоков дизайна. Данная поддержка необходима для поддержки любого количества библиотек-дизайнеров.» IEEE Std 1076-2008, 13.2 Библиотеки дизайна. – user1155120

ответ

1

Исходный код VHDL, как правило, переносится между реализациями инструмента VHDL.

Когда проектный блок успешно проанализирован, он хранится в библиотеке, по умолчанию, какая-либо работа в контексте.

Форматы библиотек определяются реализацией и не переносятся.

IEEE Std 1076-2008 13.2 Дизайн библиотека, пункт 1:

дизайна библиотека это зависит от реализации хранилища для ранее анализируемых проектных единиц. Данная реализация необходима для поддержки любого количества библиотек проекта.

и пункт 6:

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

Ничего не мешает вам перемещать проекты в виде коллекции файлов дизайна (исходного кода) между реализациями инструментов в рамках проблем переносимости. Это включает исходный код для любой библиотеки, от которой зависит конкретный дизайн.

Библиотеки STD и IEEE должны поддерживаться, как и их различные пакеты (STANDARD, std_logic_1164, numeric_std, numeric_bit, ...), обеспечивающие структуру переносимости в рамках ограничений, указанных в приложении D, потенциально непереносимые конструкции.

1

Когда я придумываю цифровой IP я следую этим правилам:

  • создать каталог RTL (вы можете использовать имя, которое вам нравится), где я положил все файлы VHDL, что я пишу. В этом каталоге есть:

    • пакет, где я поставил все константы, все компоненты (также верхней части моего IP: так экземпляр IP, вы должны просто включить библиотеку IP) и все типы, которые я будет использоваться в моем IP-адресе. Пакет имеет имя IP.pkg.vhd

    • все файлы VHDL имеет nameIP_nameEntity.vhd так легко найти всю сущность в большом дизайне

    • один объект -> один файл

  • Я создаю каталог mk, где я пишу make-файл, который компилирует все мои файлы VHDL в правильном порядке в одной библиотеке. Таким образом, я предоставляю один IP-адрес в одной библиотеке со сценарием для его компиляции. Если вы меняете инструмент, вам нужно только создать новый make-файл, но у вас есть один пример: больше времени он просто копирует и вставляет изменения имени команды для компиляции.

Я обнаружил, что эти простые правила полезны при написании большого IP-адреса для больших проектов.

+0

Хорошо, так еще раз: отдельные файлы, собранные в правильном каталоге для обработки. Это верно? – 3yakuya

+0

yes: вы отправляете один каталог с одним внутренним каталогом с кодом rtl и одним вторым внутренним каталогом с make-файлом. В одном новом проекте вам нужно просто скопировать главный IP-каталог и прочитать свой файл make-файла в файле make-файла проекта. –

+0

Не зависит ли файл makefile от используемого инструмента? Например, для Xilinx и Altera это будет другим? – 3yakuya