Escribiendo restricciones SDC para relojes asíncronos

0

Soy nuevo en las restricciones de SDC, en la definición de reloj síncrono, digamos que A y B están sincronizados entre sí, entonces podemos definir create_clock en el puerto A (entrada) y generated_clock en B (salida) con divide_by opción.

Ahora digamos que X es entrada y Y es salida, y ambos son asíncronos entre sí. ¿Dónde se presentará ese escenario en el diseño y cómo escribir las restricciones de la COSUDE tanto en la entrada como en la salida?

    
pregunta Krishh

1 respuesta

0

La forma más común de definir relojes síncronos o asíncronos entre sí es el comando set_clock_groups . El comando create_generated_clock no es obligatorio para que los relojes estén sincronizados.

Si el reloj A y B se definen de la siguiente manera, mi síntesis y las herramientas STA las clasifican de forma síncrona, pero no confío en eso y defino explícitamente mis grupos de reloj.

create_clock           -name CLK_A -period 10 -waveform "0 5" [get_ports A]
create_generated_clock -name CLK_B -source CLK_A -divide_by 2 [get_ports B]

Los relojes enumerados después del mismo interruptor -group se vuelven síncronos. Tenga en cuenta que CLK_A y CLK_B también serán asíncronos a cualquier otro reloj (X e Y en este caso).

set_clock_groups -asynchronous -group {CLK_A CLK_B}

Supongamos que el reloj X e Y tienen las siguientes restricciones.

create_clock -name CLK_X -period 20 -waveform "0 10" [get_ports X]
create_clock -name CLK_Y -period 15 -waveform "5 10" [get_ports Y]

Si los agrupamos en grupos diferentes, se vuelven asíncronos.

set_clock_groups -asynchronous -group CLK_X -group CLK_Y

Ahora tenemos 3 grupos de reloj en total. También podríamos definirlos con un solo comando de la siguiente manera.

set_clock_groups -asynchronous -group {CLK_A CLK_B} -group CLK_X -group CLK_Y
    
respondido por el ahmedus

Lea otras preguntas en las etiquetas