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

GoWin Timing Report по каждому модулю

В большом проекте при добавлении нового модуля, изменении настроек IDE или параметров модулей

меняется максимальная допустимая частота всего собранного проекта в отчёте - Actual Fmax.

 

Но она сообщается на весь проект и вероятно равна максимальному 1/DataDelay по всем модулям.

 

А можно получить отчёты (неким скриптом?) по конкретному модулю на основе собранного проекта в GoWin EDA?.

В идеале список Fmax по каждому модулю после имплементации или хотябы синтеза.

 

Или это надо как-то делать только в симуляторах типа Modelsim?

 

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


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

18 минут назад, _4afc_ сказал:

А можно получить отчёты (неким скриптом?) по конкретному модулю на основе собранного проекта в GoWin EDA?.

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

19 минут назад, _4afc_ сказал:

Или это надо как-то делать только в симуляторах типа Modelsim?

Modelsim здесь никак не поможет, т.к. он является потребителем параметров задержек в формате sdf, а не источником этих данных.

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


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

37 minutes ago, makc said:

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

Разобрался наконец как это делать при PnR: :dance2:

 

в 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 - тоже добавляется.

Если в {} вставить несколько модулей - выведется наименьшее число.

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


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

:good:
1. Где вы это отрыли? и
2. Что дают вам эти числа?

21 час назад, makc сказал:

Modelsim здесь никак не поможет, т.к. он является потребителем параметров задержек в формате sdf

Как понять, что пора переходить от моделирования RLT к gate-level?

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


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

Только что, Zversky сказал:

Как понять, что пора переходить от моделирования RLT к gate-level?

Никак, т.к. с моей точки зрения на ПЛИС нужно делать качественное покрытие тестов на уровне RTL и обеспечить покрытие проекта констрейнтами, а не заниматься ловлей блох в моделировании с задержками, где с вероятностью в 99.9999% вы не сможете воспроизвести те "магические" эффекты, что будут проявляться на реальном железе.

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


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

17 минут назад, makc сказал:

т.к. с моей точки зрения на ПЛИС нужно делать качественное покрытие тестов на уровне RTL

Вы имеете в виду и покрытие кода?

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


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

30 минут назад, Zversky сказал:

Вы имеете в виду и покрытие кода?

Да, естественно. При тестировании на железе далеко не всегда можно быстро и просто воспроизвести все те варианты, которые у вас должны правильно обрабатываться на уровне логики проекта.

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


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

1 hour ago, Zversky said:

Как понять, что пора переходить от моделирования RLT к gate-level?

Никак. Например Квартус для (условно) больших ПЛИС просто не генерирует низкоуровненый нетлист и sdf. Считается, что если проект написан корректно и все временные констрейны улдовлетворились, то всё должно работать.

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


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

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МГц, ну и т.д...

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


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

23 hours ago, makc said:

только если выполнить отдельно его синтез в изолированном окружении.

А это как? Что имеется ввиду?

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


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

17 minutes ago, _4afc_ said:

А это как? Что имеется ввиду?

нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть)

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


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

9 минут назад, des00 сказал:

нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть)

Не обязательно топом, но как минимум окружается регистрами по входам и выходам, чтобы минимизировать комбинаторные задержки по интерфейсам модуля. А дальше, действительно, оптимизация по максимуму, включая использование аппаратных примитивов ПЛИС в привязке к кристаллу, т.е. в итоге получается некий аналог Hard IP для ПЛИС.

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


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

15 minutes ago, des00 said:

нужный модуль делается топом, синтезируется/разводится и оптимизируется в усмерть)

К сожалению это не работает так хорошо в GoWin:

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

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

 

Возможно GoWin использует общие CLB для разных модулей. Нет-ли какой инструкции отделить некий модуль с его подмодулями от всего проекта при PnR?

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


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

20 minutes ago, _4afc_ said:

К сожалению это не работает так хорошо в GoWin:

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

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

так всегда бывает, роутинг не бесконечный на любой плис. Но чисто логическая оптимизация возможна: уменьшение глубины логического дерева, ручной ретайминг. ИМХО, если одиночный модуль дает условно частоту близкую к триггерной, при этом не потребляя неадекватных ресурсов, то и в плотном проекте можно ждать частоту где то 0.75 от триггерной. 

20 minutes ago, _4afc_ said:

Возможно GoWin использует общие CLB для разных модулей. Нет-ли какой инструкции отделить некий модуль с его подмодулями от всего проекта при PnR?

а там всяких крутиляторов типа share CLB disable нет?

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


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

4 минуты назад, des00 сказал:

а там всяких крутиляторов типа share CLB disable нет?

Такого там нет, максимум можно задать max fanout.

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


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

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

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

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

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

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

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

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

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

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