Перейти к содержанию
    

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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)  будет решением.

Изменено пользователем GentleFly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Изменено пользователем Yaahoo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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) будет уместнее.

 

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

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

Изменено пользователем GentleFly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...