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

Fitter (Place & Route) в Альтере

Заметил что при каждой компиляции одной и той же версии Fitter ведет себя по разному и время компиляции варьируется от 18 до 26 минут. Можно как то влиять на поведение Fitter?

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


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

Сильно зависит от "сложности кода". Бывает, что коряво придумаешь алгоритм обработки данных, что Фиттер не может нормально разложить. В итоге выполняется 7 часов. Хотя при нормально решении 45 минут. Если все нормально написано, то борьба со скоростью компиляции у меня такая:
1) Создание партишенов и их инкрементная компиляция. Это сильно сокращает время, когда нужно перекомпилить только некоторые модули.
2) Качественно все описано в sdc
3) Выполнить рекомендации по найстройкам в визарте Tools/Advisors/Compilation Time Advisor
4) Подрубание мощностей по сетке. Чтобы ядер 20 компилило. Немного сокращает время.

Изменено пользователем new123

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


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

1 hour ago, new123 said:

Сильно зависит от "сложности кода". Бывает, что коряво придумаешь алгоритм обработки данных, что Фиттер не может нормально разложить. В итоге выполняется 7 часов. Хотя при нормально решении 45 минут. Если все нормально написано, то борьба со скоростью компиляции у меня такая:
1) Создание партишенов и их инкрементная компиляция. Это сильно сокращает время, когда нужно перекомпилить только некоторые модули.
2) Качественно все описано в sdc
3) Выполнить рекомендации по найстройкам в визарте Tools/Advisors/Compilation Time Advisor
4) Подрубание мощностей по сетке. Чтобы ядер 20 компилило. Немного сокращает время.

 

меня не столько беспокоит время компиляции сколько разное поведение системы. скомпилировал один раз не вижу прыжки в данных, скомпилировал второй раз - прыжки появились.

если бы еще знать что и как описывать в sdc.

 

причем малейшее изменение - поменял версию - вместо when X"0006" => sspi_data_out <= X"0106"; пишу when X"0006" => sspi_data_out <= X"0107"; - все - компилит по другому - все сломалось все пропало.

Изменено пользователем jenya7

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


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

5 minutes ago, jenya7 said:

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

скорее всего это не нормально. У меня тяжелые проекты для него. Время всегда практически константа. А прыжки во времени при записи в память, я уверен, хоть у меня опыт и не богат, это проблема проекта. Тем более время Фиттера вам об этом подсказывает, что ему иногда тяжело. Там у вас точно в Time Analizer нет отрицательного значения поля SLACK? красным еще выделяет. Если нет, то когда все полностью опишите в sdc, могут появиться и тогда станет ясно

5 minutes ago, jenya7 said:

если бы еще знать что и как описывать в sdc.

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

https://www.kit-e.ru/articles/plis/2010_9_51.php

Изменено пользователем new123

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


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

1 hour ago, new123 said:

скорее всего это не нормально. У меня тяжелые проекты для него. Время всегда практически константа. А прыжки во времени при записи в память, я уверен, хоть у меня опыт и не богат, это проблема проекта. Тем более время Фиттера вам об этом подсказывает, что ему иногда тяжело. Там у вас точно в Time Analizer нет отрицательного значения поля SLACK? красным еще выделяет. Если нет, то когда все полностью опишите в sdc, могут появиться и тогда станет ясно

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

https://www.kit-e.ru/articles/plis/2010_9_51.php

 

спасибо. почитаю.

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


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

я таки вижу отрицательный SLACK на одном из клоков. не понимаю почему. он 30 мега и я его описал

create_clock -name {GCP_CLK} -period 33.3 -waveform { 0.000 16.150 } [get_ports { GCP_CLK }]

 

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


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

24 minutes ago, jenya7 said:

я таки вижу отрицательный SLACK на одном из клоков. не понимаю почему. он 30 мега и я его описал

вот вам и ответ. Значит по этому клоку не успевает логика по какому то маршруту! там делайте подробный отчет и смотрите маршруты. 

Вот в продолжении второй учебник тогда http://caxapa.ru/thumbs/442268/TimeQuest_for_dummies.pdf

 

счетчиков нет многобитных случаем?

Изменено пользователем new123

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


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

30 minutes ago, jenya7 said:

я таки вижу отрицательный SLACK на одном из клоков. не понимаю почему. он 30 мега и я его описал

create_clock -name {GCP_CLK} -period 33.3 -waveform { 0.000 16.150 } [get_ports { GCP_CLK }]

 

посмотрите на всякий случай документацию на create_clock
если не указаны величины в -period, то это наносеки. 33.3 наносеки, это 30.03 мегагерц.

 

это у вас синтезируемая частота? не от генератора? тогда надо create_generated_clock

Изменено пользователем new123

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


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

1 hour ago, new123 said:

вот вам и ответ. Значит по этому клоку не успевает логика по какому то маршруту! там делайте подробный отчет и смотрите маршруты. 

Вот в продолжении второй учебник тогда http://caxapa.ru/thumbs/442268/TimeQuest_for_dummies.pdf

а как сделать подробнвй отчет?  он не показывает маршруты. только конечный результат.

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


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

2 minutes ago, jenya7 said:

а как сделать подробнвй отчет?  он не показывает маршруты. только конечный результат.

по красному слаку правой кнопкой и Report Timing. Далее кнопка Report Timing и выведет все маршруты, которые не укладываются на этом клоке, опять же будут красным

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


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

5 hours ago, jenya7 said:

Заметил что при каждой компиляции одной и той же версии Fitter ведет себя по разному и время компиляции варьируется от 18 до 26 минут. Можно как то влиять на поведение Fitter?

на всякий случай - это сделано специально, чтобы каждый раз получать разные результаты и выбрать лучший (тот где слаки поменьше)

у Альтеры/Интела есть специальная утилита Design Space Explorer, которая позволяет процесс перебора автоматизировать (у других вендоров тоже есть подобное)

------------------

а про слаки - а не на входе или выходе слаки пллохие? может констрейны на вход/выход заданы так, что их не выполнишь?

 

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


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

1 hour ago, yes said:

на всякий случай - это сделано специально, чтобы каждый раз получать разные результаты и выбрать лучший (тот где слаки поменьше)

у Альтеры/Интела есть специальная утилита Design Space Explorer, которая позволяет процесс перебора автоматизировать (у других вендоров тоже есть подобное)

------------------

а про слаки - а не на входе или выходе слаки пллохие? может констрейны на вход/выход заданы так, что их не выполнишь?

 

на самом деле этот слак некоректный. он не учитывает частоты генерируемые с PLL. Ппоэтому времянка между GCP_CLK(главная частота) и M0_SPI_CLK (частота SPI slave) не выполняется. но мой модуль запитан другой частотой после PLL. хотя я этот клок тоже прописал.

 

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


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

26 minutes ago, jenya7 said:

на самом деле этот слак некоректный

если есть полная уверенность, что это делать квартусу не надо, то это надо прописать в sdc как set_false_path, только надо аккуратно с полным пониманием

26 minutes ago, jenya7 said:

енерируемые с PLL

если речь про pll, которая на чипе, а не внешняя pll на плате, то в sdc тоже надо прописать  derive_pll_clocks. Квартус тогда автоматом клоки подхватит и описывать их как create_clock не надо.

все клоки, которые идут после pll лучше прописать как create_generated_clock -name .. -source ..

Изменено пользователем new123

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


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

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

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

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

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

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

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

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

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

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