Jump to content
    

Useful Skew без буферов задержки в линии синхронизации

Я писал о том, что обычно холд, кроме как в IO, никто в синтезе не смотрит, ведь дерево идеальное по умолчанию. А так да, конечно STA гонется и early и late, и с set_clock_latency либо вашим методом вы нарушения в холде можете получить/увидеть, надо только выписать соотвествующий репорт.

Конкретно в вашем случае, если скьюить флоп с большим логическим конусом на входе, холда можно не бояться. Ну разве что конус будет сильно не выровненным - часть путей длинная, а часть очень короткая, что вполне себе легко чинится вставкой баферов. Я же писал скорее на общий случай, чтобы не забывали что двигая сетап вы двигаете и холд. Это как бусы на нитке - где то сделаете больше, и тогда в другом месте окажется меньше. У скьюинга очень много нюансов: надо заботиться чтобы этот самый флоп не попал в малтибит во время мэппинга, надо заботиться чтобы в фанауте не было ICG или другой критичной логики, управляющей тактированием. Ну и т.д.

Share this post


Link to post
Share on other sites

13 часов назад, oratie сказал:

Я правильно вас понял, что в кремнии разница между обычным подходом и вашим будет в том, что некоторые флопы будут работать по инверсной фазе клока? Если это так, то придется править RTL, чтобы не ругался LEC (logic equiv checker).

Да. Все верно. Здесь, я исходил что не правлю HDL, а правку netlist должен допускать инструмент. Правка заключается в замене регистра, на аналогичный инверсным входом, или включение параметра "инверсии" как это позволяет Vivado(и как показано в репозитории). LEC это желательный минимум, но не уверен, что достаточный. Может GLS (gate level simulation) сможет дать уверенность, что ничто не поломано. GLS с контролем, что "смещенные" и их соседи переключались во время теста.

В данном случае стандартных инструментов нет, что влечет за собой вариации по валидации и оценки этих валидаций ....

 

 

13 часов назад, Yaahoo сказал:

чтобы не забывали что двигая сетап вы двигаете и холд

Да, это я не упустил. Спасибо! В репозитории, который дал в начале, скрипт пытается разрешить и нарушения по hold таким методом, но не очень настойчиво 🙂

13 часов назад, Yaahoo сказал:

чтобы этот самый флоп не попал в малтибит во время мэппинга

Возможно, в этом месте надо аккуратно обрабатывать руками, так как предложенный метод не запрещает двигать весь такой массив во времени. Главное в что бы в результате сдвиг фазы вернулся в 0.

13 часов назад, Yaahoo сказал:

другой критичной логики, управляющей тактированием

Здесь полностью согласен. Вероятно, работу стоит ограничить только с простейшими регистрами. Иначе, все рискует очень сильно усложнится.

13 часов назад, Yaahoo сказал:

У скьюинга очень много нюансов

Согласен, что даже тот простой пример скрипта нельзя считать автоматизированным и самостоятельным решением, все равно придется "разглядывать руками" ... Или хотя бы выбирать/искать метод валидации изменений. Может GLS (gate level simulation)  будет решением.

Edited by GentleFly

Share this post


Link to post
Share on other sites

Посмотрел ваше выступление на ютубе. Конечно, слэк в полтора периода звучит не просто жестко, а даже уже асбсурдно. Но, что дали, с тем и работаем, понимаю. В процессе просмотра возник вопрос: а ретайминг (retiming) вы делать не пробовали?

Если вивадо/квартус ретайминг делать не умеет, есть еще читерский метод синтезнуть RTL в диси или генусе - с ретаймингом, а потом закачатъ получившийся нетлист в вивадо, используя RTL описания селлов в качестве библиотеки. Когда то давно я генерил таким образом житаг/тап контроллер в диси, используя встроенные айпи синопсиса, потом выгружал в виде нетлиста, и патчил RTL, чтобы смакетировать это в плис. Проблем никаких, но лучше весь дизайн через диси не пропускайте, только проблемный блок. И в синтезе советую открыть минимальный базис селлов, чтобы потом большую библиотеку не писать. Я понимаю, что вы за свой метод зацепились, но ретайминг как раз для таких кейсов и был придуман.

Единственное, я не знаю как потом LEC делать, после ретайминга, не приходилось

Edited by Yaahoo

Share this post


Link to post
Share on other sites

22 часа назад, Yaahoo сказал:

а ретайминг (retiming) вы делать не пробовали?

Vivado умеет в retiming. Заметного результата не дало, в данном случае. Я же позже увидел путь которой не позволит отработать ни retiming, ни методу предложенному мной. Он был не с таким большим нарушением, спрятался 🙂.  Это путь с нарушением, особенность которого заключалась в том что startpoint и endpoint это один и тот же регистр. В данном случае, эти методы не помогут. Retiming не поможет, так как движение регистра по "кольцу комбинационной логики" бесполезно, так как оно останется кольцом с тем же временным путем, вроде 🤔. В любом случае результата не было. То что я предлагаю, в данном случае, тоже не поможет, так как куда не сдвигай этот регистр - мы одновременно двигаем и startpoint и endpoint ... В данном, конкретном, случае у меня остается надежда только на то что мне удастся найти регистры (программные регистры доступные для программистов, по системной шине) которые я "зажму в константу", а дальше VIvado сократит используемую логику и как следствие проблемные пути... Но там работа фоне идет, медленно, посмотрим ... 🙂

22 часа назад, Yaahoo сказал:

читерский метод синтезнуть RTL в диси или генусе - с ретаймингом, а потом закачатъ получившийся нетлист в вивадо,

Звучит интересно, но в моем случае думаю не поможет, как retiming и в Vivado есть. Место сложное и для ASIC. Там в "генераторе корки", в логе, предупреждение о том что на целевой частоте, после того как закончите с разводкой, луче проконсультироваться с ними (авторами IP), перед производством. Мне даже стало интересно как так получилось что, потребовалось синтезированный нетлист затягивать в Vivado? Vivado синтаксис какой-то в корке не прожевал ? Спасибо за идею! Может как-нибудь пригодиться 🙂

22 часа назад, Yaahoo сказал:

Единственное, я не знаю как потом LEC делать, после ретайминга, не приходилось

Не уверен что он пройдет, может SEC (Sequential Equivalence Checking) будет уместнее.

 

Обещал приложить ссылку на запись публичного выступления с докладом по предложенному методу:

Намеренное искажение тактового древа для увеличения рабочей частоты дизайна

Edited by GentleFly

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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...