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

Отчёт TimeQuest как понять ? Изменил вопрос.

Собственно вот схема.

sdc3.thumb.jpg.94a988be4c54d2f17b17d5ca9ca7b2ae.jpg

 

sdc :

set_time_format -unit ns -decimal_places 3
derive_clock_uncertainty
create_clock -period  25MHz -name {CLK25}  [get_ports {CLK25}]
create_generated_clock -name {clk} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[0]}]
create_generated_clock -name {PCK} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[1]}] -offset 6
set_clock_groups -exclusive -group {clk PCK} -group {CLK25}
set_output_delay -clock {PCK} -max 1.5 [get_ports {PRAS PCAS PWE PAA[*] PBA[*] PDQ[*]}]
set_output_delay -clock {PCK} -min -0.8 [get_ports {PRAS PCAS PWE PAA[*] PBA[*] PDQ[*]}]

 

Отчёт :

sdc1.thumb.jpg.db2d615c53ec75f72e109e368df6aada.jpg

Где на диаграмме передний фронт сигнала PCK?

Т.е. именно того что на выходном пине плис будет.

Задал для данных set_output_delay -max 1.5 относительно PCK, а оно почему-то еще 3.946 нс отнимает.

Что за величина -3.946 нс? Задержка чего и относительно чего? И откуда она берётся?

 

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


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

У вас данные inst_PAA тактируются частотой clk (125MHz, фаза 0), эти данные поступают в другой клоковый домен (другой process или другой always блок), тактируемый частотой PCK (125MHz, фаза 270).
Вот на это таймквест и ругается. А дальше надо думать, схема то не вся показана.

9 hours ago, zombi said:

Где на диаграмме передний фронт сигнала PCK?

смотрите Latch Clock - жирный нарастающий фронт справа, там где 6ns

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


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

Добавил к 1 сообщению констрейны, может там где ошибка?

"смотрите Latch Clock" Ясно. Я так и предполагал. Спасибо.

 

"эти данные поступают в другой клоковый домен"

Нет, данные AA[*] тактируются частотой clk нарастающим фронтом в регистрах PAA[*].

С регистров сразу на пины плис. Для всей группы регистров PAA[*] назначил fast_output_register.

И я же вижу что данные (Data Arrival) готовы на выходных пинах за -2.405 нс.

Всё правильно, так я и хотел. А таймквест чего-то ругается...

Выходы PAA - это адресные входы внешней мс sdram, а PCK - её клок ck.

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


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

43 minutes ago, novartis said:

схема то не вся показана.

Схему дополнил для наглядности.

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


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

10 hours ago, zombi said:

create_generated_clock -name {clk} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[0]}]
create_generated_clock -name {PCK} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[1]}] -offset 6

вместо всех этих команд, описывающих клоки pll, можно написать одну 

derive_pll_clocks

Но у вас тут вроде еще имена clk и PCK привязываются к выходам pll.

 

10 hours ago, zombi said:

set_clock_groups -exclusive -group {clk PCK} -group {CLK25}

если PCK идет прям на выходную ножку, и не участвует в тактировании другой логики плис, то нет смысла в этой команде.

 

48 minutes ago, zombi said:

Нет, данные AA[*] тактируются частотой clk нарастающим фронтом в регистрах PAA[*].

С регистров сразу на пины плис.

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

set_clock_groups -exclusive -group {clk PCK} -group {clk}

50 minutes ago, zombi said:

Выходы PAA - это адресные входы внешней мс sdram, а PCK - её клок ck.

Вы точно кварутсу об этом не сообщили другими констрейнами?:acute:

В Assignment Editor'е нет записей на эти ножки?

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


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

5 minutes ago, novartis said:

Вы точно кварутсу об этом не сообщили другими констрейнами?:acute:

В Assignment Editor'е нет записей на эти ножки?

В Assignment Editorе только назначение пинов и fast_output_register=ON для всей группы регистров PAA и больше ничего нет.

Спасибо, сейчас буду пробовать поправить sdc следуя Вашим советам.

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


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

1 hour ago, zombi said:

Выходы PAA - это адресные входы внешней мс sdram, а PCK - её клок ck.

а оно так по даташиту требуется, чтобы PCK был с фазой 270 относительно данных?

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


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

10 hours ago, zombi said:

create_generated_clock -name {clk} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[0]}]
create_generated_clock -name {PCK} -source [get_ports {CLK25}] -multiply_by 5 [get_nets {Inst_PLL|altpll_component|auto_generated|wire_pll1_clk[1]}] -offset 6

Насколько понимаю, этими командами задаются клоки на выходах блоков PLL. Т.е. latch clock не на ноге ПЛИС! Отсюда следует, что ему нужно время дойти до пина, поэтому данные (определенные констрейнами на пине) требует раньше.

8 minutes ago, Yuri124 said:

этими командами задаются клоки на выходах блоков PLL

Это видно и из диаграммы - время ровненько 6 нс от clk, нет задержки распространения до выхода.

 

ЗЫ подправил выделенное жирным слово.

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

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


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

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

[удалил ненужное, что-то, кажется, не так понял]

Смотрите https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-tmqst.pdf - в конце 3 страницы - как они задают в примере соотношение между сформированным с помощью PLL клоком, выведенным наружу, и данными, тоже выходящими наружу.

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

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


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

3 hours ago, novartis said:

вместо всех этих команд, описывающих клоки pll, можно написать одну 

derive_pll_clocks

Как оказалось это не принципиально.

3 hours ago, novartis said:

а оно так по даташиту требуется, чтобы PCK был с фазой 270 относительно данных?

Конечно нет. Это я уже чего только не мутил - надеялся что поможет.

 

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

А может я просто не умею это ему объяснить.

 

Но я понял что это уже и неважно - пишет квартус ошибки или нет.

Ошибки можно убрать если сильно мешают - просто объявлением виртуальной частоты равной частоте clk.

И сказать таймквесту проводить анализ относительно этой виртуальной частоты, а не от реальной.

И всё чудно, ошибок нет.

 

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

На диаграмме видно время задержки данных на выходных пинах плис относительно clk ( 0.539+3.056=3.595 нс)

Затем посмотреть отчет по пути от выхода PLL до выходного пина PCK (в моём случае = 4.472 нс)

Вычислить необходимую задержку для частоты PLL->PCK так что бы не активный фронт PCK попал как можно ближе к фронту Data Arrival.

 

Поправьте если шибко намудрил. :biggrin:

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


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

15 minutes ago, zombi said:

квартус никак не хочет выходную частоту со своего же пина использовать в анализе задержек

так это же нужно ему вручную указать. Он же не знает - что творится снаружи ПЛИС. И даже что внутри - тоже без пинка не представляет.

Вот как сделано в том примере:

create_clock -name SYSCLK -period 5.000 [get_ports CLK_IN]    - частота на входе ПЛИС

create_generated_clock -name PLLCLK \ -source [get_ports CLK_IN] \ [get_pins pll|CLK[1]]   - частота на выходе блока PLL

set_output_delay -clock PLLCLK \ -reference_pin [get_ports CLK_OUT] 0.800 \ [get_ports DATA_OUT]  - указали вых. порт частоты, относительно которой нужно считать задержки. Возможно - можно и по-другому - задав еще один generated_clock, привязанный к выходному пину.

 

20 minutes ago, zombi said:

Ошибки можно убрать если сильно мешают - просто объявлением виртуальной частоты равной частоте clk.

Можно вообще убрать констрейн - и никакого анализа по его нарушению не будет производиться. Только потом не забыть вручную проверить все требуемые пути сигналов по задержкам. И так - каждый раз после правки дизайна. Оно Вам нужно?

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


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

26 minutes ago, zombi said:

Конечно нет. Это я уже чего только не мутил - надеялся что поможет.

тогда так делать не надо:biggrin:

У вас есть данные - адресные входы для внешней мс sdram, и есть тактирующий эти данные клок ck.

С фазой ck ничего специально придумывать не надо. Нужно оценить длину дорожек от пинов плис до микросхемы SDRAM. Подставить в констрейны и квартус там сам все разрулит.
Как оценить длину дорожек и в какие констрейны подставлять - надо почитать мануалы от интела.

Вот в том документе есть Board Delay (Data)  и Board Delay (Clock) = 0.8ns.
Надо подобные констрейны наколдовать.

 

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


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

14 minutes ago, Yuri124 said:

Вот как сделано в том примере:

Ага... reference_pin! ок. ушёл проверять.

Quote

Оно Вам нужно?

Нет. :biggrin:

9 minutes ago, novartis said:

Как оценить длину дорожек и в какие констрейны подставлять - надо почитать мануалы от интела.

У меня практически нет дорожек. По двум противоположным бокам плис поставил по одной sdram.

Длина дорожек примерно одинаковая 1.5 - 2.5 см! Это что дорожки? Это смех.

Две мс sdram работают независимо (все сигналы индивидуальны), хотя и на общей частоте.

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


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

9 minutes ago, zombi said:

1.5 - 2.5 см

0,1 нс примерно. Раз констрейны будут всё равно писаться - почему бы не учесть. НО! важно их учитывать относительно клока, который, если приходит тоже через трассу 2 см - то уже задержку данных  нивелирует своей задержкой.

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


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

Клок тоже для каждой мс идёт от плис с индивидуальных пинов и длины дорожек примерно такие же как и все остальные сигналы.

7 minutes ago, Yuri124 said:

0,1 нс примерно.

Вы ничего не путаете? 100 ps на ~1.0 см ?

Но даже если и так, а у меня будет tSU=tTH=4000 ps ! что мне эта сотня - туда/сюда

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


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

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

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

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

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

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

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

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

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

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