STA: timing check - input2output type

As one of the four timing paths to be analyzed by STA, it can be regarded as a variant of reg2reg. For details, see STA: Timing Check


4. input2output

The fourth is that both the launch trigger and the capture trigger are outside the chip.

The path from initiating trigger to capturing trigger is as follows:

insert image description here

Parameter definition:

T c l k 2 I N B T_{clk2INB} Tclk2INB: The delay of rising edge transfer from clock CLKM to port INB through flip-flop UFF0.

is the input path delay of port INB relative to clock CLKM, that is, T clk 2 INB = T clk 2 UFF 0 + TCK 2 QUFF 0 + TUFF 02 INB T_{clk2INB}=T_{clk2UFF0}+T^{UFF0}_{CK2Q }+T_{UFF02INB}Tclk2INB=Tc l k 2 U FF 0+TCK2QUFF 0 _+TU FF 02 I NB, specified by the SDC below

# 最长路径,用于建立时间检查
set_input_delay -clock CLKM -max 1.5 [get_ports INB]

# 最短路径,用于保持时间检查
set_input_delay -clock CLKM -min 1 [get_ports INB]

T I N B 2 P O U T T_{INB2POUT} TINB2POUT: The delay of data from the design port INB, through a series of combinational logic elements, and finally to POUT

Depending on the combinatorial logic between ports INB to POUT after synthesis, the combinatorial logic delay is specified by the SDF of the standard cell library.

T P O U T 2 U F F 1 T_{POUT2UFF1} TPOUT2UFF1: The data is output from the design port POUT, passes through a series of combinational logic elements, and finally reaches the delay of UFF1

T c l k 2 I N C T_{clk2INC} Tclk2INC: Rising edge delay from clock CLKM input through port INC input to design internal.

Here INC is a fixed point for the clock, so the delay is the source delay, which is specified by the SDC below

set_clock_latency 0.8 -source [get_clocks CLKM]

T I N C 2 P I N C T_{INC2PINC} TINC2PINC: The delay of clock CLKM transmission inside the design.

Design the network delay of the internal clock, specified by the SDC below

set_clock_latency 0.2 [get_clocks CLKM]

T P I N C 2 U F F 1 T_{PINC2UFF1} TPINC2UFF1: Delay of clock CLKM output to UFF1 through port PINC.

T c l k T_{clk} Tclk: Clock CLKM period, note that this clock is not designed as an internal clock. The value is specified by the SDC below

create_clock -period 10 -name CLKM [get_ports INC]

T s e t u p _ u n c e r t a i n T_{setup\_uncertain} Tsetup_uncertain: The clock CLKM setup time uncertainty, that is, the expected clock edge is ahead of time by a certain period of time.

The value is specified by the SDC below

set_clock_uncertainty -setup 0.3 [get_clocks CLKM]

T h o l d _ u n c e r t a i n T_{hold\_uncertain} Thold_uncertain: Clock CLKM setup time uncertainty, that is, the expected clock edge is delayed for a period of time.

The value is specified by the SDC below

set_clock_uncertainty -hold 0.4 [get_clocks CLKM]

T s e t u p U F F 1 T^{UFF1}_{setup} TsetupUFF1: UFF1 build time.

T o u t p u t U F F 1 T^{UFF1}_{output} ToutputUFF1: external timing constraints. The difference between the combinational logic delay from POUT to UFF1/D terminal and the combinational logic delay from PINC to UFF1/CK terminal, plus the setup time of UFF1, that is, T output UFF 1 = TPOUT 2 UFF 1 − TPINC 2 UFF 1 + T setup UFF 1 / − T hold UFF 1 T^{UFF1}_{output}=T_{POUT2UFF1}-T_{PINC2UFF1}+T^{UFF1}_{setup}/-T^{UFF1}_{hold}ToutputUFF1=TPOUT2UFF1TPINC2UFF1+TsetupUFF1/TholdUFF1

Can be specified by the following SDC

# 最长路径,用于建立时间检查
set_output_delay -clock CLKM -max 2 [ get_ports POUT]

# 最短路径,用于保持时间检查
set_output_delay -clock CLKM -min 1.5 [ get_ports POUT]

T s e t u p _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{setup\_slack} Tsetup_slackUFF02UFF1: Setup time margin for paths UFF0-UFF1. is the amount to be calculated, and greater than zero means that the establishment time is satisfied.

T h o l d U F F 1 T^{UFF1}_{hold} TholdUFF1: hold time of UFF1.

T h o l d _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{hold\_slack} Thold_slackUFF02UFF1: Hold time margin for paths UFF0-UFF1

4.1. Setup time T setup T_{setup}Tsetupexamine

STA on capture trigger UFF1

● The time when the data actually arrives at the UFF1/D terminal (Arrival Time): T clk 2 INB + TINB 2 POUT + TPOUT 2 UFF 1 T_{clk2INB}+T_{INB2POUT}+T_{POUT2UFF1}Tclk2INB+TINB2POUT+TPOUT2UFF1

reg2reg型中的Arrival Time为 T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1} Tc l k 2 U FF 0+TCK2QUFF 0 _+TUFF02UFF1, which is equivalent to Arrival Time in input2reg type

● UFF1/D端新信号需要到达的时间(Required Time): T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 I N C + T I N C 2 P I N C + T P I N C 2 U F F 1 − T s e t u p U F F 1 T_{clk}-T_{setup\_uncertain}+T_{clk2INC}+T_{INC2PINC}+T_{PINC2UFF1}-T^{UFF1}_{setup} TclkTsetup_uncertain+Tclk2INC+TINC2PINC+TPINC2UFF1TsetupUFF1

reg2reg型中的Required Time为 T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 U F F 1 − T s e t u p U F F 1 T_{clk}-T_{setup\_uncertain}+T_{clk2UFF1}-T^{UFF1}_{setup} TclkTsetup_uncertain+Tclk2UFF1TsetupUFF1, equivalent to Required Time in input2reg type

So the setup time margin of UFF1 in path UFF0-UFF1 is:

0 < T s e t u p _ s l a c k U F F 02 U F F 1 = R e q u i r e d T i m e − A r r i v a l T i m e   = ( T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 I N C + T I N C 2 P I N C + T P I N C 2 U F F 1 − T s e t u p U F F 1 ) − ( T c l k 2 I N B + T I N B 2 P O U T + T P O U T 2 U F F 1 )   = ( T c l k − T s e t u p _ u n c e r t a i n + T c l k 2 I N C + T I N C 2 P I N C ) − ( T c l k 2 I N B + T I N B 2 P O U T ) − T o u t p u t U F F 1   (4.1) 0<T^{UFF02UFF1}_{setup\_slack}=Required Time-ArrivalTime \\\ =(T_{clk}-T_{setup\_uncertain}+T_{clk2INC}+T_{INC2PINC}+T_{PINC2UFF1}-T^{UFF1}_{setup})-(T_{clk2INB}+T_{INB2POUT}+T_{POUT2UFF1}) \\\ =(T_{clk}-T_{setup\_uncertain}+T_{clk2INC}+T_{INC2PINC})-(T_{clk2INB}+T_{INB2POUT}) -T^{UFF1}_{output} \\\ \tag{4.1} 0<Tsetup_slackUFF02UFF1=RequiredTimeArrivalTime =(TclkTsetup_uncertain+Tclk2INC+TINC2PINC+TPINC2UFF1TsetupUFF1)(Tclk2INB+TINB2POUT+TPOUT2UFF1) =(TclkTsetup_uncertain+Tclk2INC+TINC2PINC)(Tclk2INB+TINB2POUT)ToutputUFF1 (4.1)

其中, T s e t u p _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{setup\_slack} Tsetup_slackUFF02UFF1Positive indicates that the timing check has passed.

4.2. Hold time T hold T_{hold}Tholdexamine

STA on capture trigger UFF1

● UFF1/D end old data is actually updated time (Arrival Time): T clk + T hold _ uncertain + T clk 2 INB + TINB 2 POUT + TPOUT 2 UFF 1 T_{clk}+T_{hold\_uncertain}+ T_{clk2INB}+T_{INB2POUT}+T_{POUT2UFF1}Tclk+Thold_uncertain+Tclk2INB+TINB2POUT+TPOUT2UFF1

reg2reg型中的Arrival Time为 T c l k + T h o l d _ u n c e r t a i n + T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1} Tclk+Thold_uncertain+Tc l k 2 U FF 0+TCK2QUFF 0 _+TUFF02UFF1, which is equivalent to the Arrival Time in the input2reg type.
The time when the old data at the UFF1/D end is actually updated is equivalent to the time when the new data actually arrives at the UFF1/D end.

● UFF1/D端旧数据应该更新的时间(Required Time): T c l k + T h o l d _ u n c e r t a i n + T c l k 2 I N C + T I N C 2 P I N C + T P I N C 2 U F F 1 + T h o l d U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2INC}+T_{INC2PINC}+T_{PINC2UFF1}+T^{UFF1}_{hold} Tclk+Thold_uncertain+Tclk2INC+TINC2PINC+TPINC2UFF1+TholdUFF1

reg2reg型中的Required Time为 T c l k + T h o l d _ u n c e r t a i n + T c l k 2 U F F 1 + T h o l d U F F 1 T_{clk}+T_{hold\_uncertain}+T_{clk2UFF1}+T^{UFF1}_{hold} Tclk+Thold_uncertain+Tclk2UFF1+TholdUFF1, equivalent to Required Time in input2reg type

So the hold time margin of UFF1 in path UFF0-UFF1 is:

0 < T h o l d _ s l a c k U F F 02 U F F 1 = A r r i v a l T i m e − R e q u i r e d T i m e   = ( T c l k 2 I N B + T I N B 2 P O U T + T P O U T 2 U F F 1 ) − ( T c l k 2 I N C + T I N C 2 P I N C + T P I N C 2 U F F 1 + T h o l d U F F 1 )   = ( T c l k 2 I N B + T I N B 2 P O U T ) − ( T c l k 2 I N C + T I N C 2 P I N C ) + T o u t p u t U F F 1   (4.2) 0<T^{UFF02UFF1}_{hold\_slack}=ArrivalTime-Required Time \\\ =(T_{clk2INB}+T_{INB2POUT}+T_{POUT2UFF1})-(T_{clk2INC}+T_{INC2PINC}+T_{PINC2UFF1}+T^{UFF1}_{hold}) \\\ =(T_{clk2INB}+T_{INB2POUT})-(T_{clk2INC}+T_{INC2PINC}) +T^{UFF1}_{output} \\\ \tag{4.2} 0<Thold_slackUFF02UFF1=ArrivalTimeRequiredTime =(Tclk2INB+TINB2POUT+TPOUT2UFF1)(Tclk2INC+TINC2PINC+TPINC2UFF1+TholdUFF1) =(Tclk2INB+TINB2POUT)(Tclk2INC+TINC2PINC)+ToutputUFF1 (4.2)

其中, T h o l d _ s l a c k U F F 02 U F F 1 T^{UFF02UFF1}_{hold\_slack} Thold_slackUFF02UFF1Positive indicates that the timing check has passed. It can be seen that the hold time margin is independent of the clock period.

Guess you like

Origin blog.csdn.net/Starry__/article/details/129780398