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

|
Приветствую. Тестовый проект прикреплен ниже. Сам модуль: CODE module add_three_numbers ( input clock, input [7:0] A, input [7:0] B, input [7:0] C, input [7:0] D, output [7:0] sum );
reg [7:0] reg_A, reg_B, reg_C, reg_D; reg [7:0] reg_sum; reg [7:0] sum1, sum2; reg [7:0] sum3; always@(posedge clock)begin reg_A <= A; reg_B <= B; reg_C <= C; reg_D <= D; end always@(posedge clock)begin sum1 <= reg_A + reg_B; sum2 <= reg_C + reg_D; sum3 <= sum1 + sum2; end
always@(posedge clock)begin reg_sum <= sum3; end assign sum = reg_sum; endmodule SDC файл: Код create_clock -name {clock} -period 400Mhz [get_ports {clock}] Входные/выходные порты идут на ножки FPGA. Ругается на путь от reg_B[7] до sum1[7], смотрю как разбросал все в ChipPlanner-e. Если в Chip Planner-e подвинуть reg_B[7] максимально близко к sum1[7] и применить изменения в нетлисте, то все тайминги соблюдаются. Вопрос - почему автоматом не хочет поставить ячейки в нужные места (куча свободных ресурсов), чтоб все тайминги соблюдались.
Эскизы прикрепленных изображений
Прикрепленные файлы
test.rar ( 2.71 килобайт )
Кол-во скачиваний: 12
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Jan 16 2018, 14:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(bogaev_roman @ Jan 16 2018, 17:23)  А что Вы хотели увидеть, это отчет из поста 3 с Вашими ограничениями. Я пытаюсь понять почему вручную можно добиться корректной работы на 400 МГц (хотя бы отсутствие ошибок по таймингам), а автоматом он этого не делает?Ссори, не мне вопрос, не заметил  Цитата(bogaev_roman @ Jan 16 2018, 16:54)  Не увидел настроек Fitter_effort и optimization_technique. Не знаю, каким образом может повлиять настройка smart_recompile, если менять только ограничения, по идее - никак. Тут что-то не могу найти, где оно настраивается или просто в QSF надо прописать? Цитата(bogaev_roman @ Jan 16 2018, 16:54)  Если речь идет о пути сигнала reg_B->sum1, то есть еще путь от B до reg_B - о нем мне ничего не известно - укорачивая путь описанным образом от reg_B до sum1 Вы удлиняете путь от B до reg_B. Речь о нем, да, удлинняю путь B->reg_B, но на него оно не ругается.
|
|
|
|
|
Jan 16 2018, 14:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(doom13 @ Jan 16 2018, 17:32)  Я пытаюсь понять почему вручную можно добиться корректной работы на 400 МГц (хотя бы отсутствие ошибок по таймингам), а автоматом он этого не делает?Ссори, не мне вопрос, не заметил  Вы приведите отчет после ручного размещения ресурсов с отчетом об отсутствии ошибок (для варианта без ограничений на входные/выходные порты или их для анализа пока закройте - set_false_patch), просто кроме слов это тоже пока ничем не подкреплено. Цитата Тут что-то не могу найти, где оно настраивается или просто в QSF надо прописать? assignements->settings, дальше настройки фиттера и синтеза (окна могут меняться в зависимости от версии квартуса). Среди настроек - основное - синтез и оптимизация по скорости/площади/мощности, но самое главное - настройка фиттера - при fast может вообще забить на ограничения, там главное побыстрее все распихать. Но вообще интересный момент - это основные настройки и они должны быть прописаны в .qsf. Цитата Речь о нем, да, удлинняю путь B->reg_B, но на него оно не ругается. В этом месте может быть глюк - Вы ограничения на вход в этой версии не задаете, поэтому квартусу пофиг на задержку до триггера, но, с другой стороны, по умолчанию он старается, по возможности, минимизировать длину путей. Я бы посоветовал для начала принудительно закрыть путь для анализа и считать этот путь асинхронным - set_false_patch.
|
|
|
|
|
Jan 17 2018, 05:33
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(bogaev_roman @ Jan 16 2018, 17:48)  assignements->settings, дальше настройки фиттера и синтеза (окна могут меняться в зависимости от версии квартуса). Среди настроек - основное - синтез и оптимизация по скорости/площади/мощности, но самое главное - настройка фиттера - при fast может вообще забить на ограничения, там главное побыстрее все распихать. Но вообще интересный момент - это основные настройки и они должны быть прописаны в .qsf. Настройки: Цитата(bogaev_roman @ Jan 16 2018, 16:54)  Не увидел настроек Fitter_effort и optimization_technique. Не знаю, каким образом может повлиять настройка smart_recompile, если менять только ограничения, по идее - никак. Optimization Technique - Balanced Fitter Effort - Auto Fit
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 17 2018, 06:34
|
Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792

|
Цитата(doom13 @ Jan 17 2018, 08:47)  Этот файл не меняется при ручных изменениях в Chip Planner-e. Так а с чего вы тогда решили, что после модификации размещения на чипе регистров вы вытянули требуемую частоту?
--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
|
|
|
|
|
Jan 17 2018, 07:40
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(warrior-2001 @ Jan 17 2018, 09:34)  Так а с чего вы тогда решили, что после модификации размещения на чипе регистров вы вытянули требуемую частоту? Проект компилируется с ругательством на один path. В чиппланере перетаскиваю ячейку (расположение которой мне не нравится), нажимаю кнопку Check and Save All Netlist Changes, стартует Fitter и Assembler, запускаю TimeQuest - Report Top Failing Paths теперь ошибок не показывает (!!!), нахожу путь на который ранее ругалось и с ним всё ОК (см. рисунки выше). Report Fmax Summary показывает, что Fmax стала 446,63 MHz (!!!). Что-то в этих действиях не так? Цитата(Flip-fl0p @ Jan 17 2018, 09:46)  Так ведь симуляция должна производиться по существующему net-листу. Соответственно если были внесены изменения в этот net-лист путём ручного перетаскивания элементов - то и должны изменится задержки - и, как следствие, результаты симуляции Timequest. Вот! И я так считаю! Цитата(ViKo @ Jan 17 2018, 10:04)  И как следствие, меняется отчет. Скачайте два файла (первый пост), соберите проект, посмотрите, какие файлы меняются (минутное дело).
|
|
|
|
|
Jan 17 2018, 08:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(ViKo @ Jan 17 2018, 11:05)  Не понимаю. Их же два разных должно быть? Тот файл, что blackfin раньше спрашивал. Только до ваших манипуляций и после.  , файл *.sta.rpt не меняется при изменениях в чиппланере. Цитата(bogaev_roman @ Jan 16 2018, 15:32)  1. Вы не привели настройки для квартуса(синтез/фиттер).Может автофит стоит. Auto Fit даёт самый лучший результат - ошибка по одному path-у, Fast Fit - это опа, больше всего ошибочных path-ов.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|