Эквивалент #ifdef в VHDL для разделения симуляция / синтез? - PullRequest
5 голосов
/ 25 февраля 2011

Чтобы облегчить визуальное чтение волн моделирования, я хотел бы назначить некоторые сигналы для «XXXX», но только во время моделирования, и поэтому я хочу, чтобы инструмент логического синтеза (в моем случае ISE) пропускал эти инструкции .

Два вопроса отсюда:

  1. Есть ли эквивалентный метод #ifdef SIMULATION_TIME, как в C?
  2. Будет ли присвоение «XXXX» иметь какое-либо влияние на логический синтез (сброс на 0? Предупреждения? Ничего?). Если это никак не повлияет, то на мой вопрос ответят. Если нет, мне все еще нужно присвоить "XXXX" ...

Спасибо.

Ответы [ 4 ]

6 голосов
/ 28 февраля 2011

Еще один трюк с ответом Джорджа - если вы хотите логическое значение для in_synthesis, скажите:

constant in_simulation : boolean := false
--pragma synthesis_off
                                    or true
--pragma synthesis_on
;
constant in_synthesis : boolean := not in_simulation;
6 голосов
/ 25 февраля 2011

Если вы захотите использовать ifdef для выбора произвольного кода, тогда вы можете использовать ключевые слова VHDL , если генерировать .

label: if SOME_OPTION = SOME_VALUE generate
  some VHDL here
end generate;

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

6 голосов
/ 25 февраля 2011

(1) Вы ищете

--pragma synthesis_off
  -- your simulation-only code
--pragma synthesis_on

(2) Вы можете получить некоторые предупреждения от ISE, особенно когда эти сигналы управляют логикой.Просто убедитесь, что сигналы имеют определенное значение, прежде чем использовать их.Этот метод также должен работать тогда.

0 голосов
/ 25 февраля 2011

Как уже упоминали другие, обычно есть способ отключить синтез, который зависит от инструмента (см. Документы ISE).

Когда мне нужно что-то более сложное, я выполняю предварительную обработку. Обычно я использую make-файлы и различные * * nix-инструменты для обработки текста (sed, awk, perl, & c). Это может быть так просто или так сложно, как хотелось бы. То, что начиналось как способ раскомментирования различных блоков кода для симуляции и синтеза, теперь извлекает документацию регистра и автоматически генерирует заголовочные файлы C для команды SW.

Если вы не хотите «свернуть свои собственные», вы можете применить одну из многих ранее существующих реализаций (C-pre-processser, язык макросов m4 и т. Д.) К процессу сборки.

...