Why doesn't clock transition time affect my timing analysis (PrimeTime)?

EE18

Newbie level 4
Joined
Aug 11, 2024
Messages
6
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
64
I am simulating the circuit attached with cells from the lsi_10k.lib built-in library (provided with Design Compiler/PrimeTime) and have enforced the constraints below:
As you can see, I do have a set_clock_transition command. Nevertheless, there is zero dependence on the value I provide there (whether 0 or very large). Why is this? I expect delay through the inverters (at least the first one on the path! In the report below this is the I1/Z (IVA) cell delay of 0.49 time units) to slow down, but this is not observed. The lsi_10k.lib library does seem to have enough information about the relevant cells that a delay calculator should compute different delays in different slew rate situations too, I think?

Setup analysis output:
Can anyone set me straight on what I'm missing?
 

Attachments

  • Screenshot.png
    492.4 KB · Views: 55

It might be something simple. I would check a few things. First, what is the unit. The liberty file usually specifies a default unit but it might be very small. Perhaps you are doing a rise time in picoseconds. Try, for example, set_units -time ns.

Is this pre or post P&R? Perhaps there is something wrong with the wire-load model being used.
Or maybe it is post P&R and then the clock is set to ideal. An ideal clock arrives at all places instantly. I bet it ignores the rise/fall time with ideal clocks. Maybe you need to do: set_propagated_clock [all_clocks]

And finally I would make sure you are really loading the right file. Sounds like a dumb mistake but it happens. I have spent long time changing one file and wondering why it has no impact and finding out I was loading a different file. Often when you make changes to a file and you see no impact it is a sign you are changing the wrong file. As a sanity I occasionally will add a typo to the file and load it to see if I see the syntax error. A simple way to make sure I am changing the right file.
 

Thank you for your comments! I am away for the weekend so can't try this out, but will report back when I do.

Incidentally, do you think it's possibly because I am using set_propagated_delay for the clock (to answer your question this is pre-PnR but I do have buffers on my clock path as you can see, and I have said nothing about wire loads in my constraint file so this is using defaults presumably)? I have a vague recollection that I somewhere read that that can override any other clock settings. Could that be the culprit? I would have thought that set_propagated_clock defined clock behaviour within the circuit, with no problem using set_transition_time to define how the clock (skew) is delivered (from outside) to the design, but perhaps this is not correct.
 

Actually in PT, if you use "set_propagated_clock [get_clocks CLK]", then "set_clock_transition 2 [get_clocks CLK]" will be ignored . The transition of clock pin will the be the value that is caculated . If you want to check the transition value in pin , you can add "-transition_time" option after report_timing
 

Thank you! But one further question remains: surely there must be some way to set the clock transition rate which is seen at the external CLK port? That's what I'm trying to do here. I get that set_propagated_clock uses the delay calculated values for the clock once it's in the design, but surely I should be able to apply different slews from the outside to the design as a whole?
 

Cookies are required to use this site. You must accept them to continue using the site. Learn more…