blob: c3b7ce87a47c63b946e6e9ad46971aedb6f5c9b9 [file] [log] [blame]
* Map the heavily renamed sky130A PDK primitive device model-names to the model-names extracted by (un-renamed) calibre LVS.
* Since sky130A spice netlists use subckt-instances for primitives, exploit this: Define said subckts
* that internally just nest the calibre model-named true spice primitive.
*
* Example schematic-side SUBCKT replacements, used in place of
* /foss/pdk/sky130A/libs.ref/sky130_fd_pr/spice/
* ...
* sky130_fd_pr__nfet_01v8.pm3.spice
.subckt sky130_fd_pr__nfet_01v8 d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b nshort m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
*m0 d g s b sky130_fd_pr__nfet_01v8 l={l} w={w} nf={nf}
*msky130_fd_pr__nfet_01v8 d g s b sky130_fd_pr__nfet_01v8__model l = {l} w = {w} nf = {nf}
* need mappsings:
* sky130_fd_pr__nfet_01v8 nshort
* sky130_fd_pr__nfet_g5v0d10v5 nhv
* sky130_fd_pr__nfet_01v8_lvt nlowvt
* sky130_fd_pr__nfet_03v3_nvt ntvnative
* sky130_fd_pr__nfet_05v0_nvt nhvnative
* sky130_fd_pr__esd_nfet_g5v0d10v5 nhvesd ?
*
* sky130_fd_pr__pfet_01v8 pshort ?
* sky130_fd_pr__pfet_01v8_lvt plowvt ?
* sky130_fd_pr__pfet_g5v0d10v5 phv ?
* sky130_fd_pr__pfet_01v8_hvt phighvt ?
.subckt sky130_fd_pr__nfet_g5v0d10v5 d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b nhv m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__nfet_01v8_lvt d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b nlowvt m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__nfet_03v3_nvt d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b ntvnative m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__nfet_05v0_nvt d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b nhvnative m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__esd_nfet_g5v0d10v5 d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b nhvesd m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__pfet_01v8 d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b pshort m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__pfet_01v8_lvt d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b plowvt m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__pfet_g5v0d10v5 d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b phv m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
.subckt sky130_fd_pr__pfet_01v8_hvt d g s b m=1 w=1 l=1 ad=1 as=1 pd=1 ps=1 nrd=1 nrs=1
m0 d g s b phighvt m=m w=w l=l ad=ad as=as pd=pd ps=ps nrd=nrd nrs=nrs mult=1
.ends
* NGSPICE file created from ska_4pfets.ext - technology: sky130A
.subckt sky130_fd_pr__pfet_01v8_lvt_EM43P7
X0 a_35_n42# a_n35_n139# a_n93_n42# w_n231_n261# sky130_fd_pr__pfet_01v8_lvt ad=0.122 pd=1.42 as=0.122 ps=1.42 w=0.42 l=0.35
.ends
.subckt sky130_fd_pr__pfet_01v8_hvt_M479BZ
X0 a_15_n42# a_n33_n139# a_n73_n42# w_n211_n261# sky130_fd_pr__pfet_01v8_hvt ad=0.122 pd=1.42 as=0.122 ps=1.42 w=0.42 l=0.15
.ends
.subckt sky130_fd_pr__pfet_01v8_M479BZ
X0 a_15_n42# a_n33_n139# a_n73_n42# w_n211_n261# sky130_fd_pr__pfet_01v8 ad=0.122 pd=1.42 as=0.122 ps=1.42 w=0.42 l=0.15
.ends
.subckt sky130_fd_pr__pfet_g5v0d10v5_5C2UEH
X0 a_50_n42# a_n50_n139# a_n108_n42# w_n308_n339# sky130_fd_pr__pfet_g5v0d10v5 ad=0.122 pd=1.42 as=0.122 ps=1.42 w=0.42 l=0.5
.ends
.subckt ska_4pfets
Xsky130_fd_pr__pfet_01v8_lvt_EM43P7_0 sky130_fd_pr__pfet_01v8_lvt_EM43P7
Xsky130_fd_pr__pfet_01v8_hvt_M479BZ_0 sky130_fd_pr__pfet_01v8_hvt_M479BZ
Xsky130_fd_pr__pfet_01v8_M479BZ_0 sky130_fd_pr__pfet_01v8_M479BZ
Xsky130_fd_pr__pfet_g5v0d10v5_5C2UEH_0 sky130_fd_pr__pfet_g5v0d10v5_5C2UEH
.ends