Skip to content

Commit b0bf830

Browse files
committed
gt2n: extend backside PDN with BM1/BM2 mesh, add backside RC
BPR followpins on their own do not stitch the per-row vdd/vss rails together, so the backside grid was a chain of disconnected horizontal strips. Add a two-layer perpendicular mesh (BM1 vertical, BM2 horizontal) plus BV0/BV1 connects, modeled on asap7's M5/M6 over M1/M2 followpin pattern. Top of the standard-cell grid is now BM2. Also adds resistance values for the backside cut layers (BV0..BV4) to setRC.tcl so PSM's analyze_power_grid does not error out with PSM-0021 when the PG network includes backside vias. Calls out that every RC value in this file is a placeholder, not silicon-calibrated. Verified end-to-end on gt2n/gcd: 873s wall time, 0 DRC violations, 0 ANT violations. Signed-off-by: Matthew Guthaus <mrg@ucsc.edu>
1 parent d498afc commit b0bf830

2 files changed

Lines changed: 48 additions & 25 deletions

File tree

flow/platforms/gt2n/pdn.tcl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@ global_connect
99
####################################
1010
set_voltage_domain -name {CORE} -power {vdd} -ground {vss}
1111
####################################
12-
# standard cell grid (backside power: just BPR followpins for now)
12+
# standard cell grid (backside power: BPR followpins + BM1/BM2 mesh)
1313
####################################
14-
define_pdn_grid -name {grid} -voltage_domains {CORE} -pins {BPR}
14+
define_pdn_grid -name {grid} -voltage_domains {CORE} -pins {BM2}
1515
add_pdn_stripe -grid {grid} -layer {BPR} -width {0.032} -pitch {0.144} -offset {0} -followpins
16+
# BM1 perpendicular to BPR; modest mesh density.
17+
add_pdn_stripe -grid {grid} -layer {BM1} -width {0.224} -spacing {0.112} \
18+
-pitch {1.792} -offset {0.896}
19+
# BM2 perpendicular to BM1, wider for lower IR.
20+
add_pdn_stripe -grid {grid} -layer {BM2} -width {0.448} -spacing {0.112} \
21+
-pitch {1.792} -offset {0.896}
22+
add_pdn_connect -grid {grid} -layers {BPR BM1}
23+
add_pdn_connect -grid {grid} -layers {BM1 BM2}

flow/platforms/gt2n/setRC.tcl

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,52 @@
1-
# Per-length wire RC for GT2N derived from GT2N/qrc/GT2.ict.
1+
# Per-length wire RC for GT2N. Resistance values are R_BEOL from
2+
# Jang et al., GT2N Fig. 1(b) (Ohm/um, already in the units Liberty
3+
# expects). Capacitance values are still rough placeholders -- the
4+
# ICT shipped with the PDK does not contain extracted C -- so they
5+
# should be replaced with values from a calibrated RCX/QRC model
6+
# before treating any C-derived quantity as physical. Via resistances
7+
# are also placeholders, scaled roughly by cut size.
8+
#
29
# Liberty units in gt2_6t_w31_lvt_tt_0p7v25c.lib:
310
# pulling_resistance_unit : 1ohm -> R values are ohm / um
411
# capacitive_load_unit(1, pf) -> C values are pf / um
5-
#
6-
# R per length is computed as (resistivity [uOhm.cm] * 0.01) / (thickness [um])
7-
# divided by the minimum wire width, giving ohm / um. Capacitance is a rough
8-
# guess (no PEX data shipped in the ICT for these layers).
912

10-
# Front-side routing
11-
set_layer_rc -layer M0 -resistance 259 -capacitance 1.5e-4
12-
set_layer_rc -layer M1 -resistance 156 -capacitance 1.5e-4
13-
set_layer_rc -layer M2 -resistance 259 -capacitance 1.5e-4
14-
set_layer_rc -layer M3 -resistance 156 -capacitance 1.5e-4
15-
set_layer_rc -layer M4 -resistance 40 -capacitance 1.7e-4
16-
set_layer_rc -layer M5 -resistance 40 -capacitance 1.7e-4
17-
set_layer_rc -layer M6 -resistance 3.5 -capacitance 2.0e-4
18-
set_layer_rc -layer M7 -resistance 3.5 -capacitance 2.0e-4
19-
set_layer_rc -layer M8 -resistance 3.5 -capacitance 2.0e-4
20-
set_layer_rc -layer M9 -resistance 3.5 -capacitance 2.0e-4
21-
set_layer_rc -layer M10 -resistance 0.67 -capacitance 2.5e-4
13+
# Front-side routing (R from Fig. 1(b))
14+
set_layer_rc -layer M0 -resistance 622 -capacitance 1.5e-4
15+
set_layer_rc -layer M1 -resistance 438 -capacitance 1.5e-4
16+
set_layer_rc -layer M2 -resistance 622 -capacitance 1.5e-4
17+
set_layer_rc -layer M3 -resistance 438 -capacitance 1.5e-4
18+
set_layer_rc -layer M4 -resistance 166 -capacitance 1.7e-4
19+
set_layer_rc -layer M5 -resistance 166 -capacitance 1.7e-4
20+
set_layer_rc -layer M6 -resistance 26 -capacitance 2.0e-4
21+
set_layer_rc -layer M7 -resistance 26 -capacitance 2.0e-4
22+
set_layer_rc -layer M8 -resistance 26 -capacitance 2.0e-4
23+
set_layer_rc -layer M9 -resistance 26 -capacitance 2.0e-4
24+
set_layer_rc -layer M10 -resistance 7.5 -capacitance 2.5e-4
25+
set_layer_rc -layer M11 -resistance 7.5 -capacitance 2.5e-4
26+
set_layer_rc -layer M12 -resistance 0.64 -capacitance 3.0e-4
27+
set_layer_rc -layer M13 -resistance 0.64 -capacitance 3.0e-4
2228

23-
# Backside (no calibration data in ICT; estimate from layer dimensions)
24-
set_layer_rc -layer BPR -resistance 30 -capacitance 1.0e-4
25-
set_layer_rc -layer BM1 -resistance 5 -capacitance 1.5e-4
26-
set_layer_rc -layer BM2 -resistance 5 -capacitance 1.5e-4
29+
# Backside (R from Fig. 1(b))
30+
set_layer_rc -layer BPR -resistance 28 -capacitance 1.0e-4
31+
set_layer_rc -layer BM1 -resistance 7.5 -capacitance 1.5e-4
32+
set_layer_rc -layer BM2 -resistance 7.5 -capacitance 1.5e-4
33+
set_layer_rc -layer BM3 -resistance 0.64 -capacitance 1.5e-4
34+
set_layer_rc -layer BM4 -resistance 0.64 -capacitance 1.5e-4
2735

28-
# Via resistances (rough)
36+
# Via resistances (fake; rough scaling vs. cut size)
2937
set_layer_rc -via V0 -resistance 10
3038
set_layer_rc -via V1 -resistance 10
3139
set_layer_rc -via V2 -resistance 8
3240
set_layer_rc -via V3 -resistance 8
3341
set_layer_rc -via V4 -resistance 5
3442
set_layer_rc -via V5 -resistance 5
3543

44+
# Backside via resistances (fake; same scale as front-side V0..V4)
45+
set_layer_rc -via BV0 -resistance 10
46+
set_layer_rc -via BV1 -resistance 8
47+
set_layer_rc -via BV2 -resistance 8
48+
set_layer_rc -via BV3 -resistance 5
49+
set_layer_rc -via BV4 -resistance 5
50+
3651
set_wire_rc -signal -layer M3
37-
set_wire_rc -clock -layer M5
52+
set_wire_rc -clock -layer M5

0 commit comments

Comments
 (0)