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

Vivado (2020) сделать глобальный define для Verilog

Использую Vivado. У меня два XPR файла, один и тот же проект нацеливается на разные ПЛИС и разную распиновку на плате. И только буквально один `ifdef в коде отличают версии реализации во множестве мест. Поэтому очень хочется вот что - есть ли возможность в самом XPR-файле проекта объявить глобальный define для Verilog? Или как то задать опцию, которая попадет при компиляции до каждого Verilog-файла, чтобы сработал ifdef. Если возможно, то где как это задать?

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


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

Если у вас

30 minutes ago, 1891ВМ12Я said:

один и тот же проект нацеливается на разные ПЛИС

вам надо иметь два проекта, то есть два xpr. А раз

30 minutes ago, 1891ВМ12Я said:

разную распиновку

то и два xdc.

30 minutes ago, 1891ВМ12Я said:

есть ли возможность в самом XPR-файле проекта объявить глобальный define для Verilog

Можно задать параметр (для generate), но  это не то же самое, что директива препроцессора.

Придётся делать два файла верхнего уровня.

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


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

On 3/14/2023 at 12:02 PM, 1891ВМ12Я said:

Или как то задать опцию, которая попадет при компиляции до каждого Verilog-файла, чтобы сработал ifdef. Если возможно, то где как это задать?

1. Сделать два различных "include" файла inc1.h и inc2.h:

 

inc1.h

`define A ...

 

inc2.h

`define B ...

 

2. Подключать в проект либо первый, либо второй inc*.h файл с помощью опции:

image.thumb.jpeg.c6f4d7fce1284386f14eff71b136cd5c.jpeg

 

См: UG901, стр 18.

 

PS. И есть ещё такой способ:

image.thumb.jpeg.f6e9aaf45e50bd82adaf6f5811347423.jpeg

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


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

Понятно, большое спасибо за ответы. Ясно, значит в more options прописать -verilog_define. Похоже это абсолютно именно то что надо. Мне не хватало этой подсказки с именем опции

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


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

Проверил решение. Оно условно работает. Как бы да, Verilog файлы реально все воспринимают этот define и файлы из подпроектов, всё вроде хорошо. Только вот Vivado выкидывает файлы через своё AutoDisabled в файле xpr вижу. Надо искать способ, чтобы отключить это AutoDisabled, оно же не понимает что файлы всё же будут задействованы, модули будут использоваться, и потом выкидывает их, хотя компилятор воспринимает это verilog_define

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


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

Снова потребовалось деление на два xpr+xdc, чтобы ничего вручную не менять (на двухсотый раз может возникнуть ошибка). Оказывается, надежное решение было рядом. Project Settings -> General -> Verilog Options и плюсиком добавить желаемый define с пустым полем value. Таким образом, оно реально понимает это как глобальный define и auto-disable уже не выкидывает файлы и под-модули. Надеюсь кому то пригодится это маленькое открытие. То есть, не synthesys options, а немного в другом месте.

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


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

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

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

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

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

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

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

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

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

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