Fixed the issues with the PNP bipolar transistor. Pulled the 3.4x3.4 device
layout from original sources, and fixed the device names to be consistent.
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 1c92512..9b821e2 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -712,9 +712,16 @@
-ngspice sky130_fd_pr/latest/models/* \
filter=custom/scripts/rename_models.py \
2>&1 | tee -a ${SKY130A}_make.log
+ # Install device layouts from custom sources
+ ${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
+ -gds sky130_fd_pr/*.gds \
+ options=custom/scripts/gds_import_setup.tcl \
+ -library primitive sky130_fd_pr 2>&1 | tee -a ${SKY130A}_make.log
# Install base device library from vendor files
${STAGE} -source ${SKYWATER_LIBS_PATH} -target ${STAGING_PATH}/${SKY130A} \
- -gds %l/latest/cells/*/*.gds compile-only \
+ -gds %l/latest/cells/*/*.gds \
+ exclude=sky130_fd_pr__pnp_05v5_W3p40L3p40.gds \
+ compile-only \
options=custom/scripts/gds_import_setup.tcl \
-cdl %l/latest/cells/*/*.cdl compile-only \
-lef %l/latest/cells/*/*.magic.lef compile-only \
diff --git a/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds b/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds
new file mode 100644
index 0000000..ed066be
--- /dev/null
+++ b/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W0p68L0p68.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds b/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds
new file mode 100644
index 0000000..1e0a117
--- /dev/null
+++ b/sky130/custom/sky130_fd_pr/sky130_fd_pr__pnp_05v5_W3p40L3p40.gds
Binary files differ
diff --git a/sky130/magic/sky130.tcl b/sky130/magic/sky130.tcl
index ee46bb7..e82cacd 100644
--- a/sky130/magic/sky130.tcl
+++ b/sky130/magic/sky130.tcl
@@ -111,6 +111,8 @@
"magic::gencell sky130::sky130_fd_pr__rf_npn_05v5_W1p00L1p00" pdk1
magic::add_toolkit_command $layoutframe "NPN 1.0 x 2.0" \
"magic::gencell sky130::sky130_fd_pr__rf_npn_05v5_W1p00L2p00" pdk1
+ magic::add_toolkit_command $layoutframe "PNP 0.68 x 0.68" \
+ "magic::gencell sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68" pdk1
magic::add_toolkit_command $layoutframe "PNP 3.4 x 3.4" \
"magic::gencell sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40" pdk1
@@ -6390,6 +6392,7 @@
# sky130_fd_pr__rf_npn_05v5_W1p00L1p00
# sky130_fd_pr__rf_npn_05v5_W1p00L2p00
# sky130_fd_pr__pnp_05v5_W3p40L3p40
+# sky130_fd_pr__pnp_05v5_W0p68L0p68
#
# Parallel Plate Capacitors:
#
@@ -6411,6 +6414,10 @@
return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 7.03 ystep 8.03}
}
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_defaults {} {
+ return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 3.72 ystep 3.72}
+}
+
proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_defaults {} {
return {nx 1 ny 1 deltax 0 deltay 0 nocell 1 xstep 6.44 ystep 6.44}
}
@@ -6464,6 +6471,10 @@
return [sky130::fixed_convert $parameters]
}
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_convert {parameters} {
+ return [sky130::fixed_convert $parameters]
+}
+
proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_convert {parameters} {
return [sky130::fixed_convert $parameters]
}
@@ -6544,6 +6555,10 @@
sky130::fixed_dialog $parameters
}
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_dialog {parameters} {
+ sky130::fixed_dialog $parameters
+}
+
proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_dialog {parameters} {
sky130::fixed_dialog $parameters
}
@@ -6619,6 +6634,10 @@
return [sky130::fixed_draw sky130_fd_pr__rf_npn_05v5_W1p00L2p00 $parameters]
}
+proc sky130::sky130_fd_pr__pnp_05v5_W0p68L0p68_draw {parameters} {
+ return [sky130::fixed_draw sky130_fd_pr__pnp_05v5_W0p68L0p68 $parameters]
+}
+
proc sky130::sky130_fd_pr__pnp_05v5_W3p40L3p40_draw {parameters} {
return [sky130::fixed_draw sky130_fd_pr__pnp_05v5_W3p40L3p40 $parameters]
}