Цитата(MIX@ @ Jan 10 2013, 17:31)

Проблема - TimeQuest выдаёт дофигище нарушений ограничения типа Recovery/Removal практически во всех блоков всех тактовых доменов.
Основной вопрос - корректно ли делать такую схему сброса в принципе?
Чтобы решить проблему в лоб - запретите анализ recovery/removal путей по этим сигналам сброса. Нарушения сразу прекратятся.
Насчет корректности, в большинстве случаев такая схема сброса корректна, если сигнал, инициирующий работу всей системы, не конфликтует по времени со снятием сигнала сброса, то есть не приходит слишком быстро после его снятия. Поэтому для таких систем стоит применять схему асинхронного сброса, как экономящую ресурсы ПЛИС. Однако, могут быть и исключения - например имеются триггеры, на которых на входе данных в момент снятия сигнала сброса присутствует сигнал, который должен на ближайшем такте сменить состояние этого триггера на противоположное от состояния в сбросе - в таком случае нарушение времени recovery/removal может привести к метастабильности. Но и тут не все так плохо - если, например, этот триггер находится в составе обыкновенного делителя, то его работа не будет нарушена, а просто сдвинута на один такт после снятия сброса, что для делителя совершенно все равно. Реальные проблемы могут возникнуть, если в момент снятия сигнала сброса приходит несколько различных синхронных сигналов, используемых совместно - например шина данных совместно с каким либо разрешенным в данный момент сигналом управления. В таком случае есть риск получить ошибку в получении данного с такой шины в первом такте после снятия сброса.
В общем - в большинстве случаев, причем в подавляющем большинстве, можно запретить анализ времянок асинхронных set/reset-цепей и спать спокойно. Но может найтись какой-то тяжелый случай, в котором соблюдение времянок типа Recovery/Removal важно. Однако, эти случаи редки, и, как правило, затрагивают схемы, управляемые не общим сбросом, а использующие асинхронный сброс в процессе их работы "локально".