Lo siguiente se solicita en el contexto de los FPGA de Xilinx (mi experiencia), pero también puede aplicarse a tecnologías similares ofrecidas por otros proveedores.
Fondo: Al escribir restricciones para FPGA I / O, hay restricciones OFFSET IN y OFFSET OUT. El propósito de estas restricciones, a mi entender, es proporcionar una guía para los procesos de colocación y enrutamiento para garantizar que el tiempo de la señal de entrada / salida en relación con el pin / pad FPGA esté restringido. Por ejemplo, sin esta restricción, las herramientas tendrían la libertad de enrutar su señal desde el teclado alrededor del IC 6 veces, a través de 100 niveles de lógica, y luego finalmente llegará a su primer registro.
Visualmente:
TambiénseofrecenrestriccionesenlaUCFpara"sugerir" a las herramientas que un registro se incluya en la IOB. Esto coloca el FF / register en una ubicación especial (fija), más cercana al pad / IO. Aparte de usar algún otro mecanismo de hardware FPGA (por ejemplo, IDELAY / ODELAY) no hay manera de ajustar la sincronización desde el pad al registro, o desde el registro al pad (el sitio de registro es fijo, el pad es fijo y el ruta entre ellos es fija).
Digo "sugerir" porque hay razones por las que el primer registro puede no estar empaquetado en una IOB para una entrada, o el último registro puede no estar empaquetado en una IOB para una salida. Pero para esta pregunta, suponga que el primer / último registro realmente se coloca correctamente en la IOB, al lado del teclado.
Pregunta: ¿Las restricciones OFFSET IN y OFFSET OUT agregan algún "valor" a un UCF? ¿Proporcionan las herramientas más información sobre su diseño que se necesita para que la sincronización de E / S sea correcta?