Когда у Вас клоки синхронизированы между собой (являются производными от одного клока), то синтезатор обладает всей информацией для вычисления задержек. Для этого нужно только поместить это клоки в одну clock group. Если эти клоки генерятся pll, то у них есть совпадающий фронт к каком-то такте - условно первом (кстати, синплифай утверждает, что понимает описание альтеровского и ксайлинского плл и сам вычисляет и ставит клоки в одну группу). Если Вы делите клок триггером, и в первом такте фронты не совпадают, а сдвинуты, то для этого случая есть констрейн clock-to-clock.
(Есть правда одна смешная тонкость, связанная с тем, что человек обычно задает частоту в МГЦ, а синтезатор пользуется длительностью. Если при вычислении длительности число знаков не конечно, то две длительности, соотв. двум кратным частотам, не будут иметь общего делителя, и синтезатор выдаст кучу ошибок. См. прикрепленный док.)
Все что осталось - это правильно перевести одноклоковые стробы из одного клокового домена в другой. Метастабильностью здесь заниматься не нужно, повторяю, клоки не асинхронны, и синтезатор сам вычислит наихудший случай расстояния между фронтами двух клоков. Это работает в синплифае и прецизионе.
Возможно также , что на границах кл.доменов придется поставить регистры в путь данных, смотрите отчет синтезатора по времянке.
Что касается предложения завести сигналы enable и прописать для медленного клокового домена мультиклоковые пути, то так делать можно, но неизящно - если у Вас сбалансированный дизайн и запас по частоте мал, то придется прописывать чуть ли не все цепи в мультиклоковые. Ручками.
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем