El cierre temporal en el diseño VLSI y la ingeniería electrónica es el proceso mediante el cual se modifica un diseño lógico de un circuito síncrono temporizado que consta de elementos primitivos como puertas lógicas combinatorias ( AND
, OR
, NOT
, NAND
, NOR
, etc.) y puertas lógicas secuenciales (flip flops, latches, memorias) para cumplir con sus requisitos de temporización. A diferencia de un programa informático donde no hay un retraso explícito para realizar un cálculo, los circuitos lógicos tienen retrasos intrínsecos y bien definidos para propagar las entradas a las salidas.
En casos simples, el usuario puede calcular el retardo de ruta entre elementos manualmente. Si el diseño tiene más de una docena de elementos, esto no es práctico. Por ejemplo, el retardo de tiempo a lo largo de una ruta desde la salida de un flip flop D, a través de puertas lógicas combinatorias, luego hacia la siguiente entrada del flip flop D debe satisfacer (ser menor que) el período de tiempo entre los pulsos de reloj de sincronización a los dos flip flops. Cuando el retardo a través de los elementos es mayor que el tiempo del ciclo de reloj, se dice que los elementos están en la ruta crítica . El circuito no funcionará cuando el retardo de ruta exceda el retardo del ciclo de reloj, por lo que modificar el circuito para eliminar la falla de temporización (y eliminar la ruta crítica) es una parte importante de la tarea del ingeniero de diseño lógico. La ruta crítica también define el retardo máximo en todas las rutas de registro a registro múltiples, y no debe ser mayor que el tiempo del ciclo de reloj. Después de cumplir con el cierre de temporización, una forma de mejorar el rendimiento del circuito es insertar un registro entre la ruta combinatoria de la ruta crítica. Esto podría mejorar el rendimiento, pero aumenta la latencia total (número máximo de registros desde la ruta de entrada a la de salida) del circuito.
Muchas veces, los cambios en los circuitos lógicos son manejados por las herramientas EDA del usuario en función de las directivas de restricción de tiempo preparadas por un diseñador. El término también se utiliza para el objetivo que se logra cuando dicho diseño ha llegado al final del flujo y se satisfacen sus requisitos de tiempo.
Los pasos principales del flujo de diseño que pueden estar involucrados en este proceso son la síntesis lógica , la colocación , la síntesis del árbol de relojes y el enrutamiento . Un reloj de referencia único se suele conectar en cascada y sintetizar en muchos bloques de salida de relojes diferentes, lo que da como resultado una estructura de árbol.
Con las tecnologías actuales, todas ellas necesitan tener en cuenta el tiempo para que un diseño cumpla adecuadamente sus requisitos de tiempo, pero con tecnologías en el rango del micrómetro, solo las herramientas EDA de síntesis lógica tenían ese requisito previo.
Sin embargo, incluso si la conciencia de tiempo se extendiera a todos estos pasos a partir de principios bien establecidos utilizados para la síntesis lógica, las dos fases, lógica y física, del proceso de cierre de tiempo son manejadas convencionalmente por diferentes equipos de diseño y diferentes herramientas EDA. Design Compiler de Synopsys, Encounter RTL Compiler de Cadence Design Systems y BlastCreate de Magma Design Automation son ejemplos de herramientas de síntesis lógica. IC Compiler de Synopsys, SoC Encounter de Cadence Design Systems y Blast Fusion de Magma Design Automation son ejemplos de herramientas capaces de colocación consciente del tiempo, síntesis y enrutamiento del árbol de reloj y, por lo tanto, se utilizan para el cierre físico del tiempo .
Cuando el usuario requiere que el circuito cumpla con restricciones de tiempo excepcionalmente difíciles, puede ser necesario utilizar programas de aprendizaje automático [1] , como InTime de Plunify, para encontrar un conjunto óptimo de parámetros de configuración de herramientas de síntesis, mapa, ubicación y ruta de FPGA que garanticen que el circuito cerrará el tiempo.
Es necesario traducir un requisito de tiempo en una restricción de tiempo estática para que una herramienta EDA pueda manejarlo.