Added a new type "scnfetlvt" to the magic techfile for sky130 to
handle DRC rule exceptions for contact-to-gate spacing in standard
cells. This had been done for vanilla nfet and pfet, and for
pfethvt, but the nfetlvt, which exists in the HS standard cell
library, had been missed.
diff --git a/VERSION b/VERSION
index 64279bb..d461a19 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.495
+1.0.496
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index 147f502..6e0ac10 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -47,6 +47,7 @@
# sky130_fd_pr__special_nfet_latch npd special nFET in SRAM cell
# sky130_fd_pr__special_nfet_pass npass special nFET in SRAM cell
# sky130_fd_pr__nfet_01v8_lvt nfetlvt low Vt nFET
+# sky130_fd_pr__nfet_01v8_lvt scnfetlvt low Vt nFET in standard cell**
# sky130_fd_bs_flash__special_sonosfet_star nsonos SONOS nFET
# sky130_fd_pr__pfet_01v8 pfet standard pFET
# sky130_fd_pr__pfet_01v8 scpfet standard pFET in standard cell**
@@ -169,7 +170,6 @@
-active npass,npassfet,srampassfet
active pmos,ptransistor,pfet
-active scpmos,scptransistor,scpfet
- -active scpmoshvt,scpfethvt
-active ppu,ppufet,srampfet
active nnmos,nntransistor,nnfet
active mvnmos,mvntransistor,mvnfet
@@ -183,7 +183,9 @@
active pmoslvt,pfetlvt
active pmosmvt,pfetmvt
active pmoshvt,pfethvt
+ -active scpmoshvt,scpfethvt
active nmoslvt,nfetlvt
+ -active scnmoslvt,scnfetlvt
active varactorhvt,varacthvt,varhvt
-active nsonos,sonos
-active sramnvar,corenvar,corenvaractor
@@ -379,13 +381,13 @@
allwellplane nwell
allnwell nwell,obswell,pnp
- allnfets nfet,npass,npd,scnfet,mvnfet,mvnfetesd,mvnnfet,nnfet,nfetlvt,nsonos
+ allnfets nfet,npass,npd,scnfet,mvnfet,mvnfetesd,mvnnfet,nnfet,nfetlvt,scnfetlvt,nsonos
allpfets pfet,ppu,scpfet,scpfethvt,mvpfet,mvpfetesd,pfethvt,pfetlvt,pfetmvt
allfets allnfets,allpfets,varactor,mvvaractor,varhvt,corenvar,corepvar
allfetsstd nfet,mvnfet,mvnfetesd,mvnnfet,nnfet,nfetlvt,pfet,mvpfet,mvpfetesd,pfethvt,pfetlvt,pfetmvt
- allfetsspecial scnfet,scpfet,scpfethvt
+ allfetsspecial scnfet,scpfet,scpfethvt,scnfetlvt
allfetscore npass,npd,nsonos,ppu,corenvar,corepvar
- allfetsnolvt nfet,npass,npd,scnfet,mvnfet,mvnfetesd,mvnnfet,nnfet,nsonos,pfet,ppu,scpfet,scpfethvt,mvpfet,mvpfetesd,pfethvt,pfetmvt,varactor,mvvaractor,varhvt,corenvar
+ allfetsnolvt nfet,npass,npd,scnfet,scnfetlvt,mvnfet,mvnfetesd,mvnnfet,nnfet,nsonos,pfet,ppu,scpfet,scpfethvt,mvpfet,mvpfetesd,pfethvt,pfetmvt,varactor,mvvaractor,varhvt,corenvar
allnactivenonfet *ndiff,*nsd,*ndiode,*nndiode,*mvndiff,*mvnsd,*mvndiode,*ndiodelvt
allnactive allnactivenonfet,allnfets
@@ -402,7 +404,7 @@
allactiveres ndiffres,pdiffres,mvndiffres,mvpdiffres
- allndifflv *ndif,*nsd,*ndiode,ndiffres,nfet,npass,npd,scnfet,nfetlvt,nsonos
+ allndifflv *ndif,*nsd,*ndiode,ndiffres,nfet,npass,npd,scnfet,scnfetlvt,nfetlvt,nsonos
allpdifflv *pdif,*psd,*pdiode,pdiffres,pfet,ppu,scpfet,scpfethvt,pfetlvt,pfetmvt,pfethvt
alldifflv allndifflv,allpdifflv
allndifflvnonfet *ndif,*nsd,*ndiode,*nndiode,ndiffres,*ndiodelvt
@@ -482,6 +484,7 @@
psd pdiff_in_pwell
nfet ntransistor ntransistor_stripes
scnfet ntransistor ntransistor_stripes
+ scnfetlvt ntransistor ntransistor_stripes implant1
npass ntransistor ntransistor_stripes
npd ntransistor ntransistor_stripes
pfet ptransistor ptransistor_stripes
@@ -635,11 +638,12 @@
compose pfet poly pdiff
compose var poly nsd
- decompose npass poly ndiff
- decompose npd poly ndiff
- decompose scnfet poly ndiff
- decompose nfetlvt poly ndiff
- decompose nsonos poly ndiff
+ decompose npass poly ndiff
+ decompose npd poly ndiff
+ decompose scnfet poly ndiff
+ decompose scnfetlvt poly ndiff
+ decompose nfetlvt poly ndiff
+ decompose nsonos poly ndiff
decompose ppu poly pdiff
decompose scpfet poly pdiff
@@ -1010,7 +1014,7 @@
#----------------------------------------------------------------
layer STDCELL scnfet
- bloat-all scpfet,scpfethvt,scnfet CELLBOUND
+ bloat-all scpfet,scpfethvt,scnfet,scnfetlvt CELLBOUND
mask-hints STDCELL
calma 81 4
@@ -2784,6 +2788,18 @@
and STDCELL
labels DIFF
+ layer scnfetlvt DIFF,barediff
+ and POLY
+ or baretrans
+ and-not PSDM
+ and NSDM
+ and-not NWELL,nwelcheck
+ and-not HVI,hvcheck
+ and LVTN
+ and-not SONOS
+ and STDCELL
+ labels DIFF
+
layer npass DIFF,barediff
and POLY
or baretrans
@@ -2824,6 +2840,7 @@
and-not HVI,hvcheck
and LVTN
and-not SONOS
+ and-not STDCELL
labels DIFF
layer nsonos DIFF,barediff
@@ -4283,7 +4300,7 @@
# DIFF
#-----------------------------
- width *ndiff,nfet,scnfet,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,scpfethvt,ppu,*psd,*pdiode,pdiffres,fomfill \
+ width *ndiff,nfet,scnfet,scnfetlvt,npd,npass,*nsd,*ndiode,ndiffres,*pdiff,pfet,scpfet,scpfethvt,ppu,*psd,*pdiode,pdiffres,fomfill \
150 "Diffusion width < %d (diff/tap.1)"
width *mvndiff,mvnfet,mvnfetesd,mvnnfet,nnfet,*mvndiode,*nndiode,mvndiffres,*mvpdiff,mvpfet,mvpfetesd,*mvpdiode,mvpdiffres 290 \
"MV Diffusion width < %d (diff/tap.14)"
@@ -4403,7 +4420,7 @@
"poly spacing to Diffusion < %d (poly.4)"
spacing npres *nsd 480 touching_illegal \
"poly resistor spacing to N-tap < %d (poly.9)"
- overhang *ndiff,rndiff nfet,scnfet,npd,npass,nsonos 250 "N-Diffusion overhang of nFET < %d (poly.7)"
+ overhang *ndiff,rndiff nfet,scnfet,scnfetlvt,npd,npass,nsonos 250 "N-Diffusion overhang of nFET < %d (poly.7)"
overhang *mvndiff,mvrndiff mvnfet,mvnnfet,nnfet 250 \
"N-Diffusion overhang of nFET < %d (poly.7)"
overhang *pdiff,rpdiff pfet,scpfet,ppu 250 "P-Diffusion overhang of pmos < %d (poly.7)"
@@ -4526,7 +4543,7 @@
spacing ndc,pdc nfet,nfetlvt,pfet,pfethvt,pfetlvt,pfetmvt 55 touching_illegal \
"Diffusion contact to gate < %d (licon.11)"
- spacing ndc,pdc scnfet,scpfet,scpfethvt 50 touching_illegal \
+ spacing ndc,pdc scnfet,scpfet,scnfetlvt,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)"
@@ -4539,7 +4556,7 @@
spacing mvnsc mvvar 250 touching_illegal \
"Diffusion contact to varactor gate < %d (licon.10)"
- surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt,rnd 40 absence_illegal \
+ surround ndc/a *ndiff,nfet,scnfet,scnfetlvt,npd,npass,nfetlvt,rnd 40 absence_illegal \
"N-diffusion overlap of N-diffusion contact < %d (licon.5a)"
surround pdc/a *pdiff,pfet,scpfet,scpfethvt,ppu,pfethvt,pfetmvt,pfetlvt,rpd \
40 absence_illegal \
@@ -4554,7 +4571,7 @@
spacing nsc/a allpactivenontap 60 touching_illegal \
"Min. space between N-tap contact and butting P diffusion < %d (licon.5b)"
- surround ndc/a *ndiff,nfet,scnfet,npd,npass,nfetlvt,rnd 60 directional \
+ surround ndc/a *ndiff,nfet,scnfet,scnfetlvt,npd,npass,nfetlvt,rnd 60 directional \
"N-diffusion overlap of N-diffusion contact < %d in one direction (licon.5c)"
surround pdc/a *pdiff,pfet,scpfet,scpfethvt,ppu,pfethvt,pfetmvt,pfetlvt,rpd \
60 directional \
@@ -4863,7 +4880,7 @@
spacing allpolynonfet,polyfill *mvpsd 55 touching_illegal \
"poly spacing to diffusion tap < %d (poly.5)"
- edge4way *psd *ndiff 300 ~(nfet,npass,npd,scnfet,nfetlvt,nsonos)/a *psd 300 \
+ edge4way *psd *ndiff 300 ~(nfet,npass,npd,scnfet,scnfetlvt,nfetlvt,nsonos)/a *psd 300 \
"Butting P-tap spacing to NMOS gate < %d (poly.6)"
edge4way *nsd *pdiff 300 ~(pfet,ppu,scpfet,scpfethvt,pfetlvt,pfetmvt)/a *nsd 300 \
"Butting N-tap spacing to PMOS gate < %d (poly.6)"
@@ -4876,7 +4893,7 @@
spacing pfet,scpfet,scpfethvt,ppu,pfetlvt,pfetmvt,pfethvt,*pdiff *mvpdiff 360 touching_illegal \
"LV P-diffusion to MV P-diffusion < %d (diff/tap.23 + diff/tap.22)"
- spacing nfet,scnfet,npd,npass,nfetlvt,varactor,varhvt,*ndiff *mvndiff 360 touching_illegal \
+ spacing nfet,scnfet,scnfetlvt,npd,npass,nfetlvt,varactor,varhvt,*ndiff *mvndiff 360 touching_illegal \
"LV N-diffusion to MV N-diffusion < %d (diff/tap.23 + diff/tap.22)"
# No HV FETs in LV diff
@@ -6483,7 +6500,7 @@
device msubcircuit sky130_fd_pr__special_nfet_pass npass \
*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w \
a1=as p1=ps a2=ad p2=pd
- device msubcircuit sky130_fd_pr__nfet_01v8_lvt nfetlvt \
+ device msubcircuit sky130_fd_pr__nfet_01v8_lvt nfetlvt,scnfetlvt \
*ndiff,ndiffres *ndiff,ndiffres pwell,space/w error l=l w=w \
a1=as p1=ps a2=ad p2=pd
device msubcircuit sky130_fd_bs_flash__special_sonosfet_star nsonos \
@@ -6627,7 +6644,7 @@
device mosfet sky130_fd_pr__nfet_01v8 scnfet,nfet ndiff,ndiffres,ndc pwell,space/w
device mosfet sky130_fd_pr__special_nfet_pass npass ndiff,ndiffres,ndc pwell,space/w
device mosfet sky130_fd_pr__special_nfet_latch npd ndiff,ndiffres,ndc pwell,space/w
- device mosfet sky130_fd_pr__nfet_01v8_lvt nfetlvt ndiff,ndiffres,ndc pwell,space/w
+ device mosfet sky130_fd_pr__nfet_01v8_lvt scnfetlvt,nfetlvt ndiff,ndiffres,ndc pwell,space/w
device mosfet sky130_fd_bs_flash__special_sonosfet_star nsonos ndiff,ndiffres,ndc \
pwell,space/w