El retiming es la técnica de mover la ubicación estructural de los pestillos o registros en un circuito digital para mejorar sus características de rendimiento, área y/o potencia de tal manera que se preserve su comportamiento funcional en sus salidas. El retiming fue descrito por primera vez por Charles E. Leiserson y James B. Saxe en 1983. [1]
La técnica utiliza un gráfico dirigido donde los vértices representan bloques combinacionales asincrónicos y los bordes dirigidos representan una serie de registros o pestillos (el número de registros o pestillos puede ser cero). Cada vértice tiene un valor correspondiente al retraso a través del circuito combinacional que representa. Después de hacer esto, uno puede intentar optimizar el circuito empujando registros de salida a entrada y viceversa, de manera muy similar al empuje de burbujas . Se pueden utilizar dos operaciones: eliminar un registro de cada entrada de un vértice mientras se agrega un registro a todas las salidas y, a la inversa, agregar un registro a cada entrada de vértice y eliminar un registro de todas las salidas. En todos los casos, si se siguen las reglas, el circuito tendrá el mismo comportamiento funcional que tenía antes de la resincronización.
La formulación inicial del problema de resincronización descrita por Leiserson y Saxe es la siguiente. Dado un gráfico dirigido cuyos vértices representan puertas lógicas o elementos de retardo combinacional en un circuito, suponga que hay un borde dirigido entre dos elementos que están conectados directamente o a través de uno o más registros. Sea el peso de cada borde el número de registros presentes a lo largo del borde en el circuito inicial. Sea el retardo de propagación a través del vértice . El objetivo en la resincronización es calcular un valor de retardo entero para cada vértice de modo que el peso resincronizado de cada borde no sea negativo. Hay una prueba de que esto preserva la funcionalidad de salida. [2]
El uso más común de la reprogramación es minimizar el período de reloj . Una técnica sencilla para optimizar el período de reloj es buscar el período mínimo factible (por ejemplo, mediante una búsqueda binaria ).
La viabilidad de un periodo de reloj se puede comprobar de varias formas. El programa lineal siguiente es factible si y solo si es un periodo de reloj factible. Sea el número mínimo de registros a lo largo de cualquier camino desde a (si existe dicho camino), y es el retardo máximo a lo largo de cualquier camino desde a con W(u,v) registros. El dual de este programa es un problema de circulación de coste mínimo , que se puede resolver de forma eficiente como un problema de red. Las limitaciones de este enfoque surgen de la enumeración y el tamaño de las matrices y .
Alternativamente, la viabilidad de un período de reloj se puede expresar como un programa lineal entero mixto (MILP). Existirá una solución y se devolverá una función de retardo válida si y solo si el período es factible.
Las formulaciones alternativas permiten minimizar el número de registros y minimizar el número de registros bajo una restricción de retardo. El artículo inicial incluye extensiones que permiten considerar la compartición de abanicos y un modelo de retardo más general. El trabajo posterior ha abordado la inclusión de retardos de registros, [3] modelos de retardo dependientes de la carga, [3] y restricciones de retención. [4]
La reprogramación ha encontrado un uso industrial, aunque esporádico. Su principal inconveniente es que se destruye la codificación de estado del circuito, lo que dificulta considerablemente la depuración, las pruebas y la verificación. Algunas reprogramaciones también pueden requerir una lógica de inicialización complicada para que el circuito comience en un estado inicial idéntico. Por último, los cambios en la topología del circuito tienen consecuencias en otros pasos de síntesis lógica y física que dificultan el cierre del diseño .
La programación desfasada del reloj es una técnica relacionada para optimizar circuitos secuenciales. Mientras que la reprogramación reubica la posición estructural de los registros, la programación desfasada del reloj mueve su posición temporal programando el tiempo de llegada de las señales del reloj. El límite inferior del período de reloj mínimo alcanzable de ambas técnicas es el tiempo de ciclo medio máximo (es decir, el retraso combinacional total a lo largo de cualquier ruta dividido por el número de registros a lo largo de ella).
{{cite journal}}
: CS1 maint: varios nombres: lista de autores ( enlace ){{cite journal}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )