Basé un diseño FPGA en el código de referencia de Lattice que, en el archivo de restricciones de tiempo .lpf
, especifica:
BLOCK INTERCLOCKDOMAIN PATHS
Los dos dominios principales de diseño del reloj son 100Mhz y 125Mhz, por lo que espero que se desvíen a través de las relaciones de fase que violan la configuración de dominios cruzados y los tiempos de espera periódicamente. Cada dominio de reloj tiene frecuencias adecuadamente restringidas y la transferencia de datos entre dominios parece sólida.
Los mismos Lattice publican consejos que parecen desalentar el uso de BLOCK INTERCLOCKDOMAIN PATHS
en sus preguntas frecuentes:
Pregunta ¿Cómo puedo bloquear las transferencias de dominio de reloj donde tengo sincronizador? ¿circuitos?
Respuesta ...
trace
analiza todo el reloj Transferencias de dominio en las que puede relacionar el origen y el destino. Dominios del reloj. Esto no siempre puede ser deseado. Usted puede utilizar su propio sincronizador para manejar la transferencia entre los dominios de reloj. En este casotrace
no debe analizar la transferencia del dominio del reloj. Esto puede se hará de tres maneras:
BLOCK INTERCLOCKDOMAIN PATHS
Esta preferencia bloqueará todo el reloj Transferencias de dominio en el diseño. Si todos los dominios de reloj se transfieren en el diseño son manejados por la lógica dentro del diseño entonces esto puede ser usado. Tenga cuidado con esta preferencia ya que detendrátrace
desde Analizando todas las transferencias de dominio de reloj.
BLOCK PATH FROM CLKNET "src_clk" TO CLKNET "dst_clk"
Esta preferencia bloqueará todos los dominios de reloj transferencias desde src_clk a dst_clk. Esto cubre todas las transferencias entre estos dos dominios. Todas las demás transferencias de dominio de reloj serán reportado y cronometrado portrace
.
BLOCK FROM CELL "myff1*" TO CELL "myff2*"
Esta preferencia bloqueará la transferencia del dominio de reloj de myff1 * a myff2 *. Esta es una ruta muy específica y es útil si tiene varias Diferentes tipos de transferencias de dominio de reloj entre dos dominios. por Por ejemplo, un diseño puede contener un FIFO asíncrono y un FF a FF Transferencia de dominio entre los mismos dominios. El FIFO asíncrono. la transferencia se puede bloquear de forma segura, pero la transferencia FF a FF debe ser cronometrado.
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 cronometrados por diferentes redes de reloj. Si se usa sin comprender, bloqueará todos los dominios de los relojes entre sí, incluso si se supone que están relacionados. Esto puede causar sus herramientas para no calcular el retardo de enrutamiento necesario entre relacionados con el reloj y las rutas de datos y puede llevar a una configuración intermitente y mantener errores en su diseño.
Es mejor usar un
BLOCK CLKNET
para cada ruta que no esté relacionada en caso tienes 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 bloquea el análisis de cada cruce conocido explícitamente en el nivel de la célula . Después de todo, sé dónde deberían estar: las diseñé, pero los nombres de jerarquía exactos tomarán un tiempo para encontrar las infracciones del informe de tiempo que espero cuando elimine esta restricción. Esto probablemente tomará un día y algunos ciclos P & R para obtenerlos todos.
El efecto neto probablemente terminará siendo el diseño exactamente igual que tengo en este momento, con un archivo de restricción más largo y las mismas rutas casi críticas.
Entonces, ¿mordería la bala y eliminaría las restricciones BLOCK INTERCLOCKDOMAIN PATHS
, y las restricciones en BLOCK .. CELL
para cada cruce? ¿O no vale la pena el esfuerzo y se queda con todo?