Replies: 2 comments
-
|
Can you provide a test case for the SDF generation? Its pretty hard to guess. Have you looked at the paths to such an endpoint to see if they look reasonable? |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for your reply. I've managed to get the SDF to annotate by removing certain things from it: For example, I have a timing check like this: (TIMINGCHECK But, in the verilog description for the gate in question, there is no $removal specified. Then, for some reason, I have this timing check: (TIMINGCHECK But the library has the other edge: And finally, most of my setup/hold checks seem to be invalid, like this one: (TIMINGCHECK So the sum of hold time and setup time is negative. In other words the signal can arrive after the point that it can be removed! It looks to me like the setup times should be positive, not negative. How or why does OpenROAD generate an SDF like that? And finally, for a D flip flop, why is there a setup and hold for both edges of the clock? Any thoughts please? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I am attempting to run post layout simulation on an OpenROAD deisgn. So, here's a summary of what I did:
Now export a verilog netlist and an sdf file (to be sure of consistent files):
3) write_verilog netlist.v
4) write_sdf -corner fast spi_register_block.fast.sdf
Annotate from the test bench:
And here's an excerpt of what I see:
Hundreds of warnings like this: Bad $setuphold constraints: -181 ps and 178 ps. Limit sum must be greater than 0. Negative limit(s) set to zero.
A large number of errors like this one: # ** Error (suppressible): (vsim-SDF-3262) spi_register_block.fast.sdf(26097): Failed to find matching specify timing constraint. [FD2D4(fast):../../../../../../../firmware/sensors/xxxx/yyyy/RTL/zzzz.v(2855)]
So it seems that the sdf is invalid (impossible setup and hold times) and it also doesn't perfectly match the netlist. I've been pretty careful to eliminate user error. So what's going on? Anybody any idea where to look? Do I have library problems?
Beta Was this translation helpful? Give feedback.
All reactions