pdn: Add ability to create a grid with more that 2 nets (POWER / GROUND)
Description
Related dicsussion: https://github.com/The-OpenROAD-Project/OpenROAD/discussions/8734
I'd like to create a power grid with 3 nets VDDD1V2, VDDD and GNDD. VDDD1V2 and GNDD are connected to the followpins. VDDD, however, is only used to provide a secondary power for level shifters.
Currently PDN only supports 2 nets with set_voltage_domain -power VDDD1V2 -ground GNDD.
Suggested Solution
Something like: set_power_ground_nets {VDDD1V2 VDDD GNDD}.
Additional Context
No response
As a workaround tested the code below. It creates another grid with: - VDDD between VDDD1V2 and GNDD - GNDD overlapping the GNDD stripe created by the previous grid - both created stripes do not connect to followpins
set_voltage_domain -power VDDD1V2 -ground GNDD
define_pdn_grid -name "Core"
add_pdn_stripe -followpins -layer metal1 -width 1.4
add_pdn_stripe -layer metal4B -width 6 -pitch 139.7 -spacing [expr 9 + 6 + 8.8] -offset 60.4 -starts_with POWER
add_pdn_stripe -layer alucap -width 6 -pitch 280 -spacing [expr 9 + 6 + 8.8] -offset 199.8 -starts_with POWER
add_pdn_connect -layers {metal4B alucap}
add_pdn_connect -layers {metal1 metal4B} -max_columns 5 -max_rows 2
pdngen
set_voltage_domain -power VDDD -ground GNDD
define_pdn_grid -name "Core2"
add_pdn_stripe -layer metal4B -width 6 -pitch 139.7 -spacing [expr 8.8] -offset [expr 60.4 + 6 + 9] -starts_with POWER
add_pdn_stripe -layer alucap -width 6 -pitch 280 -spacing [expr 8.8] -offset [expr 199.8 + 6 + 9] -starts_with POWER
add_pdn_connect -layers {metal4B alucap}
pdngen
Have you looked at: https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/pdn#define-voltage-domain
I looked at it. I add the -secondary_power to the command. It is now:
set_voltage_domain -power VDDD1V2 -ground GNDD -secondary_power VDDD
The result is:
The VDDD vertical straps do not go the the floorplan boundary which is required. Also the straps order is VDDD1V2, GNDD and VDDD . I need it to be VDDD1V2, VDDD and GNDD as explained in https://github.com/The-OpenROAD-Project/OpenROAD/issues/7872.
With the workaround with 2 calls pdngen:
It matches the requirements although not perfect.
Note that in 4 RF designs done several years ago, we used a grid with 4 PG nets: - VDD 1.2 V switchable - VDD 1.2 V always on - VDD 3.3 V - GND