1891ВМ12Я 0 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба Использую Vivado. У меня два XPR файла, один и тот же проект нацеливается на разные ПЛИС и разную распиновку на плате. И только буквально один `ifdef в коде отличают версии реализации во множестве мест. Поэтому очень хочется вот что - есть ли возможность в самом XPR-файле проекта объявить глобальный define для Verilog? Или как то задать опцию, которая попадет при компиляции до каждого Verilog-файла, чтобы сработал ifdef. Если возможно, то где как это задать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба а в synthesis settings в районе general поискать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба Если у вас 30 minutes ago, 1891ВМ12Я said: один и тот же проект нацеливается на разные ПЛИС вам надо иметь два проекта, то есть два xpr. А раз 30 minutes ago, 1891ВМ12Я said: разную распиновку то и два xdc. 30 minutes ago, 1891ВМ12Я said: есть ли возможность в самом XPR-файле проекта объявить глобальный define для Verilog Можно задать параметр (для generate), но это не то же самое, что директива препроцессора. Придётся делать два файла верхнего уровня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 28 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба 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 файл с помощью опции: См: UG901, стр 18. PS. И есть ещё такой способ: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 14 марта, 2023 Опубликовано 14 марта, 2023 · Жалоба Понятно, большое спасибо за ответы. Ясно, значит в more options прописать -verilog_define. Похоже это абсолютно именно то что надо. Мне не хватало этой подсказки с именем опции Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 17 марта, 2023 Опубликовано 17 марта, 2023 · Жалоба Проверил решение. Оно условно работает. Как бы да, Verilog файлы реально все воспринимают этот define и файлы из подпроектов, всё вроде хорошо. Только вот Vivado выкидывает файлы через своё AutoDisabled в файле xpr вижу. Надо искать способ, чтобы отключить это AutoDisabled, оно же не понимает что файлы всё же будут задействованы, модули будут использоваться, и потом выкидывает их, хотя компилятор воспринимает это verilog_define Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 21 января Опубликовано 21 января · Жалоба Снова потребовалось деление на два xpr+xdc, чтобы ничего вручную не менять (на двухсотый раз может возникнуть ошибка). Оказывается, надежное решение было рядом. Project Settings -> General -> Verilog Options и плюсиком добавить желаемый define с пустым полем value. Таким образом, оно реально понимает это как глобальный define и auto-disable уже не выкидывает файлы и под-модули. Надеюсь кому то пригодится это маленькое открытие. То есть, не synthesys options, а немного в другом месте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться