blob: b610fed0d77d942af362d1cd757d010ed1841d24 [file] [log] [blame]
# Copyright 2019-2021 SkyWater PDK Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# This code is *alternatively* available under a BSD-3-Clause license, see
# details in the README.md at the top level and the license text at
# https://github.com/google/skywater-pdk-libs-sky130_bag3_pr/blob/master/LICENSE.alternative
#
# SPDX-License-Identifier: BSD-3-Clause OR Apache 2.0
# PDK library name.
tech_lib: 'skywater130'
# layout unit, in meters.
layout_unit: 1.0e-6
# layout resolution, in layout units.
resolution: 0.005
# GDS export layout resolution
gds_resolution: 0.001
# True if BAG needs to handle coloring metals.
use_track_coloring: True
# default purpose name
default_purpose: drawing
# pin purpose name
pin_purpose: pin
# True to create pin objects
make_pin_obj: True
imp_layers:
nch: !!python/tuple ['nsdm', 'drawing']
pch: !!python/tuple ['psdm', 'drawing']
ptap: !!python/tuple ['psdm', 'drawing']
ntap: !!python/tuple ['nsdm', 'drawing']
# mapping from metal layer ID to layer/purpose pair that defines
# a metal resistor.
res_metal_layer_table: {}
# 1: [!!python/tuple ['m1res', 'drawing']]
# 2: [!!python/tuple ['m2res', 'drawing']]
# 3: [!!python/tuple ['m3res', 'drawing']]
# 4: [!!python/tuple ['m4res', 'drawing']]
# 5: [!!python/tuple ['m5res', 'drawing']]
# mapping from metal layer ID to layer/purpose pair that
# defines metal exclusion region.
metal_exclude_table: {}
# 1: !!python/tuple ['met1', 'drawing']
# 2: !!python/tuple ['met2', 'drawing']
# 3: !!python/tuple ['met3', 'drawing']
# 4: !!python/tuple ['met4', 'drawing']
# 5: !!python/tuple ['met5', 'drawing']
exclude_is_blockage: true
# mapping from metal layer ID to metal layer name. Assume purpose is 'drawing'.
lay_purp_list: &lp_list
1: [!!python/tuple ['met1', 'drawing']]
2: [!!python/tuple ['met2', 'drawing']]
3: [!!python/tuple ['met3', 'drawing']]
4: [!!python/tuple ['met4', 'drawing']]
5: [!!python/tuple ['met5', 'drawing']]
dum_lay_purp_list: *lp_list
width_intervals:
1:
- [[28, 801]]
- [[28, .inf]]
2:
- [[28, .inf]]
- [[28, 801]]
3:
- [[60, 801]]
- [[60, .inf]]
4:
- [[60, .inf]]
- [[60, 2001]]
5:
- [[284, .inf]]
- [[284, .inf]]
# mapping from tuple of via layers to via ID.
via_id:
[!!python/tuple ['tap', 'drawing'], !!python/tuple ['li1', 'drawing']]: TPL1_C
[!!python/tuple ['poly', 'drawing'], !!python/tuple ['li1', 'drawing']]: PYL1_C
[!!python/tuple ['li1', 'drawing'], !!python/tuple ['met1', 'drawing']]: L1M1_C
[!!python/tuple ['met1', 'drawing'], !!python/tuple ['met2', 'drawing']]: M1M2_C
[!!python/tuple ['met2', 'drawing'], !!python/tuple ['met3', 'drawing']]: M2M3_C
[!!python/tuple ['met3', 'drawing'], !!python/tuple ['met4', 'drawing']]: M3M4_C
[!!python/tuple ['met4', 'drawing'], !!python/tuple ['met5', 'drawing']]: M4M5_C
# table of electromigration temperature scale factor
idc_em_scale:
# scale factor for resistor
# scale[idx] is used if temperature is less than or equal to temp[idx]
res:
temp: [100, .inf]
scale: [1.0, 0.5]
# scale factor for this metal layer type
['met1', 'drawing']: &x_em_scale
temp: [100, .inf]
scale: [1.0, 0.5]
['met2', 'drawing']: *x_em_scale
['met3', 'drawing']: *x_em_scale
['met4', 'drawing']: *x_em_scale
['met5', 'drawing']: *x_em_scale
# default scale vector
default:
temp: [100, .inf]
scale: [1.0, 0.5]
# via enclosure/spacing rules
flipped_vias: [TPL1_C, L1M1_C, M1M2_C, M2M3_C, M3M4_C, M4M5_C]
via_square_list: [square]
via:
M1M2_C:
- name: square
dim: [30, 30]
sp: [34, 34]
bot_enc: &square_1x_enc
- [.inf, [[17, 11], [11, 17]]]
top_enc: *square_1x_enc
M2M3_C:
- name: square
dim: [40, 40]
sp: [40, 40]
bot_enc:
- [.inf, [[17, 8], [8, 17]]]
top_enc:
- [.inf, [[17, 13], [13, 17]]]
M3M4_C:
- name: square
dim: [40, 40]
sp: [40, 40]
bot_enc:
- [.inf, [[18, 11], [11, 18]]]
top_enc:
- [.inf, [[13, 13]]]
M4M5_C:
- name: square
dim: [160, 160]
sp: [160, 160]
bot_enc:
- [.inf, [[38, 38]]]
top_enc:
- [.inf, [[62, 62]]]
# minimum wire spacing rule. Space is measured orthogonal to wire direction.
sp_min:
[met1, drawing]: &sp_min_1x
- [.inf, 28]
[met2, drawing]: *sp_min_1x
[met3, drawing]: &sp_min_2x
- [.inf, 60]
[met4, drawing]: *sp_min_2x
[met5, drawing]:
- [.inf, 320]
# minimum line-end spacing rule. Space is measured parallel to wire direction.
sp_le_min:
[met1, drawing]: &sp_le_min_1x
- [.inf, 28]
[met2, drawing]: *sp_le_min_1x
[met3, drawing]: &sp_le_min_2x
- [.inf, 60]
[met4, drawing]: *sp_le_min_2x
[met5, drawing]:
- [.inf, 320]
# minimum length/minimum area rules.
len_min:
[met1, drawing]:
w_al_list:
- [.inf, 3320, 0]
md_al_list: []
[met2, drawing]:
w_al_list:
- [.inf, 2704, 0]
md_al_list: []
[met3, drawing]:
w_al_list:
- [.inf, 9600, 0]
md_al_list: []
[met4, drawing]:
w_al_list:
- [.inf, 9600, 0]
md_al_list: []
[met5, drawing]:
w_al_list:
- [.inf, 160000, 0]
md_al_list: []
margins:
well: [40, 40]
# transistor DRC rules.
mos:
# MOSBase vertical connection layer
conn_layer: 1
# min/max transistor width.
mos_w_range: [84, 1400]
# transistor width resolution
mos_w_resolution: 1
# source/drain pitch related constants.
# source/drain pitch is computed as val[0] + val[1] * lch_unit
sd_pitch_constants:
lch: [30, .inf]
val: [[172, 0], [42, 1]]
# drain connection info
d_wire_info:
bot_layer: 0
# wire_w, is_horiz, v_w, v_h, v_sp, v_bot_enc, v_top_enc
info_list:
- [34, False, 34, 34, 34, 12, 16]
- [52, False, 34, 34, 38, 8, 12]
# gate connection info
g_wire_info:
bot_layer: 0
# wire_w, is_horiz, v_w, v_h, v_sp, v_bot_enc, v_top_enc
info_list:
- [34, True, 34, 34, 34, 10, 10]
- [52, False, 34, 34, 38, 8, 12]
# minimum horizontal space between OD, in resolution units
od_spx: 54
# minimum vertical space between OD, in resolution units
od_spy: 54
# guard ring vertical space
od_spy_gr: 4000
# maximum vertical space between OD, in resolution units
od_spy_max: 4000
# set by via enclosure, licon.5
od_po_extx: 96
# poly.2
po_spy: 42
# cannot find constrant, set to od_w_min
po_h_min: 84
# poly.10
po_od_exty: 26
# from RF transistor
po_h_gate: 70
# licon.9
mg_imp_spy: 22
npc_w: 74
# licon1 height + licon1 enclosure
npc_h: 74
md_area_min: 2244
md_spy: 34
# nsdm.7
imp_od_encx: 26
# nsdm.7
imp_od_ency: 26
# nsdm.1
imp_h_min: 76
grid_info:
- [1, 52, 1]
- [3, 66, 1]
- [5, 284, 1]
fill: {}
res_metal: {}
layer:
nwell: 0
pwell: 1
diff: 2
tap: 3
poly: 4
mcon: 5
met1: 6
via: 7
met2: 8
via2: 9
met3: 10
pad: 11
via3: 12
met4: 13
via4: 14
met5: 15
prune: 21
li1: 22
dnwell: 23
inductor: 24
lvtn: 25
nsdm: 30
psdm: 31
hvntm: 36
cnsm: 37
tunm: 41
hvi: 42
licon1: 43
padCenter: 45
nsm: 47
cpwbm: 51
cfom: 52
ldntm: 53
cp1m: 55
cnsdm: 56
cpsdm: 57
cntm: 58
cctm1: 59
cmm1: 60
cviam: 61
cmm2: 62
cviam2: 63
cmm3: 64
cpdm: 66
cviam3: 67
cmm4: 68
cviam4: 69
cmm5: 70
capm: 75
pmm: 76
fom: 77
cdnm: 79
urpm: 81
crrpm: 82
cli1m: 83
curpm: 84
chvtpm: 85
cap2m: 86
crpm: 87
vhvi: 88
clvom: 89
cncm: 90
ctunm: 91
hvtp: 92
conom: 93
clicm1: 95
ncm: 96
cpmm: 97
overlap: 99
rrpm: 100
pnp: 101
chvntm: 102
capacitor: 103
rpm: 106
target: 107
cnwm: 109
areaid: 110
npn: 111
hvtr: 113
cpmm2: 114
npc: 115
cnpc: 116
pmm2: 117
chvtrm: 118
cpbo: 119
clvtnm: 120
pwelliso: 122
blanking: 123
cldntm: 126
rdl: 136
ubm: 140
bump: 141
ccu1m: 142
cubm: 143
cbump: 144
cpwdem: 169
pwde: 170
pwbm: 173
uhvi: 174
purpose:
seal: 1
core: 2
frame: 3
waffleDrop: 4
standardc: 5
sigPadDiff: 6
sigPadWell: 7
sigPadMetNtr: 8
ferro: 9
moduleCut: 10
dieCut: 11
frameRect: 12
zener: 13
extDrain20: 14
cut: 15
res: 16
esd: 17
tmppnp: 18
short: 19
mask: 20
maskAdd: 21
maskDrop: 22
diode: 23
fuse: 24
gate: 25
hvnwell: 26
rdlprobepad: 27
hv: 28
probe: 29
extFab: 30
option1: 31
option2: 32
option3: 33
option4: 34
option5: 35
option6: 36
option7: 37
option8: 38
precres: 39
silicon: 40
vlc: 41
met3: 42
met2: 43
met1: 44
li1: 45
poly: 46
injection: 47
nodnw: 49
deadZon: 50
critCorner: 51
critSid: 52
substrateCut: 53
opcDrop: 54
cuPillar: 55
techCd: 56
term1: 57
term2: 58
term3: 59
scr: 60
port: 61
port1: 62
region: 63
ppath: 65
ppath1: 66
macro: 67
nwellIsolation: 68
waffleWindow: 69
block: 70
waffleAdd1: 71
waffleAdd2: 72
cuDrop: 74
extendedDrain: 75
subcktDevice: 76
pixel: 77
capacitor: 78
analog: 79
lvdnw: 80
photo: 81
guardring: 82
model: 83
ipExempt: 84
pitch: 85
HighVt: 86
lvNative: 87
psa1: 88
psa2: 89
psa3: 90
psa4: 91
psa5: 92
psa6: 93
hole: 94
select: 95
dummy: 96
umconly: 97
opc: 98
nodummy: 99
drc: 100
etest: 101
vss: 102
fc: 103
fix: 104
mim: 105
nmim: 106
pad: 107
per: 108
cvs: 109
ext: 110
ip: 111
low_vt: 112
cis_array: 113
imagers: 114
t3: 115
logic: 116
dio: 117
cap: 118
res1: 119
bjt: 120
efuseMark: 121
slotBlock: 122
fuseMark: 123
umcIP: 124
rfdiode: 125
lowTapDensity: 126
notCritSide: 127
oaCustomFill: 4294967284
oaFillOPC: 4294967285
redundant: 4294967288
gapFill: 4294967289
annotation: 4294967290
OPCAntiSerif: 4294967291
OPCSerif: 4294967292
slot: 4294967293
fill: 4294967294
drawing: 4294967295
label: 237
drawing1: 241
drawing2: 242
drawing3: 243
drawing4: 244
drawing5: 245
drawing6: 246
drawing7: 247
drawing8: 248
drawing9: 249
boundary: 250
pin: 251
via_layers:
TPM2sd_varactor:
- [0, 4294967295]
- [3604534, 4294967295]
- [43, 4294967295]
TPM1sd_varactor:
- [0, 4294967295]
- [6488162, 4294967295]
- [43, 4294967295]
DFM1sd2:
- [2, 4294967295]
- [0, 4294967295]
- [43, 4294967295]
DFTPL1s2:
- [2, 4294967295]
- [3, 4294967295]
- [43, 4294967295]
hvDFL1sd2:
- [2, 4294967295]
- [8, 4294967295]
- [43, 4294967295]
hvDFTPM1s2:
- [2, 4294967295]
- [33, 4294967295]
- [43, 4294967295]
DFL1sdf:
- [2, 4294967295]
- [99, 4294967295]
- [43, 4294967295]
DFTPL1s:
- [2, 4294967295]
- [108, 4294967295]
- [43, 4294967295]
hvDFL1sd:
- [2, 4294967295]
- [128, 4294967295]
- [43, 4294967295]
DFTPM1s:
- [2, 4294967295]
- [508, 4294967295]
- [43, 4294967295]
pDFL1_PR:
- [2, 4294967295]
- [514, 4294967295]
- [22, 4294967295]
hvDFTPM1s:
- [2, 4294967295]
- [16908545, 4294967295]
- [43, 4294967295]
DFM1sd:
- [2, 4294967295]
- [27881312, 4294967295]
- [43, 4294967295]
DFL1sd2:
- [2, 4294967295]
- [27904192, 4294967295]
- [43, 4294967295]
hvDFM1sd:
- [2, 4294967295]
- [27909216, 4294967295]
- [43, 4294967295]
DFM1:
- [2, 4294967295]
- [27912840, 4294967295]
- [43, 4294967295]
hvDFTPM1s2enh:
- [2, 4294967295]
- [27919592, 4294967295]
- [43, 4294967295]
DFTPM1sw:
- [2, 4294967295]
- [27922480, 4294967295]
- [43, 4294967295]
DFL1:
- [2, 4294967295]
- [471538201, 4294967295]
- [43, 4294967295]
nDFL1_PR:
- [2, 4294967295]
- [697935992, 4294967295]
- [22, 4294967295]
DFL1sd:
- [2, 4294967295]
- [743437048, 4294967295]
- [43, 4294967295]
DFTPM1s2enh:
- [2, 4294967295]
- [1634216811, 4294967295]
- [43, 4294967295]
hvDFM1sd2:
- [2, 4294967295]
- [3355443200, 4294967295]
- [43, 4294967295]
TPL1_fence:
- [3, 4294967295]
- [128, 4294967295]
- [43, 4294967295]
TPL1sq:
- [3, 4294967295]
- [12255418, 4294967295]
- [43, 4294967295]
TPL1:
- [3, 4294967295]
- [22217042, 4294967295]
- [43, 4294967295]
TPM1s:
- [3, 4294967295]
- [27908744, 4294967295]
- [43, 4294967295]
TPL1s:
- [3, 4294967295]
- [27910816, 4294967295]
- [43, 4294967295]
TPL1a:
- [3, 4294967295]
- [79038577, 4294967295]
- [43, 4294967295]
pTPL1_PR:
- [3, 4294967295]
- [84214787, 4294967295]
- [22, 4294967295]
TPL1cen:
- [3, 4294967295]
- [155912518, 4294967295]
- [43, 4294967295]
nTPL1_PR:
- [3, 4294967295]
- [697935816, 4294967295]
- [22, 4294967295]
TPM1:
- [3, 4294967295]
- [3355443200, 4294967295]
- [43, 4294967295]
HRPoly_0p69_RPL1con:
- [4, 4294967295]
- [0, 4294967295]
- [43, 4294967295]
PYL1sq:
- [4, 4294967295]
- [1, 4294967295]
- [115, 4294967295]
PYM2_varactor:
- [4, 4294967295]
- [33, 4294967295]
- [115, 4294967295]
PYL1_C:
- [4, 4294967295]
- [43, 4294967295]
- [22, 4294967295]
PYL1:
- [4, 4294967295]
- [113, 4294967295]
- [115, 4294967295]
PYM1_varactor:
- [4, 4294967295]
- [720906, 4294967295]
- [115, 4294967295]
HRPoly_2p85_RPL1con:
- [4, 4294967295]
- [16843009, 4294967295]
- [43, 4294967295]
PYM1butt_varactor:
- [4, 4294967295]
- [27911952, 4294967295]
- [115, 4294967295]
HRPoly_5p73_RPL1con:
- [4, 4294967295]
- [144574618, 4294967295]
- [43, 4294967295]
PYM2butt_varactor:
- [4, 4294967295]
- [697935800, 4294967295]
- [115, 4294967295]
PYL1_PR:
- [4, 4294967295]
- [1195787588, 4294967295]
- [22, 4294967295]
HRPoly_1p41_RPL1con:
- [4, 4294967295]
- [1610612736, 4294967295]
- [43, 4294967295]
PYM1:
- [4, 4294967295]
- [3355443200, 4294967295]
- [115, 4294967295]
HRPoly_5p73_L1M1con:
- [5, 4294967295]
- [0, 4294967295]
- [22, 4294967295]
L1M2:
- [5, 4294967295]
- [513, 4294967295]
- [22, 4294967295]
HRPoly_1p41_L1M1con:
- [5, 4294967295]
- [16843009, 4294967295]
- [22, 4294967295]
L1M1sq:
- [5, 4294967295]
- [27916880, 4294967295]
- [22, 4294967295]
HRPoly_2p85_L1M1con:
- [5, 4294967295]
- [160369032, 4294967295]
- [22, 4294967295]
L1M1:
- [5, 4294967295]
- [697935800, 4294967295]
- [22, 4294967295]
L1M1_C:
- [6, 4294967295]
- [5, 4294967295]
- [22, 4294967295]
M1M2:
- [6, 4294967295]
- [33, 4294967295]
- [8, 4294967295]
M1M2_PR:
- [6, 4294967295]
- [43, 4294967295]
- [8, 4294967295]
ruleVia1:
- [6, 4294967295]
- [27908184, 4294967295]
- [8, 4294967295]
ruleVia:
- [6, 4294967295]
- [27908928, 4294967295]
- [8, 4294967295]
M1M2sq:
- [6, 4294967295]
- [27911664, 4294967295]
- [8, 4294967295]
M1M2_PR_R:
- [6, 4294967295]
- [743551240, 4294967295]
- [8, 4294967295]
ruleVia2:
- [8, 4294967295]
- [0, 4294967295]
- [10, 4294967295]
M1M2_C:
- [8, 4294967295]
- [7, 4294967295]
- [6, 4294967295]
M2M3_PR_R:
- [8, 4294967295]
- [9, 4294967295]
- [10, 4294967295]
M2M3_PR:
- [8, 4294967295]
- [43, 4294967295]
- [10, 4294967295]
M2M3sq:
- [8, 4294967295]
- [27907824, 4294967295]
- [10, 4294967295]
M2M3:
- [8, 4294967295]
- [27911136, 4294967295]
- [10, 4294967295]
M3M4sq:
- [10, 4294967295]
- [0, 4294967295]
- [13, 4294967295]
M3M4_PR:
- [10, 4294967295]
- [5, 4294967295]
- [13, 4294967295]
M3M4:
- [10, 4294967295]
- [8, 4294967295]
- [13, 4294967295]
M2M3_C:
- [10, 4294967295]
- [9, 4294967295]
- [8, 4294967295]
M3M4_PR_R:
- [10, 4294967295]
- [12, 4294967295]
- [13, 4294967295]
FUSE_M3M4:
- [10, 4294967295]
- [257, 4294967295]
- [13, 4294967295]
ruleVia3:
- [10, 4294967295]
- [101320202, 4294967295]
- [13, 4294967295]
M5RDLlg_atlas:
- [11, 4294967295]
- [1, 4294967295]
- [136, 4294967295]
M5RDL:
- [11, 4294967295]
- [743437048, 4294967295]
- [136, 4294967295]
CAPMM4:
- [12, 4294967295]
- [12255418, 4294967295]
- [75, 4294967295]
M4M5sq:
- [13, 4294967295]
- [0, 4294967295]
- [15, 4294967295]
M4M5_PR:
- [13, 4294967295]
- [7, 4294967295]
- [15, 4294967295]
M3M4_C:
- [13, 4294967295]
- [12, 4294967295]
- [10, 4294967295]
M4M5_PR_R:
- [13, 4294967295]
- [14, 4294967295]
- [15, 4294967295]
M4M5:
- [13, 4294967295]
- [27911304, 4294967295]
- [15, 4294967295]
ruleVia4:
- [13, 4294967295]
- [67372036, 4294967295]
- [15, 4294967295]
CAP2MM5:
- [14, 4294967295]
- [9371790, 4294967295]
- [86, 4294967295]
M4M5_C:
- [15, 4294967295]
- [14, 4294967295]
- [13, 4294967295]
TPL1_C:
- [22, 4294967295]
- [43, 4294967295]
- [3, 4294967295]
L1M1_PR:
- [22, 4294967295]
- [27902976, 4294967295]
- [6, 4294967295]