Jump to content
    

Отчёт 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 нс? Задержка чего и относительно чего? И откуда она берётся?

 

Share this post


Link to post
Share on other sites

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

9 hours ago, zombi said:

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

43 minutes ago, novartis said:

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

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

Share this post


Link to post
Share on other sites

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'е нет записей на эти ножки?

Share this post


Link to post
Share on other sites

5 minutes ago, novartis said:

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

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

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

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

Share this post


Link to post
Share on other sites

1 hour ago, zombi said:

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

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

Share this post


Link to post
Share on other sites

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, нет задержки распространения до выхода.

 

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

Edited by Yuri124

Share this post


Link to post
Share on other sites

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

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

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

Edited by Yuri124

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites

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.

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

Share this post


Link to post
Share on other sites

26 minutes ago, zombi said:

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

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

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

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

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

 

Share this post


Link to post
Share on other sites

14 minutes ago, Yuri124 said:

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

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

Quote

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

Нет. :biggrin:

9 minutes ago, novartis said:

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

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

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

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

Share this post


Link to post
Share on other sites

9 minutes ago, zombi said:

1.5 - 2.5 см

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

Share this post


Link to post
Share on other sites

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

7 minutes ago, Yuri124 said:

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...