Checking in some ongoing work for better handling the additional
vendor cells added to the I/O library.
diff --git a/sky130/custom/scripts/gds_import_io.tcl b/sky130/custom/scripts/gds_import_io.tcl
index f0a5ead..f020fd5 100644
--- a/sky130/custom/scripts/gds_import_io.tcl
+++ b/sky130/custom/scripts/gds_import_io.tcl
@@ -17,28 +17,51 @@
gds flatglob *sky130_fd_io__xor*
gds flatglob *sky130_fd_io__gpiov2_amx*
gds flatglob *sky130_fd_io__gpiov2_amux*
+gds flatglob *sky130_fd_io__gpio_ovtv2_amx*
+gds flatglob *sky130_fd_io__gpio_ovtv2_amux*
### flatten within the isolated VSSIO domain
gds flatglob *sky130_fd_io__feas_com_pupredrvr*
gds flatglob *sky130_fd_io__com_pupredrvr_strong_slowv2*
gds flatglob *sky130_fd_io__com_pdpredrvr_pbiasv2*
gds flatglob *sky130_fd_io__gpiov2_pdpredrvr_strong*
+gds flatglob *sky130_fd_io__gpio_ovtv2_pdpredrvr_strong*
+gds flatglob *sky130_fd_io__sio_pdpredrvr_strong*
### flatten in opathv2
gds flatglob *sky130_fd_io__com_pudrvr_strong_slowv2*
gds flatglob *sky130_fd_io__com_pdpredrvr_strong_slowv2*
gds flatglob *sky130_fd_io__gpiov2_obpredrvr*
+gds flatglob *sky130_fd_io__gpio_ovtv2_obpredrvr*
+gds flatglob *sky130_fd_io__gpio_ovtv2_hotswap*
+gds flatglob *sky130_fd_io__sio_obpredrvr*
gds flatglob *sky130_fd_io__hvsbt_*
### flatten in ipath
gds flatglob *sky130_fd_io__gpiov2_ictl_logic*
+gds flatglob *sky130_fd_io__gpio_ovtv2_ictl_logic*
### avoid splitting a netlist that passes in contorted ways through the
### layout hierarchy
gds flatglob *sky130_fd_io__gpio_pddrvr_strong_slowv2*
gds flatglob *sky130_fd_io__gpiov2_pddrvr_strong*
+gds flatglob *sky130_fd_io__gpio_ovtv2_pddrvr_strong*
+gds flatglob *sky130_fd_io__sio_pddrvr_strong*
### flatten ESD devices in SIO. Note: HVI covering the entire device
### in nhvnative cell would avoid this issue.
gds flatglob *reg_pu_nhvnative*
gds flatglob *pu_natives*
+
+### flatten parts of pwrdetv2, where there are devices in deep nwell
+### that are in sibling cells, and resistors separated from HVI
+gds flatglob *top_pwrdetv2_res*
+gds flatglob *pwrdet_vddd*
+gds flatglob *pwrdet_vddio*
+
+### flatten parts of amuxsplitv2, where there are subcells that are
+### spread across areas inside and outside of dnwell
+gds flatglob *switch_levelshifter*
+gds flatglob *amuxsplitv2_switch_*
+gds flatglob *amuxsplitv2_hvsbt_nand*
+gds flatglob *amuxsplitv2_delay*
diff --git a/sky130/magic/sky130gds.tech b/sky130/magic/sky130gds.tech
index 1f3c43e..11e66a4 100644
--- a/sky130/magic/sky130gds.tech
+++ b/sky130/magic/sky130gds.tech
@@ -54,6 +54,7 @@
p41
p42
p43
+ p44
end
types
@@ -128,6 +129,7 @@
p41 CP1MADD,l68
p42 BOUND,l69
p43 RERAM,l71
+ p44 ESDID,l72
end
contact
@@ -206,6 +208,7 @@
l69 subcircuit
l70 polysilicon
l71 electrode_stripes
+ l72 cwell
error_p error_waffle
error_s error_waffle
error_ps error_waffle
@@ -515,6 +518,10 @@
layer BOUND BOUND
labels BOUND
calma 235 4
+
+ layer ESDID ESDID
+ labels ESDID
+ calma 81 19
end
cifinput
@@ -591,6 +598,7 @@
layer l69 BOUND
layer l70 POLYT
layer l71 RERAM
+ layer l72 ESDID
calma NWELL 64 20
calma DNWELL 64 18
calma DIFF 65 20
@@ -662,6 +670,7 @@
calma BOUND 235 4
calma POLYT 66 16
calma RERAM 201 20
+ calma ESDID 81 19
end
mzrouter
@@ -760,4 +769,5 @@
planeorder p41 40
planeorder p42 41
planeorder p43 42
+ planeorder p44 43
end