то есть, имеется проект, в котором есть несколько модулей, которые отличаются очень мало друг от друга: при синтезе модуля передается некий параметр, который используется затем для определения доступа к модулю (что-то типа адреса на общей шине)
так как модули большие и их много, то хотелось бы синтезировать нетлист верхнего уровня с "black box"-ами на месте инстанциации этих модулей, а сам модуль синтезировать отдельно
это нужно
1) для уменьшения времени синтеза
2) облегчения правок (ЕСО) внутри модуля - если все одинаковые, то можно простым скриптом исправить, а если будут пересинтезированы, то не обязательно функции будут смапированы в одинаковую логику
3) предполагаю, что это может сильно облегчить процедуру размещения и трассировки
-----------------
если бы это были абсолютно одинаковые модули - никаких проблем не возникло бы - синтезировал отдельно модуль и топ и потом link
------------------
я вижу такие пути
1) заменить параметр входом (сигналом), тогда модули будут одинаковые и проблема дешифрации будет не при синтезе, а run-time. минусы : логика добавится / времянка ухудшится. ну и неудобство в описании топ-а
2) регрупировать иерархию, чтобы вытащить тот субмодуль (маленький), который делает дешифрацию наружу и синтезировать вместе с top, а остальное синтезировать отдельно. минусы - такого не делал и слегка сомневаюсь, ну и связь RTL vs. netlist будет хуже. но это пока лучшее решение
3) переписать RTL - не хочется / организационные сложности
есть ли какое либо еще решение средствами синтеза (конкретно DC) решить проблему?
-------
UPD: та же проблема есть и для FPGA, там модулей таких меньше, но пересинтезировать приходится чаще ):
http://electronix.ru/forum/index.php?showtopic=57074