Jump to content

    
DSIoffe

FIFO с двумя тактами и временнОй анализатор

Recommended Posts

Здравствуйте все!

Есть FIFO с разными тактами на входе и на выходе, сделано в Quartus из мегафункции dcfifo.

Скажите, пожалуйста, как правильно описать для него ограничения в файле sdc? Я почитал FIFO Intel® FPGA IP User Guide, раздел DCFIFO Timing Constraint Setting, но не понял, к сожалению.

Или подскажите, пожалуйста, что почитать.

Заранее признателен.

Share this post


Link to post
Share on other sites

Приветствую!

Для  своего, потом писанного кросс-клок FIFO  вам обычно нужно описывать времянки для  кросс-клок синхронизаторов (чаще всего gray-code). Основные требования -  max delay  и max skew путей  между регистрами wr->rd и rd->wr   должны быть не более минимального такта из w_clk|rd_clk.
Так как вы используете готовое IP FIFO то эти констрейны уже заданны в корке (то есть и делать вам ничего не надо) и самое простое что можно сделать  чтобы удовлетворить любопытство - посмотреть как они задаются в оригинале  DC FIFO. Поскольку при генерации IP мегафункции  создается фактически  обертка над встроенным модулем dcfifo то ищите файл -  Quartus_install_dir/ip/altera/megafunctions/fifo/dcfifo.sdc  и смотрите что там и как.

 

Удачи! Rob.

Share this post


Link to post
Share on other sites
4 минуты назад, RobFPGA сказал:

делать вам ничего не надо

Большое спасибо. Несколько слов, и всё понятно.

Я в своём файле sdc запретил анализировать все пути между тактовыми доменами тактов FIFO. Если этого не сделать, временнОй анализатор выдаёт довольно много ошибок. Раз так, то на них можно не обращать внимание?

Share this post


Link to post
Share on other sites

Приветствую!

1 minute ago, DSIoffe said:

Я в своём файле sdc запретил анализировать все пути между тактовыми доменами тактов FIFO. Если этого не сделать, временнОй анализатор выдаёт довольно много ошибок. Раз так, то на них можно не обращать внимание?

"Нет человека - нет проблем " Увы  эта формула тут не работает.   Для того чтобы спать спокойно  нужно быть уверенным что человека  проблем действительно нет.   А для этого надо именно контролировать   параметры max_delay и max_skew 

Например имеем переходы

logic [PTR_WH-1:0] wr_bin, wr_gray, rd2wr_gray;
logic [PTR_WH-1:0] rd_bin, rd_gray, wr2rd_gray;

always @(posedge wr_clk) begin
  wr_gray <= gray(wr_bin);

  rd2wr_gray <= rd_gray;
end

always @(posedge rd_clk) begin
  rd_gray <= gray(rd_bin);
 
  wr2rd_gray <= wr_gray;
end

То для каждой шины (wr_gray -> wr2rd_gray  и  rd_gray -> rd2wr_gray) вы должны задать приблизительно такие ограничения: (формат команд для timequest2)

set  src_reg   [get_registers {*|hierarhy_path|wr_gray[*]}   ]
set  dst_reg   [get_registers {*|hierarhy_path|wr2rd_gray[*]}]
  
set_net_delay  -from $src_reg -to $dst_reg -min 0
set_net_delay  -from $src_reg -to $dst_reg -max -get_value_from_clock_period      min_clock_period -value_multiplier      0.9
set_max_skew   -from $src_reg -to $dst_reg      -get_skew_value_from_clock_period min_clock_period -skew_value_multiplier 0.8

 

Удачи! Rob.

Share this post


Link to post
Share on other sites
1 hour ago, DSIoffe said:

жду тактовыми доменами тактов FIFO.

это вы под запрет поставили вообще анализ всей логики, лучше так не делать.

 

1 hour ago, DSIoffe said:

Раз так, то на них можно не обращать внимание?

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

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.