Las E / S del bloque de nivel superior se denominan puerto , las E / S de los subbloques se denominan pin . Por lo tanto, los comandos get_ports y get_pins deben usarse en consecuencia.
Si el reloj principal es una entrada del bloque de nivel superior, get_ports es el comando apropiado. Por ejemplo:
create_clock -name CLK [get_ports clock_main] ...
Dado que clock_1 y clock_2 son las entradas de los subbloques, en este caso se debe usar get_pins .
create_clock -name CLK1 [get_pins Module_1/clock_1] ...
create_clock -name CLK2 [get_pins Module_2/clock_2] ...
Las señales distintas de las E / S se denominan net . Las redes se pueden recolectar y restringir usando el comando get_nets , sin embargo, la mayoría de las herramientas de síntesis las optimizan o cambian los nombres. Es mejor evitar usar get_nets si no es obligatorio. De lo contrario, la mayoría de las herramientas de síntesis requieren el atributo dont_touch o algo similar para mantener la red.
Normalmente no uso el comando get_registers , porque no es compatible con el compilador de diseño de Synopsys, en su lugar utilizo get_cells . Por el contrario, Quartus II admite get_registers según manual del SDC de Altera . p>
También se puede utilizar para restringir el reloj. El manual tiene el siguiente ejemplo:
create_generated_clock -divide_by 2 -source [get_ports clk] -name clkdiv \
[get_registers clkdiv]
Alternativamente, puedes usar el comando get_pins . Tu decides.
create_generated_clock -divide_by 2 -source [get_ports clk] -name clkdiv \
[get_pins clkdiv/Q]
Si tiene un divisor de reloj de este tipo en su diseño, es mejor restringirlo en el registro o en el pin Q que en la entrada de reloj de un subbloque (por ejemplo, Module_1 ). De lo contrario, la herramienta de síntesis no sabe si la ruta transporta una señal de reloj entre el registro y el pin clock_1 . El retraso de la ruta no se incluye en el análisis de tiempo, etc.
Las herramientas de síntesis comúnmente agregan sufijos a los nombres de señales y celdas. Cada herramienta tiene sus propias reglas de denominación. Por ejemplo, mi herramienta agrega el sufijo _reg a las señales flopped.