Modified the deep nwell generation routine to draw the nwell boundary in four separate rectangles, because the method of drawing nwell over the area and erasing from the center causes unexpected/unwanted interactions with any existing layout in the center of the deep nwell region.
diff --git a/VERSION b/VERSION index 81b2e4a..c2126aa 100644 --- a/VERSION +++ b/VERSION
@@ -1 +1 @@ -1.0.474 +1.0.475
diff --git a/sky130/magic/sky130.tcl b/sky130/magic/sky130.tcl index c4d8517..48cec26 100644 --- a/sky130/magic/sky130.tcl +++ b/sky130/magic/sky130.tcl
@@ -549,9 +549,38 @@ pushbox pushbox box grow c 0.4um + # Note: Previous implementation was to draw nwell over the whole + # area and then erase it from the center. That can interact with + # any layout already drawn in the center area. Instead, draw four + # separate rectangles. + # ----------------- + # paint nwell + # box grow c -1.43um + # erase nwell + # ----------------- + pushbox + box width 1.43um paint nwell - box grow c -1.43um - erase nwell + popbox + pushbox + box height 1.43um + paint nwell + popbox + pushbox + box move n ${h}um + box move n 0.8um + box move s 1.43um + box height 1.43um + paint nwell + popbox + pushbox + box move e ${w}um + box move e 0.8um + box move w 1.43um + box width 1.43um + paint nwell + popbox + popbox box grow c 0.03um