Tengo una entidad combinacional que se implementa con lot de lógica combinacional. La síntesis (usando Xilinx ISE) indica:
Retardo máximo de la ruta combinacional: 62.367ns
Cuando se coloca en un diseño síncrono (sincronizado), la frecuencia máxima a la que puede funcionar todo el sistema (dominio del reloj) es de solo ~ 16 MHz. Esencialmente, este único componente reduciría la velocidad de reloj máxima de todo el sistema.
Lo que quiero hacer, es envolver este componente combinacional en alguna lógica síncrona (con start
input, done
output), que esencialmente "espera" en el retardo de propagación del componente asíncrono. Básicamente, simplemente se engancha en la entrada, espera N ciclos de reloj y luego engancha la salida a un registro. Sin embargo, después de la síntesis, ISE todavía dice Maximum Frequency: 16.975MHz
.
¿Cómo puedo hacer que ISE ignore el retraso de propagación de este dispositivo? O, ¿de qué otra manera puedo atacar esto?
EDITAR:
Me refiero a la combinación en lugar de asíncrono.
Esto es parte de una tarea. Anteriormente, debíamos implementar un módulo factorial en cada uno de "iterativo", "baja latencia" (combinacional) y "alto rendimiento" (etapas registradas). Ahora estamos usando los dos primeros de los núcleos IP para Xilinx XPS system builder. La implementación sincrónica fue muy fácil de usar (¡probablemente porque así se debe hacer!) Por supuesto, las restricciones de tiempo no se cumplen para la versión de baja latencia, por lo que debo agregar lógica para solucionar esto.
Ahora que sé que el término es "Ruta de varios ciclos", los siguientes recursos son útiles: