Cómo restringir una señal de reloj de un multiplexor

0

¿Cómo restringirías este diseño?

ext_clkyclk_insonasíncronosentresí.clk_divsederivadeclk_incondobleperíodo.

clk_outpuedesermanejadoporclk_inyext_clk,deacuerdoconelpinselectordelmultiplexor.

Estoesloqueharía:

create_clock-period42-waveform{021}[get_ports"clk_in"]
create_clock -period 300 -waveform {0 21} [get_ports "ext_clk"]
create_generated_clock -name clk_out -source [get_ports "clk_in"] -divide_by 2 [get_pins "xmux/y"]
create_generated_clock -name clk_out -source [get_ports "ext_clk"] [get_pins "xmux/y"] -add

No estoy totalmente seguro de que esta sea la forma correcta de restringir este diseño. ¿Cuál crees que será el impacto de estas restricciones en la generación de CTS en términos de equilibrio para la lógica cronometrada por clk_out si habla, mutuamente excluyente, con la lógica manejada por clk_in y ext_clk?     

pregunta camillo_benso

1 respuesta

3

Si los relojes son asíncronos (entre sí), no hay restricciones significativas que puedas colocar entre ellos.

Debe crear una restricción para clk_out que represente el "peor de los casos" para cualquiera de las entradas de reloj posibles, y usarla para evaluar el resto del diseño.

El resto del diseño también debe ser capaz de manejar las infracciones de tiempo que ocurrirán cuando cambies el control en el mux.

Tenga en cuenta que existen técnicas de conmutación de reloj más sofisticadas (síncronas) que pueden evitar la creación de "pulsos runt", etc. que simplificarán el diseño de la lógica descendente. Estos usualmente están incorporados en la IP de administración de reloj del proveedor de FPGA / ASIC. Es posible que desee leer sobre eso.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas