hi Yuhiub90,
as I'm using uncertainty in synthesizing, it's just used as a margin which you want to reserve for Back-End later.
in my case, synthesizer do not build clock tree follow the uncertainty and clock-tree timing is idea.
I put a short report timing to you bellow:
Code:
Point Fanout Cap Trans Incr Path
----------------------------------------------------------------------------------------------
clock clk_core (rise edge) 0.00 0.00
[B]clock network delay (ideal)[/B] 0.00 0.00
.
.
.
clock clk_core (rise edge) 1.125 1.125
clock network delay (ideal) 0.000 1.125
[B] inter-clock uncertainty -0.250 0.875[/B]
output external delay -0.837 0.038
data required time 0.038
----------------------------------------------------------------------------------------------
data required time 0.038
data arrival time -0.091
----------------------------------------------------------------------------------------------
slack (VIOLATED) -0.053
you can see the uncertainty in example make slack more pessimism.
totally, as I know, uncertainty is used for model clk skew, jitter, ... as margin for design.
- - - Updated - - -
Which one is better, constrain or non-constrain it?
I forgot this thing, if you have right uncertainty, then you're good to meet your timing goal.
- you put an enough uncertainty, can help synthesis tool follow and optimize more in your design.
- if you do not specify uncertainty, maybe your design is met as 0 margin, and synthesis tool do not need to optimize --> back-end guy will kill you if their work become more complex.
- if you specify uncertainty too big, synthesis tool will give up because of impossible optimization.