Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

setting clock setup&hold uncertainity

Status
Not open for further replies.

eng.amr2009

Junior Member level 3
Joined
Dec 21, 2009
Messages
25
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Egypt
Activity points
1,509
Hi guys,

I have been searching about the clock uncertainty and what I got is that it represents the maximum skew @ clock inputs of different flops for a given clock tree. If this understanding is correct kindly confirm.

My question here is, what are the basis that I should use to be able to set the clock uncertainty in synthesis flow ? And if I leave it unset, what would the tool assume ?
Sometimes I have seen that the clock setup&hold uncertainties are not equal !! What does this mean ?
Based on my understanding above, there is a maximum value of positive or negative skew around the ideal clock edge, what is the meaning of setup&hold terms in this context ?


Thanks,
Best Regards,
 

SunnySkyguy

Advanced Member level 5
Joined
Sep 26, 2007
Messages
6,743
Helped
1,675
Reputation
3,348
Reaction score
1,644
Trophy points
1,413
Location
Richmond Hill, ON, Canada
Activity points
50,732

eng.amr2009

Junior Member level 3
Joined
Dec 21, 2009
Messages
25
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Egypt
Activity points
1,509
Thanks for your reply.

But I'm aware of the setup & hold basics. I'm asking about the setup & hold clock uncertainty not the setup & hold for the flops. I can not relate them as the concept of clock uncertainty represents the skew between clock edges @ flop clock inputs. Is there any reason to have a setup uncertainty different from hold uncertainty ?
Or should I set them equal ?

In case I do not constrain the clock uncertainty what will the tool do ?
 

sharath666

Advanced Member level 2
Joined
Apr 4, 2011
Messages
552
Helped
126
Reputation
252
Reaction score
124
Trophy points
1,323
Location
India
Activity points
3,830
The setup uncertainty will usually not be equal to the hold uncertainty. I am not aware of the reason apart from saying that it must be due to device physics.
In case you don't specify these uncertainties the tool does a very optimistic timing analysis thereby giving you false hopes.
 

rfurtner

Newbie level 1
Joined
Mar 31, 2015
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
22
Setup uncertainty is used to specify the expected maximum variance in the clock tree under worst-case conditions. It is only specified prior to clock tree synthesis and back-annotation. (Once the clock tree is generated, the actual uncertainty can be calculated by the static analysis tool)

The reason for setup and hold uncertainty is that static timing analyzers use the clock period and 'worst case' numbers for finding setup violations. For hold violations, a static timing analyzer uses 'best case' numbers, and for single-clock circuits, the clock period doesn't matter for determining hold time violations.

Suppose we have the circuit in the attached txt file: View attachment ckt.txt
For setup uncertainty, suppose under worst-case conditions (temperature, voltage, process variations)

delay_u1=1.0ns
delay_u2=1.0ns
delay_u3=0.5ns
delay_ff = 0ns
setup_ff=hold_ff=0.1ns

This means that data will "launch" from ff1 at t=2.0 ns, and every 10ns thereafter. (22ns, 32ns, etc)
Data will be "captured" at ff2 at t=1.5 ns, and every 10ns thereafter (11.5ns, 21.5ns, etc).

So, even though there's a 10ns clock *period*, in general there's a 0.5ns variance in the arrival time of the clock edge. So we need to tell the synthesis tool we expect 'uncertainty' in the clock arrival time under worst-case conditions of 0.5 ns:

create_clock -period 10 [get_ports CLK]
set_clock_uncertainty -setup 0.5 [get_clocks CLK]

This tells the static analysis tool that for *any* flop-to-flop path, the maximum time between two flip-flops that can be used for setup calculations is (10-0.5-0.1)=9.4ns

For hold uncertainty, suppose under best-case conditions (temperature, voltage, process variations)

delay_u1=0.0ns
delay_u2=0.0ns
delay_u3=0.2ns

So, we need to tell the static analysis tool we expect an 0.2ns variation in our clock tree under best-case conditions, via
set_clock_uncertainty -hold 0.2 [get_clocks CLK]

This means that data will "launch" from ff1 at t=0.0 ns, but data will not be 'launched' from ff2 until t=0.2. AND, ff2 has a hold time of 0.1ns, so new data can't appear at ff2 until t=0.3. So unless the best-case delay of the 'logic' is 0.3ns, the static analysis tool will flag a violation [a synthesis tool may insert buffers in the logic to increase the delay of the logic, which could paradoxically then cause a setup violation]

Hope this helps
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top