blob: 7e864e375da8e8bbe0958cec74f5a13b0a0f0e46 [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
;; This skill file compiles schematic PCells for BAG primitives
lib_obj = ddGetObj("BAG_prim")
; nmos4_standard/nshort
pcDefinePCell(
list( lib_obj "nmos4_standard" "schematic" "schematic")
((w string "420n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "nshort")
list("hspiceModelMenu" "string" "nshort")
list("w" "string" sprintf(nil "%0.2f" wval))
list("nshort_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("nshort_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; nmos4_svt/nshort
pcDefinePCell(
list( lib_obj "nmos4_svt" "schematic" "schematic")
((w string "420n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "nshort")
list("hspiceModelMenu" "string" "nshort")
list("w" "string" sprintf(nil "%0.2f" wval))
list("nshort_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("nshort_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; nmos4_hv/nhv
pcDefinePCell(
list( lib_obj "nmos4_hv" "schematic" "schematic")
((w string "750n")
(l string "500n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "nhv")
list("hspiceModelMenu" "string" "nhv")
list("w" "string" sprintf(nil "%0.2f" wval))
list("nhv_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("nhv_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; nmos4_hvesd/nhvesd
pcDefinePCell(
list( lib_obj "nmos4_hvesd" "schematic" "schematic")
((w string "17500n")
(l string "550n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "nhvesd")
list("hspiceModelMenu" "string" "nhvesd")
list("w" "string" sprintf(nil "%0.2f" wval))
list("nhvesd_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("nhvesd_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; nmos4_lvt/nlowvt
pcDefinePCell(
list( lib_obj "nmos4_lvt" "schematic" "schematic")
((w string "420n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "nfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "nlowvt")
list("hspiceModelMenu" "string" "nlowvt")
list("w" "string" sprintf(nil "%0.2f" wval))
list("nlowvt_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("nlowvt_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_standard/pshort
pcDefinePCell(
list( lib_obj "pmos4_standard" "schematic" "schematic")
((w string "550n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "pshort")
list("hspiceModelMenu" "string" "pshort")
list("w" "string" sprintf(nil "%0.2f" wval))
list("pshort_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("pshort_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_svt/pshort
pcDefinePCell(
list( lib_obj "pmos4_svt" "schematic" "schematic")
((w string "550n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "pshort")
list("hspiceModelMenu" "string" "pshort")
list("w" "string" sprintf(nil "%0.2f" wval))
list("pshort_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("pshort_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_hvt/phighvt
pcDefinePCell(
list( lib_obj "pmos4_hvt" "schematic" "schematic")
((w string "540n")
(l string "150n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "phighvt")
list("hspiceModelMenu" "string" "phighvt")
list("w" "string" sprintf(nil "%0.2f" wval))
list("phighvt_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("phighvt_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_hv/phv
pcDefinePCell(
list( lib_obj "pmos4_hv" "schematic" "schematic")
((w string "420n")
(l string "500n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "phv")
list("hspiceModelMenu" "string" "phv")
list("w" "string" sprintf(nil "%0.2f" wval))
list("phv_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("phv_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_hvesd/phvesd
pcDefinePCell(
list( lib_obj "pmos4_hvesd" "schematic" "schematic")
((w string "14500n")
(l string "550n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "phvesd")
list("hspiceModelMenu" "string" "phvesd")
list("w" "string" sprintf(nil "%0.2f" wval))
list("phvesd_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("phvesd_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; pmos4_lvt/plowvt
pcDefinePCell(
list( lib_obj "pmos4_lvt" "schematic" "schematic")
((w string "550n")
(l string "350n")
(nf string "1")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
nval = atoi(nf)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "pfet" "symbol"
"N0" -0.375:0 "R0" 1
list(list("hspiceModel" "string" "plowvt")
list("hspiceModelMenu" "string" "plowvt")
list("w" "string" sprintf(nil "%0.2f" wval))
list("plowvt_l0_w" "string" sprintf(nil "%0.2f" wval))
list("l" "string" sprintf(nil "%0.2f" lval))
list("plowvt_l" "string" sprintf(nil "%0.2f" lval))
list("m" "string" nf)
list("totalW" "string" sprintf(nil "%0.2f" wval * nval)))
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "D")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "D" -0.5:0.5625 "R0")
"D" dbCreateTerm(io_net "D" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "d"))
io_net = dbCreateNet(pcCellView "G")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "G" -0.875:0 "R0")
"G" dbCreateTerm(io_net "G" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "g"))
io_net = dbCreateNet(pcCellView "S")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "S" -0.5:-0.5 "R0")
"S" dbCreateTerm(io_net "S" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "s"))
io_net = dbCreateNet(pcCellView "B")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "B" 0.125:0 "R0")
"B" dbCreateTerm(io_net "B" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "b"))
)
)
; res_standard/hrpoly
pcDefinePCell(
list( lib_obj "res_standard" "schematic" "schematic")
((w string "1000n")
(l string "2105n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "hrpoly" "symbol"
"R0" 0.5:0 "R270" 1
list(list("segW" "string" wstr)
list("w" "string" wstr)
list("segL" "string" lstr)
list("l" "string" lstr)
list("rCalcMethod" "string" "Segment Length")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" 1:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "PLUS"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" -0.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "MINUS"))
io_net = dbCreateNet(pcCellView "BULK")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "BULK" -0.15:-0.4 "R0")
"BULK" dbCreateTerm(io_net "BULK" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "B"))
)
)
; res_high_res/uhrpoly
pcDefinePCell(
list( lib_obj "res_high_res" "schematic" "schematic")
((w string "350n")
(l string "17400n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "uhrpoly" "symbol"
"R0" 0.5:0 "R270" 1
list(list("segW" "string" wstr)
list("w" "string" wstr)
list("segL" "string" lstr)
list("l" "string" lstr)
list("rCalcMethod" "string" "Segment Length")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" 1:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "PLUS"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" -0.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "MINUS"))
io_net = dbCreateNet(pcCellView "BULK")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "BULK" -0.15:-0.4 "R0")
"BULK" dbCreateTerm(io_net "BULK" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "B"))
)
)
; res_metal_1/mrm1
pcDefinePCell(
list( lib_obj "res_metal_1" "schematic" "schematic")
((w string "720n")
(l string "290n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "res" "symbol"
"R0" 0.1:0 "R90" 1
list(list("resistorTypr" "string" "met1")
list("rw" "string" wstr)
list("rl" "string" lstr)
list("model" "string" "mrm1")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" -0.15:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r0"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" 1.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r1"))
)
)
; res_metal_2/mrm2
pcDefinePCell(
list( lib_obj "res_metal_2" "schematic" "schematic")
((w string "720n")
(l string "290n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "res" "symbol"
"R0" 0.1:0 "R90" 1
list(list("resistorTypr" "string" "met2")
list("rw" "string" wstr)
list("rl" "string" lstr)
list("model" "string" "mrm2")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" -0.15:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r0"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" 1.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r1"))
)
)
; res_metal_3/mrm3
pcDefinePCell(
list( lib_obj "res_metal_3" "schematic" "schematic")
((w string "720n")
(l string "290n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "res" "symbol"
"R0" 0.1:0 "R90" 1
list(list("resistorTypr" "string" "met3")
list("rw" "string" wstr)
list("rl" "string" lstr)
list("model" "string" "mrm3")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" -0.15:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r0"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" 1.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r1"))
)
)
; res_metal_4/mrm4
pcDefinePCell(
list( lib_obj "res_metal_4" "schematic" "schematic")
((w string "720n")
(l string "290n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "res" "symbol"
"R0" 0.1:0 "R90" 1
list(list("resistorTypr" "string" "met4")
list("rw" "string" wstr)
list("rl" "string" lstr)
list("model" "string" "mrm4")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" -0.15:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r0"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" 1.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r1"))
)
)
; res_metal_5/mrm5
pcDefinePCell(
list( lib_obj "res_metal_5" "schematic" "schematic")
((w string "720n")
(l string "290n")
)
let((inst iopin_master io_net io_pin)
wval = cdfParseFloatString(w) * 1e6
lval = cdfParseFloatString(l) * 1e6
wstr = sprintf(nil "%0.3f" wval)
lstr = sprintf(nil "%0.3f" lval)
inst = dbCreateParamInstByMasterName( pcCellView "s8phirs_10r" "res" "symbol"
"R0" 0.1:0 "R90" 1
list(list("resistorTypr" "string" "met5")
list("rw" "string" wstr)
list("rl" "string" lstr)
list("model" "string" "mrm5")
)
)
iopin_master = dbOpenCellViewByType("basic" "iopin" "symbolr" nil "r")
io_net = dbCreateNet(pcCellView "PLUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "PLUS" -0.15:0 "R0")
"PLUS" dbCreateTerm(io_net "PLUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r0"))
io_net = dbCreateNet(pcCellView "MINUS")
io_pin = dbCreatePin(io_net dbCreateInst(pcCellView iopin_master "MINUS" 1.15:0 "R0")
"MINUS" dbCreateTerm(io_net "MINUS" "inputOutput"))
dbCreateInstTerm(io_net inst dbFindTermByName(inst~>master "r1"))
)
)