Merge pull request #172 from cr1901/facade

MachXO2 Support: Part 4
diff --git a/database b/database
index f7f8375..0ee729d 160000
--- a/database
+++ b/database
@@ -1 +1 @@
-Subproject commit f7f8375101dfa7f7d5ccb654ff8fcae73356ce48
+Subproject commit 0ee729d20eaf9f1e0f1d657bc6452e3ffe6a0d63
diff --git a/fuzzers/machxo2/051-pio_attrs/fuzzer.py b/fuzzers/machxo2/051-pio_attrs/fuzzer.py
index 9185f61..0d976d5 100644
--- a/fuzzers/machxo2/051-pio_attrs/fuzzer.py
+++ b/fuzzers/machxo2/051-pio_attrs/fuzzer.py
@@ -60,6 +60,30 @@
             "side": "T",
             "pins": [("28", "C"), ("27", "D")]
         },
+
+        {
+            "cfg": FuzzConfig(job="PICRS0_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PR3:PIC_RS0"]),
+            "side": "R",
+            "pins": [("71", "A"), ("70", "B")],
+            "package": "TQFP100"
+        },
+
+        {
+            "cfg": FuzzConfig(job="PICLS0_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PL9:PIC_LS0"]),
+            "side": "L",
+            "pins": [("20", "A"), ("21", "B")],
+            "package": "TQFP100"
+        },
+
+        {
+            "cfg": FuzzConfig(job="PICL0VREF_IO", family="MachXO2", device="LCMXO2-1200HC",
+                        ncl="empty.ncl", tiles=["PL4:PIC_L0_VREF3"]),
+            "side": "L",
+            "pins": [("11", "A"), ("12", "B"), ("13", "C"), ("14", "D")],
+            "package": "TQFP144"
+        },
 ]
 
 # Function constructed from reading the MachXO2 sysIO Usage Guide.
diff --git a/fuzzers/machxo2/052-pio_fixup/fuzzer.py b/fuzzers/machxo2/052-pio_fixup/fuzzer.py
index 0bdf954..ee07d94 100644
--- a/fuzzers/machxo2/052-pio_fixup/fuzzer.py
+++ b/fuzzers/machxo2/052-pio_fixup/fuzzer.py
@@ -4,7 +4,10 @@
 def main():
     pytrellis.load_database("../../../database")
     dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_L0", (29, 11))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_LS0", (29, 11))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_L0_VREF3", (29, 11))
     dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_R0", (29, 59), (0, 48))
+    dbfixup.remove_enum_bits("MachXO2", "LCMXO2-1200HC", "PIC_RS0", (29, 59), (0, 48))
 
 if __name__ == "__main__":
     main()
diff --git a/libtrellis/src/Bels.cpp b/libtrellis/src/Bels.cpp
index 64a9025..5111c8a 100644
--- a/libtrellis/src/Bels.cpp
+++ b/libtrellis/src/Bels.cpp
@@ -753,9 +753,9 @@
         bel.loc.y = y;
         bel.z = z;
 
-        graph.add_bel_input(bel, graph.ident("CLKI"), x, y, graph.ident(fmt("G_CLKI" << name << "_DCC")));
-        graph.add_bel_input(bel, graph.ident("CE"), x, y, graph.ident(fmt("G_JCE" << name << "_DCC")));
-        graph.add_bel_output(bel, graph.ident("CLKO"), x, y, graph.ident(fmt("G_CLKO" << name << "_DCC")));
+        graph.add_bel_input(bel, graph.ident("CLKI"), x, y, graph.ident(fmt("G_CLKI" << z << "_DCC")));
+        graph.add_bel_input(bel, graph.ident("CE"), x, y, graph.ident(fmt("G_JCE" << z << "_DCC")));
+        graph.add_bel_output(bel, graph.ident("CLKO"), x, y, graph.ident(fmt("G_CLKO" << z << "_DCC")));
 
         graph.add_bel(bel);
     }
diff --git a/util/fuzz/dbfixup.py b/util/fuzz/dbfixup.py
index 734522f..885849d 100644
--- a/util/fuzz/dbfixup.py
+++ b/util/fuzz/dbfixup.py
@@ -56,15 +56,14 @@
     for enum in db.get_settings_enums():
         fixed_enum = pytrellis.EnumSettingBits()
 
-        for option in db.get_data_for_enum(enum).options:
-            key = option.key()
+        for (option, data) in db.get_data_for_enum(enum).options.items():
             fixed_bg = pytrellis.BitGroup()
 
-            for bit in option.data().bits:
+            for bit in data.bits:
                 if in_bounding_box(bit):
                     fixed_bg.bits.add(bit)
 
-            fixed_enum.options[key] = fixed_bg
+            fixed_enum.options[option] = fixed_bg
 
         fixed_enum.name = db.get_data_for_enum(enum).name
         fixed_enum.defval = db.get_data_for_enum(enum).defval