Corrected all of the contact and via drawing routines to get the
proper overlap of each layer.
diff --git a/sky130/magic/sky130.tcl b/sky130/magic/sky130.tcl
index 451c9db..c09ad4a 100644
--- a/sky130/magic/sky130.tcl
+++ b/sky130/magic/sky130.tcl
@@ -299,17 +299,19 @@
return
}
suspendall
+ pushbox
paint via2
box grow n 0.05um
box grow s 0.05um
paint m2
- box grow n -0.05um
- box grow s -0.05um
+ popbox
+ pushbox
+ box grow n 0.025um
+ box grow s 0.025um
box grow e 0.05um
box grow w 0.05um
paint m3
- box grow e -0.05um
- box grow w -0.05um
+ popbox
resumeall
}
@@ -326,17 +328,19 @@
return
}
suspendall
+ pushbox
paint via3
- box grow n 0.05um
- box grow s 0.05um
+ box grow n 0.005um
+ box grow s 0.005um
+ box grow e 0.005um
+ box grow w 0.005um
paint m4
- box grow n -0.05um
- box grow s -0.05um
+ popbox
+ pushbox
box grow e 0.05um
box grow w 0.05um
paint m3
- box grow e -0.05um
- box grow w -0.05um
+ popbox
resumeall
}
@@ -353,16 +357,13 @@
}
suspendall
paint via4
- box grow n 0.05um
- box grow s 0.05um
+ pushbox
+ box grow n 0.12um
+ box grow s 0.12um
+ box grow e 0.12um
+ box grow w 0.12um
paint m5
- box grow n -0.05um
- box grow s -0.05um
- box grow e 0.05um
- box grow w 0.05um
- paint m4
- box grow e -0.05um
- box grow w -0.05um
+ popbox
resumeall
}
#endif (METAL5)
@@ -379,10 +380,23 @@
return
}
suspendall
- paint nsc
- box grow c 0.1um
- paint nsd
- box grow c -0.1um
+ paint psc
+ pushbox
+ if {$w > $h} {
+ box grow e 0.08um
+ box grow w 0.08um
+ paint li
+ box grow e 0.04um
+ box grow w 0.04um
+ } else {
+ box grow n 0.08um
+ box grow s 0.08um
+ paint li
+ box grow n 0.04um
+ box grow s 0.04um
+ }
+ paint psd
+ popbox
resumeall
}
@@ -400,10 +414,23 @@
return
}
suspendall
- paint mvnsc
- box grow c 0.1um
- paint mvnsd
- box grow c -0.1um
+ paint mvpsc
+ pushbox
+ if {$w > $h} {
+ box grow e 0.08um
+ box grow w 0.08um
+ paint li
+ box grow e 0.04um
+ box grow w 0.04um
+ } else {
+ box grow n 0.08um
+ box grow s 0.08um
+ paint li
+ box grow n 0.04um
+ box grow s 0.04um
+ }
+ paint mvpsd
+ popbox
resumeall
}