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] }