Можете ли вы порекомендовать алгоритм, который преобразует любую циклическую комбинационную логику в ациклическую комбинационную логику плюс защелки? СпасибоПреобразование комбинационных петель в защелки
ответ
Это довольно открытый вопрос и может быть очень сложной проблемой в его общем виде. Это больше проблема САПР и имеет мало общего с Verilog. Простое создание ациклического графического логического графика из циклического комбинационного логического графика легко: найти цикл и разбить его, вставив защелку. Продолжайте, пока не осталось циклов.
Однако вы должны также определить некоторую функциональную корректность и эквивалентность и сохранить ее после преобразования. Добавляя защелки в схему, вы меняете относительную синхронизацию сигналов (ака синхронного расстояния), и полученный график может быть функционально отличным от исходного графика.
Классический алгоритм, называемый retiming, пытается перемещать защелки, которые уже существуют, чтобы удовлетворить/минимизировать время цикла.
Эскиз алгоритма, который, как я могу думать, который сохраняет синхронное расстояние, заключается в следующем: добавьте n
защелки на первичных входах и запустите расширенный алгоритм реминирования, в котором вы добавите дополнительные ограничения, чтобы сохранить синхронное расстояние узлов равного расстояния от первичные входы. Эти узлы являются входами комбинационных вентилей и первичных выходов. Например, последовательное расстояние двух входов a and b
логического элемента AND должно всегда оставаться неизменным со всех первичных входов, то есть в пути от каждого входа i
до a
вы должны видеть такое же количество защелок, что и у i
, до b
,
С этими дополнительными ограничениями проверка будет показывать вам, может ли она перемещать защелки, чтобы удовлетворить такт цикла (что в данном случае может быть очень большим числом, то есть больше, чем ваш самый длинный цикл). Если n
достаточно, алгоритм повторного набора должен иметь возможность помещать защелки на разрыв всех циклов. Вы можете выполнить итерацию алгоритма на разные значения n
, чтобы получить ответ.
спасибо! Можете ли вы указать мне какую-нибудь страницу или метод для прерывания циклов и вставки защелок? –
Вы можете начать с этого: http://www.geeksforgeeks.org/detect-cycle-in-a-graph/ – Ari