Restricción de la línea de reinicio

3

Estoy usando Quartus II para compilar mi diseño de Verilog, y estoy trabajando para restringir adecuadamente mis señales.

Sé cómo restringir los relojes, por ejemplo:

create_clock -name clk_i -period "157 MHz" [get_ports clk_i]

También sé cómo restringir las señales de entrada en relación con un reloj, por ejemplo:

set_input_delay -clock clk_i 0 [get_ports data_i*]

Sin embargo, no sé cómo debe restringirse la línea de reinicio (asíncrono). ¿Cómo se restringen las líneas de reinicio?

    
pregunta Randomblue

1 respuesta

3

Por lo general, sincronizo mi reinicio asíncrono a través de una línea de retardo de unos pocos flip-flops (confiando en que la configuración FPGA los haya borrado), y solo uso ese reinicio sincronizado (incluso si lo estoy usando como un reinicio asíncrono).

En Xilinx-land, las herramientas pueden rastrear el tiempo desde el reloj utilizado en la línea de retardo hasta la entrada de restablecimiento (ya sea sincronizada o asíncrona) de sus flipflops, por lo que no es necesaria una restricción de tiempo explícita. Me sorprendería si Quartus no puede hacer lo mismo.

No recomendaría intentar distribuir un restablecimiento verdaderamente asíncrono en el chip.

Si lo hace, tiene una pequeña posibilidad de que el lanzamiento del reinicio asíncrono esté muy cerca del borde del reloj. Debido a la demora en el chip, algunos flip-flops lo verán en un borde del reloj, y otros simplemente lo perderán y lo verán en el próximo borde del reloj. En el peor de los casos, esos flip-flops formarán parte de un registro de estado (por ejemplo) y la "parte" de la máquina de estados saldrá de reinicio antes que otra parte. Las cosas malas tienden a seguir. Pero solo ocasionalmente, ¡lo que hace que sea una pesadilla descifrarlo!

    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas