Implemented Am2904RegCTInstrDecode in gates
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 4 May 2020 00:00:45 +0000 (02:00 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Mon, 4 May 2020 00:43:17 +0000 (02:43 +0200)
plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json [new file with mode: 0644]
plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java [deleted file]
plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json
plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java

diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json
new file mode 100644 (file)
index 0000000..6af533b
--- /dev/null
@@ -0,0 +1,3996 @@
+{
+  "width": 80.0,
+  "height": 80.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 70.0,
+        "y": 80.0
+      },
+      "name": "C0_MUX",
+      "logicWidth": 4,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 50.0,
+        "y": 80.0
+      },
+      "name": "CT_EXP",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 40.0,
+        "y": 80.0
+      },
+      "name": "CT_INV",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 30.0,
+        "y": 80.0
+      },
+      "name": "CT_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 50.0
+      },
+      "name": "I5-0",
+      "logicWidth": 6,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 30.0
+      },
+      "name": "I12-11",
+      "logicWidth": 2,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 20.0,
+        "y": 0.0
+      },
+      "name": "MSR_MUX",
+      "logicWidth": 3,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 0.0
+      },
+      "name": "OEN",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 80.0
+      },
+      "name": "Y_MUX",
+      "logicWidth": 2,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 30.0
+      },
+      "name": "muSR_CINV",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 10.0
+      },
+      "name": "muSR_MUX",
+      "logicWidth": 2,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 20.0
+      },
+      "name": "muSR_OVRRET",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 50.0
+      },
+      "name": "muSR_WEC",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 60.0
+      },
+      "name": "muSR_WEN",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 70.0
+      },
+      "name": "muSR_WEOVR",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 40.0
+      },
+      "name": "muSR_WEZ",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "NandGate",
+        "name": "NandGate#0",
+        "pos": {
+          "x": 65.0,
+          "y": 180.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#1",
+        "pos": {
+          "x": 65.0,
+          "y": 205.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#2",
+        "pos": {
+          "x": 65.0,
+          "y": 230.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#3",
+        "pos": {
+          "x": 65.0,
+          "y": 255.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#4",
+        "pos": {
+          "x": 65.0,
+          "y": 280.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#5",
+        "pos": {
+          "x": 65.0,
+          "y": 305.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#6",
+        "pos": {
+          "x": 65.0,
+          "y": 155.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#7",
+        "pos": {
+          "x": 120.0,
+          "y": 195.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#8",
+        "pos": {
+          "x": 120.0,
+          "y": 270.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#9",
+        "pos": {
+          "x": 120.0,
+          "y": 220.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#10",
+        "pos": {
+          "x": 210.0,
+          "y": 255.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#11",
+        "pos": {
+          "x": 175.0,
+          "y": 260.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#12",
+        "pos": {
+          "x": 175.0,
+          "y": 200.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#13",
+        "pos": {
+          "x": 270.0,
+          "y": 250.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#14",
+        "pos": {
+          "x": 225.0,
+          "y": 75.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#15",
+        "pos": {
+          "x": 215.0,
+          "y": 35.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#16",
+        "pos": {
+          "x": 245.0,
+          "y": 10.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#17",
+        "pos": {
+          "x": 170.0,
+          "y": 55.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#18",
+        "pos": {
+          "x": 140.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#19",
+        "pos": {
+          "x": 100.0,
+          "y": 45.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#20",
+        "pos": {
+          "x": 50.0,
+          "y": 55.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#21",
+        "pos": {
+          "x": 20.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#22",
+        "pos": {
+          "x": 120.0,
+          "y": 170.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#23",
+        "pos": {
+          "x": 355.0,
+          "y": 50.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#24",
+        "pos": {
+          "x": 280.0,
+          "y": 85.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#25",
+        "pos": {
+          "x": 315.0,
+          "y": 60.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#26",
+        "pos": {
+          "x": 285.0,
+          "y": 55.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#27",
+        "pos": {
+          "x": 355.0,
+          "y": 25.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#28",
+        "pos": {
+          "x": 325.0,
+          "y": 25.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#29",
+        "pos": {
+          "x": 290.0,
+          "y": 25.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#30",
+        "pos": {
+          "x": 370.0,
+          "y": 190.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#31",
+        "pos": {
+          "x": 370.0,
+          "y": 240.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#32",
+        "pos": {
+          "x": 370.0,
+          "y": 290.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#33",
+        "pos": {
+          "x": 370.0,
+          "y": 340.0
+        },
+        "params": 1
+      },
+      {
+        "id": "NandGate",
+        "name": "NandGate#34",
+        "pos": {
+          "x": 335.0,
+          "y": 240.0
+        },
+        "params": 1
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 145.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 5.0,
+          "y": 225.0
+        },
+        "params": {
+          "logicWidth": 6,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 45.0,
+          "y": 385.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 140.0,
+          "y": 385.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 335.0,
+          "y": 385.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#5",
+        "pos": {
+          "x": 90.0,
+          "y": 5.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#6",
+        "pos": {
+          "x": 385.0,
+          "y": 45.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 44.0,
+          "y": 369.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 209.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 29.0,
+          "y": 194.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 34.0,
+          "y": 219.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 39.0,
+          "y": 244.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 44.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 49.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 54.0,
+          "y": 274.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 89.0,
+          "y": 164.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 254.0,
+          "y": 144.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 44.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 49.0,
+          "y": 284.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 54.0,
+          "y": 309.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 49.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 39.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 104.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 209.0,
+          "y": 159.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
+        "pos": {
+          "x": 279.0,
+          "y": 79.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
+        "pos": {
+          "x": 274.0,
+          "y": 89.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
+        "pos": {
+          "x": 114.0,
+          "y": 139.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
+        "pos": {
+          "x": 44.0,
+          "y": 159.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#21",
+        "pos": {
+          "x": 204.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
+        "pos": {
+          "x": 219.0,
+          "y": 184.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
+        "pos": {
+          "x": 99.0,
+          "y": 164.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#24",
+        "pos": {
+          "x": 209.0,
+          "y": 39.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#25",
+        "pos": {
+          "x": 274.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
+        "pos": {
+          "x": 199.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
+        "pos": {
+          "x": 269.0,
+          "y": 164.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#28",
+        "pos": {
+          "x": 199.0,
+          "y": 244.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
+        "pos": {
+          "x": 109.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#30",
+        "pos": {
+          "x": 249.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#31",
+        "pos": {
+          "x": 104.0,
+          "y": 284.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#32",
+        "pos": {
+          "x": 99.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#33",
+        "pos": {
+          "x": 94.0,
+          "y": 239.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#34",
+        "pos": {
+          "x": 104.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#35",
+        "pos": {
+          "x": 89.0,
+          "y": 139.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#36",
+        "pos": {
+          "x": 99.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#37",
+        "pos": {
+          "x": 84.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#38",
+        "pos": {
+          "x": 244.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#39",
+        "pos": {
+          "x": 159.0,
+          "y": 274.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#40",
+        "pos": {
+          "x": 114.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#41",
+        "pos": {
+          "x": 149.0,
+          "y": 174.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#42",
+        "pos": {
+          "x": 364.0,
+          "y": 304.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#43",
+        "pos": {
+          "x": 364.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#44",
+        "pos": {
+          "x": 159.0,
+          "y": 264.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#45",
+        "pos": {
+          "x": 154.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#46",
+        "pos": {
+          "x": 29.0,
+          "y": 224.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#47",
+        "pos": {
+          "x": 34.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#48",
+        "pos": {
+          "x": 44.0,
+          "y": 269.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#49",
+        "pos": {
+          "x": 49.0,
+          "y": 294.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#50",
+        "pos": {
+          "x": 54.0,
+          "y": 319.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#51",
+        "pos": {
+          "x": 249.0,
+          "y": 254.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#52",
+        "pos": {
+          "x": 319.0,
+          "y": 259.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#53",
+        "pos": {
+          "x": 309.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#54",
+        "pos": {
+          "x": 89.0,
+          "y": 174.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#55",
+        "pos": {
+          "x": 254.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#56",
+        "pos": {
+          "x": 244.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#57",
+        "pos": {
+          "x": 364.0,
+          "y": 234.0
+        },
+        "params": 1
+      },
+      {
+        "id": "and",
+        "name": "and#0",
+        "pos": {
+          "x": 210.0,
+          "y": 10.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#1",
+        "pos": {
+          "x": 120.0,
+          "y": 245.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#2",
+        "pos": {
+          "x": 365.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#3",
+        "pos": {
+          "x": 120.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#4",
+        "pos": {
+          "x": 215.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#5",
+        "pos": {
+          "x": 60.0,
+          "y": 20.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#6",
+        "pos": {
+          "x": 220.0,
+          "y": 345.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#7",
+        "pos": {
+          "x": 215.0,
+          "y": 230.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#8",
+        "pos": {
+          "x": 315.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#9",
+        "pos": {
+          "x": 360.0,
+          "y": 115.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I5-0"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I12-11"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 145.0
+          },
+          {
+            "x": 20.0,
+            "y": 380.0
+          },
+          {
+            "x": 335.0,
+            "y": 380.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 155.0
+          },
+          {
+            "x": 25.0,
+            "y": 375.0
+          },
+          {
+            "x": 345.0,
+            "y": 375.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#26",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 260.0,
+            "y": 80.0
+          },
+          {
+            "x": 260.0,
+            "y": 150.0
+          },
+          {
+            "x": 55.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#34",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#34",
+        "path": [
+          {
+            "x": 330.0,
+            "y": 145.0
+          },
+          {
+            "x": 330.0,
+            "y": 255.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "name": "unnamedWire#36",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 135.0
+          },
+          {
+            "x": 205.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#5",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#38",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 315.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#33",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#39",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 155.0
+          },
+          {
+            "x": 325.0,
+            "y": 155.0
+          },
+          {
+            "x": 325.0,
+            "y": 345.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#7",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#40",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 190.0
+          },
+          {
+            "x": 90.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#7",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#41",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 215.0
+          },
+          {
+            "x": 90.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#44",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "name": "unnamedWire#45",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#12",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#46",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 215.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#50",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 275.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#16",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#53",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#9",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#9",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#56",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 225.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#33",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#57",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#58",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#31",
+          "pinName": ""
+        },
+        "name": "unnamedWire#60",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 290.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 105.0
+          },
+          {
+            "x": 200.0,
+            "y": 15.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#30",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 160.0,
+            "y": 195.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#14",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#63",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 80.0
+          },
+          {
+            "x": 170.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "name": "unnamedWire#64",
+        "path": [
+          {
+            "x": 160.0,
+            "y": 280.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#11",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#11",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#67",
+        "path": [
+          {
+            "x": 205.0,
+            "y": 110.0
+          },
+          {
+            "x": 205.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#9",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#68",
+        "path": [
+          {
+            "x": 150.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#2",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#69",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 180.0
+          },
+          {
+            "x": 285.0,
+            "y": 180.0
+          },
+          {
+            "x": 285.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
+        },
+        "name": "unnamedWire#70",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "name": "unnamedWire#71",
+        "path": [
+          {
+            "x": 275.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#72",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "name": "unnamedWire#73",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#24",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#45",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#12",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#75",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "name": "unnamedWire#76",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#78",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#79",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#47",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#80",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 365.0
+          },
+          {
+            "x": 55.0,
+            "y": 365.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Y_MUX"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#81",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "CT_MUX"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#82",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#83",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 360.0
+          },
+          {
+            "x": 140.0,
+            "y": 360.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#3",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#84",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#48",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#85",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 355.0
+          },
+          {
+            "x": 150.0,
+            "y": 355.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#4",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#86",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#49",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#87",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 350.0
+          },
+          {
+            "x": 160.0,
+            "y": 350.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#88",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#50",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CT_INV"
+        },
+        "name": "unnamedWire#89",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 345.0
+          },
+          {
+            "x": 200.0,
+            "y": 345.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C0_MUX"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "name": "unnamedWire#91",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 370.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#92",
+        "path": [
+          {
+            "x": 355.0,
+            "y": 370.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#11",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#10",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#93",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#10",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#94",
+        "path": [
+          {
+            "x": 205.0,
+            "y": 260.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#10",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "name": "unnamedWire#95",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#13",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#13",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#12",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "name": "unnamedWire#98",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#14",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#99",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "MSR_MUX"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#100",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_MUX"
+        },
+        "name": "unnamedWire#101",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#14",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#102",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 85.0
+          },
+          {
+            "x": 250.0,
+            "y": 60.0
+          },
+          {
+            "x": 210.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#103",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 40.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#13",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#104",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#15",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#105",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#15",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#106",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#7",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#15",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#16",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#108",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 45.0
+          },
+          {
+            "x": 240.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#16",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "OEN"
+        },
+        "name": "unnamedWire#109",
+        "path": [
+          {
+            "x": 300.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#17",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#110",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 115.0
+          },
+          {
+            "x": 165.0,
+            "y": 115.0
+          },
+          {
+            "x": 165.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#5",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#111",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#112",
+        "path": [
+          {
+            "x": 320.0,
+            "y": 365.0
+          },
+          {
+            "x": 365.0,
+            "y": 365.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#52",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#113",
+        "path": [
+          {
+            "x": 320.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_CINV"
+        },
+        "name": "unnamedWire#114",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#4",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#18",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#17",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#116",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#19",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#117",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#19",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "name": "unnamedWire#118",
+        "path": [
+          {
+            "x": 85.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#19",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#18",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#119",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#3",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#18",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#120",
+        "path": [
+          {
+            "x": 150.0,
+            "y": 85.0
+          },
+          {
+            "x": 150.0,
+            "y": 75.0
+          },
+          {
+            "x": 135.0,
+            "y": 75.0
+          },
+          {
+            "x": 135.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "name": "unnamedWire#121",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#5",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#122",
+        "path": [
+          {
+            "x": 80.0,
+            "y": 120.0
+          },
+          {
+            "x": 80.0,
+            "y": 45.0
+          },
+          {
+            "x": 55.0,
+            "y": 45.0
+          },
+          {
+            "x": 55.0,
+            "y": 35.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "name": "unnamedWire#123",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#21",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#124",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 100.0
+          },
+          {
+            "x": 10.0,
+            "y": 100.0
+          },
+          {
+            "x": 10.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#24",
+          "pinName": ""
+        },
+        "name": "unnamedWire#125",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#17",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#126",
+        "path": [
+          {
+            "x": 195.0,
+            "y": 65.0
+          },
+          {
+            "x": 195.0,
+            "y": 25.0
+          },
+          {
+            "x": 110.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "name": "unnamedWire#127",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#20",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#5",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#128",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 65.0
+          },
+          {
+            "x": 75.0,
+            "y": 50.0
+          },
+          {
+            "x": 50.0,
+            "y": 50.0
+          },
+          {
+            "x": 50.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#21",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#20",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#129",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
+        },
+        "name": "unnamedWire#130",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "name": "unnamedWire#131",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#20",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#132",
+        "path": [
+          {
+            "x": 150.0,
+            "y": 115.0
+          },
+          {
+            "x": 45.0,
+            "y": 115.0
+          },
+          {
+            "x": 45.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#6",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "CT_EXP"
+        },
+        "name": "unnamedWire#133",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 350.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#51",
+          "pinName": ""
+        },
+        "name": "unnamedWire#134",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#21",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#7",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#135",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#7",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "name": "unnamedWire#136",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#21",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#137",
+        "path": [
+          {
+            "x": 15.0,
+            "y": 110.0
+          },
+          {
+            "x": 15.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "name": "unnamedWire#138",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#22",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#139",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#22",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#54",
+          "pinName": ""
+        },
+        "name": "unnamedWire#140",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#22",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "name": "unnamedWire#141",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 180.0
+          },
+          {
+            "x": 145.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#6",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#142",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 335.0
+          },
+          {
+            "x": 210.0,
+            "y": 335.0
+          },
+          {
+            "x": 210.0,
+            "y": 360.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#23",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#143",
+        "path": [
+          {
+            "x": 380.0,
+            "y": 60.0
+          },
+          {
+            "x": 380.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#23",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#144",
+        "path": [
+          {
+            "x": 345.0,
+            "y": 90.0
+          },
+          {
+            "x": 345.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#8",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#145",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#24",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#8",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#146",
+        "path": [
+          {
+            "x": 305.0,
+            "y": 95.0
+          },
+          {
+            "x": 305.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#6",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#147",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 340.0
+          },
+          {
+            "x": 215.0,
+            "y": 340.0
+          },
+          {
+            "x": 215.0,
+            "y": 350.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#24",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#148",
+        "path": [
+          {
+            "x": 265.0,
+            "y": 140.0
+          },
+          {
+            "x": 265.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#25",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#23",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#149",
+        "path": [
+          {
+            "x": 340.0,
+            "y": 70.0
+          },
+          {
+            "x": 340.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#25",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#150",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 80.0
+          },
+          {
+            "x": 310.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#26",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#25",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#151",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#3",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#152",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#26",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#27",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#154",
+        "path": [
+          {
+            "x": 380.0,
+            "y": 35.0
+          },
+          {
+            "x": 380.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#27",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#53",
+          "pinName": ""
+        },
+        "name": "unnamedWire#155",
+        "path": [
+          {
+            "x": 350.0,
+            "y": 40.0
+          },
+          {
+            "x": 350.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#28",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#27",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#156",
+        "path": [
+          {
+            "x": 350.0,
+            "y": 35.0
+          },
+          {
+            "x": 350.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#25",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#28",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#157",
+        "path": [
+          {
+            "x": 275.0,
+            "y": 50.0
+          },
+          {
+            "x": 315.0,
+            "y": 50.0
+          },
+          {
+            "x": 315.0,
+            "y": 40.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#29",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#28",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#158",
+        "path": [
+          {
+            "x": 320.0,
+            "y": 35.0
+          },
+          {
+            "x": 320.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#29",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#159",
+        "path": [
+          {
+            "x": 270.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#29",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#160",
+        "path": [
+          {
+            "x": 280.0,
+            "y": 40.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_OVRRET"
+        },
+        "name": "unnamedWire#161",
+        "path": [
+          {
+            "x": 390.0,
+            "y": 120.0
+          },
+          {
+            "x": 390.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#9",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#55",
+          "pinName": ""
+        },
+        "name": "unnamedWire#162",
+        "path": [
+          {
+            "x": 280.0,
+            "y": 130.0
+          },
+          {
+            "x": 280.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#4",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "name": "unnamedWire#163",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#56",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "and#9",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#164",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#30",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_WEZ"
+        },
+        "name": "unnamedWire#165",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#31",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_WEC"
+        },
+        "name": "unnamedWire#166",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#32",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_WEN"
+        },
+        "name": "unnamedWire#167",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#33",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "muSR_WEOVR"
+        },
+        "name": "unnamedWire#168",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "name": "unnamedWire#169",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#57",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#30",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#170",
+        "path": [
+          {
+            "x": 365.0,
+            "y": 205.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#31",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#171",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#32",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#172",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#33",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#173",
+        "path": [
+          {
+            "x": 365.0,
+            "y": 355.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#43",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
+        },
+        "name": "unnamedWire#174",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#32",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#175",
+        "path": [
+          {
+            "x": 315.0,
+            "y": 175.0
+          },
+          {
+            "x": 315.0,
+            "y": 295.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#34",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "NandGate#31",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#176",
+        "path": [
+          {
+            "x": 360.0,
+            "y": 250.0
+          },
+          {
+            "x": 360.0,
+            "y": 245.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#34",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#177",
+        "path": [
+          {
+            "x": 270.0,
+            "y": 245.0
+          }
+        ]
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "Instruction\ndecode",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 17.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default",
+  "version": "0.1.5"
+}
\ No newline at end of file
diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java
deleted file mode 100644 (file)
index db294b3..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-package net.mograsim.logic.model.am2900.components.am2904;
-
-import static net.mograsim.logic.core.types.Bit.ONE;
-import static net.mograsim.logic.core.types.Bit.U;
-import static net.mograsim.logic.core.types.Bit.X;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Map;
-
-import net.mograsim.logic.core.types.Bit;
-import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
-import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd;
-import net.mograsim.logic.model.model.LogicModelModifiable;
-import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
-import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
-
-public class ModelAm2904RegCTInstrDecode extends SimpleRectangularHardcodedModelComponent
-{
-       public ModelAm2904RegCTInstrDecode(LogicModelModifiable model, String name)
-       {
-               super(model, "Am2904RegCTInstrDecode", name, "Instruction\ndecode", false);
-               setSize(80, 80);
-               addPin(new Pin(model, this, "I12-11", 2, PinUsage.INPUT, 0, 30), Position.RIGHT);
-               addPin(new Pin(model, this, "I5-0", 6, PinUsage.INPUT, 0, 50), Position.RIGHT);
-               // muSR MUX:
-               // 00: 0
-               // 01: 1
-               // 10: M
-               // 11: I
-               addPin(new Pin(model, this, "muSR_MUX", 2, PinUsage.OUTPUT, 80, 10), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_OVRRET", 1, PinUsage.OUTPUT, 80, 20), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_CINV", 1, PinUsage.OUTPUT, 80, 30), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_WEZ", 1, PinUsage.OUTPUT, 80, 40), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_WEC", 1, PinUsage.OUTPUT, 80, 50), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_WEN", 1, PinUsage.OUTPUT, 80, 60), Position.LEFT);
-               addPin(new Pin(model, this, "muSR_WEOVR", 1, PinUsage.OUTPUT, 80, 70), Position.LEFT);
-               // MSR MUX:
-               // 000: 0
-               // 001: 1
-               // 010: mu
-               // 011: Y
-               // 100: I
-               // 101: I, invert C
-               // 110: Swap OVR and C
-               // 111: _M
-               addPin(new Pin(model, this, "MSR_MUX", 3, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
-               addPin(new Pin(model, this, "OEN", 1, PinUsage.OUTPUT, 60, 0), Position.BOTTOM);
-               // Y MUX:
-               // 00: mu
-               // 01: mu
-               // 10: M
-               // 11: I
-               addPin(new Pin(model, this, "Y_MUX", 2, PinUsage.OUTPUT, 10, 80), Position.TOP);
-               // CT MUX:
-               // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1)
-               addPin(new Pin(model, this, "CT_MUX", 3, PinUsage.OUTPUT, 30, 80), Position.TOP);
-               addPin(new Pin(model, this, "CT_INV", 1, PinUsage.OUTPUT, 40, 80), Position.TOP);
-               addPin(new Pin(model, this, "CT_EXP", 1, PinUsage.OUTPUT, 50, 80), Position.TOP);
-               // C0 MUX:
-               // 00xx: 0
-               // 01xx: 1
-               // 10xx: CX
-               // 1100: muC
-               // 1101: _muC
-               // 1110: MC
-               // 1111: _MC
-               addPin(new Pin(model, this, "C0_MUX", 4, PinUsage.OUTPUT, 70, 80), Position.TOP);
-
-               init();
-       }
-
-       @Override
-       public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
-       {
-               Bit[] I5_0Bits = readEnds.get("I5-0").getValues().getBits();
-               Bit[] I12_11Bits = readEnds.get("I12-11").getValues().getBits();
-
-               readWriteEnds.get("OEN").feedSignals(I5_0Bits[0].or(I5_0Bits[1]).or(I5_0Bits[2]).or(I5_0Bits[3]).or(I5_0Bits[4]).or(I5_0Bits[5]));
-               readWriteEnds.get("Y_MUX").feedSignals(I5_0Bits[0], I5_0Bits[1]);
-               readWriteEnds.get("CT_INV").feedSignals(I5_0Bits[5]);
-               readWriteEnds.get("CT_MUX").feedSignals(I5_0Bits[2], I5_0Bits[3], I5_0Bits[4]);
-               readWriteEnds.get("C0_MUX").feedSignals(I12_11Bits[0], I12_11Bits[1], I5_0Bits[0],
-                               I5_0Bits[2].and(I5_0Bits[3].not()).and(I5_0Bits[4].not()));
-
-               int IAsInt = 0;
-               for (int i = 0; i < 6; i++)
-                       switch (I5_0Bits[5 - i])
-                       {
-                       case ONE:
-                               IAsInt |= 1 << i;
-                               break;
-                       case U:
-                               readWriteEnds.get("muSR_MUX").feedSignals(U, U);
-                               readWriteEnds.get("muSR_OVRRET").feedSignals(U);
-                               readWriteEnds.get("muSR_CINV").feedSignals(U);
-                               readWriteEnds.get("muSR_WEZ").feedSignals(U);
-                               readWriteEnds.get("muSR_WEC").feedSignals(U);
-                               readWriteEnds.get("muSR_WEN").feedSignals(U);
-                               readWriteEnds.get("muSR_WEOVR").feedSignals(U);
-                               readWriteEnds.get("MSR_MUX").feedSignals(U, U, U);
-                               return null;
-                       case X:
-                       case Z:
-                               readWriteEnds.get("muSR_MUX").feedSignals(X, X);
-                               readWriteEnds.get("muSR_OVRRET").feedSignals(X);
-                               readWriteEnds.get("muSR_CINV").feedSignals(X);
-                               readWriteEnds.get("muSR_WEZ").feedSignals(X);
-                               readWriteEnds.get("muSR_WEC").feedSignals(X);
-                               readWriteEnds.get("muSR_WEN").feedSignals(X);
-                               readWriteEnds.get("muSR_WEOVR").feedSignals(X);
-                               readWriteEnds.get("MSR_MUX").feedSignals(X, X, X);
-                               return null;
-                       case ZERO:
-                               break;
-                       default:
-                               throw new IllegalArgumentException("Unknown enum constant: " + I5_0Bits[i]);
-                       }
-
-               readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b111110) == 0b001110 ? ONE : ZERO);
-
-               switch (IAsInt)
-               {
-               case 0:
-               case 2:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 1:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 3:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 6:
-               case 7:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ONE);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 8:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 9:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 10:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 11:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 12:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 13:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO);
-                       break;
-               case 14:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 15:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               case 24:
-               case 25:
-               case 40:
-               case 41:
-               case 56:
-               case 57:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-                       break;
-               default:
-                       readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE);
-                       readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_CINV").feedSignals(ZERO);
-                       readWriteEnds.get("muSR_WEZ").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEC").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEN").feedSignals(ONE);
-                       readWriteEnds.get("muSR_WEOVR").feedSignals(ONE);
-               }
-               switch (IAsInt)
-               {
-               case 0:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ONE);
-                       break;
-               case 1:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE);
-                       break;
-               case 2:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ZERO);
-                       break;
-               case 3:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ZERO);
-                       break;
-               case 4:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ZERO);
-                       break;
-               case 5:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ONE);
-                       break;
-               case 8:
-               case 9:
-               case 24:
-               case 25:
-               case 40:
-               case 41:
-               case 56:
-               case 57:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ONE);
-                       break;
-               default:
-                       readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ZERO);
-                       break;
-               }
-               return null;
-       }
-
-       static
-       {
-               IndirectModelComponentCreator.setComponentSupplier(ModelAm2904RegCTInstrDecode.class.getCanonicalName(),
-                               (m, p, n) -> new ModelAm2904RegCTInstrDecode(m, n));
-       }
-}
\ No newline at end of file
index d4fe5b5..3b94540 100644 (file)
@@ -1,7 +1,6 @@
 {
   "Am2900MainMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MainMemory",
   "Am2900MicroInstructionMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MicroInstructionMemory",
-  "Am2904RegCTInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904RegCTInstrDecode",
   "Am2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904ShiftInstrDecode",
   "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12",
 
@@ -17,6 +16,7 @@
   "Am2904": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904.json",
   "Am2904MSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json",
   "Am2904muSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json",
+  "Am2904RegCTInstrDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json",
   "Am2904TestLogic": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json",
   "Am2910": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910.json",
   "Am2910InstrPLA": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910InstrPLA.json",
index d82e41d..658f056 100644 (file)
@@ -10,6 +10,7 @@ import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
 import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
+import net.mograsim.logic.model.model.components.atomic.ModelTextComponent;
 import net.mograsim.logic.model.model.wires.ModelWire;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.PinUsage;
@@ -27,7 +28,7 @@ public class ModelComponentTestbench
        {
                Am2900Loader.setup();
 //             ModelComponent comp = new StrictAm2900MachineDefinition().createNew(model).getAm2900();
-               ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2910");
+               ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2904");
 
                List<String> inputPinNames = new ArrayList<>();
                List<String> outputPinNames = new ArrayList<>();
@@ -47,6 +48,7 @@ public class ModelComponentTestbench
                        String pinName = inputPinNames.get(i);
                        ModelManualSwitch sw = new ModelManualSwitch(model, comp.getPin(pinName).logicWidth, pinName);
                        sw.moveTo(0, 20 * i);
+                       new ModelTextComponent(model, pinName).moveTo(20, 20 * i);
                        new ModelWire(model, comp.getPin(pinName), sw.getOutputPin());
                }
                for (int i = 0; i < outputPinNames.size(); i++)
@@ -54,6 +56,7 @@ public class ModelComponentTestbench
                        String pinName = outputPinNames.get(i);
                        ModelBitDisplay bd = new ModelBitDisplay(model, comp.getPin(pinName).logicWidth, pinName);
                        bd.moveTo(200, 20 * i);
+                       new ModelTextComponent(model, pinName).moveTo(220, 20 * i);
                        new ModelWire(model, comp.getPin(pinName), bd.getInputPin());
                }
        }