I'm having problems with PDN generation. Can someo...
# openlane
h
I'm having problems with PDN generation. Can someone please tell me how to solve this problem? My design is at https://github.com/Hagiwara-shc/marmot_asic.git . It contains 14 SRAM macros under user_project_wrapper. When I make user_project_wrapper, it stops with the following error.
Copy code
[WARNING PSM-0038] Unconnected PDN node on net vccd2 at location (388.800um, 1746.550um), layer: 5.
[WARNING PSM-0038] Unconnected PDN node on net vccd2 at location (205.200um, 1746.550um), layer: 5.
[WARNING PSM-0038] Unconnected PDN node on net vccd2 at location (210.600um, 1746.550um), layer: 5.
[ERROR]: PDN generation failed.
[ERROR]: You may need to adjust your macro placements or PDN  offsets/pitches to power all standard cell rails (or other PDN stripes)  in your design.
a
Could you open your DEF in openroad gui? I want to take a look at SRAM placement. Also where the vccd2 is comming from? In your config there is no vccd2, am I missing something?
but yeah, what @User said - load the pdn and see where those co-ordinates are
h
Here is a screen shot.
😍 1
Yes, I could read gzipped gds.
I have no clue about vccd2.
m
ok I have a guess
image.png
this is where the pdn gets to
I'm just wondering if there's not enough space between your macros for the PDN to be complete
r
Sounds possible for me as well. In my project, I had to do set ::env(FP_PDN_HORIZONTAL_HALO) 50 set ::env(FP_PDN_VERTICAL_HALO) 50 to avoid collisions between routed signals and the little space between macros. Maybe that helps here as well. For this design, I would start with larger values (such as 200) for both settings to begin with.
h
Thank you, all. I removed 4 SRAM macros to have more space and added
Copy code
set ::env(FP_PDN_HPITCH) 100
set ::env(FP_PDN_VPITCH) 100
then, PDN generation was successful. But now, I have following error...
Copy code
[INFO GRT-0004] Blockages: 3407

[INFO GRT-0053] Routing resources analysis:
          Routing      Original      Derated      Resource
Layer     Direction    Resources     Resources    Reduction (%)
---------------------------------------------------------------
li1        Vertical            0             0          0.00%
met1       Horizontal    4314600       1327450          69.23%
met2       Vertical      3235950        948898          70.68%
met3       Horizontal    2157300        665518          69.15%
met4       Vertical      1510110        308536          79.57%
---------------------------------------------------------------

[INFO GRT-0101] Running extra iterations to remove overflow.
[INFO GRT-0197] Via related to pin nodes: 4414
[INFO GRT-0198] Via related Steiner nodes: 228
[INFO GRT-0199] Via filling finished.
[INFO GRT-0111] Final number of vias: 8169
[INFO GRT-0112] Final usage 3D: 263348
[ERROR GRT-0118] Routing congestion too high.
Error: groute.tcl, 69 GRT-0118
[ERROR]: during executing openroad script /openlane/scripts/openroad/groute.tcl
[ERROR]: Exit code: 1
[ERROR]: Last 10 lines:
child process exited abnormally
m
I'm normally leaving at least 150um between macros to allow routing to succeed
h
Is there any way to know where the routing congestion is?
m
when it fails you should get left with an xml file in the runs directory
then you can load that with klayout

https://youtu.be/ieE24mvkLi4

h
There is no xml file in the runs directory, no gds as well. There are only the following defs and lefs.
Copy code
./runs/user_project_wrapper/results/placement/user_project_wrapper.def
./runs/user_project_wrapper/tmp/placement/10-global.def
./runs/user_project_wrapper/tmp/floorplan/4-io.macro_placement.def
./runs/user_project_wrapper/tmp/floorplan/4-io.def
./runs/user_project_wrapper/tmp/floorplan/3-initial_fp.def
./runs/user_project_wrapper/tmp/floorplan/8-pdn.def
./runs/user_project_wrapper/tmp/floorplan/6-pdn.def
./runs/user_project_wrapper/tmp/floorplan/9-pdn.def
./runs/user_project_wrapper/tmp/floorplan/7-pdn.def
./runs/user_project_wrapper/openroad_issue_reproducible/in.def

./runs/user_project_wrapper/tmp/merged.lef
./runs/user_project_wrapper/tmp/merged_unpadded.lef
./runs/user_project_wrapper/openroad_issue_reproducible/tmp/merged_unpadded.lef