https://open-source-silicon.dev logo
o

Olof Kindgren

12/28/2021, 7:01 PM
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

Olof Kindgren

12/28/2021, 7:14 PM
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

Matt Venn

12/28/2021, 7:19 PM
You should be able to find it with klayout, magic or openroad gui
But I couldn't tell you how
o

Olof Kindgren

12/28/2021, 7:19 PM
Oh, I thought those only had layout viewers
m

Matt Venn

12/28/2021, 7:19 PM
But they know the names of the nets
k

Kunal

12/28/2021, 7:19 PM
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

Olof Kindgren

12/28/2021, 7:23 PM
Thanks @User
m

Maximo Balestrini

12/28/2021, 11:13 PM
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

Olof Kindgren

12/28/2021, 11:21 PM
Thanks @User That does sound very useful.