So, I'm getting a bunch of slew rate warnings from...
# openlane
o
So, I'm getting a bunch of slew rate warnings from the finished build, like
Copy code
Pin                                    Limit    Slew   Slack
------------------------------------------------------------
_20535_/A                               1.50    2.21   -0.71 (VIOLATED)
_20164_/A                               1.50    2.21   -0.71 (VIOLATED)
_20901_/A                               1.50    2.21   -0.71 (VIOLATED)
_21281_/A                               1.50    2.20   -0.70 (VIOLATED)
_23513_/A                               1.50    2.20   -0.70 (VIOLATED)
_23143_/A                               1.50    2.20   -0.70 (VIOLATED)
_21649_/A                               1.50    2.20   -0.70 (VIOLATED)
ANTENNA_372/DIODE                       1.50    2.20   -0.70 (VIOLATED)
_22759_/A                               1.50    2.20   -0.70 (VIOLATED)
_22020_/A                               1.50    2.20   -0.70 (VIOLATED)
How would one go about debugging and potentially fixing those? I have absolutely no clue what _20535_/A is
This is all I know about it
o
My first guess would be a slow slew rate being caused by a high fanout, which could potentially be fixed on the design side with an RTL change or forced buffer insertion. But I still have no clue where this is
I know where pretty much every FF is in the design so I'm right now considering to follow the synthesized netlist to see where it starts to look familiar
Once again cursing the lack of a decent FOSSi netlist viewer
m
You should be able to find it with klayout, magic or openroad gui
But I couldn't tell you how
o
Oh, I thought those only had layout viewers
m
But they know the names of the nets
k
You can print "net", "fanout" and "load" values in this report. This will report which is the exact net where you see huge load capaitance Once you get that, view that net using klayout or magic. May be it's a long net with no high fanout synthesis done
command should be report_checks -through <cellname>/A -fields {.....} Something similar, where in "-fields" switch, you should be able to put "nets", "fanout", etc....
o
Thanks @User
m
I definitely recommend using OpenROAD gui to debug this things (you'll have to download OpenROAD and compile it). You can search nets & instances by name and then follow their inputs/outputs I've also created a repo with some openroad scripts to help with loading openlane or caravel results (including the timing reports). They are a bit messy but they do their job: https://github.com/mbalestrini/openroad_useful_scripts
o
Thanks @User That does sound very useful.