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