Module 3: Floorplanning · 3.2 Power Planning

Configuring a Power Grid in OpenLane

Everything in the last two articles, a ring, a few straps, reasoning about which cells sit close to one, has a direct config-field equivalent in OpenLane. There is no new model here, only the vocabulary OpenLane uses for the one you already have.

The knobs

PDN generation is controlled by a family of FP_PDN_* fields in config.json. The ones that map onto the sketch:

Field Controls
FP_PDN_CORE_RING Whether a ring is generated around the core at all
FP_PDN_VWIDTH / FP_PDN_HWIDTH Width of vertical and horizontal straps (and ring segments)
FP_PDN_VPITCH / FP_PDN_HPITCH Centre-to-centre spacing between vertical and horizontal straps
FP_PDN_VOFFSET / FP_PDN_HOFFSET Where the first strap in each direction starts, relative to the core edge
FP_PDN_VERTICAL_LAYER / FP_PDN_HORIZONTAL_LAYER Which metal layers carry the vertical and horizontal grid (typically the thick upper layers)

For the 40 by 40 µm counter8 core, a config section built from the sketch, three straps each way spaced about a third of the core apart:

{
  "FP_PDN_CORE_RING": 1,
  "FP_PDN_VWIDTH": 1.6,
  "FP_PDN_HWIDTH": 1.6,
  "FP_PDN_VPITCH": 13.3,
  "FP_PDN_HPITCH": 13.3,
  "FP_PDN_VOFFSET": 6.5,
  "FP_PDN_HOFFSET": 6.5,
  "FP_PDN_VERTICAL_LAYER": "met4",
  "FP_PDN_HORIZONTAL_LAYER": "met5"
}

A 13.3 µm pitch across a 40 µm core places straps at roughly 6.5, 19.8 and 33.1 µm from the core edge, three interior crossings each way. These numbers illustrate the pitch and offset relationship; a PDK-validated run would settle its own.

Strap width and pitch have to respect the PDK’s minimum width and spacing for the chosen layer. OpenLane rejects a PDN configuration that violates SKY130’s rules for met4 and met5 rather than generating an illegal grid. If you hit that error, the fix is almost always to widen the pitch or narrow the strap, not to override the check.

Running it

In interactive mode, PDN generation happens inside the floorplan step, after the core and die geometry is set:

% prep -design counter8
% run_floorplan
[INFO]: Generating floorplan...
[INFO]: Core area set to 5.00 5.00 45.00 45.00 (die 0.00 0.00 50.00 50.00)
[INFO]: Generating power distribution network...
[INFO]:   Core ring: met4/met5, width 1.60, offset 2.00
[INFO]:   Vertical straps (met4): 3 straps, pitch 13.30, width 1.60
[INFO]:   Horizontal straps (met5): 3 straps, pitch 13.30, width 1.60
[INFO]: Writing floorplan DEF to runs/<tag>/results/floorplan/counter8.floorplan.def

The log is doing what the first article’s sketch did, with real geometry and real layer names. The DEF now contains SPECIALNETS entries for VPWR and VGND, the ring and strap polygons on met4 and met5 at the coordinates OpenLane computed from your pitch and offset. You will open this file in Magic or KLayout at the end of the module and see those shapes for the first time.

Every PDN knob is a dial on the IR-drop trade from the previous article. A tighter pitch means a shorter average distance from any cell to a strap and lower worst-case drop, at the cost of routing resources consumed by the grid instead of by signal nets. There is no free lunch, only a choice of where to spend it.

From the config above, work out roughly how far the core’s centre (20, 20 in core coordinates) sits from the nearest strap crossing. With straps at about 6.5, 19.8 and 33.1 µm each way, the nearest crossing is at (19.8, 19.8), within about 1 µm of centre. That is a deliberately favourable outcome for a small design; on a larger core with the same pitch, more of the interior would sit farther from a crossing.

Practice Exercise

You inherit a config with FP_PDN_VPITCH set to 60 for a 40 µm wide core. What does that imply about how many interior vertical straps are generated, and is it reasonable for this core?

Solution

A 60 µm pitch is wider than the whole 40 µm core, so at most one vertical strap (plus the ring) fits, effectively no interior strapping. That is a poor setting: by the previous article’s reasoning, most of the interior would be far from any strap, spreading IR drop risk across nearly the whole core instead of the small pockets a properly pitched grid leaves. Shrink FP_PDN_VPITCH to something meaningfully smaller than the core dimension, as the worked example did with 13.3 µm on a 40 µm core.

The power grid is built. In the next section we turn to a different floorplan decision: where every I/O pin on the die boundary lands, starting with pin order and side assignment.

← IR Drop, Intuitively Pin Order and Side Assignment →