Son bastante parecidos a lo que describiste, pero a menudo escriben algo ligeramente diferente pero con el mismo comportamiento esencial obtendrás un diseño más pequeño o más rápido.
Por ejemplo, en un dispositivo de la serie 7, hay varios registros por porción, pero comparten un reloj y el IIRC también se reinicia y configura, por lo que puede haber oportunidades para mejorar el empaque, lo que tenemos es patológico, luego hay trucos ingeniosos. como la disponibilidad de las SRL16 (registro de desplazamiento de 16 bits implementado como un uso alternativo para un LUT, pero tiene algunas restricciones, muy eficiente cuando la herramienta puede usarlo, pero eso depende de cómo escriba el código).
Debe respetar los detalles de la arquitectura a la que se dirija si desea escribir hardware eficiente porque (por ejemplo) no presta atención a la necesidad de (al menos) una suma de productos registrados en un DSP48 que causará que corre muy lentamente, los detalles de la arquitectura del chip realmente importan.
Las compensaciones generales de FPGA son el área para la velocidad y la velocidad del reloj para la latencia. Puedes hacer muchas cosas, pero debes pensar como un diseñador de hardware y no como un programador, es el error clásico de novato para las personas que vienen del lado del software. En el software, usted le dice a una CPU predefinida qué debe hacer (en, generalmente, de manera casi secuencial), al diseñar hardware le está diciendo a un mar de puertas qué es SER, es una perspectiva fundamentalmente diferente.
UG901 es un buen punto de partida, también UG474 o el equivalente para cualquier familia que esté usando.