Jump to content
    

[Xilinx] Cross domain взаимодействие не кратных частот

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

 

У меня вопрос, бьюсь уже несколько дней, может подскажете?!

 

Плис Xilinx Spartan-6 lx150.

 

Вот у меня есть частота, которая приходит на чип, потом через pll делается 200МГц и 30МГц (т.е. не кратные частоты).

Написал логику, где требуется кросс-доменное взаимодействие этих частот, там из 30МГц триггера сигнал приходит на 200МГц. Это кусочек асинхронного fifo.

Не могу развести дизайн, PAR берет между ними 1.6нс (это нереально), получает их 35(т.е. 1/200МГц * 7) - 33.333(т.е. 1/30МГц) = 1.6.

Внимание вопрос, возможно ли нормально развести НЕ кратные частоты (если вместо 30МГц использовать 100МГц, то вопросов нет, но нужно именно 30)?

 

Кусочек Trace report.

Slack: -0.840ns (requirement - (data path - clock path skew + uncertainty))

Source: read_5 (FF)

Destination: full (FF)

Requirement: 1.667ns

Data Path Delay: 1.781ns (Levels of Logic = 2)(Component delays alone exceeds constraint)

Clock Path Skew: -0.436ns (2.136 - 2.572)

Source Clock: s_clk30mhz rising at 33.333ns

Destination Clock: s_clk200mhz rising at 35.000ns

Clock Uncertainty: 0.290ns

 

На форуме новичок. Честно пытался найти похожее.

Share this post


Link to post
Share on other sites

задать констрейны, где объявить частоты аснхронными

Share this post


Link to post
Share on other sites

Т.е. получается, все не кратные частоты, которые синтезируются pll или dcm невозможно развести по умолчанию?Тогда зачем среда использует такие значения, которые заведомо невозможно реализовать?

Или здесь какая-то хитрость в работоспособности?

Share this post


Link to post
Share on other sites

в SDC

 

1. Частоты асинхронные (независимые), т.е. для каждого домена делаете свой create_clock

2. Для сигналов между доменами делаете set_false_path.

 

или

set_clock_groups -asynchronous

 

Потом вручную размещаете все, что относится к переходу между доменами.

 

"развести по умолчанию" - это хороший юмор. Это не среда использует. Это вы используете. Вот и отвечайте, зачем.

Share this post


Link to post
Share on other sites

Всем спасибо, пока отделался:

TIMESPEC ts_from30_to200 = FROM "grp_clk30mhz" TO "grp_clk200mhz" 5 ns DATAPATHONLY;

TIMESPEC ts_from200_to30 = FROM "grp_clk200mhz" TO "grp_clk30mhz" 33 ns DATAPATHONLY;

Share this post


Link to post
Share on other sites

Т.е. получается, все не кратные частоты, которые синтезируются pll или dcm невозможно развести по умолчанию?Тогда зачем среда использует такие значения, которые заведомо невозможно реализовать?

Это почему же невозможно? Если между триггерами нет логики - очень даже легко. Зато в таком случае не нужно делать асинхронный переход.

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...