Comando Timing Analyzer Create generated Clock

author-image

Por

El analizador de sincronización considera los divisores de reloj, los relojes de ondas o los circuitos que modifican o cambian las características del reloj entrante o del host como temporizadores generados. Usted debe definir la salida de estos circuitos como relojes generados. Esta definición permite que el analizador de sincronización analice estos relojes y que a su vez represente cualquier latencia de red asociada con ellos.

Puede utilizar el comando create_generated_clock para crear relojes generados. La siguiente lista muestra el comando create_generated_clock y las opciones disponibles:

create_generated_clock
   [-name <clock name>]
   -source <host pin>
   [-edges <edge list>]
   [-edge_shift <shift list>]
   [-divide_by <factor>]
   [-multiply_by <factor>
   [-duty_cycle <percent>]
   [-add]
   [-invert]
   [-host_clock <clock>]
   [-phase <phase>]
   [-offset <offset>]
   <source objetos>

La Tabla 1 describe las opciones para el comando create_generated_clock.

Tabla 1. Descripción de opciones para el comando create_generated_clock

Descripción de la opción
-name <clock name> Nombre del reloj generado, por ejemplo, clk_x2. Si no especifica el nombre de reloj, el nombre del reloj es el mismo que el primer nodo al que se le asigna.
-source <host pin> El pin <host> especifica el nodo en el diseño del cual derivan la configuración del reloj.
-bordes < lista> |-edge_shift <shift list> La opción -edges especifica los nuevos bordes de ascenso y descenso con respecto a los bordes de ascenso y descenso del reloj de host. Los bordes de ascenso y descenso del reloj de host tienen un número de 1.<n> comenzando con la primera ventaja de ascenso, por ejemplo, el borde 1. La primera ventaja que cae después de eso es el borde número 2, el siguiente borde creciente número 3, y así sucesivamente. La lista <edge> debe estar en orden creciente. Se puede utilizar el mismo borde en dos entradas para indicar un impulso de reloj independiente del ciclo de servicio de la forma de onda original. edge_shift especifica la cantidad de desplazamiento de cada borde en la lista de bordes <>. La opción -invert se puede utilizar para invertir el reloj después de que se apliquen los bordes y -edge_shifts.
-divide_by <factor>| -multiply_by<factor> Los factores divide_by y multiply_by se basan en el primer borde ascendente del reloj y extienden o contraen la forma de onda por los factores especificados. Por ejemplo, un -divide_by 2 es equivalente a -bordes {1 3 5}. En el caso de relojes multiplicados, también se puede especificar el ciclo de servicio. El analizador de tiempo es compatible con la especificación de factores de multiplicación y división al mismo tiempo.
-duty_cycle<percent> Especifica el ciclo de servicio del reloj generado. El ciclo de servicio se aplica en último lugar.
-add Permite especificar más de un reloj en el mismo pin.
-invertir La inversión se aplica al resultado del reloj después de aplicar todas las demás modificaciones, excepto el ciclo de servicio.
-host_clock<clock> host_clock se utiliza para especificar el reloj si existen varios relojes en el pin del host.
-phase<phase> Especifica la fase del reloj generado.
-offset<offset> Especifica la compensación del reloj generado.
<contrae objetos> Especifica los puertos o pines a los que se aplica la asignación.

Las latencias de la fuente se basan en demoras de red de reloj del reloj del host (no necesariamente el pin del host). Puede utilizar el comando set_clock_latency -source para sobrescribir la latencia de origen.

La Figura 1 muestra las formas de onda de los siguientes comandos SDC que crean un reloj generado invertido basado en un reloj de 10 ns.

create_clock -period 10 [get_ports clk]
create_generated_clock -divide_by 1 -invert -source [get_registers clk] \
    [get_registers gen|clkreg]

Figura 1. Generación de un reloj invertido.

La Figura 2 muestra las formas de onda de los siguientes comandos de SDC que modifican el reloj generado mediante las opciones -edges y -edge_shift.

create_clock -period 10 -waveform { 0 5 } [get_ports clk]
# Crea una división por 2 reloj create_generated_clock
-source [get_ports clk] -edges { 1 3 5 } \
    [get_registers clkdivA|clkreg]
# Crea un reloj de división por 2 independiente del ciclo de servicio del reloj del host ahora 50 %)
create_generated_clock fuente [get_ports clk] -edges { 1 1 5 } -edge_shift  0 5 0 } \
    \[get_registers clkdivB|clkreg]

Figura 2. Bordes y desplazamiento de borde de un reloj generado.

En la Figura 3 se muestran las wafeforms para los siguientes comandos de SDC que demuestran el efecto de la opción -multiply en el reloj generado.

create_clock -period 10 -waveform { 0 5 } [get_ports clk]
# Crea un reloj multiplicado por 2 create_generated_clock fuente
[get_ports clk] -multiply_by 2 \
    [get_registers clkmult|clkreg]

Figura 3. Multiplicación de un reloj generado.

El contenido de esta página es una combinación de traducción humana e informática del contenido original en inglés. Este contenido se ofrece únicamente para su conveniencia y como información general, y no debe considerarse como completo o preciso. Si existe alguna contradicción entre la versión en inglés de esta página y la traducción, la versión en inglés será la que sirva de referencia. Consulte la versión en inglés de esta página.