Ruta crítica para el bloque combinacional

1

Estoy tratando de sintetizar un bloque lógico combinacional en verilog usando Xilinx Vivado. Estoy tratando de reducir el número de cortes y aún intento encontrar la ruta crítica del circuito.

Muchas soluciones indican que el análisis de tiempo se realiza de un registro a otro. Sin embargo, si los resultados se realizan como registros, el área de mi diseño aumenta.

¿Hay alguna forma de encontrar la ruta crítica del diseño de comportamiento sin utilizar registros de salida?

    
pregunta Aditya Pradeep

2 respuestas

1

¿Cómo restringir las rutas sin registros?

Sí, hay una manera. Las rutas de tiempo no tienen que ser de registro a registro. Un puerto también puede ser un punto de inicio o un punto final. Si su bloque es completamente combinado, todas las rutas serán desde puertos de entrada a puertos de salida.

Lo más importante aquí es definir un reloj virtual y los retrasos de entrada / salida en un archivo XDC. Luego debes agregar el archivo al proyecto Vivado.

create_clock -name VCLK -period 10.0 -waveform {0 5.0}

set_input_delay  1.0 -clock [get_clocks VCLK] [get_ports IN1]
set_output_delay 2.0 -clock [get_clocks VCLK] [get_ports OUT1]

El ejemplo anterior indica que la señal IN1 llega al bloque 1ns después de que VCLK aumenta. Además, OUT1 se debe establecer 2ns antes de que VCLK suba. Dado que nuestro período de reloj es de 10 ns, la ruta desde IN1 a OUT1 tiene 7ns (10-1-2) para finalizar la operación.

¿Cómo ver la ruta crítica en Vivado?

Una vez que se complete la implementación, haga clic en " Informes " en la parte inferior de la GUI de Vivado. Luego haga clic en " Informe de resumen de temporización " debajo de " Diseño de ruta ". Como alternativa, también puede buscar el archivo blabla_timing_summary_routed.rpt en el directorio del proyecto.

Este informe muestra las rutas críticas para todos los dominios de reloj. Como solo tienes un dominio de reloj, deberías ver algo como abajo.

From Clock:  VCLK
  To Clock:  VCLK

Luego busque la sección " Max Delay Paths ". Verás el camino crítico debajo de él.

    
respondido por el ahmedus
0

No estoy usando Xilinx, pero los comandos parecen estar familiarizados con una herramienta que usé en el pasado.

Con algo de suerte, el script "reportCriticalPaths" en la página 25 en Vivado La documentación de scripting es de ayuda. Básicamente, se usa la salida de "get_timing_paths -delay_type $ delayType -max_paths 50 -nworst 1" para enumerar las rutas en un archivo CSV.

Para obtener rutas críticas, es probable que necesite restricciones en sus rutas. En mi humilde opinión puede usar "set_max_delay" para hacerlo. Establezca el retraso máximo en un número pequeño desde sus entradas combinacionales a las salidas combinadas (para el análisis de tiempo) y probablemente obtendrá las peores rutas reportadas como infractores. Por lo que recuerdo, ese es el tipo de truco que apliqué para estas cosas.

    
respondido por el le_top

Lea otras preguntas en las etiquetas