Input and Output Delays in Primetime
Following the review of setup and hold time analysis in previous post, we will now cover timing analysis at the primary pins of the chip. The IO pins are constrained using input and output delays. We will look at an example to constrain IOs in a design using Synopsys Primetime, the widely used static timing analysis tool.
Input and Output constraints for a chip
In the figure above, we have RXD (the data) being clocked by RXC (period = 8ns), both being primary inputs to the chip. The input specification for this interface in our chip is 4 ns setup and 1 ns hold. The RXC input clock is clock tree buffered and clocks an output flop. The TXD and TXC are primary outputs of the chip and the output specification is a max delay of 5 ns and min delay of 1 ns.
In primetime, the set_input_delay command specifies the data arrival time at the port with respect to a clock. The set_output_delay command specifies the data required time at the port with respect to a clock.
We need to define the clock at the input using create_clock and make it a propagated clock so that primetime can propagate the input through all the buffers to the external TXC output.
create_clock -name rxc -period 8 -waveform “0 4″ [get_ports RXC]
set_propagated_clock [get_clocks rxc]
To constrain the RXD input wrt RXC clock for setup, we define the maximum external delay allowable (i.e. period - setup requirement = 8 - 3 = 5 ns)
set_input_delay 5 -max -clock [get_clocks rxc] [get_clocks rxc]
For the hold constraint, we specify the hold requirement as is.
set_input_delay 1 -min -clock [get_clocks rxc] [get_clocks rxc]
For output constraints, we need to create a generated clock source at the output pin TXC. This is necessary since without this generated clock the latency of the TXC clock source is discarded which is incorrect.
create_generated_clock -name txc -source [get_ports RXC] -divide_by 1 [get_ports TXC]
The output port TXD is constrained with delays external to the chip i.e.
set_output_delay 3 -max -clock [get_clocks txc] [get_ports TXD]
set_output_delay -1 -min -clock [get_clocks txc] [get_ports TXD]
Note the negative sign for min output delay, this is because a larger hold requirement means that you must specify a more negative output delay. If you apply the hold requirement as a positive amount, the constraint will be incorrectly relaxed by double that amount. This could cause the hold check to pass when there is really a violation.
Always be careful while defining input/output constraints and check the reports to ensure that the IOs are constrained correctly.
Sphere: Related Content
on September 17th, 2007 at 7:07 am
hi,
Good article.
Similar to this there is an article for Static timing analysis , please visit, where you can get diagramatic explanations about input/output delays chip timings, scenario for false/multicycle paths, source synchrounous paths all concepts are available
http://www.vlsichipdesign.com/static%20timing%20analysis.html
on September 25th, 2007 at 3:16 pm
[…] clear now ? We will cover IO constraints […]