Перейти к содержанию
    

Глобальный `define на verilog-е

Здравия желаю!

На время симуляции проекта встаёт необходимость исключить из кода кое-какие куски, для этого использую директиву `define, совместно с `ifdef, `else, `endif и прочими.

Но объявлять дефайн приходится в каждом файле. Есть ли способ объявить глобальный дефайн в одном месте так чтобы он был виден по всему коду проекта?

Прошу пардона, если подобный вопрос уже поднимался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в чем моделируете?

ModelSim/QuestaSim.

А компилировать надо и в Квартусе и в Айсе, код у меня должен быть переносимый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В modelsim при вызове нужно передать параметр:

+define+TRULALA

В квартусе нужно добавить в проект assignment:

set_global_assignment -name VERILOG_MACRO "TRULALA"

.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В modelsim при вызове нужно передать параметр:

+define+TRULALA

В квартусе нужно добавить в проект assignment:

set_global_assignment -name VERILOG_MACRO "TRULALA"

.

А в коде

`define TRULALA
...

`ifdef TRULALA
ля-ля-ля тополя
`edif

?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ModelSim/QuestaSim.

А компилировать надо и в Квартусе и в Айсе, код у меня должен быть переносимый.

Можно и не изобретать лисапеды:

Конкретно для моделсима-квесты ничего объявлять не надо, есть встроенный дефайн MODEL_TECH,

просто в коде пишем:

`ifdef MODEL_TECH
   код только для симуляции моделсимом
`endif

Более общий случай - используем директиву:

// synthesis translate_off
   Код, игнорируемый синтезатором
// synthesis translate_on

Тут необходимо почитать доку на ваш синтезатор и убедиться что данная директива поддерживается.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли способ объявить глобальный дефайн в одном месте так чтобы он был виден по всему коду проекта?

Можно вынести все дефайны в отдельный файл с настройками, и инклудить его из всех файлов проекта, где эти дефайны используются.

 

Но на мой взгляд, использовать дефайны - моветон. Куда лучше использовать параметры, совместно с генерейт-конструкциями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но на мой взгляд, использовать дефайны - моветон. Куда лучше использовать параметры, совместно с генерейт-конструкциями.

В сложной иерархической конструкции протягивать параметры во все подмодули ИМХО не очень правильно - загромождается код общими настройками проекта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проще файл листа закинуть сам дефайн или отдельно прописать во внешнем файле и включить его в проект, отдельно в среде лучше не делать, теряется ход проекта.

 

+define+TRULALA

список файлов или

-f flist0.f

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно и не изобретать лисапеды:

Конкретно для моделсима-квесты ничего объявлять не надо, есть встроенный дефайн MODEL_TECH,

просто в коде пишем:

`ifdef MODEL_TECH
   код только для симуляции моделсимом
`endif

+1

Применительно к вопросу топикстартера:

`ifndef MODEL_TECH
   код, который моделсим не видит, но видит синтезатор и все другие любопытствующие
`endif

Уже все разжевали и в рот положили :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...