Added types corenvar and corepvar to represent the ends of tap
layers in the SRAM core cells that are tucked under poly and are
not considered devices by SkyWater, but just extracted as parasitic
cap. Note that the parasitic cap values for these layers still
need to be specified in the extract section.
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 30234ac..7137509 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -173,6 +173,8 @@
active nmoslvt,nfetlvt
active varactorhvt,varacthvt,varhvt
-active nsonos,sonos
+ active sramnvar,corenvar,corenvaractor
+ active srampvar,corepvar,corepvaractor
# Diffusions
active ndiff,ndiffusion,ndif
@@ -366,20 +368,21 @@
allnfets nfet,npass,npd,scnfet,mvnfet,mvnnfet,nfetlvt,nsonos
allpfets pfet,ppu,scpfet,scpfethvt,mvpfet,pfethvt,pfetlvt,pfetmvt
- allfets allnfets,allpfets,varactor,mvvaractor,varhvt
+ allfets allnfets,allpfets,varactor,mvvaractor,varhvt,corenvar,corepvar
allfetsstd nfet,mvnfet,mvnnfet,nfetlvt,pfet,mvpfet,pfethvt,pfetlvt,pfetmvt
- allfetsspecial npass,npd,scnfet,nsonos,ppu,scpfet,scpfethvt
- allfetsnolvt nfet,npass,npd,scnfet,mvnfet,mvnnfet,nsonos,pfet,ppu,scpfet,scpfethvt,mvpfet,pfethvt,pfetmvt,varactor,mvvaractor,varhvt
+ allfetsspecial scnfet,scpfet,scpfethvt
+ allfetscore npass,npd,nsonos,ppu,corenvar,corepvar
+ allfetsnolvt nfet,npass,npd,scnfet,mvnfet,mvnnfet,nsonos,pfet,ppu,scpfet,scpfethvt,mvpfet,pfethvt,pfetmvt,varactor,mvvaractor,varhvt,corenvar
allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*ndiodelvt
allnactive allnactivenonfet,allnfets
allnactivenontap *ndiff,*ndiode,*nndiode,*mvndiff,*mvndiode,*ndiodelvt,allnfets
- allnactivetap *nsd,*mvnsd,var,varhvt,mvvar
+ allnactivetap *nsd,*mvnsd,var,varhvt,mvvar,corenvar
allpactivenonfet *pdiff,*psd,*pdiode,*mvpdiff,*mvpsd,*mvpdiode,*pdiodelvt,*pdiodehvt
allpactive allpactivenonfet,allpfets
allpactivenontap *pdiff,*pdiode,*mvpdiff,*mvpdiode,*pdiodelvt,*pdiodehvt,allpfets
- allpactivetap *psd,*mvpsd
+ allpactivetap *psd,*mvpsd,corepvar
allactivenonfet allnactivenonfet,allpactivenonfet
allactive allactivenonfet,allfets
@@ -469,6 +472,8 @@
pdc pdiffusion metal1 contact_X'es
nsc ndiff_in_nwell metal1 contact_X'es
psc pdiff_in_pwell metal1 contact_X'es
+ corenvar polysilicon ndiff_in_nwell
+ corepvar polysilicon pdiff_in_pwell
pnp nwell ntransistor_stripes
npn pwell ptransistor_stripes
@@ -868,7 +873,7 @@
#----------------------------------------------------------------
layer COREID
- bloat-all nsonos,coreli,ppu,npd,npass CELLBOUND
+ bloat-all nsonos,coreli,ppu,npd,npass,corepvar,corenvar CELLBOUND
calma 81 2
#----------------------------------------------------------------
@@ -2435,6 +2440,12 @@
labels TAP
labels TAPPIN port
+ layer corenvar TAP
+ and NPLUS
+ and POLY
+ and COREID
+ labels TAP
+
templayer nsdexpand nsdarea
grow 500
@@ -2461,6 +2472,12 @@
labels TAP
labels TAPPIN port
+ layer corepvar TAP
+ and PPLUS
+ and POLY
+ and COREID
+ labels TAP
+
templayer psdexpand psdarea
grow 500
@@ -2640,6 +2657,7 @@
and-not POLYRES
and-not POLYSHORT
and-not DIFF
+ and-not TAP
and-not RPM
and-not URPM
copyup polycheck
@@ -3943,6 +3961,12 @@
labels TAP
labels TAPPIN port
+ layer corenvar TAP
+ and NPLUS
+ and POLY
+ and COREID
+ labels TAP
+
templayer nsdexpand nsdarea
grow 500
@@ -3969,6 +3993,12 @@
labels TAP
labels TAPPIN port
+ layer corepvar TAP
+ and PPLUS
+ and POLY
+ and COREID
+ labels TAP
+
templayer psdexpand psdarea
grow 500
@@ -4148,6 +4178,7 @@
and-not POLYRES
and-not POLYSHORT
and-not DIFF
+ and-not TAP
and-not RPM
and-not URPM
copyup polycheck
@@ -5083,6 +5114,20 @@
calma MET4MASK 51 0
calma MET5MASK 59 0
+style rdlimport
+ # This style is for reading shapes generated with the RDL layers
+
+ scalefactor 10 nanometers
+ gridlimit 5
+
+ options ignore-unknown-layer-labels no-reconnect-labels
+
+ layer mrdl RDL
+ layer mrdlc RDLC
+
+ calma RDL 10 0
+ calma RDLC 20 0
+
end
#-----------------------------------------------------
@@ -5255,7 +5300,8 @@
"N-Diffusion overhang of nFET < %d (poly.7)"
overhang *pdiff,rpdiff pfet,scpfet,ppu 250 "P-Diffusion overhang of pmos < %d (poly.7)"
overhang *mvpdiff,mvrpdiff mvpfet 250 "P-Diffusion overhang of pmos < %d (poly.7)"
- overhang *poly allfets 130 "poly overhang of transistor < %d (poly.8)"
+ overhang *poly allfetsstd,allfetsspecial 130 "poly overhang of transistor < %d (poly.8)"
+ overhang *poly allfetscore 110 "poly overhang of SRAM core transistor < %d (poly.8)"
rect_only allfets "No bends in transistors (poly.11)"
rect_only xhrpoly,uhrpoly "No bends in poly resistors (poly.11)"
extend xpc/a xhrpoly,uhrpoly 2160 \
@@ -5344,8 +5390,10 @@
spacing ndc,pdc nfet,nfetlvt,pfet,pfethvt,pfetlvt,pfetmvt 55 touching_illegal \
"Diffusion contact to gate < %d (licon.11)"
- spacing ndc,pdc scnfet,npd,npass,scpfet,scpfethvt,ppu 50 touching_illegal \
+ spacing ndc,pdc scnfet,scpfet,scpfethvt 50 touching_illegal \
"Diffusion contact to standard cell gate < %d (licon.11)"
+ spacing ndc,pdc npd,npass,ppu 40 touching_illegal \
+ "Diffusion contact to SRAM gate < %d (licon.11)"
spacing mvndc,mvpdc mvnfet,mvnnfet,mvpfet 55 touching_illegal \
"Diffusion contact to gate < %d (licon.11)"
spacing nsc varactor,varhvt 250 touching_illegal \
@@ -5643,6 +5691,10 @@
"Transistor width < %d (diff/tap.2)"
edge4way *poly allfetsspecial 360 allfets 0 0 \
"Transistor in standard cell width < %d (diff/tap.2)"
+ edge4way *poly npass,npd,nsonos 210 allfets 0 0 \
+ "N-Transistor in SRAM core width < %d (diff/tap.2)"
+ edge4way *poly ppu 140 allfets 0 0 \
+ "P-Transistor in SRAM core width < %d (diff/tap.2)"
# Except: Note that standard cells allow transistor width minimum 0.36um
width pfetlvt 350 "LVT PMOS gate length < %d (poly.1b)"
@@ -6411,6 +6463,9 @@
device mosfet sky130_fd_bs_flash__special_sonosfet_star nsonos ndiff,ndiffres,ndc \
pwell,space/w
+ # Note that corenvar, corepvar are not considered devices, and extract as
+ # parasitic capacitance instead (but cap values need to be added).
+
# Extended drain devices (must appear before the regular devices)
device mosfet sky130_fd_pr__nfet_20v0_nvt mvnnfet *mvndiff,mvndiffres \
dnwell pwell,space/w error