OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

pdn: Add ability to create a grid with more that 2 nets (POWER / GROUND)

Open titan73 opened this issue 1 month ago • 4 comments

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

titan73 avatar Oct 30 '25 13:10 titan73

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

titan73 avatar Oct 30 '25 13:10 titan73

Have you looked at: https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/pdn#define-voltage-domain

gadfort avatar Oct 30 '25 13:10 gadfort

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:

Image

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:

Image

It matches the requirements although not perfect.

titan73 avatar Oct 31 '25 16:10 titan73

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

titan73 avatar Oct 31 '25 16:10 titan73