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.