Lo siguiente se pregunta en el contexto de las FPGAs de Xilinx (mi experiencia), pero también puede aplicarse a tecnologías similares ofrecidas por otros proveedores.
Antecedentes: Cuando se escriben restricciones para las E/S de la FPGA, existen las restricciones OFFSET IN y OFFSET OUT. El propósito de estas restricciones, a mi entender, es proporcionar una guía a los procesos de colocación y enrutamiento para asegurar que la temporización de la señal de entrada/salida en relación con el pin/pad de la FPGA está restringida. Por ejemplo, sin esta restricción las herramientas serían libres de enrutar su señal desde el pad alrededor del IC 6 veces, a través de 100 niveles de lógica, y luego finalmente llega a su primer registro.
Visualmente:
También hay restricciones ofrecidas en la UCF para "sugerir" a las herramientas que un registro sea empaquetado en el IOB. Esto coloca el FF/registro en una ubicación especial (fija), la más cercana al pad/IO. Si no se utiliza algún otro mecanismo de hardware de la FPGA (por ejemplo, IDELAY/ODELAY) no hay forma de ajustar la temporización desde el pad hasta el registro, o desde el registro hasta el pad (el lugar del registro es fijo, el pad es fijo, y la ruta entre ellos es fija).
Digo "sugerir" porque hay razones por las que el primer registro puede no ser empaquetado en un IOB para una entrada, o el último registro puede no ser empaquetado en un IOB para una salida. Pero para esta pregunta, supongamos que el primer/último registro realmente se coloca con éxito en el IOB, junto a la almohadilla.
Pregunta: ¿Las restricciones OFFSET IN y OFFSET OUT añaden algún "valor" a una UCF? ¿Proporcionan a las herramientas más información sobre su diseño que sea necesaria para que la sincronización de E/S sea correcta?