_4afc_ 25 20 июля, 2023 Опубликовано 20 июля, 2023 · Жалоба В большом проекте при добавлении нового модуля, изменении настроек IDE или параметров модулей меняется максимальная допустимая частота всего собранного проекта в отчёте - Actual Fmax. Но она сообщается на весь проект и вероятно равна максимальному 1/DataDelay по всем модулям. А можно получить отчёты (неким скриптом?) по конкретному модулю на основе собранного проекта в GoWin EDA?. В идеале список Fmax по каждому модулю после имплементации или хотябы синтеза. Или это надо как-то делать только в симуляторах типа Modelsim? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 197 20 июля, 2023 Опубликовано 20 июля, 2023 · Жалоба 18 минут назад, _4afc_ сказал: А можно получить отчёты (неким скриптом?) по конкретному модулю на основе собранного проекта в GoWin EDA?. На сколько я знаю нет, только если выполнить отдельно его синтез в изолированном окружении. 19 минут назад, _4afc_ сказал: Или это надо как-то делать только в симуляторах типа Modelsim? Modelsim здесь никак не поможет, т.к. он является потребителем параметров задержек в формате sdf, а не источником этих данных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 20 июля, 2023 Опубликовано 20 июля, 2023 · Жалоба 37 minutes ago, makc said: На сколько я знаю нет, только если выполнить отдельно его синтез в изолированном окружении. Разобрался наконец как это делать при PnR: в Fmax.sdc добовляем строки: report_max_frequency -mod_ins {FFTU384_1/MR3D} report_max_frequency -mod_ins {FFTU384_1/FFT1} report_max_frequency -mod_ins {FFTU384_1/NRM1} report_max_frequency -mod_ins {FFTU384_1/TWR1} получаем репорт в \impl\pnr\xxx.tr 2.3 Max Frequency Summary NO. Clock Name Constraint Actual Fmax Level Entity ===== ============ ============== ============== ======= ================= 1 CLK 100.000(MHz) 130.612(MHz) 3 TOP 2 CLK 100.000(MHz) 257.099(MHz) 1 FFTU384_1/MR3D 3 CLK 100.000(MHz) 163.215(MHz) 1 FFTU384_1/FFT1 4 CLK 100.000(MHz) 130.612(MHz) 1 FFTU384_1/TWR1 Если модуль заоптимизировался (как NRM1) то он из репорта проподает. В отчёт html - тоже добавляется. Если в {} вставить несколько модулей - выведется наименьшее число. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 17 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 1. Где вы это отрыли? и 2. Что дают вам эти числа? 21 час назад, makc сказал: Modelsim здесь никак не поможет, т.к. он является потребителем параметров задержек в формате sdf Как понять, что пора переходить от моделирования RLT к gate-level? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 197 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба Только что, Zversky сказал: Как понять, что пора переходить от моделирования RLT к gate-level? Никак, т.к. с моей точки зрения на ПЛИС нужно делать качественное покрытие тестов на уровне RTL и обеспечить покрытие проекта констрейнтами, а не заниматься ловлей блох в моделировании с задержками, где с вероятностью в 99.9999% вы не сможете воспроизвести те "магические" эффекты, что будут проявляться на реальном железе. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 17 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 17 минут назад, makc сказал: т.к. с моей точки зрения на ПЛИС нужно делать качественное покрытие тестов на уровне RTL Вы имеете в виду и покрытие кода? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 197 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 30 минут назад, Zversky сказал: Вы имеете в виду и покрытие кода? Да, естественно. При тестировании на железе далеко не всегда можно быстро и просто воспроизвести все те варианты, которые у вас должны правильно обрабатываться на уровне логики проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 1 hour ago, Zversky said: Как понять, что пора переходить от моделирования RLT к gate-level? Никак. Например Квартус для (условно) больших ПЛИС просто не генерирует низкоуровненый нетлист и sdf. Считается, что если проект написан корректно и все временные констрейны улдовлетворились, то всё должно работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 1 hour ago, Zversky said: 1. Где вы это отрыли? SUG101 -> SUG940 Сколько читал - никак не мог понять в каком окошке подобные ключи ввести или команды, думал через tcl или bat - оказалось надо в SDC записать. 1 hour ago, Zversky said: 2. Что дают вам эти числа? Я пишу потоковую ЦОС обработку на Verilog, причём SampleRate меньше CLK, соответственно: чем выше получится CLK у проекта - тем меньше задержка на обработку данных и меньше ресурсов ПЛИС используется (более мелкая ПЛИС понадобится). В приведённом примере видно, что TOP может работать не выше 130МГц, а паршивой овцой является модуль TWR1 или его не буфферезированное подключение. Т.е. в первую очередь надо ускорить модуль TWR1, причём ускорение до 163МГц - это хороший результат, на котором стоит остановиться и посмотреть можно ли ускорить не только его, но и MR3D вплоть до 257МГц, ну и т.д... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 23 hours ago, makc said: только если выполнить отдельно его синтез в изолированном окружении. А это как? Что имеется ввиду? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 17 minutes ago, _4afc_ said: А это как? Что имеется ввиду? нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 197 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 9 минут назад, des00 сказал: нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть) Не обязательно топом, но как минимум окружается регистрами по входам и выходам, чтобы минимизировать комбинаторные задержки по интерфейсам модуля. А дальше, действительно, оптимизация по максимуму, включая использование аппаратных примитивов ПЛИС в привязке к кристаллу, т.е. в итоге получается некий аналог Hard IP для ПЛИС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 15 minutes ago, des00 said: нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть) К сожалению это не работает так хорошо в GoWin: естественно я проверяю отдельные модули при разработке и они обставлены двойными регистрами вокруг. Но при вставлении модуля несколько раз в проект - в каждом месте своя скорость и она гораздо меньше изначальной. Возможно GoWin использует общие CLB для разных модулей. Нет-ли какой инструкции отделить некий модуль с его подмодулями от всего проекта при PnR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 20 minutes ago, _4afc_ said: К сожалению это не работает так хорошо в GoWin: естественно я проверяю отдельные модули при разработке и они обставлены двойными регистрами вокруг. Но при вставлении модуля несколько раз в проект - в каждом месте своя скорость и она гораздо меньше изначальной. так всегда бывает, роутинг не бесконечный на любой плис. Но чисто логическая оптимизация возможна: уменьшение глубины логического дерева, ручной ретайминг. ИМХО, если одиночный модуль дает условно частоту близкую к триггерной, при этом не потребляя неадекватных ресурсов, то и в плотном проекте можно ждать частоту где то 0.75 от триггерной. 20 minutes ago, _4afc_ said: Возможно GoWin использует общие CLB для разных модулей. Нет-ли какой инструкции отделить некий модуль с его подмодулями от всего проекта при PnR? а там всяких крутиляторов типа share CLB disable нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 197 21 июля, 2023 Опубликовано 21 июля, 2023 · Жалоба 4 минуты назад, des00 сказал: а там всяких крутиляторов типа share CLB disable нет? Такого там нет, максимум можно задать max fanout. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться