Jump to content

    
Sign in to follow this  
dde29

Altera, Констрейны, два независимых для фиттера клока

Recommended Posts

Всем привет!

В одном проекте, работающим на большое частоте, появилась необходимость в прописании констрейнов на проект...

Допустим, имеется два модуля счетчиков - один инкрементирует, другие декрементирует (это условно, в реальном проекте вместо счетчиков другие модули).

Они, по сути, работают на одном клоке... При компиляции проекта, синтезатор пытается выровнять пути сигналов по всем проекту. Но, мне необходимо так прописать констрейны, чтобы два клока clk_incr и clk_decr были экслюзивные. Т.е. как бы абсолютно два разных клоковых домена, не связанных между собой:

RTL:

module Top (

input inclk,
output imp1,
output imp2

);

mypll mypll_0( 
	.inclk0 (inclk),
	.c0 (clk)
);

wire clk_incr = clk;
wire clk_decr = clk;

defparam CounterIncr.parWIDTH = 32;
CounterIncr CounterIncr(
	.clk (clk_incr),
	.out (imp1) );

defparam CounterDecr.parWIDTH = 32;
CounterDecr CounterDecr(
	.clk (clk_decr),
	.out (imp2) );

endmodule

SDC:

#**************************************************************
# Time Information
#**************************************************************

set_time_format -unit ns -decimal_places 3



#**************************************************************
# Create Clock
#**************************************************************

create_clock -name {inclk} -period 20.000 -waveform { 0.000 10.000 } [get_ports {inclk}]


#**************************************************************
# Create Generated Clock
#**************************************************************

create_generated_clock -name {mypll_0|altpll_component|auto_generated|pll1|clk[0]} -source [get_pins {mypll_0|altpll_component|auto_generated|pll1|inclk[0]}] -duty_cycle 50/1 -multiply_by 6 -master_clock {inclk} [get_pins {mypll_0|altpll_component|auto_generated|pll1|clk[0]}] 

Вот, вопрос, собственно в том - что именно мне нужно прописать в SDC чтобы скомпилировалось так как задумывалось...

Share this post


Link to post
Share on other sites
3 minutes ago, dde29 said:

Вот, вопрос, собственно в том - что именно мне нужно прописать в SDC чтобы скомпилировалось так как задумывалось...

они из одного источника, по данным не связанные. что он там у вас выравнивает?

Share this post


Link to post
Share on other sites
4 minutes ago, des00 said:

они из одного источника, по данным не связанные. что он там у вас выравнивает?

Я может не правильно мысли свои донес) Другими словами, ТаймКвест показывает меньшее значение максимальной частоты Fmax при компиляции проектс с двумя счетчиками, по сравнению чем с один счетчиком.

Вопрос - почему частота уменьшается, если ресурсы практически не задействованы и модули не связаны?

Почему занялся этим вопросом - имеется проект, в котором генерируются разные сигналы, с возможностью шага мелкого шага смещение (ну т.е. модуль работает на большое частоте...)

Если таких разных сигналов 2 то все ок, добавляешь в проект 3-й - и все рушится, проект перестает адекватно работать... Вот и возникла мысль сделать для каждого такого сигнала что-то вроде set_false_path

Share this post


Link to post
Share on other sites
3 minutes ago, dde29 said:

Я может не правильно мысли свои донес) Другими словами, ТаймКвест показывает меньшее значение максимальной частоты Fmax при компиляции проектс с двумя счетчиками, по сравнению чем с один счетчиком.

Ну это естественно. Чем больше логики тем ниже может быть частота. Зависит от чипа, его размеров, распиновки, используемых ресурсов. Но вот как вы увидели влияние при вашем требовании в sdc 20нс (50МГц). Что это за плис или что это за счетчики, которые на 50МГц не могут быть разведены. У вас какой нибудь стратикс, два счетчика на порты и порты на разные стороны чипа? 

3 minutes ago, dde29 said:

Если таких разных сигналов 2 то все ок, добавляешь в проект 3-й - и все рушится, проект перестает адекватно работать... Вот и возникла мысль сделать для каждого такого сигнала что-то вроде set_false_path

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

Share this post


Link to post
Share on other sites
1 minute ago, des00 said:

Ну это естественно. Чем больше логики тем ниже может быть частота. Зависит от чипа, его размеров, распиновки, используемых ресурсов. Но вот как вы увидели влияние при вашем требовании в sdc 20нс (50МГц). Что это за плис или что это за счетчики, которые на 50МГц не могут быть разведены. У вас какой нибудь стратикс, два счетчика на порты и порты на разные стороны чипа? 

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

50 МГц это входная частота от генератора, следом рождается в PLL клок 300 МГц. Вот на этой частоте и работают эти условные счетчики.

Ну асинхры точно никакой нет - так как источник, вход по сути один (клок от генератора). По поводу констрейнов - да, поэтому и вопрос - что я еще могу умного прописать)) У меня 10й цыклон LP

Share this post


Link to post
Share on other sites
12 minutes ago, dde29 said:

 По поводу констрейнов - да, поэтому и вопрос - что я еще могу умного прописать)) У меня 10й цыклон LP

не надо ничего прописывать. вам нужно взять Technology map viewer + TimeQuest и смотреть что именно у вас валится. Потом уже думать почему. Частоты тут не причем. Добавляете логики, ломаются пути разводки, увеличиваются задержки, валятся тактовые. Сплошь и рядом на плотных проектах.

Share this post


Link to post
Share on other sites
4 minutes ago, des00 said:

не надо ничего прописывать. вам нужно взять Technology map viewer + TimeQuest и смотреть что именно у вас валится. Потом уже думать почему. Частоты тут не причем. Добавляете логики, ломаются пути разводки, увеличиваются задержки, валятся тактовые. Сплошь и рядом на плотных проектах.

Понял, гляну, спасибо!)

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