Спасибо, с констрейнами разобрался.
Вылез странный косяк с резетом. В дизайне резет при 1 (active high), a на борде резет при 0 (кнопка замыкает на землю). Добавил инвертер перед топ-модулем и начались косяки.
В симуляции не стартует важный сигнал tile0_tx_resetdone, который генерируется трансивером и идет в 1, когда трансивер готов.
Посмотрите на 2 симуляции:

reset_i - это входящий сигнал.
tile0_gtpreset0_in, tile1_gtpreset0_in - это резеты подключенные к трансиверу (который генерирует резеты для остальных).
В первой симуляции, где резет неинвертирован все работает как часы. После 500 нс tile0_tx_resetdone идет в 1 и начинается нормальная передача.

Во втором случае во-первых делается какая-то фигня сначала (после 1 такта сигналы идут в 0) и даже после захвата ФАПЧ tile0_tx_resetdone остается низким - трансивер не стартовал. Но резеты к трансиверу же одинаковы и там, и там!
Проверил, reset_i больше нигде не подключен - только к инвертеру. После загрузки трансивер не стартует.
Плюнул, загрузил с резетом при 1, держа кнопку прижатой - все равно не помогает.
ФАПЧ лочится нормально, т.к. она с резетом не связана.