2014-11-12 2 views

ответ

1

Это довольно открытый вопрос и может быть очень сложной проблемой в его общем виде. Это больше проблема САПР и имеет мало общего с Verilog. Простое создание ациклического графического логического графика из циклического комбинационного логического графика легко: найти цикл и разбить его, вставив защелку. Продолжайте, пока не осталось циклов.

Однако вы должны также определить некоторую функциональную корректность и эквивалентность и сохранить ее после преобразования. Добавляя защелки в схему, вы меняете относительную синхронизацию сигналов (ака синхронного расстояния), и полученный график может быть функционально отличным от исходного графика.

Классический алгоритм, называемый retiming, пытается перемещать защелки, которые уже существуют, чтобы удовлетворить/минимизировать время цикла.

Эскиз алгоритма, который, как я могу думать, который сохраняет синхронное расстояние, заключается в следующем: добавьте n защелки на первичных входах и запустите расширенный алгоритм реминирования, в котором вы добавите дополнительные ограничения, чтобы сохранить синхронное расстояние узлов равного расстояния от первичные входы. Эти узлы являются входами комбинационных вентилей и первичных выходов. Например, последовательное расстояние двух входов a and b логического элемента AND должно всегда оставаться неизменным со всех первичных входов, то есть в пути от каждого входа i до a вы должны видеть такое же количество защелок, что и у i, до b ,

С этими дополнительными ограничениями проверка будет показывать вам, может ли она перемещать защелки, чтобы удовлетворить такт цикла (что в данном случае может быть очень большим числом, то есть больше, чем ваш самый длинный цикл). Если n достаточно, алгоритм повторного набора должен иметь возможность помещать защелки на разрыв всех циклов. Вы можете выполнить итерацию алгоритма на разные значения n, чтобы получить ответ.

+0

спасибо! Можете ли вы указать мне какую-нибудь страницу или метод для прерывания циклов и вставки защелок? –

+0

Вы можете начать с этого: http://www.geeksforgeeks.org/detect-cycle-in-a-graph/ – Ari