Как, например, наилучшим образом использовать retiming и/или c-slow, чтобы максимально использовать данный конвейер.
При восстановлении синхронизации некоторые модули получают лучшие результаты, помещая сдвиговые регистры на входы (прямая балансировка регистров), в то время как другие модули добиваются большего успеха, используя сдвиговые регистры на выходе (обратная балансировка регистров).
Пока я использую следующий метод:
- код hdl (в verilog)
- создать временные ограничения для конкретного модуля
- синтез, карта, место и маршрут (используя ISE 13.1)
- посмотрите на время публикации и маршрута для модуля, который нужно улучшить, и на максимальное количество логических уровней.
- возьмите это количество логических уровней и сделайте обоснованное предположение о количестве вставляемых триггеров.
- вставь триггеры, включи балансировку регистров, надейся на лучшее
В нынешнем виде этот метод является хитом и промахом. Иногда это дает очень хорошие результаты, иногда это дерьмо. Итак, каков хороший способ улучшить коэффициент успеха такого ретайминга?
Есть ли инструменты, которые могут помочь в этом? Кроме того, ссылки, документы и книжные рекомендации будут высоко оценены.