Библиотеки
Все компилируется в библиотеку.По умолчанию это называется «работа», но вы можете переопределить это.Я редко использую это, хотя - иногда полезно с внешним IP, если есть конфликты пространства имен.Как прокомментировал Чиггс, использование библиотек для создания пространств имен является хорошей практикой.Большинство синтезаторов могут работать с несколькими библиотеками , хотя это было не всегда.Все симуляторы могут (насколько я знаю).Также есть немного больше хлопот, связанных с их настройкой (вы должны указать компилятору, где они все находятся).
может быть пример - скажем, у вас есть контроллер i2c и контроллер spi.Вы можете вызвать оба блока controller
и скомпилировать их в свои собственные библиотеки с именами i2c
и spi
, а затем создать их экземпляры следующим образом:
i2c_instance:entity i2c.controller...etc
spi_instance:entity spi.controller...etc
или вы можете назвать их i2c_controller
и spi_controller
and do:
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
- Поместите полезные константы, функции, процедуры, определения типов в один или несколько пакетов
- Поместите сущности и архитектуры в один или несколько файловвкус и стиль разработки больше всего на свете
- Помещение пакетов и корпусов в один или несколько файлов - это вопрос вкуса и стиля разработки больше всего на свете