Closed Syndace closed 2 months ago
It's been in this state from the day I started maintaining this codebase- I can't wrap my head around it, personally. I would be surprised if it still works.
Let me take a look.
OR provides pad frame generation as well if that is helpful (https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/pad/doc/README.md)
Thanks @maliberty, that was a great hint. I managed to add OR padframe generation to OpenLane's floorplanning script and it works quite well. The only thing I'm struggling with is connecting the padframe to the core power net, but that's out-of-scope for this issue I believe.
Feel free to close this issue if you don't want to keep it open for feature tracking purposes.
@donn do you want a contribution in this area or should I close this?
Feel free to open another issue for the pdn if needed.
No, I would appreciate a contribution in this area.
I'd be happy to contribute this once we've made it through the tapeout :)
Sorry for taking so long to get back to this. The way I did it is by simply adding a flow variable called PADS_TCL
, which is sourced at the end of floorplanning and allows designs to add a padring or bumps to the floorplan by calling ICeWall commands.
This is my git diff for that change:
--- a/scripts/openroad/floorplan.tcl
+++ b/scripts/openroad/floorplan.tcl
@@ -106,4 +106,8 @@ puts -nonewline $core_area_file $::env(CORE_AREA)
close $core_area_file
close $die_area_file
+if { [info exists ::env(PADS_TCL)] } {
+ source $::env(PADS_TCL)
+}
+
write
This isn't a very sophisticated solution, but it got us a beautifully working chip and I personally don't think it makes much sense to add a lot of automation/abstraction around pad generation.
You can track our progress adding this to OpenLane 2. (The problem is as a company literally selling a padframe there's not much of a drive for us to add one 😅)
I could use some help wrapping my head around the padframe generation procedure. As you are already aware (#1082), the documentation is outdated. Even after tracking down the 404s in the docs to https://github.com/efabless/caravel/tree/main/openlane/chip_io, I'm met with 10 months old scripts that don't work any more.
I found three potentially relevant scripts/commands:
scripts/odbpy/padringer.py
scripts/padframe_generator.py
padframe_gen
interactive command, which usesscripts/padframe_generator.py
under the hood (most promising to me but can't get it to work)I'm a bit lost. None of the example designs shipped with OpenLane generate their own padframe either. How do I approach padframe generation?