Похоже, у вас есть правильные идеи. Переоснащение на основе инструментов может быть немного хитом. Иногда может помочь установка дополнительных 2 или 3 FF выше того, что вы считаете хорошим.
С другой стороны, когда мне нужно довести производительность до предела, я должен сбалансировать конвейер вручную. Это может быть правильным испытанием, когда нужно разделить ваш хорошо читаемый код HDL на ужасную явную логику и регистры - но иногда я нахожу, что это просто необходимо сделать :( Требуется много комментариев и действительно хороший тестовый стенд, чтобы убедиться, что у вас нет Я сломал это!
Наконец, есть "дом на полпути". Если я смотрю на логический путь, который имеет наибольшее количество логических уровней, и немного думаю о коде, я часто обнаруживаю, что это всего лишь один очень маленький фрагмент кода (возможно, всего одна строка). Это можно вытащить, не слишком вредя читаемости остальной части модуля. А иногда вставляя этот код в собственную сущность и добавляя дополнительные триггеры в эту сущность, можно улучшить работу автоматического ребалансера.
Удачи!