|
Вопрос по TimeQuest |
|
|
|
Jan 17 2018, 10:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(bogaev_roman @ Jan 16 2018, 16:54)  Не увидел настроек Fitter_effort и optimization_technique. Не знаю, каким образом может повлиять настройка smart_recompile, если менять только ограничения, по идее - никак. Если изменить Optimization mode c Balanced (Normal flow) на Performance (High effort - increases runtime), то это даёт пинок QII развести всё без ошибок, но на опции Fitter_effort и optimization_technique это не влияет. Fmax в этом случае может выдержать 443 MHz. Т.е. пока так и не понял, что при стандартных настройках мешает автоматической разводке с выполнением всех таймингов, если вручную есть такая возможность.
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 17 2018, 10:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(doom13 @ Jan 17 2018, 13:28)  Если изменить Optimization mode c Balanced (Normal flow) на Performance (High effort - increases runtime), то это даёт пинок QII развести всё без ошибок, но на опции Fitter_effort и optimization_technique это не влияет. Fmax в этом случае может выдержать 443 MHz.
Т.е. пока так и не понял, что при стандартных настройках мешает автоматической разводке с выполнением всех таймингов, если вручную есть такая возможность. Это уже шаманство, также как и смена seed. Такими вещами занимаются при сложных объемных проектах, а у Вас сумматор 8 разрядный, хоть и на высокой частоте. Может глюк квартуса этой версии, я с подобным сталкивался последний раз в 9 версии - в 17, 13, 14 такого не встречал. Можно еще попробовать перед полной компиляцией удалить содержимое файлов db и incremental_db - там вся информация сохраняется с предыдущих разводок, иногда перед новой полной разводкой сохраняется и используется предыдущий результат.
|
|
|
|
|
Jan 17 2018, 12:01
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(bogaev_roman @ Jan 17 2018, 13:44)  Это уже шаманство, также как и смена seed. Такими вещами занимаются при сложных объемных проектах, а у Вас сумматор 8 разрядный, хоть и на высокой частоте. Может глюк квартуса этой версии, я с подобным сталкивался последний раз в 9 версии - в 17, 13, 14 такого не встречал. Можно еще попробовать перед полной компиляцией удалить содержимое файлов db и incremental_db - там вся информация сохраняется с предыдущих разводок, иногда перед новой полной разводкой сохраняется и используется предыдущий результат. Ок, установлен еще и 14.0 и 13.0, сейчас опробую, базы чистить я пробовал. 14 версия с настройками по умолчанию всё собрала, писец. Спасибо, буду двигать дальше.
|
|
|
|
|
Jan 26 2018, 08:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(bogaev_roman @ Jan 17 2018, 13:44)  Это уже шаманство, также как и смена seed. Такими вещами занимаются при сложных объемных проектах, а у Вас сумматор 8 разрядный, хоть и на высокой частоте. Может глюк квартуса этой версии, я с подобным сталкивался последний раз в 9 версии - в 17, 13, 14 такого не встречал. Можно еще попробовать перед полной компиляцией удалить содержимое файлов db и incremental_db - там вся информация сохраняется с предыдущих разводок, иногда перед новой полной разводкой сохраняется и используется предыдущий результат. Версия 17.1 с настройками по умолчанию собирает всё с таким же косяком как и 16.1. Руками разводку можно подправить.
|
|
|
|
|
Feb 7 2018, 20:45
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(doom13 @ Jan 16 2018, 14:26)  Входные/выходные порты идут на ножки FPGA. Ругается на путь от reg_B[7] до sum1[7], смотрю как разбросал все в ChipPlanner-e. Если в Chip Planner-e подвинуть reg_B[7] максимально близко к sum1[7] и применить изменения в нетлисте, то все тайминги соблюдаются. Вопрос - почему автоматом не хочет поставить ячейки в нужные места (куча свободных ресурсов), чтоб все тайминги соблюдались. Это - не такое "очевидное" решение. Потому что он тупо боится ставить reg_B[7] далеко от остальных, справедливо опасаясь, что у вас может шина "разбежится" (400МГц, так между прочим, не хухры мухры!). А вы ещё зачем-то прилепили никому не нужный промежуточный регистр reg_sum, который явно назначили на выход sum. А компилятор Квартуса совсем не такой интеллектуальный, как вы могли подумать и он достаточно тупо выполнил ваши указания, повесив reg_sum чуть ли не на ногу sum. Была б его воля он бы его ещё на двухфазный выходной триггер (altddio) залепил, но права не имеет. И проблема тут не в мифических глюках Квартуса, а элементарно в том, что каменюга у вас выбрана огромная, схемка вшивая, а если он начнёт гонять по кристаллу туда-сюда отдельные триггеры, каждый раз заглядывая в результаты таймингов, то более серъёзные схемы он будет месяцами оптимизировать. Поэтому, да, тяжек труд плисовода: приходится либо за компилятор думать, либо, что более правильно, для здоровых камней ваять из IP-кирпичиков. Ибо об оптимизации последних уже позаботились до нас.
|
|
|
|
|
Feb 9 2018, 06:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Kluwert @ Feb 7 2018, 23:45)  Это - не такое "очевидное" решение. Потому что он тупо боится ставить reg_B[7] далеко от остальных, справедливо опасаясь, что у вас может шина "разбежится" (400МГц, так между прочим, не хухры мухры!). А вы ещё зачем-то прилепили никому не нужный промежуточный регистр reg_sum, который явно назначили на выход sum. А компилятор Квартуса совсем не такой интеллектуальный, как вы могли подумать и он достаточно тупо выполнил ваши указания, повесив reg_sum чуть ли не на ногу sum. Была б его воля он бы его ещё на двухфазный выходной триггер (altddio) залепил, но права не имеет. Это "учебный" пример, и частота такая задана, чтобы посмотреть, когда ошибки появляются и как с ними бороться, и reg_sum добавлен для этих же целей. Цитата(Kluwert @ Feb 7 2018, 23:45)  И проблема тут не в мифических глюках Квартуса, а элементарно в том, что каменюга у вас выбрана огромная, схемка вшивая, а если он начнёт гонять по кристаллу туда-сюда отдельные триггеры, каждый раз заглядывая в результаты таймингов, то более серъёзные схемы он будет месяцами оптимизировать. Поэтому, да, тяжек труд плисовода: приходится либо за компилятор думать, либо, что более правильно, для здоровых камней ваять из IP-кирпичиков. Ибо об оптимизации последних уже позаботились до нас. Может и так, но две версии Квартуса результат дают разный. Версия 14 собрала всё правильно, для 16 приходится допиливать ручками. И главный вопрос - как можно полагаться на все эти временные ограничения, если реально вижу, что возможность развести "правильно" (с учетом тех ограничений, которые заданы) есть, но разводит "криво"?!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|