Библиотеки
Все компилируется в библиотеку. По умолчанию это называется «работа», но вы можете переопределить это. Однако мне редко приходится использовать это - иногда это полезно с внешним IP-адресом, если возникают конфликты пространств имен. Как заметил Чиггс, хорошей практикой является использование библиотек для создания пространств имен. Большинство синтезаторов теперь могут работать с несколькими библиотеками, хотя так было не всегда. Все симуляторы могут (насколько я знаю). Их также немного сложнее настроить (вы должны сообщить компилятору, где они все находятся).
может быть пример - скажем, у вас есть контроллер i2c и контроллер spi. Вы можете вызвать оба блока controller
и скомпилировать их в свои собственные библиотеки с именами i2c
и spi
, а затем создать их экземпляр следующим образом:
i2c_instance:entity i2c.controller...etc
spi_instance:entity spi.controller...etc
или вы можете назвать их i2c_controller
и spi_controller
и сделать:
i2c_instance:entity work.i2c_controller...etc
spi_instance:entity work.spi_controller...etc
И библиотеки — это не «точно такие же» папки на жестком диске. Они управляются компилятором VHDL, поэтому вы создаете и отображаете их, используя любой синтаксис, который использует инструмент.
Например, в Modelsim vlib
создает библиотеку в определенном месте файловой системы (поэтому в данный момент она выглядит как папка), а vmap
сообщает компилятору, как сопоставить предложение use some_lib;
с определенным битом файловой системы.
Сущности, архитектуры, пакеты
Вы можете разделить свою сущность и архитектуру (или даже более одной архитектуры на сущность) на несколько файлов или сохранить их в одном файле. Хранение architecture
в отдельном файле означает, что при его перекомпиляции вы не перекомпилируете entity
, а это означает, что вам не нужно перекомпилировать все, что его создает.
Аналогично с packages
и package body
s - тела в отдельном файле означают, что вы можете просто перекомпилировать эту часть, не перекомпилируя все остальное. Обратите внимание, что package
s не предназначены для размещения сущностей.
(Кроме того, в Modelsim есть переключатель -just
, который позволяет хранить все в одном файле и просто компилировать выбранные биты файлов, например, только части architecture
и/или body
))
Резюме
- Скомпилируйте повторно используемые ядра в свою собственную библиотеку, чтобы защитить их пространство имен.
- Скомпилируйте все остальное в библиотеку
work
- Поместите полезные константы, функции, процедуры, определения типов в один или несколько пакетов.
- Помещение сущностей и архитектур в один или несколько файлов — это вопрос вкуса и стиля разработки в большей степени, чем что-либо еще.
- Помещение пакетов и тел пакетов в один или несколько файлов — это вопрос вкуса и стиля разработки в большей степени, чем что-либо еще.
person
Martin Thompson
schedule
23.05.2011