Sobre el uso de "BLOCK INTERCLOCKDOMAIN PATHS"

Basé un diseño de FPGA en el código de referencia de Lattice que, en el .lpfarchivo de restricciones de tiempo, especifica:

BLOCK INTERCLOCKDOMAIN PATHS

Los dos dominios de reloj principales del diseño son 100Mhz y 125Mhz, por lo que espero que se desvíen periódicamente a través de relaciones de fase que violan la configuración de dominios cruzados y los tiempos de espera. Cada dominio de reloj tiene frecuencias restringidas apropiadamente y la transferencia de datos entre dominios parece sólida.

Los propios Lattice publican consejos que parecen desalentar el uso de BLOCK INTERCLOCKDOMAIN PATHSen sus preguntas frecuentes:

Pregunta ¿Cómo puedo bloquear transferencias de dominio de reloj donde tengo circuitos sincronizadores?

Respuesta ... traceanaliza todas las transferencias de dominio de reloj en las que puede relacionar los dominios de reloj de origen y de destino. Esto puede no ser siempre deseado. Puede utilizar su propio sincronizador para manejar la transferencia entre los dominios del reloj. En este caso traceno se debe analizar la transferencia del dominio del reloj. Esto se puede hacer de tres maneras:

BLOCK INTERCLOCKDOMAIN PATHSEsta preferencia bloqueará todas las transferencias de dominio de reloj en el diseño. Si todas las transferencias de dominio de reloj en el diseño son manejadas por la lógica dentro del diseño, entonces se puede usar. Tenga cuidado con esta preferencia ya que dejará tracede analizar todas las transferencias de dominio de reloj.

BLOCK PATH FROM CLKNET "src_clk" TO CLKNET "dst_clk"Esta preferencia bloqueará todas las transferencias de dominio de reloj de src_clk a dst_clk. Esto cubre todas las transferencias entre estos dos dominios. Todas las demás transferencias de dominios de reloj serán informadas y cronometradas por trace.

BLOCK FROM CELL "myff1*" TO CELL "myff2*"Esta preferencia bloqueará la transferencia del dominio del reloj de myff1* a myff2*. Esta es una ruta muy específica y es útil si tiene varios tipos diferentes de transferencias de dominio de reloj entre dos dominios. Por ejemplo, un diseño puede contener un FIFO asíncrono y una transferencia de dominio FF a FF entre los mismos dominios. La transferencia FIFO asíncrona se puede bloquear de forma segura, pero la transferencia FF a FF debe sincronizarse.

Y:

Pregunta ¿Para qué se utiliza la preferencia "BLOCK INTERCLOCKDOMAIN PATH"?

Respuesta Esta restricción se usa para bloquear rutas que involucran la transferencia de datos entre registros que son cronometrados por diferentes redes de reloj. Si se usa sin comprensión, bloqueará todos los dominios de los relojes entre sí, incluso si se supone que están relacionados. Esto puede hacer que sus herramientas no calculen el retraso de enrutamiento necesario entre el reloj relacionado y las rutas de datos y puede provocar errores intermitentes de configuración y espera en su diseño.

Es mejor usar un BLOCK CLKNETpara cada ruta que no esté relacionada en caso de que tenga relojes relacionados.

Me siento obligado a eliminar la restricción general dado este consejo y determinar explícitamente las celdas relevantes en mi sincronizador (y su ruta en la jerarquía) que cruzan los dominios, luego bloquear el análisis de cada cruce conocido explícitamente a nivel de celda . Sé dónde deberían estar después de todo: los diseñé, pero los nombres exactos de la jerarquía tardarán un tiempo en encontrar las infracciones del informe de tiempo que espero cuando elimine esta restricción. Esto probablemente tomará un día y algunos ciclos de P&R para obtenerlos todos.

El efecto neto probablemente terminará siendo exactamente el mismo diseño que tengo en este momento, con un archivo de restricciones más largo y las mismas rutas casi críticas.

Entonces, ¿te morderías la bala y eliminarías el catch-all BLOCK INTERCLOCKDOMAIN PATHSy suben BLOCK .. CELLlas restricciones para cada cruce? ¿O no vale la pena el esfuerzo y mantener el cajón de sastre?

Respuestas (1)

Lo que estás haciendo es correcto. La pieza clave es el sincronizador. Si las únicas redes de dominio entre relojes se procesan allí, puede ignorar la advertencia.

Su plan para las restricciones remotas en otras redes no es el plan correcto. Si recibe advertencias además de su sincronizador, eso significa que tiene un cruce de reloj en otro lugar. Necesitas arreglarlos.

Supongo que nunca antes había visto una advertencia de dominio de reloj cruzado porque tenía esta restricción general. Probaré a quitarlo a ver que sale.