Jump to content

    

Recommended Posts

Здравствуйте. Наверняка моя проблема уже где-то обсуждалась, но либо не нашел, либо не совсем как у меня. Вот есть крохотный проект, в котором есть двунаправленная шина bidir1_data_bus[15..0]. Блок Slava_bidir_Tx отправляет по ней данные кому-то, а блок Slave_bidir_Rx принимает по ней от кого-то

 

Вопрос по блоку Slave_bidir_Tx и шине bidir1_data_bus[15..0] на отправку по схеме Source-Synchronous Output (выдает шину bidir1_data_bus и частоту CLK_TX1). Блок тактируется частотой 125МГц, получаемой на pll_c5gx. Эта же частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные.

 

TOP.png

 

описал частоты в sdc-файле:

create_clock -period 150MHz -name CLK_150M [get_ports CLK_150M]
create_clock -name CLK_RX1 -period 125MHz [get_ports CLK_RX1]

create_generated_clock -name clk_125M -source clk_150M -multiply_by 5 -divide_by 6 [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}]
create_generated_clock -name CLK_TX1 -source [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] [get_ports {CLK_TX1}]

create_clock -name virtual_source1 -period 125MHz

derive_pll_clocks
derive_clock_uncertainty

 

Дальше задал ограничение на выход шины bidir1_data_bus:

 

 

set Tx_max 4.0
set Tx_min -1.0

set_output_delay -max $Tx_max -clock CLK_TX1 [get_ports bidir1_data_bus*]
set_output_delay -min $Tx_min -clock CLK_TX1 [get_ports bidir1_data_bus*]

 

Здесь предполагается, что Tsu и Th приемника этих данных от ПЛИС будет 4.0нс и 1нс соответственно

 

Дальше в Assignment'ах добавил настройки для bidir1_data_bus и сигнала, управляющего переводом ее в третье состояние:

 

bidir1_data_bus Fast Output Register
Slave_bidir_Tx:inst5|en_buf_rg_out1 Fast Output Enable Register

 

Компилирую, запускаю TimeQuest, делаю Report All I/O Timings

 

Смотрю отчет Register to Outputs(Setup) - вроде по Setup укладывается

Смотрю отчет Register to Outputs(Hold) - краснота, не укладывается.

 

Register_to_Outputs(Hold).png

 

Много читал AN433 и другие документы по заданию ограничений на вводы/выводы. Везде пишут

 

Output maximum delay value = maximum trace delay for data + Tsu of external register - minimum trace delay for clock

Output minimum delay = minimum trace delay for data -Th of external register - maximum trace delay for clock

 

Если пренебречь trace delay for data и trace delay for clock, то это вырождается в

 

Output maximum delay value = + Tsu of external register

Output minimum delay = -Th of external register

 

Это я и задаю в set_output_delay max/min

Если правильно задаю констрейны и правильно описаны клоки, то почему не укладывается по Hold'у ?

И как заставить уложиться по Hold'у ?

 

Не нашел кнопки прикрепления файла. Вот ссылка на архив проекта

Share this post


Link to post
Share on other sites

выдаваемый наружу TX_CLK должен быть сдвинут на 180 градусов. для этого можно использовать ALTDDIO_OUT

задание fast input register и fast output register тоже не будет лишним.

Share this post


Link to post
Share on other sites
задание fast input register и fast output register тоже не будет лишним.

 

Fast Output Register и Fast Output Enable Register стоят.

 

выдаваемый наружу TX_CLK должен быть сдвинут на 180 градусов. для этого можно использовать ALTDDIO_OUT

сделал CLK_TX1 сдвинутым на 180 градусов (инвертировал, добавил ключ -invert):

create_generated_clock -name CLK_TX1 -invert -source [get_pins {inst1|pll_c5gx_inst|altera_pll_i|general[0].gpll~PLL_OUTPUT_COUNTER|divclk}] [get_ports {CLK_TX1}]

По Hold'у стало лучше, но теперь Setup сломался (сдвинулся влево на 4нс - половину периода 125МГц)

 

SETUP БЫЛО

Was_setup.png

 

SETUP СТАЛО

IS_setup.png

 

 

HOLD БЫЛО

Was_hold.png

 

HOLD СТАЛО

IS_hold.png

 

То как HOLD стал - это нормально или я чего-то не понимаю?

 

Как теперь поравить SETUP ? Читал про multicycles, но не совсем понял подходит ли это для моего случая и как конкретно задать ?

В связи с изменением частоты CLK_TX1 относительно данных нужно ведь теперь приемник привести в соответствие с изменившимся передатчиком.

Share this post


Link to post
Share on other sites
Вопрос по блоку Slave_bidir_Tx и шине bidir1_data_bus[15..0] на отправку по схеме Source-Synchronous Output (выдает шину bidir1_data_bus и частоту CLK_TX1). Блок тактируется частотой 125МГц, получаемой на pll_c5gx. Эта же частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные.

ИМХО , если частота уходит вместе с шиной bidir1_data_bus наружу, чтобы приемник этой частотой защелкивал данные, то это схема не Source-Synchronous Output, а System-Synchronous Output и соответственно констрейны надо делать иначе.

Share this post


Link to post
Share on other sites

Я описывал в терминах AN433. Там они все Source-Synchronous, просто ограничения (constraints) там рассматривают System-Centric либо FPGA-Centric.

Share this post


Link to post
Share on other sites

Вот здесь это более понятно описано: http://embedders.org/content/timequest-dly...rfeisov-raznykh ( автор - модератор этого подфорума )

На 3-й странице по ссылке описан System-Synchronous Output, но лучше начать с 1-ой.

Share this post


Link to post
Share on other sites
Я описывал в терминах AN433. Там они все Source-Synchronous, просто ограничения (constraints) там рассматривают System-Centric либо FPGA-Centric.

Констрейны в общем случае могут не выполняться, особенно если tsu/th источника данных кривые. Судя по вашим данным Tsu = 4ns, Th = 1ns, это окно стабильности сигнала 5нс. Частота 125МГц = 8нс. Вам нужно уложиться в 3-нс (не считая джиттера), во всем диапазоне температур и чипов. Тут может быть не все так просто.

 

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

 

На 3-й странице по ссылке описан System-Synchronous Output, но лучше начать с 1-ой.

только там на первой странице есть оговорка, что терминология авторская :) если клок идет с плис я назвал это System-Synchronius иначе Source-Synchronius

 

 

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.

Sign in to follow this