3 votos

SDC (Synopsys Design Constraints) Timing Exception for Latch Before Launch - FPGA

Estoy adquiriendo datos de un ADC cuya salida en serie hace que el primer bit esté disponible inmediatamente después de completar una conversión. A continuación, la FPGA envía pulsos de reloj al ADC para desplazar los bits restantes.

Esta disposición provoca una violación de la configuración (holgura negativa) en la ruta de datos. El primer flanco ascendente es el flanco de enganche (porque el primer bit ya está disponible). El segundo flanco ascendente lanza el segundo bit. El reloj de lanzamiento se retrasa 130 grados con respecto al reloj de enganche. El periodo del reloj es de 10ns. El informe de la ruta indica que el analizador de tiempos cree que el flanco de enganche es 3,5ns después del flanco de lanzamiento. Sin embargo, en realidad, el borde del latch es 6,5ns después del borde de lanzamiento. Así que sólo tengo que decirle a Timing Analyzer que está confundiendo el borde de enganche con el borde de lanzamiento (y viceversa). Este es el problema.

¿Existe una buena excepción de tiempo para este escenario? No quiero usar "set_false_path" porque necesito que se analice la ruta.

A continuación se muestra el diagrama de temporización del ADC: ADC Timing Diagram

El siguiente es el informe de violación de la ruta: Path Violation Report

0 votos

Los comentarios no son para ampliar la discusión; esta conversación ha sido trasladado al chat .

2voto

GRoNGoR Puntos 81

El reloj de enganche en su lógica FPGA es una versión de 130 grados de fase del reloj de lanzamiento SCKB . Sólo tiene que proporcionar esta información correctamente al analizador de tiempo.

En el informe de temporización se observa que el analizador de tiempos considera el flanco de lanzamiento a 6,5 ns y el flanco de enganche a 10 ns.

El informe de la ruta indica que el analizador de tiempo cree que el borde de enganche es 3,5 ns después del borde de lanzamiento. Sin embargo, en realidad, el flanco de enganche es 6,5 ns después del flanco de lanzamiento.

El analizador de tiempos considera por defecto el siguiente flanco de reloj (digamos el segundo flanco de reloj) después del flanco de lanzamiento como el flanco de enganche. Hace el análisis de configuración basado en ese flanco. Como es 10 ns en el informe de temporización, significa que el primer flanco de enganche estaba realmente a 0 ns. El flanco de lanzamiento es de 6,5 ns en el informe de temporización. O en otras palabras, Timing Analyser analizó la ruta de datos de SDOB como si el reloj de lanzamiento se retrasara 6,5 ns o 230 grados. Esto es contradictorio con su diseño real donde el reloj de lanzamiento se retrasa 130 grados o 3,5 ns. Por lo tanto, la ventana de configuración disponible considerada por Timing Analyser se convirtió en: 10 - 6,5 = 3,5 ns.

Conclusión:

Proporcionar la información de tiempo correcta a Timing Analyser. A partir de los comentarios he notado algunas desviaciones en las declaraciones de la COSUDE. Arregle su declaración SDC en el reloj de -phase 230 a -phase 130 . El comportamiento de -phase La bandera no es tan obvia en el documento de referencia de Altera, pero sí lo es en el informe de sincronización. Timing Analyser considera este desplazamiento de fase como la cantidad de rezagado del reloj de referencia, no líder como usted presumía. No estoy seguro de otros sintetizadores, pero este es el mismo comportamiento observado en Vivado también.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X