Jump to content

    
Sign in to follow this  
scorp

Помогите правильно задать constraint

Recommended Posts

create_generated_clock -name i_clk_12_5MHz \
    -source [get_ports clk] \
    -divide_by 4 \
    [get_pins clk_12_5_reg/q]

1-й

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

 

Если коротко, то делить так клоки принципиально нельзя. Ни в ASIC, ни в FPGA. Эта система сильно подвержена нарушению холдов при переходе из одного клокового домена в другой.

Можно. в FPGA немного труднее тулзе. Ничё подобного.

Share this post


Link to post
Share on other sites

Даже не знаю, возможно за последнее время Квартус вместе с ИСЕ серьезно добавили в интеллекте, или проект в котором возможна такая манипуляция клоками крайне далек от предела возможностей выбранного кристала. На сколько помню, при заполнении кристалла под 90% и на максимум по частоте одновременно у меня провернуть такой финт уже не получилось - проект просто перестал компилироваться на заданную частоту и сильно "распух" в размере. Теперь я уже понимаю, что тулза начинала фиксить холды в корнерах, но много лет назад ответа на тот вопрос я так и не нашел - пришлось переделать пару блоков и вставить синхронизаторы.

 

Share this post


Link to post
Share on other sites
Даже не знаю, возможно за последнее время Квартус вместе с ИСЕ серьезно добавили в интеллекте, или проект в котором возможна такая манипуляция клоками крайне далек от предела возможностей выбранного кристала. .... - пришлось переделать пару блоков и вставить синхронизаторы.

Неоптимально и неправильно - это разные вещи.

Да - можно делать делёные клоки, но архитектура FPGA это плохо поддерживает (ибо клоковое дерево намертво и изначально встроено без учёта таких фокусов). В ASIC - никаких проблем (никакие "холды", подобно тем что Вы нашли там не возникают).

Да - FPGA тузы нормально понимают такое описание и делают правильно STA и всё остальное, но как Вы заметили уже выжать максимум в этом случае не выходит (тулза тратит дополнительные ресурсы на то чтобы выполнить заданное требование STA в своей архитектуре, которая на делёные клоки не заточена )

 

И главное. Ума не приложу нафига в дизайне на FPGA делить клоки?

 

Share this post


Link to post
Share on other sites

Самой логичной причиной деления клоков может быть часть дизайна, которая не успевает работать на основном клоке :) Я так думаю. Ну и перевод сколь-нибудь значительной части дизайна на более низкий клок очень положительно сказывается на потреблении. Теперь-то я уже знаю, что клоковое дерево может потреблять до 15-20% мощности и эту цифру практически нельзя уменьшить.

 

З.Ы. Ну и в моем случае - неоптимально, это и есть неправильно. Потому как это значит, что дизайн мог бы потреблять меньше, или работать быстрее. Потому для меня и организаций, с которыми я сотрудничал, неоптимально и неправильно - синонимы. Хотя, строго говоря, неоптимально и неправильно действительно разные вещи.

 

Share this post


Link to post
Share on other sites
Самой логичной причиной деления клоков может быть часть дизайна, которая не успевает работать на основном клоке :) Я так думаю.

Для этого в тригерах FPGA придумано FF.CE

Ну или это CE неявно выходит из описания функции переключения тригера....

Исходя из этого только ~20% тригеров меняют состояния на текущем клоковом эдже. Т.е. 80% дизайна работает реально медленнее системного клока....

Share this post


Link to post
Share on other sites

приветствую.

 

у меня одного не отображается картинка-аттачмент, которая была в цитируемом сообщении?

 

Схема формирования кратных сигналов тактовой частоты делается с помощью ячеек clock gating, управляемых от счетчика, работающего на основной частоте. Все построено так, что clock gating с нужной скважностью пропускает на выход 1 период основной тактовой. Т.о. если для основной частоты clk скважность 50%, то для clk_div_2 скважность будет 25%, а для clk_div_4 скважность будет 12.5%.

 

Если часть изначальной схемы для FPGA, тактируемой производной частотой, работает по отрицательному фронту, то используется аналогичная метода: для этой части схемы все списки чувствительности меняются на posedge, и c помощью счетчика на основной частоте, управляющего ячейками clock gating, формируется свой тактовый сигнал, сдвинутый по фазе.

 

Ограничивается это хозяйство с помощью create_generated_clock, как вы верно отметили.

 

Та схема, которая приведена в вашем в исходном сообщении, - боль для sta

 

Вообще обычно clock and reset manager для разных целевых технологий переделывается полностью.

 

Share this post


Link to post
Share on other sites

Там не было картинки, насколько я помню

 

приветствую.

 

у меня одного не отображается картинка-аттачмент, которая была в цитируемом сообщении?

 

Share this post


Link to post
Share on other sites

видимо сам себе в голове нарисовал...

 

отправил ссылку на тему коллегам, а она без воображаемой картинки :maniac:

Там не было картинки, насколько я помню

 

Share this post


Link to post
Share on other sites

1. в asic где количество триггеров от 40% . Клоковое дерево может потреблять и 40-50% динамического потребления. Особенно 65нм и ниже.

2. Не надо делать деленные клоки для снижения потребления - лучше делайте везде по максимум gated clock

3. Если клок надо снизить по частоте - делите триггером. В asiс все нормально ляжет. Клоковое дерево можно построит и through (через) триггер (или несколько триггеров)

4. Клоки лучше по максимум define все - то есть первый master - порожденные gated

 

Тогда все триггера сидящие на всех клоках будут

а. считаться синхронными (то есть в одном clock domain)

b. будут обсчитываться в STA

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