Made some corrections to the netgen setup definition of the gf180
MiM cap device (may want to, in addition, use the new method to
compare caps by area, but this needs more testing first). Also,
fixed a typo error in the techfile where a full DRC rule was
missing due to a layer name mismatch.
diff --git a/VERSION b/VERSION
index 266bc23..1eb314e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.537
+1.0.538
diff --git a/docs.txt b/docs.txt
index 60fa77f..f463899 100644
--- a/docs.txt
+++ b/docs.txt
@@ -85,7 +85,7 @@
netgen netgen
klayout klayout
qflow qflow
- openlane openlane
+ librelane librelane
Current IP library file formats supported in this version of open_pdks*:
Format Directory name
diff --git a/gf180mcu/magic/gf180mcu.tech b/gf180mcu/magic/gf180mcu.tech
index cd3c038..4cb0ac0 100644
--- a/gf180mcu/magic/gf180mcu.tech
+++ b/gf180mcu/magic/gf180mcu.tech
@@ -1563,12 +1563,12 @@
and dnwell
and-not pwell
- templayer pdiff_missing_pwell *ndiff,*ndiode,ndiffres,nfet
+ templayer ndiff_missing_pwell *ndiff,*ndiode,ndiffres,nfet
grow 430
and dnwell
and-not pwell
- templayer mvpdiff_missing_pwell *mvndiff,mvndiffres,mvnfet
+ templayer mvndiff_missing_pwell *mvndiff,mvndiffres,mvnfet
grow 600
and dnwell
and-not pwell
diff --git a/gf180mcu/netgen/gf180mcu_setup.tcl b/gf180mcu/netgen/gf180mcu_setup.tcl
index 0c96aa0..61094ed 100644
--- a/gf180mcu/netgen/gf180mcu_setup.tcl
+++ b/gf180mcu/netgen/gf180mcu_setup.tcl
@@ -306,9 +306,7 @@
}
#-----------------------------------------------
-# Fixed-layout devices
-# NPN bipolar transistors,
-# sandwich (MoM) capacitors, and MiM capacitors
+# NPN and PNP bipolar transistors
#-----------------------------------------------
set devices {}
@@ -323,6 +321,29 @@
lappend devices pnp_10p00x10p00
lappend devices pnp_05p00x05p00
+foreach dev $devices {
+ if {[lsearch $cells1 $dev] >= 0} {
+ property "-circuit1 $dev" parallel enable
+ # Ignore these properties
+ property "-circuit1 $dev" delete par1
+ }
+ if {[lsearch $cells2 $dev] >= 0} {
+ property "-circuit2 $dev" parallel enable
+ # Ignore these properties
+ property "-circuit2 $dev" delete par1
+ }
+}
+
+#-----------------------------------------------
+# MiM capacitors
+#-----------------------------------------------
+
+set devices {}
+# NOTE: cap_mim_2f0fF is a generic version of the
+# "noshield" names; they are the same model, given
+# the specific metal stack.
+lappend devices cap_mim_2f0fF
+
#ifdef MIM
#ifdef METALS3
lappend devices cap_mim_2f0_m2m3_noshield
@@ -341,16 +362,39 @@
foreach dev $devices {
if {[lsearch $cells1 $dev] >= 0} {
property "-circuit1 $dev" parallel enable
+ property "-circuit1 $dev" tolerance {c_width 0.01} {c_length 0.01}
# Ignore these properties
property "-circuit1 $dev" delete par1
}
if {[lsearch $cells2 $dev] >= 0} {
property "-circuit2 $dev" parallel enable
+ property "-circuit2 $dev" tolerance {c_width 0.01} {c_length 0.01}
# Ignore these properties
property "-circuit2 $dev" delete par1
}
}
+#ifdef MIM
+# Ensure that the specific MiM cap model and non-specific MiM cap model will
+# be matched if they differ in the two netlists.
+#ifdef METALS3
+equate classes "-circuit1 cap_mim_2f0_m2m3_noshield" "-circuit2 cap_mim_2f0fF"
+equate classes "-circuit1 cap_mim_2f0fF" "-circuit2 cap_mim_2f0_m2m3_noshield"
+#endif (METALS3)
+#ifdef METALS4
+equate classes "-circuit1 cap_mim_2f0_m3m4_noshield" "-circuit2 cap_mim_2f0fF"
+equate classes "-circuit1 cap_mim_2f0fF" "-circuit2 cap_mim_2f0_m3m4_noshield"
+#endif (METALS4)
+#ifdef METALS5
+equate classes "-circuit1 cap_mim_2f0_m4m5_noshield" "-circuit2 cap_mim_2f0fF"
+equate classes "-circuit1 cap_mim_2f0fF" "-circuit2 cap_mim_2f0_m4m5_noshield"
+#endif (METALS5)
+#ifdef METALS6
+equate classes "-circuit1 cap_mim_2f0_m5m6_noshield" "-circuit2 cap_mim_2f0fF"
+equate classes "-circuit1 cap_mim_2f0fF" "-circuit2 cap_mim_2f0_m5m6_noshield"
+#endif (METALS6)
+#endif (MIM)
+
#---------------------------------------------------------------
# Digital cells (ignore decap, fill, and tap cells)
# Make a separate list for each supported library