Merge 'transportdelay' into development
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Thu, 12 Sep 2019 21:13:01 +0000 (23:13 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Thu, 12 Sep 2019 21:13:40 +0000 (23:13 +0200)
78 files changed:
SWTHelper
net.mograsim.logic.core/src/net/mograsim/logic/core/wires/CoreWire.java
net.mograsim.logic.model.am2900/Am2904Testbench.json
net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF
net.mograsim.logic.model.am2900/build.properties
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901ALUInclSourceDecodeInclFunctionDecode.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff12_we.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_invwe.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff4.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff4_invwe.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff8.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff80.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dlatch4.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_12.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_16.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_8.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux2.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux2_4.json [deleted file]
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux3.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/ram2.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/ram4.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/sel1.json
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/Am2900Loader.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java [new file with mode: 0644]
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java [deleted file]
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2910/ModelAm2910RegCntr.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MicroInstructionDefinition.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java [new file with mode: 0644]
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONs.java [new file with mode: 0644]
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java [deleted file]
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java [new file with mode: 0644]
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2901/TestableAm2901Impl.java
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.json [new file with mode: 0644]
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904Impl.java
net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/Editor.java
net.mograsim.logic.model.editor/src/net/mograsim/logic/model/editor/handles/ComponentHandle.java
net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/LogicModel.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelMerger.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelSplitter.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularHardcodedModelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/submodels/SubmodelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/LegacySubmodelComponentSerializer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/LogicModelSerializer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java [deleted file]
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandlerSnippetSuppliers.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/DelegatingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/symbolrenderers/PinNamesSymbolRenderer.java
net.mograsim.logic.model/src/net/mograsim/logic/model/util/JsonHandler.java
net.mograsim.machine/META-INF/MANIFEST.MF
net.mograsim.machine/src/net/mograsim/machine/MachineLoader.java [new file with mode: 0644]
net.mograsim.machine/src/net/mograsim/machine/mi/StandardMicroInstructionMemory.java
net.mograsim.machine/src/net/mograsim/machine/mi/parameters/MnemonicFamily.java
net.mograsim.machine/src/net/mograsim/machine/standard/memory/ModelMemoryWA.java
net.mograsim.machine/src/net/mograsim/machine/standardComponentIDMapping.json [new file with mode: 0644]
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java [new file with mode: 0644]
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionTableContentProvider.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/InstructionView.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/IntegerEditingSupport.java
net.mograsim.plugin.core/src/net/mograsim/plugin/tables/mi/MnemonicEditingSupport.java
net.mograsim.plugin.feature/feature.xml

index 675171d..7857458 160000 (submodule)
--- a/SWTHelper
+++ b/SWTHelper
@@ -1 +1 @@
-Subproject commit 675171d7c711e4d699b44c40d2b68d18709b7b90
+Subproject commit 7857458991642e998c691d9b65d5a9bf7f7bbfae
index 7d81f6d..8b71a0c 100644 (file)
@@ -445,6 +445,7 @@ public class CoreWire
                        feedSignals(BitVector.of(newValues));
                }
 
+               // TODO what if this is called multiple times at the same simulation time? (happens in component unit tests)
                public void feedSignals(BitVector newValues)
                {
                        if (newValues.length() != width)
index eddb94b..c7bec19 100644 (file)
         "params": 1
       },
       {
-        "id": "Merger",
+        "id": "Splitter",
         "name": "Merger#0",
         "pos": {
           "x": 85.0,
           "y": 130.0
         },
-        "params": 13
+        "params": {
+          "logicWidth": 13,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "TextComponent",
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 185.0,
-          "y": 365.0
+          "x": 184.0,
+          "y": 364.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 185.0,
-          "y": 310.0
+          "x": 184.0,
+          "y": 309.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 370.0,
-          "y": 175.0
+          "x": 369.0,
+          "y": 174.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#11",
         "pos": {
-          "x": 375.0,
-          "y": 190.0
+          "x": 374.0,
+          "y": 189.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#12",
         "pos": {
-          "x": 380.0,
-          "y": 200.0
+          "x": 379.0,
+          "y": 199.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 210.0,
-          "y": 325.0
+          "x": 209.0,
+          "y": 324.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 215.0,
-          "y": 340.0
+          "x": 214.0,
+          "y": 339.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 355.0,
-          "y": 380.0
+          "x": 354.0,
+          "y": 379.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 360.0,
-          "y": 390.0
+          "x": 359.0,
+          "y": 389.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 345.0,
-          "y": 85.0
+          "x": 344.0,
+          "y": 84.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 360.0,
-          "y": 110.0
+          "x": 359.0,
+          "y": 109.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 360.0,
-          "y": 125.0
+          "x": 359.0,
+          "y": 124.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 365.0,
-          "y": 160.0
+          "x": 364.0,
+          "y": 159.0
         },
         "params": 1
       }
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "O"
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Am2904#0",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I12"
+          "pinName": "O12"
         },
         "name": "unnamedWire#42",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I11"
+          "pinName": "O11"
         },
         "pin2": {
           "compName": "ManualSwitch#13",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I10"
+          "pinName": "O10"
         },
         "name": "unnamedWire#44",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I9"
+          "pinName": "O9"
         },
         "pin2": {
           "compName": "ManualSwitch#22",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I8"
+          "pinName": "O8"
         },
         "name": "unnamedWire#46",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I7"
+          "pinName": "O7"
         },
         "pin2": {
           "compName": "ManualSwitch#23",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I6"
+          "pinName": "O6"
         },
         "name": "unnamedWire#48",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I5"
+          "pinName": "O5"
         },
         "pin2": {
           "compName": "ManualSwitch#26",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I4"
+          "pinName": "O4"
         },
         "name": "unnamedWire#50",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I3"
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "ManualSwitch#30",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I2"
+          "pinName": "O2"
         },
         "name": "unnamedWire#52",
         "path": []
       {
         "pin1": {
           "compName": "Merger#0",
-          "pinName": "I1"
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "ManualSwitch#27",
         },
         "pin2": {
           "compName": "Merger#0",
-          "pinName": "I0"
+          "pinName": "O0"
         },
         "name": "unnamedWire#54",
         "path": []
index 63beee2..08b14e0 100644 (file)
@@ -5,6 +5,7 @@ Bundle-SymbolicName: net.mograsim.logic.model.am2900;singleton:=true
 Bundle-Version: 0.1.0.qualifier
 Export-Package: net.mograsim.logic.model.am2900,
  net.mograsim.logic.model.am2900.components,
+ net.mograsim.logic.model.am2900.components.am2901,
  net.mograsim.logic.model.am2900.components.am2904,
  net.mograsim.logic.model.am2900.components.am2910,
  net.mograsim.logic.model.am2900.machine,
index ba7fb99..1eb041d 100644 (file)
@@ -1,4 +1,5 @@
-source.. = src/
+source.. = src/,\
+           components/
 bin.includes = META-INF/,\
                .,\
                OSGI-INF/,\
index 8b6e7fb..64c5b0b 100644 (file)
 {
-  "width": 344.0,
-  "height": 242.0,
+  "width": 460.0,
+  "height": 330.0,
   "interfacePins": [],
   "innerScale": 0.4,
   "submodel": {
     "components": [
-      {
-        "id": "Clock",
-        "name": "Clock#0",
-        "pos": {
-          "x": 155.0,
-          "y": 246.0
-        },
-        "params": {
-          "delta": 1000,
-          "orientation": "DOWN"
-        }
-      },
       {
         "id": "Am2901",
-        "name": "DeserializedSubmodelComponent#0",
+        "name": "Am2901#0",
         "pos": {
-          "x": 420.0,
-          "y": 240.0
+          "x": 615.0,
+          "y": 370.0
         }
       },
       {
         "id": "Am2901",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 485.0,
-          "y": 240.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 320.0,
-          "y": 15.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 320.0,
-          "y": 120.0
-        }
-      },
-      {
-        "id": "dff12_we",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 290.0,
-          "y": 485.0
-        }
-      },
-      {
-        "id": "mux1_12",
-        "name": "DeserializedSubmodelComponent#13",
+        "name": "Am2901#1",
         "pos": {
-          "x": 170.0,
-          "y": 495.0
+          "x": 740.0,
+          "y": 370.0
         }
       },
       {
         "id": "Am2901",
-        "name": "DeserializedSubmodelComponent#2",
+        "name": "Am2901#2",
         "pos": {
-          "x": 550.0,
-          "y": 240.0
+          "x": 865.0,
+          "y": 370.0
         }
       },
       {
         "id": "Am2901",
-        "name": "DeserializedSubmodelComponent#3",
+        "name": "Am2901#3",
         "pos": {
-          "x": 615.0,
-          "y": 240.0
+          "x": 1000.0,
+          "y": 370.0
         }
       },
       {
         "id": "Am2904",
-        "name": "DeserializedSubmodelComponent#4",
+        "name": "Am2904#0",
         "pos": {
-          "x": 240.0,
-          "y": 241.0
+          "x": 440.0,
+          "y": 375.0
         }
       },
       {
         "id": "Am2910",
-        "name": "DeserializedSubmodelComponent#5",
+        "name": "Am2910#0",
         "pos": {
-          "x": 100.0,
-          "y": 351.0
+          "x": 295.0,
+          "y": 480.0
         }
       },
       {
-        "id": "and",
-        "name": "DeserializedSubmodelComponent#6",
+        "id": "BitDisplay",
+        "name": "BitDisplay#0",
         "pos": {
-          "x": 665.0,
-          "y": 501.0
-        }
+          "x": 10.0,
+          "y": 165.0
+        },
+        "params": 8
       },
       {
-        "id": "and",
-        "name": "DeserializedSubmodelComponent#7",
+        "id": "BitDisplay",
+        "name": "BitDisplay#1",
         "pos": {
-          "x": 550.0,
-          "y": 541.0
-        }
+          "x": 10.0,
+          "y": 115.0
+        },
+        "params": 16
       },
       {
-        "id": "and",
-        "name": "DeserializedSubmodelComponent#8",
+        "id": "BitDisplay",
+        "name": "BitDisplay#2",
         "pos": {
-          "x": 730.0,
-          "y": 526.0
-        }
+          "x": 10.0,
+          "y": 140.0
+        },
+        "params": 16
       },
       {
-        "id": "dff16_invwe",
-        "name": "DeserializedSubmodelComponent#9",
+        "id": "BitDisplay",
+        "name": "BitDisplay#3",
+        "pos": {
+          "x": 10.0,
+          "y": 190.0
+        },
+        "params": 12
+      },
+      {
+        "id": "Clock",
+        "name": "Clock#0",
         "pos": {
-          "x": 135.0,
-          "y": 106.0
+          "x": 325.0,
+          "y": 310.0
+        },
+        "params": {
+          "delta": 1000,
+          "orientation": "DOWN"
         }
       },
       {
         "id": "FixedOutput",
         "name": "FixedOutput#0",
         "pos": {
-          "x": 205.0,
-          "y": 211.0
+          "x": 430.0,
+          "y": 240.0
         },
         "params": {
           "bits": [
         "id": "FixedOutput",
         "name": "FixedOutput#1",
         "pos": {
-          "x": 370.0,
-          "y": 301.0
+          "x": 525.0,
+          "y": 350.0
         },
         "params": {
           "bits": [
       },
       {
         "id": "FixedOutput",
-        "name": "FixedOutput#11",
+        "name": "FixedOutput#2",
         "pos": {
-          "x": 210.0,
-          "y": 281.0
+          "x": 255.0,
+          "y": 475.0
         },
         "params": {
           "bits": [
-            "ZERO"
+            "ONE"
           ]
         }
       },
         "id": "FixedOutput",
         "name": "FixedOutput#3",
         "pos": {
-          "x": 70.0,
-          "y": 346.0
+          "x": 345.0,
+          "y": 530.0
         },
         "params": {
           "bits": [
       },
       {
         "id": "FixedOutput",
-        "name": "FixedOutput#5",
+        "name": "FixedOutput#4",
         "pos": {
-          "x": 175.0,
-          "y": 396.0
+          "x": 310.0,
+          "y": 540.0
         },
         "params": {
           "bits": [
-            "ONE"
+            "ZERO"
           ]
         }
       },
       {
         "id": "FixedOutput",
-        "name": "FixedOutput#7",
+        "name": "FixedOutput#5",
         "pos": {
-          "x": 140.0,
-          "y": 431.0
+          "x": 365.0,
+          "y": 475.0
         },
         "params": {
           "bits": [
       },
       {
         "id": "FixedOutput",
-        "name": "FixedOutput#9",
+        "name": "FixedOutput#6",
         "pos": {
-          "x": 210.0,
-          "y": 316.0
+          "x": 425.0,
+          "y": 340.0
         },
         "params": {
           "bits": [
         }
       },
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#0",
         "pos": {
-          "x": 235.0,
-          "y": 56.0
+          "x": 10.0,
+          "y": 315.0
         },
-        "params": 8
+        "params": 1
       },
       {
-        "id": "Merger",
-        "name": "Merger#1",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#1",
         "pos": {
-          "x": 235.0,
-          "y": 136.0
+          "x": 10.0,
+          "y": 290.0
         },
-        "params": 4
+        "params": 80
       },
       {
-        "id": "Merger",
-        "name": "Merger#2",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#2",
         "pos": {
-          "x": 235.0,
-          "y": 176.0
+          "x": 10.0,
+          "y": 265.0
         },
-        "params": 4
+        "params": 12
       },
       {
-        "id": "Merger",
-        "name": "Merger#3",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#3",
         "pos": {
-          "x": 360.0,
-          "y": 20.0
+          "x": 10.0,
+          "y": 340.0
         },
-        "params": 4
+        "params": 1
       },
       {
-        "id": "Merger",
-        "name": "Merger#4",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#4",
         "pos": {
-          "x": 360.0,
-          "y": 125.0
+          "x": 10.0,
+          "y": 365.0
         },
-        "params": 4
+        "params": 1
       },
       {
-        "id": "NandGate",
-        "name": "NandGate#0",
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#5",
         "pos": {
-          "x": 255.0,
-          "y": 495.0
+          "x": 10.0,
+          "y": 215.0
         },
         "params": 1
       },
+      {
+        "id": "ManualSwitch",
+        "name": "ManualSwitch#6",
+        "pos": {
+          "x": 10.0,
+          "y": 240.0
+        },
+        "params": 16
+      },
       {
         "id": "NandGate",
         "name": "NandGate#1",
         "pos": {
-          "x": 270.0,
-          "y": 550.0
+          "x": 225.0,
+          "y": 135.0
         },
         "params": 1
       },
         "id": "Splitter",
         "name": "Splitter#0",
         "pos": {
-          "x": 215.0,
-          "y": 56.0
+          "x": 445.0,
+          "y": 85.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#1",
         "pos": {
-          "x": 305.0,
-          "y": 30.0
+          "x": 500.0,
+          "y": 130.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#10",
+        "name": "Splitter#11",
         "pos": {
-          "x": 600.0,
-          "y": 395.0
+          "x": 465.0,
+          "y": 85.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#2",
+        "name": "Splitter#12",
         "pos": {
-          "x": 305.0,
-          "y": 135.0
+          "x": 465.0,
+          "y": 165.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#3",
+        "name": "Splitter#13",
         "pos": {
-          "x": 405.0,
-          "y": 395.0
+          "x": 465.0,
+          "y": 205.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#4",
+        "name": "Splitter#14",
         "pos": {
-          "x": 405.0,
-          "y": 435.0
+          "x": 555.0,
+          "y": 120.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#5",
+        "name": "Splitter#15",
         "pos": {
-          "x": 470.0,
-          "y": 395.0
+          "x": 555.0,
+          "y": 215.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#6",
+        "name": "Splitter#16",
         "pos": {
-          "x": 470.0,
-          "y": 435.0
+          "x": 235.0,
+          "y": 800.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 80,
+          "orientation": "UP_ALT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#7",
+        "name": "Splitter#17",
         "pos": {
-          "x": 535.0,
-          "y": 435.0
+          "x": 295.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 12,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#8",
+        "name": "Splitter#18",
         "pos": {
-          "x": 535.0,
-          "y": 395.0
+          "x": 415.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#9",
+        "name": "Splitter#19",
         "pos": {
-          "x": 600.0,
-          "y": 435.0
+          "x": 550.0,
+          "y": 725.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 13,
+          "orientation": "DOWN"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
+        "id": "Splitter",
+        "name": "Splitter#2",
         "pos": {
-          "x": 200.0,
-          "y": 236.0
+          "x": 500.0,
+          "y": 225.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
+        "id": "Splitter",
+        "name": "Splitter#20",
         "pos": {
-          "x": 400.0,
-          "y": 231.0
+          "x": 465.0,
+          "y": 785.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 6,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
+        "id": "Splitter",
+        "name": "Splitter#21",
         "pos": {
-          "x": 415.0,
-          "y": 220.0
+          "x": 585.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 2,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
+        "id": "Splitter",
+        "name": "Splitter#22",
         "pos": {
-          "x": 410.0,
-          "y": 225.0
+          "x": 545.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
+        "id": "Splitter",
+        "name": "Splitter#23",
         "pos": {
-          "x": 266.0,
-          "y": 555.0
+          "x": 620.0,
+          "y": 740.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 6,
+          "orientation": "UP"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
+        "id": "Splitter",
+        "name": "Splitter#24",
         "pos": {
-          "x": 245.0,
-          "y": 490.0
+          "x": 580.0,
+          "y": 740.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
+        "id": "Splitter",
+        "name": "Splitter#25",
         "pos": {
-          "x": 355.0,
-          "y": 505.0
+          "x": 550.0,
+          "y": 740.0
         },
-        "params": 12
+        "params": {
+          "logicWidth": 2,
+          "orientation": "UP"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
+        "id": "Splitter",
+        "name": "Splitter#26",
         "pos": {
-          "x": 470.0,
-          "y": 231.0
+          "x": 815.0,
+          "y": 785.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 16,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
+        "id": "Splitter",
+        "name": "Splitter#27",
         "pos": {
-          "x": 535.0,
-          "y": 231.0
+          "x": 785.0,
+          "y": 785.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
+        "id": "Splitter",
+        "name": "Splitter#28",
         "pos": {
-          "x": 230.0,
-          "y": 176.0
+          "x": 755.0,
+          "y": 785.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
+        "id": "Splitter",
+        "name": "Splitter#29",
         "pos": {
-          "x": 235.0,
-          "y": 281.0
+          "x": 725.0,
+          "y": 785.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
+        "id": "Splitter",
+        "name": "Splitter#30",
         "pos": {
-          "x": 525.0,
-          "y": 225.0
+          "x": 685.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
+        "id": "Splitter",
+        "name": "Splitter#31",
         "pos": {
-          "x": 530.0,
-          "y": 220.0
+          "x": 635.0,
+          "y": 785.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
+        "id": "Splitter",
+        "name": "Splitter#32",
         "pos": {
-          "x": 465.0,
-          "y": 220.0
+          "x": 785.0,
+          "y": 770.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
+        "id": "Splitter",
+        "name": "Splitter#33",
         "pos": {
-          "x": 460.0,
-          "y": 225.0
+          "x": 725.0,
+          "y": 770.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
       },
       {
-        "id": "inc12",
-        "name": "inc12#0",
+        "id": "Splitter",
+        "name": "Splitter#34",
         "pos": {
-          "x": 245.0,
-          "y": 525.0
-        }
-      }
-    ],
-    "wires": [
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "CT"
+          "x": 755.0,
+          "y": 770.0
         },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
-          "pinName": "_CC"
-        },
-        "name": "unnamedWire#0",
-        "path": []
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
       },
       {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+        "id": "Splitter",
+        "name": "Splitter#35",
+        "pos": {
+          "x": 725.0,
+          "y": 750.0
+        },
+        "params": {
+          "logicWidth": 9,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#36",
+        "pos": {
+          "x": 785.0,
+          "y": 300.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#37",
+        "pos": {
+          "x": 785.0,
+          "y": 550.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#38",
+        "pos": {
+          "x": 785.0,
+          "y": 535.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#39",
+        "pos": {
+          "x": 825.0,
+          "y": 535.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#40",
+        "pos": {
+          "x": 865.0,
+          "y": 535.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#41",
+        "pos": {
+          "x": 905.0,
+          "y": 535.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#42",
+        "pos": {
+          "x": 785.0,
+          "y": 315.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#43",
+        "pos": {
+          "x": 825.0,
+          "y": 315.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#44",
+        "pos": {
+          "x": 865.0,
+          "y": 315.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#45",
+        "pos": {
+          "x": 905.0,
+          "y": 315.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#46",
+        "pos": {
+          "x": 200.0,
+          "y": 200.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#47",
+        "pos": {
+          "x": 500.0,
+          "y": 170.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#48",
+        "pos": {
+          "x": 255.0,
+          "y": 785.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#49",
+        "pos": {
+          "x": 500.0,
+          "y": 265.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#0",
+        "pos": {
+          "x": 65.0,
+          "y": 10.0
+        },
+        "params": "D bus"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#1",
+        "pos": {
+          "x": 65.0,
+          "y": 25.0
+        },
+        "params": "A bus"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#10",
+        "pos": {
+          "x": -50.0,
+          "y": 115.0
+        },
+        "params": "d"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#11",
+        "pos": {
+          "x": -50.0,
+          "y": 140.0
+        },
+        "params": "a"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#12",
+        "pos": {
+          "x": -50.0,
+          "y": 190.0
+        },
+        "params": "mi addr"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#2",
+        "pos": {
+          "x": -50.0,
+          "y": 165.0
+        },
+        "params": "instr"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#3",
+        "pos": {
+          "x": -50.0,
+          "y": 290.0
+        },
+        "params": "micro instr"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#4",
+        "pos": {
+          "x": -50.0,
+          "y": 315.0
+        },
+        "params": "mireg c"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#5",
+        "pos": {
+          "x": -50.0,
+          "y": 265.0
+        },
+        "params": "mprom y"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#6",
+        "pos": {
+          "x": -50.0,
+          "y": 340.0
+        },
+        "params": "ireg c"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#7",
+        "pos": {
+          "x": -50.0,
+          "y": 365.0
+        },
+        "params": "bz/pc c"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#8",
+        "pos": {
+          "x": -50.0,
+          "y": 215.0
+        },
+        "params": "d in enable"
+      },
+      {
+        "id": "TextComponent",
+        "name": "TextComponent#9",
+        "pos": {
+          "x": -50.0,
+          "y": 240.0
+        },
+        "params": "d in"
+      },
+      {
+        "id": "TriStateBuffer",
+        "name": "TriStateBuffer#0",
+        "pos": {
+          "x": 880.0,
+          "y": 560.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT_ALT"
+        }
+      },
+      {
+        "id": "TriStateBuffer",
+        "name": "TriStateBuffer#1",
+        "pos": {
+          "x": 880.0,
+          "y": 585.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT_ALT"
+        }
+      },
+      {
+        "id": "TriStateBuffer",
+        "name": "TriStateBuffer#2",
+        "pos": {
+          "x": 315.0,
+          "y": 90.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT_ALT"
+        }
+      },
+      {
+        "id": "TriStateBuffer",
+        "name": "TriStateBuffer#3",
+        "pos": {
+          "x": 315.0,
+          "y": 125.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT_ALT"
+        }
+      },
+      {
+        "id": "TriStateBuffer",
+        "name": "TriStateBuffer#4",
+        "pos": {
+          "x": 45.0,
+          "y": 210.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 494.0,
+          "y": 334.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 604.0,
+          "y": 364.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 709.0,
+          "y": 354.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 714.0,
+          "y": 359.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 219.0,
+          "y": 149.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 364.0,
+          "y": 14.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 309.0,
+          "y": 99.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 784.0,
+          "y": 14.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 734.0,
+          "y": 764.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
+        "pos": {
+          "x": 874.0,
+          "y": 569.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
+        "pos": {
+          "x": 139.0,
+          "y": 14.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
+        "pos": {
+          "x": 94.0,
+          "y": 29.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 729.0,
+          "y": 364.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
+        "pos": {
+          "x": 334.0,
+          "y": 334.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#22",
+        "pos": {
+          "x": 339.0,
+          "y": 14.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#23",
+        "pos": {
+          "x": 344.0,
+          "y": 29.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#26",
+        "pos": {
+          "x": 709.0,
+          "y": 499.0
+        },
+        "params": 9
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#27",
+        "pos": {
+          "x": 834.0,
+          "y": 499.0
+        },
+        "params": 9
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#28",
+        "pos": {
+          "x": 959.0,
+          "y": 499.0
+        },
+        "params": 9
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
+        "pos": {
+          "x": 94.0,
+          "y": 14.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 854.0,
+          "y": 364.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#30",
+        "pos": {
+          "x": 454.0,
+          "y": 369.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#31",
+        "pos": {
+          "x": 459.0,
+          "y": 369.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 459.0,
+          "y": 204.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 449.0,
+          "y": 369.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 964.0,
+          "y": 359.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 959.0,
+          "y": 354.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 834.0,
+          "y": 354.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 839.0,
+          "y": 359.0
+        },
+        "params": 4
+      },
+      {
+        "id": "and",
+        "name": "and#0",
+        "pos": {
+          "x": 750.0,
+          "y": 560.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#1",
+        "pos": {
+          "x": 750.0,
+          "y": 580.0
+        }
+      },
+      {
+        "id": "and",
+        "name": "and#2",
+        "pos": {
+          "x": 795.0,
+          "y": 565.0
+        }
+      },
+      {
+        "id": "dff16",
+        "name": "dff16#0",
+        "pos": {
+          "x": 260.0,
+          "y": 75.0
+        }
+      },
+      {
+        "id": "dff16_invwe",
+        "name": "dff16_invwe#0",
+        "pos": {
+          "x": 380.0,
+          "y": 135.0
+        }
+      },
+      {
+        "id": "dff80",
+        "name": "dff80#0",
+        "pos": {
+          "x": 180.0,
+          "y": 645.0
+        }
+      },
+      {
+        "id": "inc",
+        "name": "inc#0",
+        "pos": {
+          "x": 205.0,
+          "y": 105.0
+        },
+        "params": 16
+      },
+      {
+        "id": "mux1_12",
+        "name": "mux1_12#0",
+        "pos": {
+          "x": 255.0,
+          "y": 390.0
+        }
+      },
+      {
+        "id": "mux1_16",
+        "name": "mux1_16#0",
+        "pos": {
+          "x": 145.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "mux1_16",
+        "name": "mux1_16#1",
+        "pos": {
+          "x": 800.0,
+          "y": 185.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 515.0,
+          "y": 115.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#1",
+        "pos": {
+          "x": 515.0,
+          "y": 210.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "CT"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "_CC"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 565.0,
+            "y": 430.0
+          },
+          {
+            "x": 565.0,
+            "y": 325.0
+          },
+          {
+            "x": 360.0,
+            "y": 325.0
+          },
+          {
+            "x": 360.0,
+            "y": 475.0
+          },
+          {
+            "x": 290.0,
+            "y": 475.0
+          },
+          {
+            "x": 290.0,
+            "y": 490.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
           "pinName": "Qn+3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Qn"
+          "compName": "Am2901#1",
+          "pinName": "Qn"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 725.0,
+            "y": 485.0
+          },
+          {
+            "x": 725.0,
+            "y": 390.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "QIOn"
+        },
+        "pin2": {
+          "compName": "Am2901#3",
+          "pinName": "Qn+3"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 500.0
+          },
+          {
+            "x": 430.0,
+            "y": 630.0
+          },
+          {
+            "x": 1105.0,
+            "y": 630.0
+          },
+          {
+            "x": 1105.0,
+            "y": 485.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "Am2901#3",
+          "pinName": "F3"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 415.0,
+            "y": 395.0
+          },
+          {
+            "x": 415.0,
+            "y": 615.0
+          },
+          {
+            "x": 995.0,
+            "y": 615.0
+          },
+          {
+            "x": 995.0,
+            "y": 425.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#113",
+        "path": [
+          {
+            "x": 650.0,
+            "y": 135.0
+          },
+          {
+            "x": 650.0,
+            "y": 355.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#15",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#114",
+        "path": [
+          {
+            "x": 645.0,
+            "y": 360.0
+          },
+          {
+            "x": 645.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#116",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#117",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#118",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
+          "pinName": "F\u003d0"
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 610.0,
+            "y": 415.0
+          },
+          {
+            "x": 610.0,
+            "y": 505.0
+          },
+          {
+            "x": 730.0,
+            "y": 505.0
+          },
+          {
+            "x": 730.0,
+            "y": 595.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#46",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "S"
+        },
+        "name": "unnamedWire#127",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 195.0
+          },
+          {
+            "x": 130.0,
+            "y": 195.0
+          },
+          {
+            "x": 130.0,
+            "y": 85.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "inc#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "dff16#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#128",
+        "path": [
+          {
+            "x": 225.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "inc#0",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#129",
+        "path": [
+          {
+            "x": 225.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#1",
+          "pinName": "F\u003d0"
+        },
+        "pin2": {
+          "compName": "and#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 735.0,
+            "y": 415.0
+          },
+          {
+            "x": 735.0,
+            "y": 585.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "inc#0",
+          "pinName": "CI"
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#130",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 115.0
+          },
+          {
+            "x": 250.0,
+            "y": 145.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#1",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#131",
+        "path": [
+          {
+            "x": 220.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#1",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#132",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "BitDisplay#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#11",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#133",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 55.0
+          },
+          {
+            "x": 480.0,
+            "y": 55.0
+          },
+          {
+            "x": 480.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "TriStateBuffer#3",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#134",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 135.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "ManualSwitch#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "mux1_12#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#135",
+        "path": [
+          {
+            "x": 130.0,
+            "y": 410.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2910#0",
+          "pinName": "_MAP"
+        },
+        "pin2": {
+          "compName": "mux1_12#0",
+          "pinName": "S"
+        },
+        "name": "unnamedWire#136",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 530.0
+          },
+          {
+            "x": 250.0,
+            "y": 530.0
+          },
+          {
+            "x": 250.0,
+            "y": 395.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff16#0",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#137",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff80#0",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#138",
+        "path": [
+          {
+            "x": 225.0,
+            "y": 730.0
+          },
+          {
+            "x": 225.0,
+            "y": 815.0
+          },
+          {
+            "x": 630.0,
+            "y": 815.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O22"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "_CCEN"
+        },
+        "name": "unnamedWire#139",
+        "path": [
+          {
+            "x": 455.0,
+            "y": 705.0
+          },
+          {
+            "x": 285.0,
+            "y": 705.0
+          },
+          {
+            "x": 285.0,
+            "y": 495.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "and#2",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 790.0,
+            "y": 585.0
+          },
+          {
+            "x": 790.0,
+            "y": 580.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O21"
+        },
+        "name": "unnamedWire#140",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O20"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#141",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O19"
+        },
+        "name": "unnamedWire#142",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O18"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#143",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#144",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 700.0
+          },
+          {
+            "x": 290.0,
+            "y": 700.0
+          },
+          {
+            "x": 290.0,
+            "y": 505.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O17"
+        },
+        "name": "unnamedWire#145",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O16"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#146",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O15"
+        },
+        "name": "unnamedWire#147",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O14"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#148",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O13"
+        },
+        "name": "unnamedWire#149",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 790.0,
+            "y": 570.0
+          },
+          {
+            "x": 790.0,
+            "y": 565.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#150",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O11"
+        },
+        "name": "unnamedWire#151",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O10"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#152",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#154",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#155",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#156",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "mux1_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#157",
+        "path": [
+          {
+            "x": 325.0,
+            "y": 420.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "mux1_12#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#158",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 450.0
+          },
+          {
+            "x": 240.0,
+            "y": 730.0
+          },
+          {
+            "x": 350.0,
+            "y": 730.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "ManualSwitch#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff16_invwe#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#159",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 305.0
+          },
+          {
+            "x": 370.0,
+            "y": 305.0
+          },
+          {
+            "x": 370.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "Am2901#2",
+          "pinName": "F\u003d0"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 740.0,
+            "y": 575.0
+          },
+          {
+            "x": 740.0,
+            "y": 505.0
+          },
+          {
+            "x": 860.0,
+            "y": 505.0
+          },
+          {
+            "x": 860.0,
+            "y": 415.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#160",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#48",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#161",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#46",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#48",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#162",
+        "path": [
+          {
+            "x": 215.0,
+            "y": 610.0
+          },
+          {
+            "x": 270.0,
+            "y": 610.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#46",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "TriStateBuffer#2",
+          "pinName": "EN"
+        },
+        "name": "unnamedWire#163",
+        "path": [
+          {
+            "x": 210.0,
+            "y": 190.0
+          },
+          {
+            "x": 340.0,
+            "y": 190.0
+          },
+          {
+            "x": 340.0,
+            "y": 115.0
+          },
+          {
+            "x": 325.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O29"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_CEM"
+        },
+        "name": "unnamedWire#164",
+        "path": [
+          {
+            "x": 525.0,
+            "y": 750.0
+          },
+          {
+            "x": 395.0,
+            "y": 750.0
+          },
+          {
+            "x": 395.0,
+            "y": 370.0
+          },
+          {
+            "x": 445.0,
+            "y": 370.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O30"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_CEmu"
+        },
+        "name": "unnamedWire#165",
+        "path": [
+          {
+            "x": 535.0,
+            "y": 745.0
+          },
+          {
+            "x": 390.0,
+            "y": 745.0
+          },
+          {
+            "x": 390.0,
+            "y": 365.0
+          },
+          {
+            "x": 485.0,
+            "y": 365.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O23"
+        },
+        "name": "unnamedWire#166",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O25"
+        },
+        "name": "unnamedWire#167",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O24"
+        },
+        "name": "unnamedWire#168",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O26"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#169",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "F\u003d0"
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#17",
+        "path": [
+          {
+            "x": 985.0,
+            "y": 415.0
+          },
+          {
+            "x": 985.0,
+            "y": 510.0
+          },
+          {
+            "x": 745.0,
+            "y": 510.0
+          },
+          {
+            "x": 745.0,
+            "y": 565.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O27"
+        },
+        "name": "unnamedWire#170",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O28"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#171",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O31"
+        },
+        "name": "unnamedWire#172",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O32"
+        },
+        "pin2": {
+          "compName": "Splitter#22",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#173",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O33"
+        },
+        "name": "unnamedWire#174",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O34"
+        },
+        "pin2": {
+          "compName": "Splitter#22",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#175",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O35"
+        },
+        "name": "unnamedWire#176",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O36"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#177",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#178",
+        "path": [
+          {
+            "x": 645.0,
+            "y": 755.0
+          },
+          {
+            "x": 490.0,
+            "y": 755.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#179",
+        "path": [
+          {
+            "x": 560.0,
+            "y": 760.0
+          },
+          {
+            "x": 595.0,
+            "y": 760.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IZ"
+        },
+        "name": "unnamedWire#18",
+        "path": [
+          {
+            "x": 835.0,
+            "y": 570.0
+          },
+          {
+            "x": 835.0,
+            "y": 605.0
+          },
+          {
+            "x": 405.0,
+            "y": 605.0
+          },
+          {
+            "x": 405.0,
+            "y": 385.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#25",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#180",
+        "path": [
+          {
+            "x": 555.0,
+            "y": 770.0
+          },
+          {
+            "x": 590.0,
+            "y": 770.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#181",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#182",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#23",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#183",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#184",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#23",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#185",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#186",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#24",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#187",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#188",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#24",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#189",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "OVR"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IOVR"
+        },
+        "name": "unnamedWire#19",
+        "path": [
+          {
+            "x": 990.0,
+            "y": 420.0
+          },
+          {
+            "x": 990.0,
+            "y": 620.0
+          },
+          {
+            "x": 420.0,
+            "y": 620.0
+          },
+          {
+            "x": 420.0,
+            "y": 400.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#190",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#25",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O11"
+        },
+        "name": "unnamedWire#191",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "Splitter#25",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#192",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O73"
+        },
+        "name": "unnamedWire#193",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O72"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#194",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O71"
+        },
+        "name": "unnamedWire#195",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O70"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#196",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O69"
+        },
+        "name": "unnamedWire#197",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O68"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#198",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O67"
+        },
+        "name": "unnamedWire#199",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
+          "pinName": "RAMn+3"
+        },
+        "pin2": {
+          "compName": "Am2901#1",
+          "pinName": "RAMn"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 720.0,
+            "y": 480.0
+          },
+          {
+            "x": 720.0,
+            "y": 380.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IC"
+        },
+        "name": "unnamedWire#20",
+        "path": [
+          {
+            "x": 1110.0,
+            "y": 490.0
+          },
+          {
+            "x": 1110.0,
+            "y": 610.0
+          },
+          {
+            "x": 410.0,
+            "y": 610.0
+          },
+          {
+            "x": 410.0,
+            "y": 390.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O66"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#200",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O65"
+        },
+        "name": "unnamedWire#201",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O64"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#202",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O63"
+        },
+        "name": "unnamedWire#203",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O62"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#204",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O61"
+        },
+        "name": "unnamedWire#205",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O60"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#206",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O59"
+        },
+        "name": "unnamedWire#207",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O58"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#208",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#27",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O57"
+        },
+        "name": "unnamedWire#209",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2901#1",
+          "pinName": "Cn"
+        },
+        "name": "unnamedWire#21",
+        "path": [
+          {
+            "x": 730.0,
+            "y": 490.0
+          },
+          {
+            "x": 730.0,
+            "y": 475.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O56"
+        },
+        "pin2": {
+          "compName": "Splitter#27",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#210",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#27",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O55"
+        },
+        "name": "unnamedWire#211",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O54"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#212",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#28",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O53"
+        },
+        "name": "unnamedWire#213",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O52"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#214",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#29",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O51"
+        },
+        "name": "unnamedWire#215",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O50"
+        },
+        "pin2": {
+          "compName": "Splitter#29",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#216",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#29",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O49"
+        },
+        "name": "unnamedWire#217",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#30",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O48"
+        },
+        "name": "unnamedWire#218",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O47"
+        },
+        "pin2": {
+          "compName": "Splitter#30",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#219",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#1",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2901#2",
+          "pinName": "Cn"
+        },
+        "name": "unnamedWire#22",
+        "path": [
+          {
+            "x": 855.0,
+            "y": 490.0
+          },
+          {
+            "x": 855.0,
+            "y": 475.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#30",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O46"
+        },
+        "name": "unnamedWire#220",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O45"
+        },
+        "pin2": {
+          "compName": "Splitter#30",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#221",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#31",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O40"
+        },
+        "name": "unnamedWire#222",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O41"
+        },
+        "pin2": {
+          "compName": "Splitter#31",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#223",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#31",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O42"
+        },
+        "name": "unnamedWire#224",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O43"
+        },
+        "pin2": {
+          "compName": "Splitter#31",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#225",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#226",
+        "path": [
+          {
+            "x": 570.0,
+            "y": 765.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#33",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#29",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#227",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#34",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#228",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#32",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#27",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#229",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#2",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2901#3",
+          "pinName": "Cn"
+        },
+        "name": "unnamedWire#23",
+        "path": [
+          {
+            "x": 980.0,
+            "y": 490.0
+          },
+          {
+            "x": 980.0,
+            "y": 475.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#32",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#230",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#32",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#231",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#32",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#232",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#34",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#233",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#34",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#234",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#34",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#235",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#33",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#236",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#33",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#237",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "Splitter#33",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#238",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#239",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#240",
+        "path": [
+          {
+            "x": 610.0,
+            "y": 700.0
+          },
+          {
+            "x": 435.0,
+            "y": 700.0
+          },
+          {
+            "x": 435.0,
+            "y": 420.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "ManualSwitch#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff80#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#241",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "ManualSwitch#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff80#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#242",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "Splitter#42",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#243",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#42",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#244",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "Splitter#42",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#245",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#42",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#246",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#43",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#247",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#43",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#248",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#43",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#249",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Clock#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#43",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#250",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#44",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#251",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#44",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#252",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#44",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#253",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#44",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#254",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#45",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#255",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#45",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#256",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#36",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#45",
+          "pinName": "O1"
         },
-        "name": "unnamedWire#1",
+        "name": "unnamedWire#257",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "QIOn"
+          "compName": "Splitter#45",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "Qn+3"
+          "compName": "Splitter#36",
+          "pinName": "O0"
         },
-        "name": "unnamedWire#10",
+        "name": "unnamedWire#258",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "B0"
+          "compName": "Splitter#38",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "Splitter#7",
-          "pinName": "O3"
+          "compName": "Splitter#37",
+          "pinName": "O15"
+        },
+        "name": "unnamedWire#259",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Am2901#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#26",
+        "path": [
+          {
+            "x": 980.0,
+            "y": 365.0
+          },
+          {
+            "x": 980.0,
+            "y": 465.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "O14"
+        },
+        "pin2": {
+          "compName": "Splitter#38",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#260",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#38",
+          "pinName": "O1"
         },
-        "name": "unnamedWire#100",
+        "pin2": {
+          "compName": "Splitter#37",
+          "pinName": "O13"
+        },
+        "name": "unnamedWire#261",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#8",
+          "compName": "Splitter#37",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "Splitter#38",
           "pinName": "O0"
         },
+        "name": "unnamedWire#262",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#39",
+          "pinName": "O3"
+        },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "A3"
+          "compName": "Splitter#37",
+          "pinName": "O11"
         },
-        "name": "unnamedWire#101",
+        "name": "unnamedWire#263",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "A2"
+          "compName": "Splitter#37",
+          "pinName": "O10"
         },
         "pin2": {
-          "compName": "Splitter#8",
+          "compName": "Splitter#39",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#264",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#39",
           "pinName": "O1"
         },
-        "name": "unnamedWire#102",
+        "pin2": {
+          "compName": "Splitter#37",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#265",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "Splitter#39",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#266",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#40",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#37",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#267",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#8",
+          "compName": "Splitter#37",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#40",
           "pinName": "O2"
         },
+        "name": "unnamedWire#268",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#40",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#37",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#269",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#2",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#27",
+        "path": [
+          {
+            "x": 855.0,
+            "y": 465.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "O4"
+        },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "A1"
+          "compName": "Splitter#40",
+          "pinName": "O0"
         },
-        "name": "unnamedWire#103",
+        "name": "unnamedWire#270",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "A0"
+          "compName": "Splitter#41",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "Splitter#8",
+          "compName": "Splitter#37",
           "pinName": "O3"
         },
-        "name": "unnamedWire#104",
+        "name": "unnamedWire#271",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#41",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#272",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#41",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#37",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#273",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#41",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#274",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "mux1_16#1",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#36",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#275",
+        "path": [
+          {
+            "x": 860.0,
+            "y": 235.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "mux1_16#1",
+          "pinName": "S"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O74"
+        },
+        "name": "unnamedWire#276",
+        "path": [
+          {
+            "x": 795.0,
+            "y": 190.0
+          },
+          {
+            "x": 795.0,
+            "y": 180.0
+          },
+          {
+            "x": 1120.0,
+            "y": 180.0
+          },
+          {
+            "x": 1120.0,
+            "y": 730.0
+          },
+          {
+            "x": 975.0,
+            "y": 730.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "mux1_16#1",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#277",
+        "path": [
+          {
+            "x": 890.0,
+            "y": 710.0
+          },
+          {
+            "x": 1125.0,
+            "y": 710.0
+          },
+          {
+            "x": 1125.0,
+            "y": 175.0
+          },
+          {
+            "x": 790.0,
+            "y": 175.0
+          },
+          {
+            "x": 790.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#37",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "name": "unnamedWire#278",
+        "path": [
+          {
+            "x": 860.0,
+            "y": 570.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "TriStateBuffer#0",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#279",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "TriStateBuffer#1",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "name": "unnamedWire#280",
+        "path": [
+          {
+            "x": 875.0,
+            "y": 595.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "TriStateBuffer#2",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#281",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#10",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#282",
+        "path": [
+          {
+            "x": 310.0,
+            "y": 65.0
+          },
+          {
+            "x": 135.0,
+            "y": 65.0
+          },
+          {
+            "x": 135.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "A0"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
-        "name": "unnamedWire#105",
+        "name": "unnamedWire#283",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#10",
-          "pinName": "O2"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
-        "name": "unnamedWire#106",
+        "name": "unnamedWire#285",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#10",
-          "pinName": "O1"
+          "compName": "TriStateBuffer#2",
+          "pinName": "OUT"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#22",
+          "pinName": ""
         },
-        "name": "unnamedWire#107",
-        "path": []
+        "name": "unnamedWire#287",
+        "path": [
+          {
+            "x": 340.0,
+            "y": 100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#10",
-          "pinName": "O0"
+          "compName": "TriStateBuffer#3",
+          "pinName": "OUT"
         },
-        "name": "unnamedWire#108",
-        "path": []
+        "name": "unnamedWire#288",
+        "path": [
+          {
+            "x": 345.0,
+            "y": 135.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#9",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "B0"
+          "compName": "dff16_invwe#0",
+          "pinName": "D"
         },
-        "name": "unnamedWire#109",
-        "path": []
+        "name": "unnamedWire#289",
+        "path": [
+          {
+            "x": 365.0,
+            "y": 170.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "IN"
+          "compName": "Am2901#1",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "F3"
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
         },
-        "name": "unnamedWire#11",
-        "path": []
+        "name": "unnamedWire#29",
+        "path": [
+          {
+            "x": 730.0,
+            "y": 465.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "B1"
+          "compName": "Splitter#46",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "Splitter#9",
-          "pinName": "O2"
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
         },
-        "name": "unnamedWire#110",
+        "name": "unnamedWire#290",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#9",
+          "compName": "Splitter#16",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "B2"
+          "compName": "dff16_invwe#0",
+          "pinName": "_WE"
         },
-        "name": "unnamedWire#111",
-        "path": []
+        "name": "unnamedWire#291",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 255.0
+          },
+          {
+            "x": 375.0,
+            "y": 255.0
+          },
+          {
+            "x": 375.0,
+            "y": 155.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "B3"
+          "compName": "Splitter#46",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "Splitter#9",
-          "pinName": "O0"
+          "compName": "TriStateBuffer#3",
+          "pinName": "EN"
         },
-        "name": "unnamedWire#112",
-        "path": []
+        "name": "unnamedWire#292",
+        "path": [
+          {
+            "x": 230.0,
+            "y": 195.0
+          },
+          {
+            "x": 325.0,
+            "y": 195.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "O"
+          "compName": "Splitter#16",
+          "pinName": "O37"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
+          "compName": "TriStateBuffer#0",
+          "pinName": "EN"
         },
-        "name": "unnamedWire#113",
-        "path": []
+        "name": "unnamedWire#293",
+        "path": [
+          {
+            "x": 605.0,
+            "y": 780.0
+          },
+          {
+            "x": 720.0,
+            "y": 780.0
+          },
+          {
+            "x": 720.0,
+            "y": 685.0
+          },
+          {
+            "x": 905.0,
+            "y": 685.0
+          },
+          {
+            "x": 905.0,
+            "y": 580.0
+          },
+          {
+            "x": 890.0,
+            "y": 580.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "TriStateBuffer#1",
+          "pinName": "EN"
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "O"
+          "compName": "Splitter#16",
+          "pinName": "O38"
         },
-        "name": "unnamedWire#114",
-        "path": []
+        "name": "unnamedWire#294",
+        "path": [
+          {
+            "x": 890.0,
+            "y": 680.0
+          },
+          {
+            "x": 715.0,
+            "y": 680.0
+          },
+          {
+            "x": 715.0,
+            "y": 775.0
+          },
+          {
+            "x": 615.0,
+            "y": 775.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "Splitter#48",
+          "pinName": "O2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
-          "pinName": ""
+          "compName": "Splitter#16",
+          "pinName": "O4"
         },
-        "name": "unnamedWire#115",
+        "name": "unnamedWire#296",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "Splitter#16",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
+          "compName": "Splitter#48",
+          "pinName": "O1"
         },
-        "name": "unnamedWire#116",
+        "name": "unnamedWire#297",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "Splitter#48",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "Splitter#16",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#117",
+        "name": "unnamedWire#298",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "Am2901#1",
+          "pinName": "Qn+3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "Am2901#2",
+          "pinName": "Qn"
         },
-        "name": "unnamedWire#118",
-        "path": []
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 850.0,
+            "y": 485.0
+          },
+          {
+            "x": 850.0,
+            "y": 390.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#4",
-          "pinName": "I"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
-        "name": "unnamedWire#119",
+        "name": "unnamedWire#30",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "F\u003d0"
+          "compName": "Splitter#47",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
-          "pinName": "B"
+          "compName": "mux1_4#0",
+          "pinName": "I1_1"
         },
-        "name": "unnamedWire#12",
+        "name": "unnamedWire#302",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#3",
-          "pinName": "I"
+          "compName": "mux1_4#0",
+          "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
-          "pinName": ""
+          "compName": "Splitter#47",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#120",
+        "name": "unnamedWire#303",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
+          "compName": "Splitter#47",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "Splitter#6",
-          "pinName": "I"
+          "compName": "mux1_4#0",
+          "pinName": "I1_3"
         },
-        "name": "unnamedWire#121",
+        "name": "unnamedWire#304",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
+          "compName": "mux1_4#0",
+          "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "Splitter#5",
-          "pinName": "I"
+          "compName": "Splitter#47",
+          "pinName": "O0"
         },
-        "name": "unnamedWire#122",
+        "name": "unnamedWire#305",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#7",
-          "pinName": "I"
+          "compName": "Splitter#49",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "mux1_4#1",
+          "pinName": "I1_1"
         },
-        "name": "unnamedWire#123",
+        "name": "unnamedWire#306",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "mux1_4#1",
+          "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "Splitter#8",
-          "pinName": "I"
+          "compName": "Splitter#49",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#124",
+        "name": "unnamedWire#307",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "Splitter#49",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "Splitter#9",
-          "pinName": "I"
+          "compName": "mux1_4#1",
+          "pinName": "I1_3"
         },
-        "name": "unnamedWire#125",
+        "name": "unnamedWire#308",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Splitter#10",
-          "pinName": "I"
+          "compName": "mux1_4#1",
+          "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
-          "pinName": ""
+          "compName": "Splitter#49",
+          "pinName": "O0"
         },
-        "name": "unnamedWire#126",
+        "name": "unnamedWire#309",
         "path": []
       },
       {
         "pin1": {
-          "compName": "NandGate#0",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
-          "pinName": "WE"
+          "compName": "Am2901#0",
+          "pinName": "C"
         },
-        "name": "unnamedWire#127",
-        "path": []
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 605.0,
+            "y": 465.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "inc12#0",
-          "pinName": "Y"
+          "compName": "Splitter#47",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
-          "pinName": "D"
+          "compName": "Splitter#30",
+          "pinName": "I"
         },
-        "name": "unnamedWire#128",
-        "path": []
+        "name": "unnamedWire#310",
+        "path": [
+          {
+            "x": 480.0,
+            "y": 185.0
+          },
+          {
+            "x": 480.0,
+            "y": 305.0
+          },
+          {
+            "x": 580.0,
+            "y": 305.0
+          },
+          {
+            "x": 580.0,
+            "y": 645.0
+          },
+          {
+            "x": 700.0,
+            "y": 645.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "inc12#0",
-          "pinName": "A"
+          "compName": "Splitter#31",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
-          "pinName": "Y"
+          "compName": "Splitter#49",
+          "pinName": "I"
         },
-        "name": "unnamedWire#129",
-        "path": []
+        "name": "unnamedWire#311",
+        "path": [
+          {
+            "x": 650.0,
+            "y": 755.0
+          },
+          {
+            "x": 690.0,
+            "y": 755.0
+          },
+          {
+            "x": 690.0,
+            "y": 655.0
+          },
+          {
+            "x": 590.0,
+            "y": 655.0
+          },
+          {
+            "x": 590.0,
+            "y": 315.0
+          },
+          {
+            "x": 490.0,
+            "y": 315.0
+          },
+          {
+            "x": 490.0,
+            "y": 280.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "F\u003d0"
+          "compName": "mux1_4#0",
+          "pinName": "S0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
-          "pinName": "A"
+          "compName": "Splitter#16",
+          "pinName": "O44"
         },
-        "name": "unnamedWire#13",
-        "path": []
+        "name": "unnamedWire#312",
+        "path": [
+          {
+            "x": 485.0,
+            "y": 120.0
+          },
+          {
+            "x": 485.0,
+            "y": 310.0
+          },
+          {
+            "x": 585.0,
+            "y": 310.0
+          },
+          {
+            "x": 585.0,
+            "y": 650.0
+          },
+          {
+            "x": 695.0,
+            "y": 650.0
+          },
+          {
+            "x": 695.0,
+            "y": 770.0
+          },
+          {
+            "x": 675.0,
+            "y": 770.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "inc12#0",
-          "pinName": "CI"
+          "compName": "mux1_4#1",
+          "pinName": "S0"
         },
         "pin2": {
-          "compName": "NandGate#1",
-          "pinName": "Y"
+          "compName": "Splitter#16",
+          "pinName": "O39"
         },
-        "name": "unnamedWire#130",
-        "path": []
+        "name": "unnamedWire#313",
+        "path": [
+          {
+            "x": 495.0,
+            "y": 215.0
+          },
+          {
+            "x": 495.0,
+            "y": 320.0
+          },
+          {
+            "x": 595.0,
+            "y": 320.0
+          },
+          {
+            "x": 595.0,
+            "y": 660.0
+          },
+          {
+            "x": 685.0,
+            "y": 660.0
+          },
+          {
+            "x": 685.0,
+            "y": 760.0
+          },
+          {
+            "x": 625.0,
+            "y": 760.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "NandGate#1",
-          "pinName": "A"
-        },
-        "name": "unnamedWire#131",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "NandGate#1",
-          "pinName": "B"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#12",
-          "pinName": ""
+          "compName": "Splitter#35",
+          "pinName": "I"
         },
-        "name": "unnamedWire#132",
-        "path": []
+        "name": "unnamedWire#314",
+        "path": [
+          {
+            "x": 710.0,
+            "y": 705.0
+          },
+          {
+            "x": 765.0,
+            "y": 705.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "NandGate#0",
-          "pinName": "B"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
-        "name": "unnamedWire#133",
+        "name": "unnamedWire#315",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
-          "pinName": "I1"
+          "compName": "WireCrossPoint#27",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
-        "name": "unnamedWire#134",
+        "name": "unnamedWire#316",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
-          "pinName": "S"
+          "compName": "WireCrossPoint#26",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
-          "pinName": ""
+          "compName": "Am2901#0",
+          "pinName": "I"
         },
-        "name": "unnamedWire#135",
-        "path": []
+        "name": "unnamedWire#317",
+        "path": [
+          {
+            "x": 710.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
         "pin2": {
-          "compName": "NandGate#0",
-          "pinName": "A"
+          "compName": "Am2901#1",
+          "pinName": "I"
         },
-        "name": "unnamedWire#136",
-        "path": []
+        "name": "unnamedWire#318",
+        "path": [
+          {
+            "x": 835.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
-          "pinName": ""
+          "compName": "Am2901#2",
+          "pinName": "I"
         },
-        "name": "unnamedWire#137",
-        "path": []
+        "name": "unnamedWire#319",
+        "path": [
+          {
+            "x": 960.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
-          "pinName": "Q"
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
-        "name": "unnamedWire#138",
-        "path": []
+        "name": "unnamedWire#32",
+        "path": [
+          {
+            "x": 605.0,
+            "y": 335.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
-          "pinName": "Y"
+          "compName": "WireCrossPoint#28",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
-          "pinName": "B"
+          "compName": "Am2901#3",
+          "pinName": "I"
         },
-        "name": "unnamedWire#14",
-        "path": []
+        "name": "unnamedWire#320",
+        "path": [
+          {
+            "x": 1095.0,
+            "y": 500.0
+          },
+          {
+            "x": 1095.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
-          "pinName": "A"
+          "compName": "Splitter#38",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2901#3",
           "pinName": "Y"
         },
-        "name": "unnamedWire#15",
-        "path": []
+        "name": "unnamedWire#321",
+        "path": [
+          {
+            "x": 800.0,
+            "y": 515.0
+          },
+          {
+            "x": 1075.0,
+            "y": 515.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
-          "pinName": "B"
+          "compName": "Splitter#39",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "F\u003d0"
+          "compName": "Am2901#2",
+          "pinName": "Y"
         },
-        "name": "unnamedWire#16",
-        "path": []
+        "name": "unnamedWire#322",
+        "path": [
+          {
+            "x": 840.0,
+            "y": 520.0
+          },
+          {
+            "x": 940.0,
+            "y": 520.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "F\u003d0"
+          "compName": "Splitter#40",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
-          "pinName": "A"
+          "compName": "Am2901#1",
+          "pinName": "Y"
         },
-        "name": "unnamedWire#17",
-        "path": []
+        "name": "unnamedWire#323",
+        "path": [
+          {
+            "x": 880.0,
+            "y": 525.0
+          },
+          {
+            "x": 815.0,
+            "y": 525.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "Am2901#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "IZ"
+          "compName": "Splitter#41",
+          "pinName": "I"
         },
-        "name": "unnamedWire#18",
-        "path": []
+        "name": "unnamedWire#324",
+        "path": [
+          {
+            "x": 690.0,
+            "y": 530.0
+          },
+          {
+            "x": 920.0,
+            "y": 530.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "OVR"
+          "compName": "Am2901#0",
+          "pinName": "D"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "IOVR"
+          "compName": "Splitter#45",
+          "pinName": "I"
         },
-        "name": "unnamedWire#19",
-        "path": []
+        "name": "unnamedWire#325",
+        "path": [
+          {
+            "x": 675.0,
+            "y": 345.0
+          },
+          {
+            "x": 920.0,
+            "y": 345.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "RAMn+3"
+          "compName": "Splitter#44",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "RAMn"
+          "compName": "Am2901#1",
+          "pinName": "D"
         },
-        "name": "unnamedWire#2",
-        "path": []
+        "name": "unnamedWire#326",
+        "path": [
+          {
+            "x": 880.0,
+            "y": 340.0
+          },
+          {
+            "x": 800.0,
+            "y": 340.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "Cn+4"
+          "compName": "Splitter#43",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "IC"
+          "compName": "Am2901#2",
+          "pinName": "D"
         },
-        "name": "unnamedWire#20",
-        "path": []
+        "name": "unnamedWire#327",
+        "path": [
+          {
+            "x": 840.0,
+            "y": 335.0
+          },
+          {
+            "x": 925.0,
+            "y": 335.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Cn+4"
+          "compName": "Splitter#42",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Cn"
+          "compName": "Am2901#3",
+          "pinName": "D"
         },
-        "name": "unnamedWire#21",
-        "path": []
+        "name": "unnamedWire#328",
+        "path": [
+          {
+            "x": 800.0,
+            "y": 330.0
+          },
+          {
+            "x": 1060.0,
+            "y": 330.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Cn+4"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Cn"
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
         },
-        "name": "unnamedWire#22",
+        "name": "unnamedWire#329",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Cn+4"
+          "compName": "Am2901#0",
+          "pinName": "Cn"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "Cn"
+          "compName": "Am2904#0",
+          "pinName": "C0"
         },
-        "name": "unnamedWire#23",
-        "path": []
+        "name": "unnamedWire#33",
+        "path": [
+          {
+            "x": 565.0,
+            "y": 475.0
+          },
+          {
+            "x": 565.0,
+            "y": 460.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "C"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "mux1_16#0",
+          "pinName": "I0"
         },
-        "name": "unnamedWire#24",
-        "path": []
+        "name": "unnamedWire#330",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 105.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
+          "compName": "dff16#0",
+          "pinName": "C"
         },
         "pin2": {
-          "compName": "Clock#0",
+          "compName": "ManualSwitch#4",
           "pinName": ""
         },
-        "name": "unnamedWire#25",
-        "path": []
+        "name": "unnamedWire#331",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 80.0
+          },
+          {
+            "x": 255.0,
+            "y": 240.0
+          },
+          {
+            "x": 135.0,
+            "y": 240.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
-          "pinName": "C"
+          "compName": "BitDisplay#1",
+          "pinName": ""
         },
-        "name": "unnamedWire#26",
+        "name": "unnamedWire#332",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "C"
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "BitDisplay#2",
           "pinName": ""
         },
-        "name": "unnamedWire#27",
+        "name": "unnamedWire#333",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "ManualSwitch#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "TriStateBuffer#4",
+          "pinName": "EN"
         },
-        "name": "unnamedWire#28",
+        "name": "unnamedWire#334",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "C"
+          "compName": "TriStateBuffer#4",
+          "pinName": "IN"
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "ManualSwitch#6",
           "pinName": ""
         },
-        "name": "unnamedWire#29",
+        "name": "unnamedWire#335",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Qn+3"
+          "compName": "WireCrossPoint#29",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Qn"
+          "compName": "TriStateBuffer#4",
+          "pinName": "OUT"
         },
-        "name": "unnamedWire#3",
+        "name": "unnamedWire#336",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "BitDisplay#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
-          "pinName": ""
+          "compName": "Am2910#0",
+          "pinName": "Y"
         },
-        "name": "unnamedWire#30",
-        "path": []
+        "name": "unnamedWire#337",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 535.0
+          },
+          {
+            "x": 330.0,
+            "y": 535.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "C"
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
         },
-        "name": "unnamedWire#31",
+        "name": "unnamedWire#338",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
-        "name": "unnamedWire#32",
+        "name": "unnamedWire#339",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Cn"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "C0"
-        },
-        "name": "unnamedWire#33",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "Am2910#0",
           "pinName": "C"
         },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
         "name": "unnamedWire#34",
         "path": []
       },
           "pinName": "out"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "_OECT"
         },
         "name": "unnamedWire#35",
-        "path": []
+        "path": [
+          {
+            "x": 550.0,
+            "y": 360.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "FixedOutput#3",
+          "compName": "FixedOutput#2",
           "pinName": "out"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "Am2910#0",
           "pinName": "_RLD"
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "Am2910#0",
           "pinName": "CI"
         },
         "pin2": {
-          "compName": "FixedOutput#5",
+          "compName": "FixedOutput#3",
           "pinName": "out"
         },
         "name": "unnamedWire#37",
-        "path": []
+        "path": [
+          {
+            "x": 370.0,
+            "y": 510.0
+          },
+          {
+            "x": 370.0,
+            "y": 540.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "Am2910#0",
           "pinName": "_OE"
         },
         "pin2": {
-          "compName": "FixedOutput#7",
+          "compName": "FixedOutput#4",
           "pinName": "out"
         },
         "name": "unnamedWire#38",
-        "path": []
+        "path": [
+          {
+            "x": 335.0,
+            "y": 550.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "FixedOutput#9",
+          "compName": "FixedOutput#5",
           "pinName": "out"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "_SE"
         },
         "name": "unnamedWire#39",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "Am2901#2",
           "pinName": "RAMn"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2901#1",
           "pinName": "RAMn+3"
         },
         "name": "unnamedWire#4",
-        "path": []
+        "path": [
+          {
+            "x": 845.0,
+            "y": 380.0
+          },
+          {
+            "x": 845.0,
+            "y": 480.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "FixedOutput#11",
+          "compName": "FixedOutput#6",
           "pinName": "out"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#40",
-        "path": []
+        "path": [
+          {
+            "x": 450.0,
+            "y": 350.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "_EZ"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "_EOVR"
         },
         "name": "unnamedWire#42",
-        "path": []
+        "path": [
+          {
+            "x": 465.0,
+            "y": 370.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
-          "pinName": "_EC"
+          "compName": "WireCrossPoint#30",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "Am2904#0",
+          "pinName": "_EC"
         },
         "name": "unnamedWire#43",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "_EN"
         },
         "name": "unnamedWire#44",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff16_invwe#0",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "O15"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I7"
+          "compName": "Splitter#11",
+          "pinName": "O7"
         },
         "name": "unnamedWire#46",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I6"
+          "compName": "Splitter#11",
+          "pinName": "O6"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O13"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#11",
+          "pinName": "O5"
         },
         "name": "unnamedWire#48",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#11",
+          "pinName": "O4"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "Am2901#3",
           "pinName": "RAMn"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "Am2901#2",
           "pinName": "RAMn+3"
         },
         "name": "unnamedWire#5",
-        "path": []
+        "path": [
+          {
+            "x": 970.0,
+            "y": 380.0
+          },
+          {
+            "x": 970.0,
+            "y": 480.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#11",
+          "pinName": "O3"
         },
         "name": "unnamedWire#50",
         "path": []
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#11",
+          "pinName": "O2"
         },
         "name": "unnamedWire#51",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#11",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#11",
+          "pinName": "O0"
         },
         "name": "unnamedWire#53",
         "path": []
         "name": "unnamedWire#54",
         "path": [
           {
-            "x": 230.0,
-            "y": 221.0
+            "x": 460.0,
+            "y": 250.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I3"
+          "compName": "Splitter#12",
+          "pinName": "O3"
         },
         "name": "unnamedWire#55",
         "path": [
           {
-            "x": 230.0,
-            "y": 136.0
+            "x": 460.0,
+            "y": 165.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I3"
+          "compName": "Splitter#13",
+          "pinName": "O3"
         },
         "name": "unnamedWire#56",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "I2"
+          "compName": "Splitter#13",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I1"
+          "compName": "Splitter#13",
+          "pinName": "O1"
         },
         "name": "unnamedWire#58",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "I0"
+          "compName": "Splitter#13",
+          "pinName": "O0"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "Am2901#2",
           "pinName": "Qn+3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "Am2901#3",
           "pinName": "Qn"
         },
         "name": "unnamedWire#6",
-        "path": []
+        "path": [
+          {
+            "x": 975.0,
+            "y": 485.0
+          },
+          {
+            "x": 975.0,
+            "y": 390.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I0"
+          "compName": "Splitter#12",
+          "pinName": "O0"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O5"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I1"
+          "compName": "Splitter#12",
+          "pinName": "O1"
         },
         "name": "unnamedWire#61",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I2"
+          "compName": "Splitter#12",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#63",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "pin2": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#65",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#66",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#67",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "I0_2"
         },
         "pin2": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#69",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2901#0",
           "pinName": "Qn"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "QIO0"
         },
         "name": "unnamedWire#7",
-        "path": []
+        "path": [
+          {
+            "x": 575.0,
+            "y": 390.0
+          },
+          {
+            "x": 575.0,
+            "y": 500.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#70",
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "O"
+          "compName": "Splitter#13",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Splitter#2",
           "pinName": "I"
         },
         "name": "unnamedWire#71",
-        "path": []
+        "path": [
+          {
+            "x": 490.0,
+            "y": 220.0
+          },
+          {
+            "x": 490.0,
+            "y": 240.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "O"
+          "compName": "Splitter#12",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Splitter#1",
           "pinName": "I"
         },
         "name": "unnamedWire#72",
-        "path": []
+        "path": [
+          {
+            "x": 480.0,
+            "y": 180.0
+          },
+          {
+            "x": 480.0,
+            "y": 145.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "I3"
+          "compName": "Splitter#14",
+          "pinName": "O3"
         },
         "name": "unnamedWire#73",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "I2"
+          "compName": "Splitter#14",
+          "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "name": "unnamedWire#74",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "I1"
+          "compName": "Splitter#14",
+          "pinName": "O1"
         },
         "name": "unnamedWire#75",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "I0"
+          "compName": "Splitter#14",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "name": "unnamedWire#76",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "I3"
+          "compName": "Splitter#15",
+          "pinName": "O3"
         },
         "name": "unnamedWire#77",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#4",
-          "pinName": "I2"
+          "compName": "Splitter#15",
+          "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "Y2"
         },
         "name": "unnamedWire#78",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "I1"
+          "compName": "Splitter#15",
+          "pinName": "O1"
         },
         "name": "unnamedWire#79",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "SIO0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2901#0",
           "pinName": "RAMn"
         },
         "name": "unnamedWire#8",
-        "path": []
+        "path": [
+          {
+            "x": 570.0,
+            "y": 495.0
+          },
+          {
+            "x": 570.0,
+            "y": 380.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#4",
-          "pinName": "I0"
+          "compName": "Splitter#15",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1_4#1",
           "pinName": "Y4"
         },
         "name": "unnamedWire#80",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "B3"
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#4",
-          "pinName": "O0"
+          "compName": "Am2901#0",
+          "pinName": "A"
         },
         "name": "unnamedWire#81",
-        "path": []
+        "path": [
+          {
+            "x": 710.0,
+            "y": 385.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#4",
-          "pinName": "O1"
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "B2"
+          "compName": "Am2901#0",
+          "pinName": "B"
         },
         "name": "unnamedWire#82",
-        "path": []
+        "path": [
+          {
+            "x": 715.0,
+            "y": 405.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "B1"
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#4",
-          "pinName": "O2"
+          "compName": "Am2901#1",
+          "pinName": "A"
         },
         "name": "unnamedWire#83",
-        "path": []
+        "path": [
+          {
+            "x": 835.0,
+            "y": 385.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#4",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "B0"
+          "compName": "Am2901#1",
+          "pinName": "B"
         },
         "name": "unnamedWire#84",
-        "path": []
+        "path": [
+          {
+            "x": 840.0,
+            "y": 405.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#3",
-          "pinName": "O0"
+          "compName": "Am2901#2",
+          "pinName": "A"
         },
         "name": "unnamedWire#85",
-        "path": []
+        "path": [
+          {
+            "x": 960.0,
+            "y": 385.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#3",
-          "pinName": "O1"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "A2"
+          "compName": "Am2901#2",
+          "pinName": "B"
         },
         "name": "unnamedWire#86",
-        "path": []
+        "path": [
+          {
+            "x": 965.0,
+            "y": 405.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#3",
-          "pinName": "O2"
+          "compName": "Am2901#3",
+          "pinName": "A"
         },
         "name": "unnamedWire#87",
-        "path": []
+        "path": [
+          {
+            "x": 1095.0,
+            "y": 355.0
+          },
+          {
+            "x": 1095.0,
+            "y": 385.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "A0"
+          "compName": "Am2901#3",
+          "pinName": "B"
         },
         "pin2": {
-          "compName": "Splitter#3",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
         },
         "name": "unnamedWire#88",
-        "path": []
+        "path": [
+          {
+            "x": 1100.0,
+            "y": 405.0
+          },
+          {
+            "x": 1100.0,
+            "y": 360.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#5",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "A0"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "name": "unnamedWire#89",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "Am2904#0",
           "pinName": "SIOn"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "Am2901#3",
           "pinName": "RAMn+3"
         },
         "name": "unnamedWire#9",
-        "path": []
+        "path": [
+          {
+            "x": 425.0,
+            "y": 495.0
+          },
+          {
+            "x": 425.0,
+            "y": 625.0
+          },
+          {
+            "x": 1100.0,
+            "y": 625.0
+          },
+          {
+            "x": 1100.0,
+            "y": 480.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#5",
-          "pinName": "O2"
+          "compName": "TriStateBuffer#1",
+          "pinName": "OUT"
         },
         "name": "unnamedWire#90",
-        "path": []
+        "path": [
+          {
+            "x": 1135.0,
+            "y": 30.0
+          },
+          {
+            "x": 1135.0,
+            "y": 595.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#5",
-          "pinName": "O1"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "A2"
+          "compName": "mux1_16#1",
+          "pinName": "I1"
         },
         "name": "unnamedWire#91",
-        "path": []
+        "path": [
+          {
+            "x": 785.0,
+            "y": 275.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "A3"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#5",
-          "pinName": "O0"
+          "compName": "TriStateBuffer#0",
+          "pinName": "OUT"
         },
         "name": "unnamedWire#92",
-        "path": []
+        "path": [
+          {
+            "x": 1130.0,
+            "y": 15.0
+          },
+          {
+            "x": 1130.0,
+            "y": 570.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "B0"
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#6",
-          "pinName": "O3"
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
         },
         "name": "unnamedWire#93",
         "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#6",
-          "pinName": "O2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "B1"
-        },
-        "name": "unnamedWire#94",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "B2"
-        },
-        "pin2": {
-          "compName": "Splitter#6",
-          "pinName": "O1"
-        },
-        "name": "unnamedWire#95",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#6",
-          "pinName": "O0"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "B3"
-        },
-        "name": "unnamedWire#96",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#7",
-          "pinName": "O0"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "B3"
-        },
-        "name": "unnamedWire#97",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "B2"
-        },
-        "pin2": {
-          "compName": "Splitter#7",
-          "pinName": "O1"
-        },
-        "name": "unnamedWire#98",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#7",
-          "pinName": "O2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "B1"
-        },
-        "name": "unnamedWire#99",
-        "path": []
       }
     ],
     "version": "0.1.1"
   },
   "symbolRendererSnippetID": "simpleRectangularLike",
   "symbolRendererParams": {
-    "centerText": "_rsLatch",
+    "centerText": "Am2900",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
index e3e7243..9979587 100644 (file)
@@ -1,77 +1,23 @@
 {
-  "width": 35.0,
-  "height": 270.0,
+  "width": 90.0,
+  "height": 125.0,
   "interfacePins": [
     {
       "location": {
-        "x": 0.0,
-        "y": 155.0
-      },
-      "name": "A0",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 165.0
-      },
-      "name": "A1",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 175.0
-      },
-      "name": "A2",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 185.0
-      },
-      "name": "A3",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 195.0
-      },
-      "name": "B0",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 205.0
-      },
-      "name": "B1",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 215.0
+        "x": 90.0,
+        "y": 15.0
       },
-      "name": "B2",
-      "logicWidth": 1,
+      "name": "A",
+      "logicWidth": 4,
       "usage": "INPUT"
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 225.0
+        "x": 90.0,
+        "y": 35.0
       },
-      "name": "B3",
-      "logicWidth": 1,
+      "name": "B",
+      "logicWidth": 4,
       "usage": "INPUT"
     },
     {
@@ -94,8 +40,8 @@
     },
     {
       "location": {
-        "x": 35.0,
-        "y": 55.0
+        "x": 90.0,
+        "y": 120.0
       },
       "name": "Cn+4",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 115.0
-      },
-      "name": "D1",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 125.0
-      },
-      "name": "D2",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 135.0
+        "x": 60.0,
+        "y": 0.0
       },
-      "name": "D3",
-      "logicWidth": 1,
+      "name": "D",
+      "logicWidth": 4,
       "usage": "INPUT"
     },
     {
       "location": {
         "x": 0.0,
-        "y": 145.0
-      },
-      "name": "D4",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 75.0
+        "y": 55.0
       },
       "name": "F3",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 0.0,
         "y": 45.0
       },
       "name": "F\u003d0",
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 85.0
-      },
-      "name": "I0",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 75.0
-      },
-      "name": "I1",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 65.0
-      },
-      "name": "I2",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 55.0
-      },
-      "name": "I3",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 45.0
-      },
-      "name": "I4",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 35.0
-      },
-      "name": "I5",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 25.0
-      },
-      "name": "I6",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 15.0
+        "x": 90.0,
+        "y": 80.0
       },
-      "name": "I7",
-      "logicWidth": 1,
+      "name": "I",
+      "logicWidth": 9,
       "usage": "INPUT"
     },
     {
       "location": {
         "x": 0.0,
-        "y": 5.0
-      },
-      "name": "I8",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 65.0
+        "y": 50.0
       },
       "name": "OVR",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 255.0
+        "y": 20.0
       },
       "name": "Qn",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 90.0,
         "y": 115.0
       },
       "name": "Qn+3",
     {
       "location": {
         "x": 0.0,
-        "y": 235.0
+        "y": 10.0
       },
       "name": "RAMn",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
-        "y": 95.0
+        "x": 90.0,
+        "y": 110.0
       },
       "name": "RAMn+3",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
-        "y": 5.0
-      },
-      "name": "Y1",
-      "logicWidth": 1,
-      "usage": "OUTPUT"
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 15.0
-      },
-      "name": "Y2",
-      "logicWidth": 1,
-      "usage": "OUTPUT"
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 25.0
-      },
-      "name": "Y3",
-      "logicWidth": 1,
-      "usage": "OUTPUT"
-    },
-    {
-      "location": {
-        "x": 35.0,
-        "y": 35.0
+        "x": 75.0,
+        "y": 125.0
       },
-      "name": "Y4",
-      "logicWidth": 1,
-      "usage": "OUTPUT"
+      "name": "Y",
+      "logicWidth": 4,
+      "usage": "INPUT"
     }
   ],
   "innerScale": 0.1,
         "id": "Am2901ALUInclSourceDecodeInclFunctionDecode",
         "name": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
         "pos": {
-          "x": 240.0,
-          "y": 2110.0
+          "x": 510.0,
+          "y": 620.0
         }
       },
       {
         "id": "Am2901DestDecode",
         "name": "Am2901DestDecode#0",
         "pos": {
-          "x": 15.0,
-          "y": 45.0
+          "x": 380.0,
+          "y": 160.0
         }
       },
       {
         "id": "NandGate",
         "name": "NandGate#0",
         "pos": {
-          "x": 160.0,
-          "y": 75.0
+          "x": 465.0,
+          "y": 190.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#1",
         "pos": {
-          "x": 320.0,
+          "x": 420.0,
           "y": 440.0
         },
         "params": 1
       },
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 855.0,
+          "y": 760.0
+        },
+        "params": {
+          "logicWidth": 9,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 735.0,
+          "y": 1235.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 485.0,
+          "y": 620.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 670.0,
+          "y": 135.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 670.0,
+          "y": 335.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
+      },
       {
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#0",
         "pos": {
-          "x": 255.0,
-          "y": 2485.0
+          "x": 355.0,
+          "y": 900.0
         },
         "params": {
           "logicWidth": 1,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#1",
         "pos": {
-          "x": 270.0,
-          "y": 2435.0
+          "x": 370.0,
+          "y": 850.0
         },
         "params": {
           "logicWidth": 1,
       },
       {
         "id": "TriStateBuffer",
-        "name": "TriStateBuffer#3",
+        "name": "TriStateBuffer#2",
         "pos": {
-          "x": 300.0,
-          "y": 2515.0
+          "x": 400.0,
+          "y": 930.0
         },
         "params": {
           "logicWidth": 1,
       },
       {
         "id": "TriStateBuffer",
-        "name": "TriStateBuffer#4",
+        "name": "TriStateBuffer#3",
         "pos": {
-          "x": 300.0,
-          "y": 2310.0
+          "x": 400.0,
+          "y": 725.0
         },
         "params": {
           "logicWidth": 1,
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 154.0,
-          "y": 949.0
+          "x": 14.0,
+          "y": 714.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 154.0,
-          "y": 89.0
+          "x": 459.0,
+          "y": 194.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 234.0,
-          "y": 2254.0
+          "x": 229.0,
+          "y": 909.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#11",
         "pos": {
-          "x": 129.0,
-          "y": 2494.0
+          "x": 234.0,
+          "y": 919.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#12",
         "pos": {
-          "x": 134.0,
-          "y": 2504.0
+          "x": 239.0,
+          "y": 929.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#13",
         "pos": {
-          "x": 139.0,
-          "y": 2514.0
+          "x": 244.0,
+          "y": 939.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#14",
         "pos": {
-          "x": 144.0,
-          "y": 2524.0
+          "x": 319.0,
+          "y": 909.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#15",
         "pos": {
-          "x": 219.0,
-          "y": 2494.0
+          "x": 334.0,
+          "y": 939.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#16",
         "pos": {
-          "x": 234.0,
-          "y": 2524.0
+          "x": 134.0,
+          "y": 1039.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#17",
         "pos": {
-          "x": 34.0,
-          "y": 2624.0
+          "x": 139.0,
+          "y": 1049.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#18",
         "pos": {
-          "x": 39.0,
-          "y": 2634.0
+          "x": 379.0,
+          "y": 529.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#19",
         "pos": {
-          "x": 279.0,
-          "y": 2114.0
+          "x": 394.0,
+          "y": 544.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 154.0,
-          "y": 2264.0
+          "x": 254.0,
+          "y": 749.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#20",
         "pos": {
-          "x": 294.0,
-          "y": 2144.0
+          "x": 434.0,
+          "y": 734.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#21",
         "pos": {
-          "x": 334.0,
-          "y": 2319.0
+          "x": 354.0,
+          "y": 504.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#22",
         "pos": {
-          "x": 254.0,
-          "y": 2089.0
+          "x": 359.0,
+          "y": 509.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#23",
         "pos": {
-          "x": 259.0,
-          "y": 2094.0
+          "x": 364.0,
+          "y": 514.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#24",
         "pos": {
-          "x": 264.0,
-          "y": 2099.0
+          "x": 369.0,
+          "y": 519.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#25",
         "pos": {
-          "x": 269.0,
-          "y": 2104.0
+          "x": 354.0,
+          "y": 449.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#26",
         "pos": {
-          "x": 254.0,
-          "y": 449.0
+          "x": 359.0,
+          "y": 459.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#27",
         "pos": {
-          "x": 259.0,
-          "y": 459.0
+          "x": 364.0,
+          "y": 469.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#28",
         "pos": {
-          "x": 264.0,
-          "y": 469.0
+          "x": 369.0,
+          "y": 479.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#29",
         "pos": {
-          "x": 269.0,
-          "y": 479.0
+          "x": 104.0,
+          "y": 769.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 154.0,
-          "y": 2319.0
+          "x": 134.0,
+          "y": 729.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#30",
         "pos": {
-          "x": 9.0,
-          "y": 2354.0
+          "x": 109.0,
+          "y": 779.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#31",
         "pos": {
-          "x": 14.0,
-          "y": 2364.0
+          "x": 114.0,
+          "y": 789.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#32",
         "pos": {
-          "x": 19.0,
-          "y": 2374.0
+          "x": 109.0,
+          "y": 809.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#33",
         "pos": {
-          "x": 14.0,
-          "y": 2394.0
+          "x": 114.0,
+          "y": 819.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#34",
         "pos": {
-          "x": 19.0,
-          "y": 2404.0
+          "x": 119.0,
+          "y": 829.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#35",
         "pos": {
-          "x": 24.0,
-          "y": 2414.0
+          "x": 104.0,
+          "y": 799.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#36",
         "pos": {
-          "x": 9.0,
-          "y": 2384.0
+          "x": 109.0,
+          "y": 839.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#37",
         "pos": {
-          "x": 14.0,
-          "y": 2424.0
+          "x": 114.0,
+          "y": 849.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#38",
         "pos": {
-          "x": 19.0,
-          "y": 2434.0
+          "x": 119.0,
+          "y": 859.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#39",
         "pos": {
-          "x": 24.0,
-          "y": 2444.0
+          "x": 414.0,
+          "y": 449.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 39.0,
-          "y": 2314.0
+          "x": 129.0,
+          "y": 739.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#40",
         "pos": {
-          "x": 314.0,
-          "y": 449.0
+          "x": 99.0,
+          "y": 964.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#41",
         "pos": {
-          "x": 4.0,
-          "y": 2549.0
+          "x": 99.0,
+          "y": 764.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#42",
         "pos": {
-          "x": 4.0,
-          "y": 2349.0
+          "x": 124.0,
+          "y": 889.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#43",
         "pos": {
-          "x": 339.0,
-          "y": 2524.0
+          "x": 364.0,
+          "y": 889.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#44",
         "pos": {
-          "x": 29.0,
-          "y": 2469.0
+          "x": 134.0,
+          "y": 894.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#45",
         "pos": {
-          "x": 264.0,
-          "y": 2469.0
+          "x": 409.0,
+          "y": 894.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#46",
         "pos": {
-          "x": 39.0,
-          "y": 2474.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#47",
-        "pos": {
-          "x": 309.0,
-          "y": 2474.0
+          "x": 424.0,
+          "y": 1079.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 34.0,
-          "y": 2324.0
+          "x": 124.0,
+          "y": 749.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 29.0,
-          "y": 2334.0
+          "x": 349.0,
+          "y": 364.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 219.0,
-          "y": 2224.0
+          "x": 344.0,
+          "y": 374.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 224.0,
-          "y": 2234.0
+          "x": 339.0,
+          "y": 384.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 229.0,
-          "y": 2244.0
+          "x": 334.0,
+          "y": 394.0
         },
         "params": 1
       },
         "id": "and",
         "name": "and#0",
         "pos": {
-          "x": 190.0,
-          "y": 65.0
+          "x": 495.0,
+          "y": 180.0
         }
       },
       {
         "id": "dff4",
         "name": "dff4#0",
         "pos": {
-          "x": 90.0,
-          "y": 2490.0
+          "x": 190.0,
+          "y": 905.0
         }
       },
       {
         "id": "dlatch4",
         "name": "dlatch4#0",
         "pos": {
-          "x": 160.0,
-          "y": 2220.0
+          "x": 720.0,
+          "y": 170.0
         }
       },
       {
         "id": "dlatch4",
         "name": "dlatch4#1",
         "pos": {
-          "x": 160.0,
-          "y": 2275.0
+          "x": 260.0,
+          "y": 690.0
         }
       },
       {
         "id": "mux1_4",
         "name": "mux1_4#0",
         "pos": {
-          "x": 275.0,
-          "y": 135.0
+          "x": 500.0,
+          "y": 350.0
         }
       },
       {
         "id": "or4",
         "name": "or4#0",
         "pos": {
-          "x": 275.0,
+          "x": 375.0,
           "y": 445.0
         }
       },
         "id": "ram4",
         "name": "ram4#0",
         "pos": {
-          "x": 95.0,
-          "y": 2220.0
+          "x": 655.0,
+          "y": 170.0
         }
       },
       {
         "id": "sel3_4",
         "name": "sel3_4#0",
         "pos": {
-          "x": 45.0,
-          "y": 2310.0
+          "x": 145.0,
+          "y": 725.0
         }
       },
       {
         "id": "sel3_4",
         "name": "sel3_4#1",
         "pos": {
-          "x": 45.0,
-          "y": 2510.0
+          "x": 150.0,
+          "y": 925.0
         }
       }
     ],
     "wires": [
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I8"
+          "compName": "Splitter#0",
+          "pinName": "O6"
         },
         "pin2": {
           "compName": "Am2901DestDecode#0",
-          "pinName": "I8"
+          "pinName": "I6"
         },
         "name": "unnamedWire#0",
-        "path": []
+        "path": [
+          {
+            "x": 845.0,
+            "y": 780.0
+          },
+          {
+            "x": 845.0,
+            "y": 305.0
+          },
+          {
+            "x": 375.0,
+            "y": 305.0
+          },
+          {
+            "x": 375.0,
+            "y": 185.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I7"
+          "compName": "Splitter#0",
+          "pinName": "O5"
         },
         "pin2": {
-          "compName": "Am2901DestDecode#0",
-          "pinName": "I7"
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I5"
         },
         "name": "unnamedWire#1",
         "path": [
           {
-            "x": 5.0,
-            "y": 150.0
+            "x": 805.0,
+            "y": 790.0
           },
           {
-            "x": 5.0,
-            "y": 60.0
+            "x": 805.0,
+            "y": 615.0
+          },
+          {
+            "x": 585.0,
+            "y": 615.0
           }
         ]
       },
           "pinName": ""
         },
         "name": "unnamedWire#10",
-        "path": []
+        "path": [
+          {
+            "x": 15.0,
+            "y": 90.0
+          },
+          {
+            "x": 460.0,
+            "y": 90.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "F3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "name": "unnamedWire#100",
         "path": [
           {
-            "x": 290.0,
-            "y": 2135.0
+            "x": 625.0,
+            "y": 645.0
+          },
+          {
+            "x": 625.0,
+            "y": 540.0
+          },
+          {
+            "x": 390.0,
+            "y": 540.0
           },
           {
-            "x": 290.0,
-            "y": 2100.0
+            "x": 390.0,
+            "y": 515.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
         "name": "unnamedWire#101",
         "path": [
           {
-            "x": 295.0,
-            "y": 2105.0
+            "x": 395.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
         "name": "unnamedWire#102",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "name": "unnamedWire#103",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#28",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
         "name": "unnamedWire#104",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "name": "unnamedWire#105",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A"
         },
         "name": "unnamedWire#11",
-        "path": [
-          {
-            "x": 155.0,
-            "y": 80.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#25",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#110",
         "path": [
           {
-            "x": 255.0,
-            "y": 190.0
+            "x": 355.0,
+            "y": 405.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#26",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#111",
         "path": [
           {
-            "x": 260.0,
-            "y": 200.0
+            "x": 360.0,
+            "y": 415.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#28",
+          "compName": "WireCrossPoint#27",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#112",
         "path": [
           {
-            "x": 265.0,
-            "y": 210.0
+            "x": 365.0,
+            "y": 425.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#29",
+          "compName": "WireCrossPoint#28",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#113",
         "path": [
           {
-            "x": 270.0,
-            "y": 220.0
+            "x": 370.0,
+            "y": 435.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "name": "unnamedWire#114",
         "path": [
           {
-            "x": 10.0,
-            "y": 2090.0
+            "x": 105.0,
+            "y": 505.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "name": "unnamedWire#115",
         "path": [
           {
-            "x": 15.0,
-            "y": 2095.0
+            "x": 110.0,
+            "y": 510.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "name": "unnamedWire#116",
         "path": [
           {
-            "x": 20.0,
-            "y": 2100.0
+            "x": 115.0,
+            "y": 515.0
           }
         ]
       },
           "pinName": "A1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#41",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "name": "unnamedWire#117",
         "path": [
           {
-            "x": 5.0,
-            "y": 2545.0
+            "x": 100.0,
+            "y": 960.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
           "pinName": "B"
         },
         "name": "unnamedWire#12",
-        "path": []
+        "path": [
+          {
+            "x": 460.0,
+            "y": 205.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#32",
           "pinName": ""
         },
         "name": "unnamedWire#121",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#34",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "name": "unnamedWire#122",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#35",
+          "compName": "WireCrossPoint#34",
           "pinName": ""
         },
         "name": "unnamedWire#123",
         "path": [
           {
-            "x": 25.0,
-            "y": 2105.0
+            "x": 120.0,
+            "y": 520.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#35",
           "pinName": ""
         },
         "name": "unnamedWire#124",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#35",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#32",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#34",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#35",
+          "compName": "WireCrossPoint#34",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#32",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#37",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "name": "unnamedWire#129",
           "pinName": ""
         },
         "name": "unnamedWire#13",
-        "path": []
+        "path": [
+          {
+            "x": 230.0,
+            "y": 715.0
+          },
+          {
+            "x": 230.0,
+            "y": 750.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#34",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#38",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "name": "unnamedWire#130",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#35",
+          "compName": "WireCrossPoint#34",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#39",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "name": "unnamedWire#131",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#37",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#38",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#39",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "TriStateBuffer#3",
+          "compName": "TriStateBuffer#2",
           "pinName": "IN"
         },
         "name": "unnamedWire#135",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#35",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#136",
         "path": [
           {
-            "x": 10.0,
-            "y": 2585.0
+            "x": 105.0,
+            "y": 1000.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#37",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#137",
         "path": [
           {
-            "x": 15.0,
-            "y": 2595.0
+            "x": 110.0,
+            "y": 1010.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#38",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#138",
         "path": [
           {
-            "x": 20.0,
-            "y": 2605.0
+            "x": 115.0,
+            "y": 1020.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#39",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#139",
         "path": [
           {
-            "x": 25.0,
-            "y": 2615.0
+            "x": 120.0,
+            "y": 1030.0
           }
         ]
       },
           "pinName": "C"
         },
         "name": "unnamedWire#14",
-        "path": []
+        "path": [
+          {
+            "x": 715.0,
+            "y": 750.0
+          },
+          {
+            "x": 715.0,
+            "y": 215.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "D1"
         },
         "name": "unnamedWire#140",
-        "path": []
+        "path": [
+          {
+            "x": 195.0,
+            "y": 730.0
+          },
+          {
+            "x": 195.0,
+            "y": 265.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "D2"
         },
         "name": "unnamedWire#141",
-        "path": []
+        "path": [
+          {
+            "x": 200.0,
+            "y": 740.0
+          },
+          {
+            "x": 200.0,
+            "y": 275.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "D3"
         },
         "name": "unnamedWire#142",
-        "path": []
+        "path": [
+          {
+            "x": 205.0,
+            "y": 750.0
+          },
+          {
+            "x": 205.0,
+            "y": 285.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "D4"
         },
         "name": "unnamedWire#143",
-        "path": []
+        "path": [
+          {
+            "x": 210.0,
+            "y": 760.0
+          },
+          {
+            "x": 210.0,
+            "y": 295.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#146",
         "path": [
           {
-            "x": 230.0,
-            "y": 70.0
-          },
-          {
-            "x": 230.0,
-            "y": 105.0
-          },
-          {
-            "x": 90.0,
-            "y": 105.0
+            "x": 630.0,
+            "y": 185.0
           },
           {
-            "x": 90.0,
-            "y": 2305.0
+            "x": 630.0,
+            "y": 255.0
           }
         ]
       },
         "name": "unnamedWire#147",
         "path": [
           {
-            "x": 85.0,
-            "y": 100.0
+            "x": 450.0,
+            "y": 215.0
+          },
+          {
+            "x": 450.0,
+            "y": 245.0
+          },
+          {
+            "x": 185.0,
+            "y": 245.0
           },
           {
-            "x": 85.0,
-            "y": 2505.0
+            "x": 185.0,
+            "y": 920.0
           }
         ]
       },
         "name": "unnamedWire#148",
         "path": [
           {
-            "x": 70.0,
-            "y": 80.0
+            "x": 435.0,
+            "y": 195.0
           },
           {
-            "x": 70.0,
-            "y": 140.0
+            "x": 435.0,
+            "y": 355.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "mux1_4#0",
-          "pinName": "Y1"
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D4"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y1"
+          "compName": "Splitter#2",
+          "pinName": "O0"
         },
         "name": "unnamedWire#149",
         "path": [
           {
-            "x": 335.0,
-            "y": 140.0
+            "x": 500.0,
+            "y": 645.0
           },
           {
-            "x": 335.0,
-            "y": 50.0
+            "x": 500.0,
+            "y": 650.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
-          "pinName": ""
+          "compName": "Splitter#0",
+          "pinName": "O8"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "Am2901DestDecode#0",
+          "pinName": "I8"
         },
         "name": "unnamedWire#15",
-        "path": []
+        "path": [
+          {
+            "x": 835.0,
+            "y": 760.0
+          },
+          {
+            "x": 835.0,
+            "y": 315.0
+          },
+          {
+            "x": 365.0,
+            "y": 315.0
+          },
+          {
+            "x": 365.0,
+            "y": 165.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "mux1_4#0",
-          "pinName": "Y2"
+          "compName": "Splitter#2",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y2"
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D3"
         },
         "name": "unnamedWire#150",
         "path": []
       },
       {
         "pin1": {
-          "compName": "mux1_4#0",
-          "pinName": "Y3"
+          "compName": "_submodelinterface",
+          "pinName": "Y"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y3"
+          "compName": "Splitter#1",
+          "pinName": "I"
         },
         "name": "unnamedWire#151",
-        "path": [
-          {
-            "x": 335.0,
-            "y": 160.0
-          },
-          {
-            "x": 335.0,
-            "y": 250.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "compName": "mux1_4#0",
-          "pinName": "Y4"
+          "pinName": "Y3"
         },
         "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y4"
+          "compName": "Splitter#1",
+          "pinName": "O2"
         },
         "name": "unnamedWire#152",
         "path": [
           {
-            "x": 325.0,
-            "y": 170.0
+            "x": 555.0,
+            "y": 375.0
           },
           {
-            "x": 325.0,
-            "y": 350.0
+            "x": 555.0,
+            "y": 520.0
+          },
+          {
+            "x": 740.0,
+            "y": 520.0
+          },
+          {
+            "x": 740.0,
+            "y": 1230.0
+          },
+          {
+            "x": 745.0,
+            "y": 1230.0
           }
         ]
       },
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "name": "unnamedWire#153",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#154",
         "path": [
           {
-            "x": 315.0,
+            "x": 415.0,
             "y": 445.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#155",
         "path": [
           {
-            "x": 315.0,
+            "x": 415.0,
             "y": 455.0
           }
         ]
           "pinName": "F\u003d0"
         },
         "name": "unnamedWire#156",
-        "path": []
+        "path": [
+          {
+            "x": 445.0,
+            "y": 450.0
+          },
+          {
+            "x": 445.0,
+            "y": 490.0
+          },
+          {
+            "x": 310.0,
+            "y": 490.0
+          },
+          {
+            "x": 310.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#3",
-          "pinName": "OUT"
+          "compName": "Splitter#1",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "WireCrossPoint#43",
-          "pinName": ""
+          "compName": "mux1_4#0",
+          "pinName": "Y1"
         },
         "name": "unnamedWire#157",
-        "path": []
+        "path": [
+          {
+            "x": 765.0,
+            "y": 1220.0
+          },
+          {
+            "x": 750.0,
+            "y": 1220.0
+          },
+          {
+            "x": 750.0,
+            "y": 510.0
+          },
+          {
+            "x": 565.0,
+            "y": 510.0
+          },
+          {
+            "x": 565.0,
+            "y": 355.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#41",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#158",
         "path": [
           {
-            "x": 5.0,
-            "y": 2690.0
+            "x": 100.0,
+            "y": 1115.0
           },
           {
-            "x": 280.0,
-            "y": 2690.0
+            "x": 380.0,
+            "y": 1115.0
           },
           {
-            "x": 280.0,
-            "y": 2495.0
+            "x": 380.0,
+            "y": 910.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
           "pinName": "C"
         },
         "name": "unnamedWire#16",
-        "path": []
+        "path": [
+          {
+            "x": 255.0,
+            "y": 735.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#160",
         "path": [
           {
-            "x": 5.0,
-            "y": 2345.0
+            "x": 100.0,
+            "y": 760.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#161",
         "path": [
           {
-            "x": 5.0,
-            "y": 2465.0
+            "x": 100.0,
+            "y": 885.0
           },
           {
-            "x": 280.0,
-            "y": 2465.0
+            "x": 380.0,
+            "y": 885.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#162",
         "path": [
           {
-            "x": 330.0,
-            "y": 2145.0
+            "x": 5.0,
+            "y": 545.0
           },
           {
-            "x": 330.0,
-            "y": 750.0
+            "x": 5.0,
+            "y": 550.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "Qn+3"
+          "compName": "mux1_4#0",
+          "pinName": "Y4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#43",
-          "pinName": ""
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "name": "unnamedWire#163",
         "path": [
           {
-            "x": 340.0,
-            "y": 1150.0
+            "x": 550.0,
+            "y": 385.0
+          },
+          {
+            "x": 550.0,
+            "y": 525.0
+          },
+          {
+            "x": 735.0,
+            "y": 525.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#44",
+          "compName": "WireCrossPoint#42",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#164",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#45",
+          "compName": "WireCrossPoint#43",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#165",
         "path": [
           {
-            "x": 290.0,
-            "y": 2470.0
+            "x": 395.0,
+            "y": 890.0
           },
           {
-            "x": 290.0,
-            "y": 2445.0
+            "x": 395.0,
+            "y": 860.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#45",
+          "compName": "WireCrossPoint#43",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#45",
+          "compName": "WireCrossPoint#43",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#44",
+          "compName": "WireCrossPoint#42",
           "pinName": ""
         },
         "name": "unnamedWire#167",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#46",
+          "compName": "WireCrossPoint#44",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "name": "unnamedWire#168",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#46",
+          "compName": "WireCrossPoint#44",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#47",
+          "compName": "WireCrossPoint#45",
           "pinName": ""
         },
         "name": "unnamedWire#169",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#17",
         "path": [
           {
-            "x": 155.0,
-            "y": 2485.0
+            "x": 255.0,
+            "y": 900.0
           },
           {
-            "x": 80.0,
-            "y": 2485.0
+            "x": 180.0,
+            "y": 900.0
           },
           {
-            "x": 80.0,
-            "y": 2495.0
+            "x": 180.0,
+            "y": 910.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#3",
+          "compName": "TriStateBuffer#2",
           "pinName": "EN"
         },
         "pin2": {
-          "compName": "WireCrossPoint#47",
+          "compName": "WireCrossPoint#45",
           "pinName": ""
         },
         "name": "unnamedWire#170",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "TriStateBuffer#4",
+          "compName": "TriStateBuffer#3",
           "pinName": "IN"
         },
         "name": "unnamedWire#171",
         "path": [
           {
-            "x": 295.0,
-            "y": 2320.0
+            "x": 395.0,
+            "y": 735.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Am2901DestDecode#0",
-          "pinName": "LSH"
+          "compName": "sel3_4#1",
+          "pinName": "C4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#46",
           "pinName": ""
         },
-        "name": "unnamedWire#18",
+        "name": "unnamedWire#172",
         "path": [
           {
-            "x": 55.0,
-            "y": 90.0
-          },
-          {
-            "x": 55.0,
-            "y": 125.0
+            "x": 145.0,
+            "y": 1070.0
           },
           {
-            "x": 40.0,
-            "y": 125.0
+            "x": 145.0,
+            "y": 1080.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Am2901DestDecode#0",
-          "pinName": "NSH"
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "TriStateBuffer#2",
+          "pinName": "OUT"
         },
-        "name": "unnamedWire#19",
+        "name": "unnamedWire#173",
         "path": [
           {
-            "x": 60.0,
-            "y": 50.0
-          },
-          {
-            "x": 60.0,
-            "y": 120.0
-          },
-          {
-            "x": 35.0,
-            "y": 120.0
+            "x": 425.0,
+            "y": 940.0
           }
         ]
       },
       {
         "pin1": {
+          "compName": "WireCrossPoint#46",
+          "pinName": ""
+        },
+        "pin2": {
           "compName": "_submodelinterface",
-          "pinName": "I6"
+          "pinName": "Qn+3"
+        },
+        "name": "unnamedWire#174",
+        "path": [
+          {
+            "x": 425.0,
+            "y": 1150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D2"
         },
         "pin2": {
-          "compName": "Am2901DestDecode#0",
-          "pinName": "I6"
+          "compName": "Splitter#2",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#2",
+        "name": "unnamedWire#175",
         "path": [
           {
-            "x": 10.0,
-            "y": 250.0
+            "x": 500.0,
+            "y": 635.0
           },
           {
-            "x": 10.0,
-            "y": 70.0
+            "x": 500.0,
+            "y": 630.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Am2901DestDecode#0",
-          "pinName": "RSH"
+          "compName": "Splitter#2",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "D1"
         },
-        "name": "unnamedWire#20",
+        "name": "unnamedWire#176",
         "path": [
           {
-            "x": 65.0,
-            "y": 60.0
+            "x": 505.0,
+            "y": 620.0
           },
           {
-            "x": 65.0,
-            "y": 115.0
-          },
-          {
-            "x": 30.0,
-            "y": 115.0
+            "x": 505.0,
+            "y": 630.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "D"
         },
         "pin2": {
-          "compName": "sel3_4#0",
-          "pinName": "SA"
+          "compName": "Splitter#2",
+          "pinName": "I"
         },
-        "name": "unnamedWire#21",
-        "path": []
+        "name": "unnamedWire#177",
+        "path": [
+          {
+            "x": 600.0,
+            "y": 480.0
+          },
+          {
+            "x": 480.0,
+            "y": 480.0
+          },
+          {
+            "x": 480.0,
+            "y": 635.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "Splitter#4",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "sel3_4#0",
-          "pinName": "SB"
+          "compName": "ram4#0",
+          "pinName": "B0"
         },
-        "name": "unnamedWire#22",
-        "path": []
+        "name": "unnamedWire#178",
+        "path": [
+          {
+            "x": 635.0,
+            "y": 365.0
+          },
+          {
+            "x": 635.0,
+            "y": 215.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
-          "pinName": ""
+          "compName": "Splitter#4",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "sel3_4#0",
-          "pinName": "SC"
+          "compName": "_submodelinterface",
+          "pinName": "B"
         },
-        "name": "unnamedWire#23",
+        "name": "unnamedWire#179",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#46",
-          "pinName": ""
+          "compName": "Am2901DestDecode#0",
+          "pinName": "LSH"
         },
         "pin2": {
-          "compName": "sel3_4#1",
-          "pinName": "SA"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
         },
-        "name": "unnamedWire#24",
+        "name": "unnamedWire#18",
         "path": [
           {
-            "x": 40.0,
-            "y": 2515.0
+            "x": 420.0,
+            "y": 205.0
+          },
+          {
+            "x": 420.0,
+            "y": 240.0
+          },
+          {
+            "x": 135.0,
+            "y": 240.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "Am2901DestDecode#0",
+          "pinName": "NSH"
         },
         "pin2": {
-          "compName": "sel3_4#1",
-          "pinName": "SB"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
-        "name": "unnamedWire#25",
+        "name": "unnamedWire#19",
         "path": [
           {
-            "x": 35.0,
-            "y": 2525.0
+            "x": 425.0,
+            "y": 165.0
+          },
+          {
+            "x": 425.0,
+            "y": 235.0
+          },
+          {
+            "x": 130.0,
+            "y": 235.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "sel3_4#1",
-          "pinName": "SC"
+          "compName": "Splitter#0",
+          "pinName": "O4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#44",
-          "pinName": ""
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I4"
         },
-        "name": "unnamedWire#26",
+        "name": "unnamedWire#2",
         "path": [
           {
-            "x": 30.0,
-            "y": 2535.0
+            "x": 800.0,
+            "y": 800.0
+          },
+          {
+            "x": 800.0,
+            "y": 610.0
+          },
+          {
+            "x": 575.0,
+            "y": 610.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A0"
+          "compName": "Am2901DestDecode#0",
+          "pinName": "RSH"
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "A0"
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
         },
-        "name": "unnamedWire#27",
+        "name": "unnamedWire#20",
         "path": [
           {
-            "x": 80.0,
-            "y": 1550.0
+            "x": 430.0,
+            "y": 175.0
           },
           {
-            "x": 80.0,
-            "y": 2225.0
+            "x": 430.0,
+            "y": 230.0
+          },
+          {
+            "x": 125.0,
+            "y": 230.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A1"
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel3_4#0",
+          "pinName": "SA"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel3_4#0",
+          "pinName": "SB"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel3_4#0",
+          "pinName": "SC"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#44",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "A1"
+          "compName": "sel3_4#1",
+          "pinName": "SA"
         },
-        "name": "unnamedWire#28",
+        "name": "unnamedWire#24",
         "path": [
           {
-            "x": 75.0,
-            "y": 1650.0
-          },
-          {
-            "x": 75.0,
-            "y": 2235.0
+            "x": 135.0,
+            "y": 930.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A2"
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "A2"
+          "compName": "sel3_4#1",
+          "pinName": "SB"
         },
-        "name": "unnamedWire#29",
+        "name": "unnamedWire#25",
         "path": [
           {
-            "x": 70.0,
-            "y": 1750.0
-          },
-          {
-            "x": 70.0,
-            "y": 2245.0
+            "x": 130.0,
+            "y": 940.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I5"
+          "compName": "sel3_4#1",
+          "pinName": "SC"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I5"
+          "compName": "WireCrossPoint#42",
+          "pinName": ""
         },
-        "name": "unnamedWire#3",
+        "name": "unnamedWire#26",
         "path": [
           {
-            "x": 130.0,
-            "y": 350.0
-          },
-          {
-            "x": 130.0,
-            "y": 2115.0
+            "x": 125.0,
+            "y": 950.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "A3"
+          "compName": "Splitter#3",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "A3"
+          "compName": "_submodelinterface",
+          "pinName": "A"
         },
-        "name": "unnamedWire#30",
-        "path": [
-          {
-            "x": 65.0,
-            "y": 1850.0
-          },
-          {
-            "x": 65.0,
-            "y": 2255.0
-          }
-        ]
+        "name": "unnamedWire#27",
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B0"
+          "compName": "ram4#0",
+          "pinName": "B3"
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "B0"
+          "compName": "Splitter#4",
+          "pinName": "O3"
         },
-        "name": "unnamedWire#31",
+        "name": "unnamedWire#28",
         "path": [
           {
-            "x": 60.0,
-            "y": 1950.0
+            "x": 650.0,
+            "y": 245.0
           },
           {
-            "x": 60.0,
-            "y": 2265.0
+            "x": 650.0,
+            "y": 335.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B1"
+          "compName": "ram4#0",
+          "pinName": "B2"
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "B1"
+          "compName": "Splitter#4",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#32",
+        "name": "unnamedWire#29",
         "path": [
           {
-            "x": 55.0,
-            "y": 2050.0
+            "x": 645.0,
+            "y": 235.0
           },
           {
-            "x": 55.0,
-            "y": 2275.0
+            "x": 645.0,
+            "y": 345.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B2"
+          "compName": "Splitter#0",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "ram4#0",
-          "pinName": "B2"
+          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
+          "pinName": "I3"
         },
-        "name": "unnamedWire#33",
+        "name": "unnamedWire#3",
         "path": [
           {
-            "x": 50.0,
-            "y": 2150.0
+            "x": 795.0,
+            "y": 810.0
+          },
+          {
+            "x": 795.0,
+            "y": 605.0
           },
           {
-            "x": 50.0,
-            "y": 2285.0
+            "x": 565.0,
+            "y": 605.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "B3"
+          "compName": "Splitter#4",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "ram4#0",
-          "pinName": "B3"
+          "pinName": "B1"
         },
-        "name": "unnamedWire#34",
+        "name": "unnamedWire#30",
         "path": [
           {
-            "x": 45.0,
-            "y": 2250.0
+            "x": 640.0,
+            "y": 355.0
           },
           {
-            "x": 45.0,
-            "y": 2295.0
+            "x": 640.0,
+            "y": 225.0
           }
         ]
       },
         "name": "unnamedWire#39",
         "path": [
           {
-            "x": 150.0,
-            "y": 2265.0
+            "x": 695.0,
+            "y": 215.0
+          },
+          {
+            "x": 695.0,
+            "y": 575.0
+          },
+          {
+            "x": 250.0,
+            "y": 575.0
           },
           {
-            "x": 150.0,
-            "y": 2280.0
+            "x": 250.0,
+            "y": 695.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I4"
+          "compName": "Splitter#0",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I4"
+          "pinName": "I2"
         },
         "name": "unnamedWire#4",
         "path": [
           {
-            "x": 125.0,
-            "y": 450.0
+            "x": 790.0,
+            "y": 820.0
           },
           {
-            "x": 125.0,
-            "y": 2125.0
+            "x": 790.0,
+            "y": 600.0
+          },
+          {
+            "x": 555.0,
+            "y": 600.0
           }
         ]
       },
         "name": "unnamedWire#40",
         "path": [
           {
-            "x": 145.0,
-            "y": 2275.0
+            "x": 700.0,
+            "y": 225.0
           },
           {
-            "x": 145.0,
-            "y": 2290.0
+            "x": 700.0,
+            "y": 570.0
+          },
+          {
+            "x": 245.0,
+            "y": 570.0
+          },
+          {
+            "x": 245.0,
+            "y": 705.0
           }
         ]
       },
         "name": "unnamedWire#41",
         "path": [
           {
-            "x": 140.0,
-            "y": 2285.0
+            "x": 705.0,
+            "y": 235.0
           },
           {
-            "x": 140.0,
-            "y": 2300.0
+            "x": 705.0,
+            "y": 565.0
+          },
+          {
+            "x": 240.0,
+            "y": 565.0
+          },
+          {
+            "x": 240.0,
+            "y": 715.0
           }
         ]
       },
         "name": "unnamedWire#42",
         "path": [
           {
-            "x": 135.0,
-            "y": 2295.0
+            "x": 710.0,
+            "y": 245.0
           },
           {
-            "x": 135.0,
-            "y": 2310.0
+            "x": 710.0,
+            "y": 560.0
+          },
+          {
+            "x": 235.0,
+            "y": 560.0
+          },
+          {
+            "x": 235.0,
+            "y": 725.0
           }
         ]
       },
         "name": "unnamedWire#43",
         "path": [
           {
-            "x": 100.0,
+            "x": 55.0,
             "y": 1050.0
           },
           {
-            "x": 100.0,
-            "y": 2175.0
+            "x": 55.0,
+            "y": 600.0
+          },
+          {
+            "x": 520.0,
+            "y": 600.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D1"
+          "compName": "ram4#0",
+          "pinName": "A0"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D1"
+          "compName": "Splitter#3",
+          "pinName": "O0"
         },
         "name": "unnamedWire#44",
         "path": [
           {
-            "x": 180.0,
-            "y": 1150.0
+            "x": 650.0,
+            "y": 175.0
           },
           {
-            "x": 180.0,
-            "y": 2185.0
+            "x": 650.0,
+            "y": 165.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D2"
+          "compName": "Splitter#3",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D2"
+          "compName": "ram4#0",
+          "pinName": "A1"
         },
         "name": "unnamedWire#45",
         "path": [
           {
-            "x": 175.0,
-            "y": 1250.0
+            "x": 645.0,
+            "y": 155.0
           },
           {
-            "x": 175.0,
-            "y": 2195.0
+            "x": 645.0,
+            "y": 185.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D3"
+          "compName": "Splitter#3",
+          "pinName": "O2"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D3"
+          "compName": "ram4#0",
+          "pinName": "A2"
         },
         "name": "unnamedWire#46",
         "path": [
           {
-            "x": 170.0,
-            "y": 1350.0
+            "x": 640.0,
+            "y": 145.0
           },
           {
-            "x": 170.0,
-            "y": 2205.0
+            "x": 640.0,
+            "y": 195.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "D4"
+          "compName": "Splitter#3",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "D4"
+          "compName": "ram4#0",
+          "pinName": "A3"
         },
         "name": "unnamedWire#47",
         "path": [
           {
-            "x": 165.0,
-            "y": 1450.0
+            "x": 635.0,
+            "y": 135.0
           },
           {
-            "x": 165.0,
-            "y": 2215.0
+            "x": 635.0,
+            "y": 205.0
           }
         ]
       },
           "pinName": "Q1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#48",
-        "path": []
+        "path": [
+          {
+            "x": 765.0,
+            "y": 175.0
+          },
+          {
+            "x": 765.0,
+            "y": 80.0
+          },
+          {
+            "x": 350.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Q2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#49",
-        "path": []
+        "path": [
+          {
+            "x": 770.0,
+            "y": 185.0
+          },
+          {
+            "x": 770.0,
+            "y": 75.0
+          },
+          {
+            "x": 345.0,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I3"
+          "compName": "Splitter#0",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I3"
+          "pinName": "I1"
         },
         "name": "unnamedWire#5",
         "path": [
           {
-            "x": 120.0,
-            "y": 550.0
+            "x": 785.0,
+            "y": 830.0
           },
           {
-            "x": 120.0,
-            "y": 2135.0
+            "x": 785.0,
+            "y": 595.0
+          },
+          {
+            "x": 545.0,
+            "y": 595.0
           }
         ]
       },
           "pinName": "Q3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#50",
-        "path": []
+        "path": [
+          {
+            "x": 775.0,
+            "y": 195.0
+          },
+          {
+            "x": 775.0,
+            "y": 70.0
+          },
+          {
+            "x": 340.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Q4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#51",
-        "path": []
+        "path": [
+          {
+            "x": 780.0,
+            "y": 205.0
+          },
+          {
+            "x": 780.0,
+            "y": 65.0
+          },
+          {
+            "x": 335.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
           "pinName": "I0_1"
         },
         "name": "unnamedWire#52",
-        "path": [
-          {
-            "x": 220.0,
-            "y": 150.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
           "pinName": "I0_2"
         },
         "name": "unnamedWire#53",
-        "path": [
-          {
-            "x": 225.0,
-            "y": 160.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
           "pinName": "I0_3"
         },
         "name": "unnamedWire#54",
-        "path": [
-          {
-            "x": 230.0,
-            "y": 170.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "pinName": "I0_4"
         },
         "name": "unnamedWire#55",
-        "path": [
-          {
-            "x": 235.0,
-            "y": 180.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A1"
         },
         "name": "unnamedWire#56",
-        "path": []
+        "path": [
+          {
+            "x": 350.0,
+            "y": 655.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A2"
         },
         "name": "unnamedWire#57",
-        "path": []
+        "path": [
+          {
+            "x": 345.0,
+            "y": 660.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A3"
         },
         "name": "unnamedWire#58",
-        "path": []
+        "path": [
+          {
+            "x": 340.0,
+            "y": 665.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A4"
         },
         "name": "unnamedWire#59",
-        "path": []
+        "path": [
+          {
+            "x": 335.0,
+            "y": 670.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I2"
+          "compName": "Splitter#0",
+          "pinName": "O0"
         },
         "pin2": {
           "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I2"
+          "pinName": "I0"
         },
         "name": "unnamedWire#6",
         "path": [
           {
-            "x": 115.0,
-            "y": 650.0
+            "x": 780.0,
+            "y": 840.0
           },
           {
-            "x": 115.0,
-            "y": 2145.0
+            "x": 780.0,
+            "y": 590.0
+          },
+          {
+            "x": 535.0,
+            "y": 590.0
           }
         ]
       },
         "name": "unnamedWire#60",
         "path": [
           {
-            "x": 200.0,
-            "y": 2280.0
+            "x": 300.0,
+            "y": 695.0
           },
           {
-            "x": 200.0,
-            "y": 2265.0
+            "x": 300.0,
+            "y": 680.0
           }
         ]
       },
         "name": "unnamedWire#61",
         "path": [
           {
-            "x": 205.0,
-            "y": 2290.0
+            "x": 305.0,
+            "y": 705.0
           },
           {
-            "x": 205.0,
-            "y": 2275.0
+            "x": 305.0,
+            "y": 685.0
           }
         ]
       },
         "name": "unnamedWire#62",
         "path": [
           {
-            "x": 210.0,
-            "y": 2300.0
+            "x": 310.0,
+            "y": 715.0
           },
           {
-            "x": 210.0,
-            "y": 2285.0
+            "x": 310.0,
+            "y": 690.0
           }
         ]
       },
         "name": "unnamedWire#63",
         "path": [
           {
-            "x": 215.0,
-            "y": 2310.0
+            "x": 315.0,
+            "y": 725.0
           },
           {
-            "x": 215.0,
-            "y": 2295.0
+            "x": 315.0,
+            "y": 695.0
           }
         ]
       },
           "pinName": "Q1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#64",
           "pinName": "Q2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "name": "unnamedWire#65",
           "pinName": "Q3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "name": "unnamedWire#66",
           "pinName": "Q4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "name": "unnamedWire#67",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#68",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I1"
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I1"
+          "compName": "Splitter#0",
+          "pinName": "I"
         },
         "name": "unnamedWire#7",
-        "path": [
-          {
-            "x": 110.0,
-            "y": 750.0
-          },
-          {
-            "x": 110.0,
-            "y": 2155.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "name": "unnamedWire#70",
           "pinName": "Qn"
         },
         "pin2": {
-          "compName": "WireCrossPoint#41",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "name": "unnamedWire#71",
-        "path": []
+        "path": [
+          {
+            "x": 80.0,
+            "y": 200.0
+          },
+          {
+            "x": 80.0,
+            "y": 965.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "name": "unnamedWire#72",
         "path": [
           {
-            "x": 135.0,
-            "y": 2670.0
+            "x": 235.0,
+            "y": 1095.0
           },
           {
-            "x": 30.0,
-            "y": 2670.0
+            "x": 130.0,
+            "y": 1095.0
           },
           {
-            "x": 30.0,
-            "y": 2635.0
+            "x": 130.0,
+            "y": 1050.0
           },
           {
-            "x": 35.0,
-            "y": 2635.0
+            "x": 135.0,
+            "y": 1050.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "name": "unnamedWire#73",
         "path": [
           {
-            "x": 140.0,
-            "y": 2675.0
+            "x": 240.0,
+            "y": 1100.0
           },
           {
-            "x": 35.0,
-            "y": 2675.0
+            "x": 135.0,
+            "y": 1100.0
           },
           {
-            "x": 35.0,
-            "y": 2640.0
+            "x": 135.0,
+            "y": 1055.0
           },
           {
-            "x": 40.0,
-            "y": 2640.0
+            "x": 140.0,
+            "y": 1055.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#76",
         "path": [
           {
-            "x": 145.0,
-            "y": 2680.0
+            "x": 245.0,
+            "y": 1105.0
           },
           {
-            "x": 40.0,
-            "y": 2680.0
+            "x": 140.0,
+            "y": 1105.0
           },
           {
-            "x": 40.0,
-            "y": 2645.0
+            "x": 140.0,
+            "y": 1060.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#43",
-          "pinName": ""
+          "compName": "Splitter#0",
+          "pinName": "O7"
         },
         "pin2": {
-          "compName": "sel3_4#1",
-          "pinName": "C4"
+          "compName": "Am2901DestDecode#0",
+          "pinName": "I7"
         },
         "name": "unnamedWire#77",
-        "path": []
+        "path": [
+          {
+            "x": 840.0,
+            "y": 770.0
+          },
+          {
+            "x": 840.0,
+            "y": 310.0
+          },
+          {
+            "x": 370.0,
+            "y": 310.0
+          },
+          {
+            "x": 370.0,
+            "y": 175.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "RAMn"
         },
         "pin2": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "name": "unnamedWire#78",
-        "path": []
+        "path": [
+          {
+            "x": 75.0,
+            "y": 100.0
+          },
+          {
+            "x": 75.0,
+            "y": 765.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#79",
         "path": [
           {
-            "x": 130.0,
-            "y": 2665.0
+            "x": 230.0,
+            "y": 1090.0
           },
           {
-            "x": 25.0,
-            "y": 2665.0
+            "x": 125.0,
+            "y": 1090.0
           },
           {
-            "x": 25.0,
-            "y": 2630.0
+            "x": 125.0,
+            "y": 1045.0
           },
           {
-            "x": 30.0,
-            "y": 2630.0
+            "x": 130.0,
+            "y": 1045.0
           },
           {
-            "x": 30.0,
-            "y": 2555.0
+            "x": 130.0,
+            "y": 970.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I0"
+          "compName": "Splitter#1",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "Am2901ALUInclSourceDecodeInclFunctionDecode#0",
-          "pinName": "I0"
+          "compName": "mux1_4#0",
+          "pinName": "Y2"
         },
         "name": "unnamedWire#8",
         "path": [
           {
-            "x": 105.0,
-            "y": 850.0
+            "x": 755.0,
+            "y": 1225.0
           },
           {
-            "x": 105.0,
-            "y": 2165.0
+            "x": 745.0,
+            "y": 1225.0
+          },
+          {
+            "x": 745.0,
+            "y": 515.0
+          },
+          {
+            "x": 560.0,
+            "y": 515.0
+          },
+          {
+            "x": 560.0,
+            "y": 365.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#80",
         "path": [
           {
-            "x": 220.0,
-            "y": 2305.0
+            "x": 320.0,
+            "y": 705.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#81",
         "path": [
           {
-            "x": 225.0,
-            "y": 2505.0
+            "x": 325.0,
+            "y": 920.0
           },
           {
-            "x": 225.0,
-            "y": 2315.0
+            "x": 325.0,
+            "y": 710.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#82",
         "path": [
           {
-            "x": 230.0,
-            "y": 2515.0
+            "x": 330.0,
+            "y": 930.0
           },
           {
-            "x": 230.0,
-            "y": 2325.0
+            "x": 330.0,
+            "y": 715.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#83",
         "path": [
           {
-            "x": 235.0,
-            "y": 2335.0
+            "x": 335.0,
+            "y": 720.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#84",
         "path": [
           {
-            "x": 35.0,
-            "y": 2565.0
+            "x": 135.0,
+            "y": 980.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#85",
         "path": [
           {
-            "x": 40.0,
-            "y": 2575.0
+            "x": 140.0,
+            "y": 990.0
           }
         ]
       },
           "pinName": ""
         },
         "name": "unnamedWire#9",
-        "path": []
+        "path": [
+          {
+            "x": 15.0,
+            "y": 950.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#90",
         "path": [
           {
-            "x": 315.0,
-            "y": 2155.0
+            "x": 615.0,
+            "y": 665.0
           },
           {
-            "x": 315.0,
-            "y": 550.0
+            "x": 615.0,
+            "y": 1200.0
           }
         ]
       },
         "name": "unnamedWire#91",
         "path": [
           {
-            "x": 320.0,
-            "y": 2165.0
+            "x": 610.0,
+            "y": 675.0
           },
           {
-            "x": 320.0,
-            "y": 650.0
+            "x": 610.0,
+            "y": 1125.0
+          },
+          {
+            "x": 95.0,
+            "y": 1125.0
+          },
+          {
+            "x": 95.0,
+            "y": 500.0
           }
         ]
       },
           "pinName": "F1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "name": "unnamedWire#92",
-        "path": []
+        "path": [
+          {
+            "x": 635.0,
+            "y": 625.0
+          },
+          {
+            "x": 635.0,
+            "y": 530.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "F4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "name": "unnamedWire#93",
-        "path": []
+        "path": [
+          {
+            "x": 620.0,
+            "y": 655.0
+          },
+          {
+            "x": 620.0,
+            "y": 545.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#4",
+          "compName": "TriStateBuffer#3",
           "pinName": "OUT"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "name": "unnamedWire#94",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#47",
+          "compName": "WireCrossPoint#45",
           "pinName": ""
         },
         "pin2": {
-          "compName": "TriStateBuffer#4",
+          "compName": "TriStateBuffer#3",
           "pinName": "EN"
         },
         "name": "unnamedWire#95",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
           "pinName": "C4"
         },
         "name": "unnamedWire#96",
-        "path": []
+        "path": [
+          {
+            "x": 435.0,
+            "y": 795.0
+          },
+          {
+            "x": 195.0,
+            "y": 795.0
+          },
+          {
+            "x": 195.0,
+            "y": 880.0
+          },
+          {
+            "x": 140.0,
+            "y": 880.0
+          },
+          {
+            "x": 140.0,
+            "y": 870.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#97",
         "path": [
           {
-            "x": 335.0,
-            "y": 950.0
+            "x": 455.0,
+            "y": 735.0
+          },
+          {
+            "x": 455.0,
+            "y": 1100.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "name": "unnamedWire#98",
         "path": [
           {
-            "x": 280.0,
-            "y": 2090.0
+            "x": 380.0,
+            "y": 505.0
           }
         ]
       },
           "pinName": "F2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "name": "unnamedWire#99",
         "path": [
           {
-            "x": 285.0,
-            "y": 2125.0
+            "x": 630.0,
+            "y": 635.0
+          },
+          {
+            "x": 630.0,
+            "y": 535.0
+          },
+          {
+            "x": 385.0,
+            "y": 535.0
           },
           {
-            "x": 285.0,
-            "y": 2095.0
+            "x": 385.0,
+            "y": 510.0
           }
         ]
       }
index a0bdd78..38b9bd5 100644 (file)
@@ -1,11 +1,11 @@
 {
-  "width": 35.0,
-  "height": 230.0,
+  "width": 95.0,
+  "height": 110.0,
   "interfacePins": [
     {
       "location": {
         "x": 0.0,
-        "y": 115.0
+        "y": 35.0
       },
       "name": "A1",
       "logicWidth": 1,
@@ -14,7 +14,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 125.0
+        "y": 40.0
       },
       "name": "A2",
       "logicWidth": 1,
@@ -23,7 +23,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 135.0
+        "y": 45.0
       },
       "name": "A3",
       "logicWidth": 1,
@@ -32,7 +32,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 145.0
+        "y": 50.0
       },
       "name": "A4",
       "logicWidth": 1,
@@ -41,7 +41,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 155.0
+        "y": 60.0
       },
       "name": "B1",
       "logicWidth": 1,
@@ -50,7 +50,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 165.0
+        "y": 65.0
       },
       "name": "B2",
       "logicWidth": 1,
@@ -59,7 +59,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 175.0
+        "y": 70.0
       },
       "name": "B3",
       "logicWidth": 1,
@@ -68,7 +68,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 185.0
+        "y": 75.0
       },
       "name": "B4",
       "logicWidth": 1,
@@ -76,8 +76,8 @@
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 65.0
+        "x": 10.0,
+        "y": 0.0
       },
       "name": "Cn",
       "logicWidth": 1,
@@ -85,7 +85,7 @@
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 45.0
       },
       "name": "Cn+4",
@@ -95,7 +95,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 75.0
+        "y": 10.0
       },
       "name": "D1",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 85.0
+        "y": 15.0
       },
       "name": "D2",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 95.0
+        "y": 20.0
       },
       "name": "D3",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 105.0
+        "y": 25.0
       },
       "name": "D4",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 5.0
       },
       "name": "F1",
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 15.0
       },
       "name": "F2",
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 25.0
       },
       "name": "F3",
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 35.0
       },
       "name": "F4",
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 55.0
+        "x": 25.0,
+        "y": 0.0
       },
       "name": "I0",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 45.0
+        "x": 35.0,
+        "y": 0.0
       },
       "name": "I1",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 35.0
+        "x": 45.0,
+        "y": 0.0
       },
       "name": "I2",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 25.0
+        "x": 55.0,
+        "y": 0.0
       },
       "name": "I3",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 15.0
+        "x": 65.0,
+        "y": 0.0
       },
       "name": "I4",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 5.0
+        "x": 75.0,
+        "y": 0.0
       },
       "name": "I5",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 35.0,
+        "x": 95.0,
         "y": 55.0
       },
       "name": "OVR",
     {
       "location": {
         "x": 0.0,
-        "y": 195.0
+        "y": 85.0
       },
       "name": "Q1",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 205.0
+        "y": 90.0
       },
       "name": "Q2",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 215.0
+        "y": 95.0
       },
       "name": "Q3",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 225.0
+        "y": 100.0
       },
       "name": "Q4",
       "logicWidth": 1,
         "id": "Am2901ALUInclDecode",
         "name": "Am2901ALUInclDecode#0",
         "pos": {
-          "x": 60.0,
+          "x": 315.0,
           "y": 15.0
         }
       },
         "id": "Am2901SourceDecode",
         "name": "Am2901SourceDecode#0",
         "pos": {
-          "x": 15.0,
-          "y": 165.0
+          "x": 155.0,
+          "y": 160.0
         }
       },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 9.0,
-          "y": 459.0
+          "x": 209.0,
+          "y": 224.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 14.0,
-          "y": 499.0
+          "x": 214.0,
+          "y": 234.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 19.0,
-          "y": 539.0
+          "x": 219.0,
+          "y": 244.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 24.0,
-          "y": 579.0
+          "x": 224.0,
+          "y": 254.0
         },
         "params": 1
       },
         "id": "sel2_4",
         "name": "sel2_4#0",
         "pos": {
-          "x": 45.0,
-          "y": 365.0
+          "x": 235.0,
+          "y": 85.0
         }
       },
       {
         "id": "sel3_4",
         "name": "sel3_4#0",
         "pos": {
-          "x": 45.0,
-          "y": 575.0
+          "x": 235.0,
+          "y": 190.0
         }
       }
     ],
           "pinName": "I5"
         },
         "name": "unnamedWire#0",
-        "path": []
+        "path": [
+          {
+            "x": 300.0,
+            "y": 20.0
+          }
+        ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "I4"
+          "pinName": "Cn"
         },
         "pin2": {
           "compName": "Am2901ALUInclDecode#0",
-          "pinName": "I4"
+          "pinName": "Cn"
         },
         "name": "unnamedWire#1",
         "path": [
           {
-            "x": 5.0,
-            "y": 60.0
-          },
-          {
-            "x": 5.0,
-            "y": 30.0
+            "x": 40.0,
+            "y": 50.0
           }
         ]
       },
           "pinName": "A4"
         },
         "name": "unnamedWire#10",
-        "path": []
+        "path": [
+          {
+            "x": 10.0,
+            "y": 100.0
+          },
+          {
+            "x": 10.0,
+            "y": 85.0
+          },
+          {
+            "x": 170.0,
+            "y": 85.0
+          },
+          {
+            "x": 170.0,
+            "y": 140.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#11",
-        "path": []
+        "path": [
+          {
+            "x": 55.0,
+            "y": 140.0
+          },
+          {
+            "x": 55.0,
+            "y": 225.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#12",
-        "path": []
+        "path": [
+          {
+            "x": 50.0,
+            "y": 160.0
+          },
+          {
+            "x": 50.0,
+            "y": 235.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#13",
-        "path": []
+        "path": [
+          {
+            "x": 45.0,
+            "y": 180.0
+          },
+          {
+            "x": 45.0,
+            "y": 245.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#14",
-        "path": []
+        "path": [
+          {
+            "x": 40.0,
+            "y": 200.0
+          },
+          {
+            "x": 40.0,
+            "y": 255.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#15",
         "path": [
           {
-            "x": 10.0,
-            "y": 430.0
+            "x": 210.0,
+            "y": 150.0
           }
         ]
       },
         "name": "unnamedWire#16",
         "path": [
           {
-            "x": 15.0,
-            "y": 440.0
+            "x": 215.0,
+            "y": 160.0
           }
         ]
       },
         "name": "unnamedWire#17",
         "path": [
           {
-            "x": 20.0,
-            "y": 450.0
+            "x": 220.0,
+            "y": 170.0
           }
         ]
       },
         "name": "unnamedWire#18",
         "path": [
           {
-            "x": 25.0,
-            "y": 460.0
+            "x": 225.0,
+            "y": 180.0
           }
         ]
       },
           "pinName": "A1"
         },
         "name": "unnamedWire#19",
-        "path": [
-          {
-            "x": 10.0,
-            "y": 610.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
+          "compName": "Am2901ALUInclDecode#0",
           "pinName": "I3"
         },
         "pin2": {
-          "compName": "Am2901ALUInclDecode#0",
+          "compName": "_submodelinterface",
           "pinName": "I3"
         },
         "name": "unnamedWire#2",
         "path": [
           {
-            "x": 15.0,
-            "y": 100.0
-          },
-          {
-            "x": 15.0,
+            "x": 220.0,
             "y": 40.0
           }
         ]
           "pinName": "A2"
         },
         "name": "unnamedWire#20",
-        "path": [
-          {
-            "x": 15.0,
-            "y": 620.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "pinName": "A3"
         },
         "name": "unnamedWire#21",
-        "path": [
-          {
-            "x": 20.0,
-            "y": 630.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "pinName": "A4"
         },
         "name": "unnamedWire#22",
-        "path": [
-          {
-            "x": 25.0,
-            "y": 640.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
         "name": "unnamedWire#23",
         "path": [
           {
-            "x": 5.0,
-            "y": 620.0
+            "x": 25.0,
+            "y": 240.0
           },
           {
-            "x": 5.0,
-            "y": 650.0
+            "x": 25.0,
+            "y": 265.0
           }
         ]
       },
           "pinName": "B2"
         },
         "name": "unnamedWire#24",
-        "path": []
+        "path": [
+          {
+            "x": 20.0,
+            "y": 260.0
+          },
+          {
+            "x": 20.0,
+            "y": 275.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#25",
         "path": [
           {
-            "x": 5.0,
-            "y": 700.0
+            "x": 20.0,
+            "y": 280.0
           },
           {
-            "x": 5.0,
-            "y": 670.0
+            "x": 20.0,
+            "y": 285.0
           }
         ]
       },
         "name": "unnamedWire#26",
         "path": [
           {
-            "x": 10.0,
-            "y": 740.0
+            "x": 20.0,
+            "y": 300.0
           },
           {
-            "x": 10.0,
-            "y": 680.0
+            "x": 20.0,
+            "y": 295.0
           }
         ]
       },
         "name": "unnamedWire#27",
         "path": [
           {
-            "x": 15.0,
-            "y": 780.0
+            "x": 20.0,
+            "y": 340.0
           },
           {
-            "x": 15.0,
-            "y": 690.0
+            "x": 20.0,
+            "y": 305.0
           }
         ]
       },
         "name": "unnamedWire#28",
         "path": [
           {
-            "x": 20.0,
-            "y": 820.0
+            "x": 25.0,
+            "y": 360.0
           },
           {
-            "x": 20.0,
-            "y": 700.0
+            "x": 25.0,
+            "y": 315.0
           }
         ]
       },
         "name": "unnamedWire#29",
         "path": [
           {
-            "x": 25.0,
-            "y": 860.0
+            "x": 30.0,
+            "y": 380.0
           },
           {
-            "x": 25.0,
-            "y": 710.0
+            "x": 30.0,
+            "y": 325.0
           }
         ]
       },
         "name": "unnamedWire#3",
         "path": [
           {
-            "x": 5.0,
-            "y": 140.0
+            "x": 180.0,
+            "y": 5.0
           },
           {
-            "x": 5.0,
-            "y": 170.0
+            "x": 150.0,
+            "y": 5.0
+          },
+          {
+            "x": 150.0,
+            "y": 165.0
           }
         ]
       },
         "name": "unnamedWire#30",
         "path": [
           {
-            "x": 30.0,
-            "y": 900.0
+            "x": 35.0,
+            "y": 400.0
           },
           {
-            "x": 30.0,
-            "y": 720.0
+            "x": 35.0,
+            "y": 335.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Am2901SourceDecode#0",
-          "pinName": "SQ"
-        },
-        "pin2": {
           "compName": "sel3_4#0",
           "pinName": "SC"
         },
+        "pin2": {
+          "compName": "Am2901SourceDecode#0",
+          "pinName": "SQ"
+        },
         "name": "unnamedWire#31",
         "path": [
           {
-            "x": 75.0,
-            "y": 170.0
-          },
-          {
-            "x": 75.0,
-            "y": 240.0
-          },
-          {
-            "x": 30.0,
-            "y": 240.0
+            "x": 200.0,
+            "y": 215.0
           },
           {
-            "x": 30.0,
-            "y": 600.0
+            "x": 200.0,
+            "y": 165.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "Am2901SourceDecode#0",
-          "pinName": "RA"
+          "pinName": "RD"
         },
         "pin2": {
           "compName": "sel2_4#0",
-          "pinName": "SB"
+          "pinName": "SA"
         },
         "name": "unnamedWire#32",
         "path": [
           {
-            "x": 70.0,
-            "y": 180.0
-          },
-          {
-            "x": 70.0,
-            "y": 235.0
-          },
-          {
-            "x": 20.0,
-            "y": 235.0
+            "x": 195.0,
+            "y": 205.0
           },
           {
-            "x": 20.0,
-            "y": 380.0
+            "x": 195.0,
+            "y": 90.0
           }
         ]
       },
         "name": "unnamedWire#33",
         "path": [
           {
-            "x": 65.0,
-            "y": 190.0
+            "x": 205.0,
+            "y": 185.0
           },
           {
-            "x": 65.0,
-            "y": 230.0
-          },
-          {
-            "x": 35.0,
-            "y": 230.0
-          },
-          {
-            "x": 35.0,
-            "y": 590.0
+            "x": 205.0,
+            "y": 205.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Am2901SourceDecode#0",
-          "pinName": "SA"
-        },
-        "pin2": {
           "compName": "sel3_4#0",
           "pinName": "SA"
         },
-        "name": "unnamedWire#34",
-        "path": [
-          {
-            "x": 60.0,
-            "y": 200.0
-          },
-          {
-            "x": 60.0,
-            "y": 225.0
-          },
-          {
-            "x": 40.0,
-            "y": 225.0
-          },
-          {
-            "x": 40.0,
-            "y": 580.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "Am2901SourceDecode#0",
-          "pinName": "RD"
-        },
         "pin2": {
-          "compName": "sel2_4#0",
+          "compName": "Am2901SourceDecode#0",
           "pinName": "SA"
         },
-        "name": "unnamedWire#35",
-        "path": [
-          {
-            "x": 55.0,
-            "y": 210.0
-          },
-          {
-            "x": 55.0,
-            "y": 220.0
-          },
-          {
-            "x": 25.0,
-            "y": 220.0
-          },
-          {
-            "x": 25.0,
-            "y": 370.0
-          }
-        ]
+        "name": "unnamedWire#34",
+        "path": []
       },
       {
         "pin1": {
         "name": "unnamedWire#36",
         "path": [
           {
-            "x": 82.5,
-            "y": 370.0
-          },
-          {
-            "x": 82.5,
-            "y": 162.5
-          },
-          {
-            "x": 20.0,
-            "y": 162.5
+            "x": 275.0,
+            "y": 90.0
           },
           {
-            "x": 20.0,
+            "x": 275.0,
             "y": 60.0
           }
         ]
         "name": "unnamedWire#37",
         "path": [
           {
-            "x": 85.0,
-            "y": 380.0
-          },
-          {
-            "x": 85.0,
-            "y": 160.0
-          },
-          {
-            "x": 22.5,
-            "y": 160.0
+            "x": 280.0,
+            "y": 100.0
           },
           {
-            "x": 22.5,
+            "x": 280.0,
             "y": 70.0
           }
         ]
         "name": "unnamedWire#38",
         "path": [
           {
-            "x": 87.5,
-            "y": 390.0
-          },
-          {
-            "x": 87.5,
-            "y": 157.5
-          },
-          {
-            "x": 25.0,
-            "y": 157.5
+            "x": 285.0,
+            "y": 110.0
           },
           {
-            "x": 25.0,
+            "x": 285.0,
             "y": 80.0
           }
         ]
         "name": "unnamedWire#39",
         "path": [
           {
-            "x": 90.0,
-            "y": 400.0
-          },
-          {
-            "x": 90.0,
-            "y": 155.0
-          },
-          {
-            "x": 27.5,
-            "y": 155.0
+            "x": 290.0,
+            "y": 120.0
           },
           {
-            "x": 27.5,
+            "x": 290.0,
             "y": 90.0
           }
         ]
           "pinName": "I1"
         },
         "name": "unnamedWire#4",
-        "path": []
+        "path": [
+          {
+            "x": 140.0,
+            "y": 175.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#40",
         "path": [
           {
-            "x": 92.5,
-            "y": 580.0
-          },
-          {
-            "x": 92.5,
-            "y": 152.5
-          },
-          {
-            "x": 30.0,
-            "y": 152.5
+            "x": 295.0,
+            "y": 195.0
           },
           {
-            "x": 30.0,
+            "x": 295.0,
             "y": 100.0
           }
         ]
         "name": "unnamedWire#41",
         "path": [
           {
-            "x": 95.0,
-            "y": 590.0
-          },
-          {
-            "x": 95.0,
-            "y": 150.0
+            "x": 300.0,
+            "y": 205.0
           },
           {
-            "x": 32.5,
-            "y": 150.0
-          },
-          {
-            "x": 32.5,
+            "x": 300.0,
             "y": 110.0
           }
         ]
         "name": "unnamedWire#42",
         "path": [
           {
-            "x": 97.5,
-            "y": 600.0
-          },
-          {
-            "x": 97.5,
-            "y": 147.5
-          },
-          {
-            "x": 35.0,
-            "y": 147.5
+            "x": 305.0,
+            "y": 215.0
           },
           {
-            "x": 35.0,
+            "x": 305.0,
             "y": 120.0
           }
         ]
         "name": "unnamedWire#43",
         "path": [
           {
-            "x": 100.0,
-            "y": 610.0
-          },
-          {
-            "x": 100.0,
-            "y": 145.0
-          },
-          {
-            "x": 37.5,
-            "y": 145.0
+            "x": 310.0,
+            "y": 225.0
           },
           {
-            "x": 37.5,
+            "x": 310.0,
             "y": 130.0
           }
         ]
         "name": "unnamedWire#45",
         "path": [
           {
-            "x": 135.0,
+            "x": 375.0,
             "y": 30.0
           },
           {
-            "x": 135.0,
+            "x": 375.0,
             "y": 60.0
           }
         ]
         "name": "unnamedWire#46",
         "path": [
           {
-            "x": 130.0,
+            "x": 370.0,
             "y": 40.0
           },
           {
-            "x": 130.0,
+            "x": 370.0,
             "y": 100.0
           }
         ]
         "name": "unnamedWire#47",
         "path": [
           {
-            "x": 125.0,
+            "x": 365.0,
             "y": 50.0
           },
           {
-            "x": 125.0,
+            "x": 365.0,
             "y": 140.0
           }
         ]
         "name": "unnamedWire#48",
         "path": [
           {
-            "x": 120.0,
+            "x": 360.0,
             "y": 60.0
           },
           {
-            "x": 120.0,
+            "x": 360.0,
             "y": 180.0
           }
         ]
         "name": "unnamedWire#49",
         "path": [
           {
-            "x": 115.0,
+            "x": 355.0,
             "y": 70.0
           },
           {
-            "x": 115.0,
+            "x": 355.0,
             "y": 220.0
           }
         ]
         "name": "unnamedWire#5",
         "path": [
           {
-            "x": 5.0,
-            "y": 220.0
-          },
-          {
-            "x": 5.0,
-            "y": 190.0
+            "x": 100.0,
+            "y": 185.0
           }
         ]
       },
       {
         "pin1": {
           "compName": "_submodelinterface",
-          "pinName": "Cn"
+          "pinName": "I4"
         },
         "pin2": {
           "compName": "Am2901ALUInclDecode#0",
-          "pinName": "Cn"
+          "pinName": "I4"
+        },
+        "name": "unnamedWire#50",
+        "path": [
+          {
+            "x": 260.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2901SourceDecode#0",
+          "pinName": "RA"
+        },
+        "pin2": {
+          "compName": "sel2_4#0",
+          "pinName": "SB"
         },
         "name": "unnamedWire#6",
         "path": [
           {
-            "x": 10.0,
-            "y": 260.0
+            "x": 205.0,
+            "y": 175.0
           },
           {
-            "x": 10.0,
-            "y": 50.0
+            "x": 205.0,
+            "y": 100.0
           }
         ]
       },
         "name": "unnamedWire#7",
         "path": [
           {
-            "x": 15.0,
-            "y": 300.0
+            "x": 10.0,
+            "y": 40.0
           },
           {
-            "x": 15.0,
-            "y": 390.0
+            "x": 10.0,
+            "y": 55.0
+          },
+          {
+            "x": 185.0,
+            "y": 55.0
+          },
+          {
+            "x": 185.0,
+            "y": 110.0
           }
         ]
       },
         "path": [
           {
             "x": 10.0,
-            "y": 340.0
+            "y": 60.0
           },
           {
             "x": 10.0,
-            "y": 400.0
+            "y": 65.0
+          },
+          {
+            "x": 180.0,
+            "y": 65.0
+          },
+          {
+            "x": 180.0,
+            "y": 120.0
           }
         ]
       },
         "name": "unnamedWire#9",
         "path": [
           {
-            "x": 5.0,
-            "y": 380.0
+            "x": 10.0,
+            "y": 80.0
           },
           {
-            "x": 5.0,
-            "y": 410.0
+            "x": 10.0,
+            "y": 75.0
+          },
+          {
+            "x": 175.0,
+            "y": 75.0
+          },
+          {
+            "x": 175.0,
+            "y": 130.0
           }
         ]
       }
index 64a8478..424c547 100644 (file)
@@ -1,11 +1,11 @@
 {
   "width": 120.0,
-  "height": 178.0,
+  "height": 155.0,
   "interfacePins": [
     {
       "location": {
-        "x": 0.0,
-        "y": 5.0
+        "x": 55.0,
+        "y": 0.0
       },
       "name": "C",
       "logicWidth": 1,
@@ -14,7 +14,7 @@
     {
       "location": {
         "x": 120.0,
-        "y": 108.0
+        "y": 85.0
       },
       "name": "C0",
       "logicWidth": 1,
@@ -23,7 +23,7 @@
     {
       "location": {
         "x": 120.0,
-        "y": 60.0
+        "y": 55.0
       },
       "name": "CT",
       "logicWidth": 1,
@@ -32,7 +32,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 110.0
+        "y": 85.0
       },
       "name": "Cx",
       "logicWidth": 1,
@@ -41,7 +41,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 61.0
+        "y": 45.0
       },
       "name": "I",
       "logicWidth": 13,
@@ -86,7 +86,7 @@
     {
       "location": {
         "x": 120.0,
-        "y": 128.0
+        "y": 125.0
       },
       "name": "QIO0",
       "logicWidth": 1,
@@ -95,7 +95,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 128.0
+        "y": 125.0
       },
       "name": "QIOn",
       "logicWidth": 1,
     {
       "location": {
         "x": 120.0,
-        "y": 118.0
+        "y": 120.0
       },
       "name": "SIO0",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 119.0
+        "y": 120.0
       },
       "name": "SIOn",
       "logicWidth": 1,
     {
       "location": {
         "x": 120.0,
-        "y": 17.0
+        "y": 10.0
       },
       "name": "YC",
       "logicWidth": 1,
     {
       "location": {
         "x": 120.0,
-        "y": 21.0
+        "y": 15.0
       },
       "name": "YN",
       "logicWidth": 1,
     {
       "location": {
         "x": 120.0,
-        "y": 25.0
+        "y": 20.0
       },
       "name": "YOVR",
       "logicWidth": 1,
     {
       "location": {
         "x": 120.0,
-        "y": 11.0
+        "y": 5.0
       },
       "name": "YZ",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 30.0
+        "x": 5.0,
+        "y": 0.0
       },
       "name": "_CEM",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 33.0
+        "x": 45.0,
+        "y": 0.0
       },
       "name": "_CEmu",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 38.0
+        "x": 15.0,
+        "y": 0.0
       },
       "name": "_EC",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 40.0
+        "x": 20.0,
+        "y": 0.0
       },
       "name": "_EN",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 42.0
+        "x": 25.0,
+        "y": 0.0
       },
       "name": "_EOVR",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 0.0,
-        "y": 36.0
+        "x": 10.0,
+        "y": 0.0
       },
       "name": "_EZ",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 120.0,
-        "y": 51.0
+        "x": 110.0,
+        "y": 0.0
       },
       "name": "_OECT",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 61.0,
+        "x": 90.0,
         "y": 0.0
       },
       "name": "_OEY",
     {
       "location": {
         "x": 0.0,
-        "y": 83.0
+        "y": 110.0
       },
       "name": "_SE",
       "logicWidth": 1,
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "Am2904RegCTInstrDecode",
-        "name": "Am2904RegCTInstrDecode#0",
-        "pos": {
-          "x": 50.0,
-          "y": 240.0
-        }
-      },
-      {
-        "id": "Am2904ShiftInstrDecode",
-        "name": "Am2904ShiftInstrDecode#0",
-        "pos": {
-          "x": 50.0,
-          "y": 360.0
-        }
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#0",
-        "pos": {
-          "x": 530.0,
-          "y": 70.0
-        },
-        "params": 4
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#1",
-        "pos": {
-          "x": 565.0,
-          "y": 180.0
-        },
-        "params": 4
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#2",
-        "pos": {
-          "x": 530.0,
-          "y": 200.0
-        },
-        "params": 4
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#3",
-        "pos": {
-          "x": 560.0,
-          "y": 150.0
-        },
-        "params": 1
-      },
       {
         "id": "Am2904MSR",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 225.0,
-          "y": 95.0
-        }
-      },
-      {
-        "id": "Am2904muSR",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 270.0,
-          "y": 250.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 455.0,
-          "y": 355.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 265.0,
-          "y": 515.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 315.0,
-          "y": 505.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#13",
-        "pos": {
-          "x": 365.0,
-          "y": 485.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#14",
-        "pos": {
-          "x": 415.0,
-          "y": 465.0
-        }
-      },
-      {
-        "id": "mux2",
-        "name": "DeserializedSubmodelComponent#15",
-        "pos": {
-          "x": 435.0,
-          "y": 575.0
-        }
-      },
-      {
-        "id": "mux2",
-        "name": "DeserializedSubmodelComponent#16",
-        "pos": {
-          "x": 435.0,
-          "y": 655.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#17",
-        "pos": {
-          "x": 190.0,
-          "y": 460.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#18",
-        "pos": {
-          "x": 135.0,
-          "y": 470.0
-        }
-      },
-      {
-        "id": "and",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 380.0,
-          "y": 125.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#21",
-        "pos": {
-          "x": 250.0,
-          "y": 820.0
-        }
-      },
-      {
-        "id": "mux2",
-        "name": "DeserializedSubmodelComponent#22",
+        "name": "Am2904MSR#0",
         "pos": {
-          "x": 120.0,
-          "y": 720.0
-        }
-      },
-      {
-        "id": "mux3",
-        "name": "DeserializedSubmodelComponent#23",
-        "pos": {
-          "x": 300.0,
-          "y": 715.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#3",
-        "pos": {
-          "x": 470.0,
-          "y": 160.0
+          "x": 205.0,
+          "y": 90.0
         }
       },
       {
-        "id": "not4",
-        "name": "DeserializedSubmodelComponent#4",
+        "id": "Am2904RegCTInstrDecode",
+        "name": "Am2904RegCTInstrDecode#0",
         "pos": {
-          "x": 135.0,
-          "y": 40.0
+          "x": 180.0,
+          "y": 190.0
         }
       },
       {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#5",
+        "id": "Am2904ShiftInstrDecode",
+        "name": "Am2904ShiftInstrDecode#0",
         "pos": {
-          "x": 415.0,
-          "y": 210.0
+          "x": 100.0,
+          "y": 495.0
         }
       },
       {
         "id": "Am2904TestLogic",
-        "name": "DeserializedSubmodelComponent#6",
-        "pos": {
-          "x": 225.0,
-          "y": 340.0
-        }
-      },
-      {
-        "id": "mux3",
-        "name": "DeserializedSubmodelComponent#7",
-        "pos": {
-          "x": 300.0,
-          "y": 310.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#8",
+        "name": "Am2904TestLogic#0",
         "pos": {
-          "x": 495.0,
-          "y": 295.0
+          "x": 260.0,
+          "y": 330.0
         }
       },
       {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#9",
+        "id": "Am2904muSR",
+        "name": "Am2904muSR#0",
         "pos": {
-          "x": 450.0,
-          "y": 310.0
+          "x": 350.0,
+          "y": 95.0
         }
       },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 25.0,
-          "y": 315.0
-        },
-        "params": 6
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#1",
-        "pos": {
-          "x": 25.0,
-          "y": 265.0
-        },
-        "params": 5
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#2",
-        "pos": {
-          "x": 15.0,
-          "y": 65.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#3",
-        "pos": {
-          "x": 510.0,
-          "y": 165.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#4",
-        "pos": {
-          "x": 25.0,
-          "y": 245.0
-        },
-        "params": 2
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
         "pos": {
-          "x": 190.0,
-          "y": 145.0
+          "x": 230.0,
+          "y": 10.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#1",
         "pos": {
-          "x": 130.0,
+          "x": 140.0,
           "y": 5.0
         },
         "params": 1
         "id": "NandGate",
         "name": "NandGate#10",
         "pos": {
-          "x": 340.0,
-          "y": 120.0
+          "x": 455.0,
+          "y": 55.0
         },
         "params": 1
       },
       {
         "id": "NandGate",
-        "name": "NandGate#12",
+        "name": "NandGate#11",
         "pos": {
-          "x": 540.0,
-          "y": 265.0
+          "x": 555.0,
+          "y": 235.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#2",
         "pos": {
-          "x": 225.0,
-          "y": 195.0
+          "x": 325.0,
+          "y": 55.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#3",
         "pos": {
-          "x": 225.0,
-          "y": 215.0
+          "x": 325.0,
+          "y": 75.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#4",
         "pos": {
-          "x": 225.0,
-          "y": 155.0
+          "x": 325.0,
+          "y": 15.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#5",
         "pos": {
-          "x": 225.0,
-          "y": 175.0
+          "x": 325.0,
+          "y": 35.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#6",
         "pos": {
-          "x": 205.0,
+          "x": 185.0,
           "y": 70.0
         },
         "params": 1
         "id": "NandGate",
         "name": "NandGate#7",
         "pos": {
-          "x": 205.0,
+          "x": 185.0,
           "y": 50.0
         },
         "params": 1
         "id": "NandGate",
         "name": "NandGate#8",
         "pos": {
-          "x": 205.0,
+          "x": 185.0,
           "y": 30.0
         },
         "params": 1
         "id": "NandGate",
         "name": "NandGate#9",
         "pos": {
-          "x": 205.0,
+          "x": 185.0,
           "y": 10.0
         },
         "params": 1
         "id": "Splitter",
         "name": "Splitter#0",
         "pos": {
-          "x": 10.0,
-          "y": 245.0
+          "x": 5.0,
+          "y": 165.0
         },
-        "params": 13
+        "params": {
+          "logicWidth": 13,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#1",
         "pos": {
-          "x": 555.0,
-          "y": 80.0
+          "x": 575.0,
+          "y": 40.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#10",
         "pos": {
-          "x": 420.0,
-          "y": 410.0
+          "x": 445.0,
+          "y": 300.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#11",
         "pos": {
-          "x": 405.0,
-          "y": 585.0
+          "x": 455.0,
+          "y": 635.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#12",
         "pos": {
-          "x": 410.0,
-          "y": 665.0
+          "x": 455.0,
+          "y": 710.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#13",
         "pos": {
-          "x": 265.0,
-          "y": 725.0
+          "x": 135.0,
+          "y": 645.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#14",
         "pos": {
-          "x": 90.0,
-          "y": 730.0
+          "x": 310.0,
+          "y": 645.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#15",
         "pos": {
-          "x": 120.0,
-          "y": 455.0
+          "x": 430.0,
+          "y": 535.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#2",
+        "name": "Splitter#16",
         "pos": {
-          "x": 395.0,
-          "y": 195.0
+          "x": 20.0,
+          "y": 235.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 6,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#3",
+        "name": "Splitter#17",
         "pos": {
-          "x": 450.0,
-          "y": 175.0
+          "x": 20.0,
+          "y": 185.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 5,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#4",
+        "name": "Splitter#18",
         "pos": {
-          "x": 395.0,
-          "y": 225.0
+          "x": 15.0,
+          "y": 65.0
         },
-        "params": 4
-      },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#19",
+        "pos": {
+          "x": 520.0,
+          "y": 90.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 440.0,
+          "y": 90.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#20",
+        "pos": {
+          "x": 20.0,
+          "y": 165.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 465.0,
+          "y": 100.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 425.0,
+          "y": 150.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
       {
         "id": "Splitter",
         "name": "Splitter#5",
         "pos": {
-          "x": 395.0,
-          "y": 265.0
+          "x": 425.0,
+          "y": 190.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#6",
         "pos": {
-          "x": 285.0,
-          "y": 320.0
+          "x": 320.0,
+          "y": 310.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#7",
         "pos": {
-          "x": 420.0,
-          "y": 325.0
+          "x": 445.0,
+          "y": 340.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#8",
         "pos": {
-          "x": 420.0,
-          "y": 365.0
+          "x": 445.0,
+          "y": 380.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#9",
         "pos": {
-          "x": 240.0,
-          "y": 475.0
+          "x": 255.0,
+          "y": 430.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#0",
         "pos": {
-          "x": 535.0,
-          "y": 165.0
+          "x": 540.0,
+          "y": 70.0
         },
         "params": {
           "logicWidth": 4,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#1",
         "pos": {
-          "x": 10.0,
-          "y": 650.0
+          "x": 400.0,
+          "y": 635.0
         },
         "params": {
           "logicWidth": 1,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#2",
         "pos": {
-          "x": 10.0,
-          "y": 605.0
+          "x": 240.0,
+          "y": 635.0
         },
         "params": {
           "logicWidth": 1,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#3",
         "pos": {
-          "x": 560.0,
-          "y": 595.0
+          "x": 550.0,
+          "y": 625.0
         },
         "params": {
           "logicWidth": 1,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#4",
         "pos": {
-          "x": 565.0,
-          "y": 655.0
+          "x": 550.0,
+          "y": 650.0
         },
         "params": {
           "logicWidth": 1,
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#5",
         "pos": {
-          "x": 560.0,
-          "y": 290.0
+          "x": 575.0,
+          "y": 265.0
         },
         "params": {
           "logicWidth": 1,
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 165.0,
-          "y": 150.0
+          "x": 274.0,
+          "y": 59.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 180.0,
-          "y": 135.0
+          "x": 189.0,
+          "y": 139.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 195.0,
-          "y": 55.0
+          "x": 179.0,
+          "y": 54.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#11",
         "pos": {
-          "x": 195.0,
-          "y": 15.0
+          "x": 179.0,
+          "y": 14.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#12",
         "pos": {
-          "x": 195.0,
-          "y": 35.0
+          "x": 179.0,
+          "y": 34.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#13",
         "pos": {
-          "x": 330.0,
-          "y": 125.0
+          "x": 449.0,
+          "y": 59.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#14",
         "pos": {
-          "x": 520.0,
-          "y": 190.0
+          "x": 534.0,
+          "y": 104.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#15",
         "pos": {
-          "x": 255.0,
-          "y": 265.0
+          "x": 334.0,
+          "y": 174.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#16",
         "pos": {
-          "x": 255.0,
-          "y": 255.0
+          "x": 384.0,
+          "y": 164.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#17",
         "pos": {
-          "x": 360.0,
-          "y": 495.0
+          "x": 349.0,
+          "y": 439.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#18",
         "pos": {
-          "x": 35.0,
-          "y": 640.0
+          "x": 434.0,
+          "y": 674.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#19",
         "pos": {
-          "x": 35.0,
-          "y": 595.0
+          "x": 264.0,
+          "y": 619.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 295.0,
-          "y": 120.0
+          "x": 329.0,
+          "y": 124.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#20",
         "pos": {
-          "x": 585.0,
-          "y": 590.0
+          "x": 289.0,
+          "y": 609.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#21",
         "pos": {
-          "x": 585.0,
-          "y": 640.0
+          "x": 294.0,
+          "y": 614.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#22",
         "pos": {
-          "x": 250.0,
-          "y": 540.0
+          "x": 359.0,
+          "y": 514.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#23",
         "pos": {
-          "x": 330.0,
-          "y": 640.0
+          "x": 359.0,
+          "y": 594.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#24",
         "pos": {
-          "x": 285.0,
-          "y": 745.0
+          "x": 149.0,
+          "y": 664.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#25",
         "pos": {
-          "x": 285.0,
-          "y": 755.0
+          "x": 149.0,
+          "y": 674.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#26",
         "pos": {
-          "x": 290.0,
-          "y": 805.0
+          "x": 299.0,
+          "y": 584.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#27",
         "pos": {
-          "x": 440.0,
-          "y": 385.0
+          "x": 464.0,
+          "y": 399.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#28",
         "pos": {
-          "x": 440.0,
-          "y": 345.0
+          "x": 459.0,
+          "y": 349.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#29",
+        "pos": {
+          "x": 559.0,
+          "y": 619.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 335.0,
-          "y": 270.0
+          "x": 404.0,
+          "y": 114.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#30",
         "pos": {
-          "x": 550.0,
-          "y": 570.0
+          "x": 249.0,
+          "y": 629.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#32",
+        "name": "WireCrossPoint#31",
         "pos": {
-          "x": 85.0,
-          "y": 590.0
+          "x": 549.0,
+          "y": 239.0
         },
         "params": 1
       },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#32",
+        "pos": {
+          "x": 404.0,
+          "y": 169.0
+        },
+        "params": 4
+      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#33",
         "pos": {
-          "x": 530.0,
-          "y": 270.0
+          "x": 389.0,
+          "y": 204.0
+        },
+        "params": 4
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#34",
+        "pos": {
+          "x": 439.0,
+          "y": 684.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#35",
+        "pos": {
+          "x": 429.0,
+          "y": 664.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#36",
+        "pos": {
+          "x": 429.0,
+          "y": 619.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#37",
+        "pos": {
+          "x": 434.0,
+          "y": 644.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#38",
+        "pos": {
+          "x": 579.0,
+          "y": 609.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#39",
+        "pos": {
+          "x": 429.0,
+          "y": 609.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 150.0,
-          "y": 160.0
+          "x": 224.0,
+          "y": 14.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#40",
+        "pos": {
+          "x": 584.0,
+          "y": 624.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#41",
+        "pos": {
+          "x": 434.0,
+          "y": 614.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 530.0,
-          "y": 100.0
+          "x": 569.0,
+          "y": 54.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 120.0,
-          "y": 15.0
+          "x": 134.0,
+          "y": 19.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 215.0,
-          "y": 180.0
+          "x": 319.0,
+          "y": 39.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 215.0,
-          "y": 160.0
+          "x": 319.0,
+          "y": 19.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 215.0,
-          "y": 200.0
+          "x": 319.0,
+          "y": 59.0
         },
         "params": 1
+      },
+      {
+        "id": "and",
+        "name": "and#0",
+        "pos": {
+          "x": 495.0,
+          "y": 60.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#0",
+        "pos": {
+          "x": 495.0,
+          "y": 280.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#1",
+        "pos": {
+          "x": 275.0,
+          "y": 475.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#2",
+        "pos": {
+          "x": 355.0,
+          "y": 445.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#3",
+        "pos": {
+          "x": 395.0,
+          "y": 425.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#4",
+        "pos": {
+          "x": 490.0,
+          "y": 530.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#5",
+        "pos": {
+          "x": 445.0,
+          "y": 540.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 480.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#1",
+        "pos": {
+          "x": 440.0,
+          "y": 135.0
+        }
+      },
+      {
+        "id": "mux2",
+        "name": "mux2#0",
+        "pos": {
+          "x": 470.0,
+          "y": 625.0
+        }
+      },
+      {
+        "id": "mux2",
+        "name": "mux2#1",
+        "pos": {
+          "x": 470.0,
+          "y": 700.0
+        }
+      },
+      {
+        "id": "mux2",
+        "name": "mux2#2",
+        "pos": {
+          "x": 325.0,
+          "y": 635.0
+        }
+      },
+      {
+        "id": "mux3",
+        "name": "mux3#0",
+        "pos": {
+          "x": 335.0,
+          "y": 300.0
+        }
+      },
+      {
+        "id": "mux3",
+        "name": "mux3#1",
+        "pos": {
+          "x": 155.0,
+          "y": 635.0
+        }
+      },
+      {
+        "id": "not4",
+        "name": "not4#0",
+        "pos": {
+          "x": 130.0,
+          "y": 40.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#0",
+        "pos": {
+          "x": 535.0,
+          "y": 270.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#1",
+        "pos": {
+          "x": 475.0,
+          "y": 320.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#2",
+        "pos": {
+          "x": 315.0,
+          "y": 465.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#3",
+        "pos": {
+          "x": 115.0,
+          "y": 740.0
+        }
       }
     ],
     "wires": [
           "pinName": ""
         },
         "name": "unnamedWire#0",
-        "path": [
-          {
-            "x": 5.0,
-            "y": 25.0
-          },
-          {
-            "x": 5.0,
-            "y": 10.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "pinName": "muSR_MUX"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "MUX"
         },
         "name": "unnamedWire#1",
-        "path": []
+        "path": [
+          {
+            "x": 325.0,
+            "y": 200.0
+          },
+          {
+            "x": 325.0,
+            "y": 115.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I0"
+          "compName": "Splitter#17",
+          "pinName": "O0"
         },
         "name": "unnamedWire#10",
         "path": []
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#100",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#102",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I0_2"
         },
         "pin2": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#104",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I0_4"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "Splitter#4",
-          "pinName": "I"
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
         },
         "pin2": {
           "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#106",
-        "path": []
+        "path": [
+          {
+            "x": 330.0,
+            "y": 165.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I1_4"
         },
         "name": "unnamedWire#107",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I1_3"
         },
         "pin2": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I1_2"
         },
         "name": "unnamedWire#109",
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I1"
+          "compName": "Splitter#17",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "I1_1"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "Splitter#5",
+          "compName": "Splitter#7",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "name": "unnamedWire#111",
-        "path": []
+        "path": [
+          {
+            "x": 435.0,
+            "y": 355.0
+          },
+          {
+            "x": 435.0,
+            "y": 245.0
+          },
+          {
+            "x": 390.0,
+            "y": 245.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "IN"
         },
         "name": "unnamedWire#112",
-        "path": []
+        "path": [
+          {
+            "x": 535.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "I"
         },
         "name": "unnamedWire#113",
-        "path": []
+        "path": [
+          {
+            "x": 535.0,
+            "y": 260.0
+          },
+          {
+            "x": 385.0,
+            "y": 260.0
+          },
+          {
+            "x": 385.0,
+            "y": 290.0
+          },
+          {
+            "x": 255.0,
+            "y": 290.0
+          },
+          {
+            "x": 255.0,
+            "y": 380.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y111"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I111"
         },
         "name": "unnamedWire#114",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I110"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y110"
         },
         "name": "unnamedWire#115",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y101"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I101"
         },
         "name": "unnamedWire#116",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I100"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y100"
         },
         "name": "unnamedWire#117",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y011"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I011"
         },
         "name": "unnamedWire#118",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y010"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I010"
         },
         "name": "unnamedWire#119",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I2"
+          "compName": "Splitter#17",
+          "pinName": "O2"
         },
         "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I001"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y001"
         },
         "name": "unnamedWire#120",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "Am2904TestLogic#0",
           "pinName": "Y000"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "I000"
         },
         "name": "unnamedWire#121",
       },
       {
         "pin1": {
-          "compName": "NandGate#12",
+          "compName": "NandGate#11",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "EN"
         },
         "name": "unnamedWire#122",
-        "path": []
+        "path": [
+          {
+            "x": 585.0,
+            "y": 245.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "mux1#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "xor#0",
           "pinName": "B"
         },
         "name": "unnamedWire#123",
           "pinName": "CT_MUX"
         },
         "name": "unnamedWire#124",
-        "path": []
+        "path": [
+          {
+            "x": 210.0,
+            "y": 320.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#125",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "S1"
         },
         "pin2": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "S2"
         },
         "name": "unnamedWire#127",
           "pinName": "CT_EXP"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "mux1#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#128",
-        "path": []
+        "path": [
+          {
+            "x": 230.0,
+            "y": 285.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux3#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "mux1#0",
           "pinName": "I0"
         },
         "name": "unnamedWire#129",
-        "path": []
+        "path": [
+          {
+            "x": 420.0,
+            "y": 310.0
+          },
+          {
+            "x": 420.0,
+            "y": 295.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I3"
+          "compName": "Splitter#17",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "xor#0",
           "pinName": "A"
         },
         "pin2": {
           "pinName": "CT_INV"
         },
         "name": "unnamedWire#130",
-        "path": []
+        "path": [
+          {
+            "x": 415.0,
+            "y": 275.0
+          },
+          {
+            "x": 415.0,
+            "y": 280.0
+          },
+          {
+            "x": 220.0,
+            "y": 280.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "xor#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "mux1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#131",
-        "path": []
+        "path": [
+          {
+            "x": 515.0,
+            "y": 325.0
+          },
+          {
+            "x": 515.0,
+            "y": 315.0
+          },
+          {
+            "x": 490.0,
+            "y": 315.0
+          },
+          {
+            "x": 490.0,
+            "y": 305.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "I"
         },
         "name": "unnamedWire#132",
-        "path": []
+        "path": [
+          {
+            "x": 335.0,
+            "y": 135.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "pin2": {
-          "compName": "Splitter#7",
-          "pinName": "I"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "name": "unnamedWire#133",
-        "path": []
+        "path": [
+          {
+            "x": 390.0,
+            "y": 175.0
+          }
+        ]
       },
       {
         "pin1": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "M"
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
         },
         "name": "unnamedWire#136",
         "path": []
           "pinName": "I"
         },
         "name": "unnamedWire#137",
-        "path": []
+        "path": [
+          {
+            "x": 385.0,
+            "y": 250.0
+          },
+          {
+            "x": 430.0,
+            "y": 250.0
+          },
+          {
+            "x": 430.0,
+            "y": 395.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "OEN"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "and#0",
           "pinName": "B"
         },
         "name": "unnamedWire#138",
-        "path": []
+        "path": [
+          {
+            "x": 240.0,
+            "y": 185.0
+          },
+          {
+            "x": 410.0,
+            "y": 185.0
+          },
+          {
+            "x": 410.0,
+            "y": 80.0
+          },
+          {
+            "x": 485.0,
+            "y": 80.0
+          },
+          {
+            "x": 485.0,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "I0"
+          "compName": "Splitter#20",
+          "pinName": "O0"
         },
         "name": "unnamedWire#139",
         "path": []
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I4"
+          "compName": "Splitter#17",
+          "pinName": "O4"
         },
         "name": "unnamedWire#14",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#4",
-          "pinName": "I1"
+          "compName": "Splitter#20",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "Merger#4",
-          "pinName": "O"
+          "compName": "Splitter#20",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Am2904RegCTInstrDecode#0",
           "pinName": "I12-11"
         },
         "name": "unnamedWire#141",
-        "path": []
+        "path": [
+          {
+            "x": 105.0,
+            "y": 170.0
+          },
+          {
+            "x": 105.0,
+            "y": 220.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "I"
         },
         "name": "unnamedWire#142",
-        "path": []
+        "path": [
+          {
+            "x": 250.0,
+            "y": 445.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1#1",
           "pinName": "I1"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#143",
-        "path": []
+        "path": [
+          {
+            "x": 270.0,
+            "y": 500.0
+          },
+          {
+            "x": 270.0,
+            "y": 515.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Splitter#10",
-          "pinName": "I"
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
-          "pinName": ""
+          "compName": "Am2904MSR#0",
+          "pinName": "mu"
         },
         "name": "unnamedWire#144",
-        "path": []
+        "path": [
+          {
+            "x": 185.0,
+            "y": 170.0
+          },
+          {
+            "x": 185.0,
+            "y": 100.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1#1",
           "pinName": "I0"
         },
         "pin2": {
           "pinName": "O2"
         },
         "name": "unnamedWire#145",
-        "path": []
+        "path": [
+          {
+            "x": 265.0,
+            "y": 490.0
+          },
+          {
+            "x": 265.0,
+            "y": 510.0
+          },
+          {
+            "x": 480.0,
+            "y": 510.0
+          },
+          {
+            "x": 480.0,
+            "y": 350.0
+          },
+          {
+            "x": 470.0,
+            "y": 350.0
+          },
+          {
+            "x": 470.0,
+            "y": 310.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#146",
-        "path": []
+        "path": [
+          {
+            "x": 270.0,
+            "y": 450.0
+          },
+          {
+            "x": 270.0,
+            "y": 480.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "mux1#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "xor#2",
           "pinName": "B"
         },
         "name": "unnamedWire#147",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "xor#2",
           "pinName": "A"
         },
         "pin2": {
           "pinName": "O0"
         },
         "name": "unnamedWire#148",
-        "path": []
+        "path": [
+          {
+            "x": 290.0,
+            "y": 470.0
+          },
+          {
+            "x": 290.0,
+            "y": 460.0
+          }
+        ]
       },
       {
         "pin1": {
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#16",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Am2904RegCTInstrDecode#0",
           "pinName": "I5-0"
         },
         "name": "unnamedWire#15",
-        "path": []
+        "path": [
+          {
+            "x": 105.0,
+            "y": 260.0
+          },
+          {
+            "x": 105.0,
+            "y": 240.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "mux1#2",
           "pinName": "S0"
         },
         "name": "unnamedWire#150",
-        "path": []
+        "path": [
+          {
+            "x": 350.0,
+            "y": 450.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "xor#2",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "mux1#2",
           "pinName": "I1"
         },
         "name": "unnamedWire#151",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "mux1#2",
           "pinName": "I0"
         },
         "pin2": {
           "pinName": "Cx"
         },
         "name": "unnamedWire#152",
-        "path": []
+        "path": [
+          {
+            "x": 300.0,
+            "y": 460.0
+          },
+          {
+            "x": 300.0,
+            "y": 465.0
+          },
+          {
+            "x": 240.0,
+            "y": 465.0
+          },
+          {
+            "x": 240.0,
+            "y": 425.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "mux1#2",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "mux1#3",
           "pinName": "I1"
         },
         "name": "unnamedWire#153",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "mux1#3",
           "pinName": "I0"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "mux1#3",
           "pinName": "S0"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "mux1#3",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "C0"
         },
         "name": "unnamedWire#156",
-        "path": []
+        "path": [
+          {
+            "x": 560.0,
+            "y": 430.0
+          },
+          {
+            "x": 560.0,
+            "y": 425.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "QIOn"
+          "compName": "mux1#4",
+          "pinName": "I1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "name": "unnamedWire#157",
-        "path": []
+        "path": [
+          {
+            "x": 485.0,
+            "y": 555.0
+          },
+          {
+            "x": 485.0,
+            "y": 620.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "SIOn"
         },
         "name": "unnamedWire#158",
-        "path": []
+        "path": [
+          {
+            "x": 55.0,
+            "y": 620.0
+          },
+          {
+            "x": 55.0,
+            "y": 600.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "pin2": {
           "pinName": "SIO0"
         },
         "name": "unnamedWire#159",
-        "path": []
+        "path": [
+          {
+            "x": 580.0,
+            "y": 600.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "O"
+          "compName": "Splitter#17",
+          "pinName": "I"
         },
         "name": "unnamedWire#16",
         "path": [
           {
-            "x": 40.0,
-            "y": 385.0
+            "x": 75.0,
+            "y": 520.0
           },
           {
-            "x": 40.0,
-            "y": 285.0
+            "x": 75.0,
+            "y": 205.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "QIO0"
+          "compName": "mux1#5",
+          "pinName": "I1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "name": "unnamedWire#160",
-        "path": []
+        "path": [
+          {
+            "x": 435.0,
+            "y": 565.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#1",
-          "pinName": "OUT"
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
-          "pinName": ""
+          "compName": "_submodelinterface",
+          "pinName": "QIOn"
         },
         "name": "unnamedWire#161",
-        "path": []
+        "path": [
+          {
+            "x": 435.0,
+            "y": 625.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#2",
+          "compName": "TriStateBuffer#3",
           "pinName": "OUT"
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#38",
           "pinName": ""
         },
         "name": "unnamedWire#162",
-        "path": []
+        "path": [
+          {
+            "x": 580.0,
+            "y": 635.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#3",
-          "pinName": "OUT"
+          "compName": "WireCrossPoint#38",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "name": "unnamedWire#163",
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#4",
-          "pinName": "OUT"
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
         },
         "pin2": {
           "compName": "WireCrossPoint#21",
           "pinName": "IN"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "mux2#0",
           "pinName": "Y"
         },
         "name": "unnamedWire#165",
           "pinName": "I"
         },
         "name": "unnamedWire#166",
-        "path": []
+        "path": [
+          {
+            "x": 165.0,
+            "y": 500.0
+          },
+          {
+            "x": 165.0,
+            "y": 575.0
+          },
+          {
+            "x": 450.0,
+            "y": 575.0
+          },
+          {
+            "x": 450.0,
+            "y": 645.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "mux2#0",
           "pinName": "I00"
         },
         "name": "unnamedWire#167",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "mux2#0",
           "pinName": "S1"
         },
         "name": "unnamedWire#168",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "mux2#0",
           "pinName": "S0"
         },
         "pin2": {
           "pinName": "IOVR"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I0"
+          "compName": "Splitter#18",
+          "pinName": "O0"
         },
         "name": "unnamedWire#17",
-        "path": []
+        "path": [
+          {
+            "x": 10.0,
+            "y": 125.0
+          },
+          {
+            "x": 10.0,
+            "y": 95.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
-          "pinName": "I01"
+          "compName": "WireCrossPoint#36",
+          "pinName": ""
         },
         "name": "unnamedWire#170",
         "path": []
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "mux2#0",
           "pinName": "I10"
         },
         "name": "unnamedWire#171",
           "pinName": ""
         },
         "name": "unnamedWire#172",
-        "path": []
+        "path": [
+          {
+            "x": 485.0,
+            "y": 390.0
+          },
+          {
+            "x": 485.0,
+            "y": 515.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux2#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#174",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux2#1",
           "pinName": "S1"
         },
         "pin2": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux2#1",
           "pinName": "I00"
         },
         "name": "unnamedWire#176",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux2#1",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "IN"
         },
         "name": "unnamedWire#177",
-        "path": []
+        "path": [
+          {
+            "x": 545.0,
+            "y": 710.0
+          },
+          {
+            "x": 545.0,
+            "y": 660.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "QIO0_MUX"
         },
         "name": "unnamedWire#178",
-        "path": []
+        "path": [
+          {
+            "x": 445.0,
+            "y": 720.0
+          },
+          {
+            "x": 445.0,
+            "y": 580.0
+          },
+          {
+            "x": 175.0,
+            "y": 580.0
+          },
+          {
+            "x": 175.0,
+            "y": 520.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#36",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
-          "pinName": "I01"
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
         },
         "name": "unnamedWire#179",
         "path": []
           "pinName": "IN"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I1"
+          "compName": "Splitter#18",
+          "pinName": "O1"
         },
         "name": "unnamedWire#18",
-        "path": []
+        "path": [
+          {
+            "x": 5.0,
+            "y": 100.0
+          },
+          {
+            "x": 5.0,
+            "y": 85.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux2#1",
           "pinName": "I10"
         },
         "name": "unnamedWire#180",
-        "path": []
+        "path": [
+          {
+            "x": 435.0,
+            "y": 750.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#35",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
-          "pinName": "I11"
+          "compName": "mux2#0",
+          "pinName": "I01"
         },
         "name": "unnamedWire#181",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
-          "pinName": "I11"
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
-          "pinName": ""
+          "compName": "mux2#1",
+          "pinName": "I11"
         },
         "name": "unnamedWire#182",
-        "path": []
+        "path": [
+          {
+            "x": 440.0,
+            "y": 760.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#184",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I000"
         },
         "name": "unnamedWire#186",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I001"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#187",
-        "path": []
+        "path": [
+          {
+            "x": 150.0,
+            "y": 685.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "SIOn_MUX"
         },
         "name": "unnamedWire#188",
-        "path": []
+        "path": [
+          {
+            "x": 130.0,
+            "y": 655.0
+          },
+          {
+            "x": 130.0,
+            "y": 580.0
+          },
+          {
+            "x": 170.0,
+            "y": 580.0
+          },
+          {
+            "x": 170.0,
+            "y": 510.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "S2"
         },
         "name": "unnamedWire#189",
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "I2"
+          "compName": "Splitter#18",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "S1"
         },
         "name": "unnamedWire#190",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I010"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#191",
-        "path": []
+        "path": [
+          {
+            "x": 105.0,
+            "y": 695.0
+          },
+          {
+            "x": 105.0,
+            "y": 610.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I011"
         },
         "name": "unnamedWire#192",
-        "path": []
+        "path": [
+          {
+            "x": 110.0,
+            "y": 615.0
+          },
+          {
+            "x": 110.0,
+            "y": 705.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I100"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#193",
-        "path": []
+        "path": [
+          {
+            "x": 115.0,
+            "y": 715.0
+          },
+          {
+            "x": 115.0,
+            "y": 595.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#21",
+          "compName": "xor#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I111"
         },
         "name": "unnamedWire#194",
           "pinName": ""
         },
         "name": "unnamedWire#195",
-        "path": []
+        "path": [
+          {
+            "x": 465.0,
+            "y": 495.0
+          },
+          {
+            "x": 345.0,
+            "y": 495.0
+          },
+          {
+            "x": 345.0,
+            "y": 585.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I110"
         },
         "pin2": {
           "pinName": "O1"
         },
         "name": "unnamedWire#196",
-        "path": []
+        "path": [
+          {
+            "x": 125.0,
+            "y": 735.0
+          },
+          {
+            "x": 125.0,
+            "y": 605.0
+          },
+          {
+            "x": 350.0,
+            "y": 605.0
+          },
+          {
+            "x": 350.0,
+            "y": 500.0
+          },
+          {
+            "x": 470.0,
+            "y": 500.0
+          },
+          {
+            "x": 470.0,
+            "y": 360.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "I01"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#197",
-        "path": []
+        "path": [
+          {
+            "x": 290.0,
+            "y": 675.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "I10"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#198",
-        "path": []
+        "path": [
+          {
+            "x": 295.0,
+            "y": 685.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "I101"
         },
         "name": "unnamedWire#199",
-        "path": []
+        "path": [
+          {
+            "x": 120.0,
+            "y": 585.0
+          },
+          {
+            "x": 120.0,
+            "y": 725.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "muSR_OVRRET"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "OVRRET"
         },
         "name": "unnamedWire#2",
-        "path": []
+        "path": [
+          {
+            "x": 345.0,
+            "y": 210.0
+          },
+          {
+            "x": 345.0,
+            "y": 155.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "IZ"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I3"
+          "compName": "Splitter#18",
+          "pinName": "O3"
         },
         "name": "unnamedWire#20",
-        "path": []
+        "path": [
+          {
+            "x": 5.0,
+            "y": 50.0
+          },
+          {
+            "x": 5.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "xor#1",
           "pinName": "B"
         },
         "name": "unnamedWire#200",
-        "path": []
+        "path": [
+          {
+            "x": 465.0,
+            "y": 335.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "I11"
         },
         "name": "unnamedWire#201",
-        "path": []
+        "path": [
+          {
+            "x": 300.0,
+            "y": 695.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
           "pinName": "OEn"
         },
         "name": "unnamedWire#202",
-        "path": []
+        "path": [
+          {
+            "x": 250.0,
+            "y": 540.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "OE0"
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "name": "unnamedWire#203",
-        "path": []
+        "path": [
+          {
+            "x": 390.0,
+            "y": 550.0
+          },
+          {
+            "x": 390.0,
+            "y": 585.0
+          },
+          {
+            "x": 560.0,
+            "y": 585.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "xor#1",
           "pinName": "A"
         },
         "name": "unnamedWire#204",
-        "path": []
+        "path": [
+          {
+            "x": 460.0,
+            "y": 325.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#21",
+          "compName": "xor#3",
           "pinName": "A"
         },
         "name": "unnamedWire#205",
-        "path": []
+        "path": [
+          {
+            "x": 460.0,
+            "y": 490.0
+          },
+          {
+            "x": 340.0,
+            "y": 490.0
+          },
+          {
+            "x": 340.0,
+            "y": 600.0
+          },
+          {
+            "x": 100.0,
+            "y": 600.0
+          },
+          {
+            "x": 100.0,
+            "y": 745.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#21",
+          "compName": "xor#3",
           "pinName": "B"
         },
         "pin2": {
           "pinName": "O0"
         },
         "name": "unnamedWire#206",
-        "path": []
+        "path": [
+          {
+            "x": 95.0,
+            "y": 755.0
+          },
+          {
+            "x": 95.0,
+            "y": 590.0
+          },
+          {
+            "x": 355.0,
+            "y": 590.0
+          },
+          {
+            "x": 355.0,
+            "y": 505.0
+          },
+          {
+            "x": 475.0,
+            "y": 505.0
+          },
+          {
+            "x": 475.0,
+            "y": 370.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "S1"
         },
         "name": "unnamedWire#208",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "S0"
         },
         "name": "unnamedWire#209",
           "pinName": "muSR_CINV"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "CINV"
         },
         "name": "unnamedWire#21",
-        "path": []
+        "path": [
+          {
+            "x": 340.0,
+            "y": 220.0
+          },
+          {
+            "x": 340.0,
+            "y": 145.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "QIOn_MUX"
         },
         "name": "unnamedWire#210",
-        "path": []
+        "path": [
+          {
+            "x": 305.0,
+            "y": 655.0
+          },
+          {
+            "x": 305.0,
+            "y": 530.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#22",
+          "compName": "mux2#2",
           "pinName": "I00"
         },
         "name": "unnamedWire#211",
           "pinName": "IN"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#23",
+          "compName": "mux3#1",
           "pinName": "Y"
         },
         "name": "unnamedWire#212",
           "pinName": "EN"
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "name": "unnamedWire#214",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
           "pinName": "EN"
         },
         "name": "unnamedWire#215",
+        "path": [
+          {
+            "x": 575.0,
+            "y": 620.0
+          },
+          {
+            "x": 575.0,
+            "y": 645.0
+          },
+          {
+            "x": 560.0,
+            "y": 645.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Am2904muSR#0",
+          "pinName": "M"
+        },
+        "name": "unnamedWire#216",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#32",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#10",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#217",
+        "path": [
+          {
+            "x": 405.0,
+            "y": 240.0
+          },
+          {
+            "x": 440.0,
+            "y": 240.0
+          },
+          {
+            "x": 440.0,
+            "y": 315.0
+          }
+        ]
+      },
       {
         "pin1": {
           "compName": "TriStateBuffer#2",
           "pinName": "EN"
         },
         "pin2": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "name": "unnamedWire#218",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
           "pinName": "EN"
         },
         "name": "unnamedWire#219",
-        "path": []
+        "path": [
+          {
+            "x": 410.0,
+            "y": 630.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "O"
+          "compName": "Splitter#18",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#22",
-        "path": []
+        "path": [
+          {
+            "x": 105.0,
+            "y": 80.0
+          },
+          {
+            "x": 105.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#23",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#34",
+          "pinName": ""
+        },
+        "name": "unnamedWire#220",
+        "path": [
+          {
+            "x": 440.0,
+            "y": 595.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#18",
+          "compName": "mux1#5",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1#4",
           "pinName": "I0"
         },
         "name": "unnamedWire#221",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1#4",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "COVD_V"
         },
         "name": "unnamedWire#222",
-        "path": []
+        "path": [
+          {
+            "x": 530.0,
+            "y": 535.0
+          },
+          {
+            "x": 530.0,
+            "y": 525.0
+          },
+          {
+            "x": 230.0,
+            "y": 525.0
+          },
+          {
+            "x": 230.0,
+            "y": 310.0
+          },
+          {
+            "x": 295.0,
+            "y": 310.0
+          },
+          {
+            "x": 295.0,
+            "y": 85.0
+          },
+          {
+            "x": 275.0,
+            "y": 85.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#17",
-          "pinName": "I1"
-        },
-        "pin2": {
           "compName": "WireCrossPoint#19",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "TriStateBuffer#2",
+          "pinName": "OUT"
+        },
         "name": "unnamedWire#223",
-        "path": []
+        "path": [
+          {
+            "x": 265.0,
+            "y": 645.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#18",
-          "pinName": "I0"
+          "compName": "TriStateBuffer#4",
+          "pinName": "OUT"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "name": "unnamedWire#224",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#21",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#18",
-          "pinName": "I1"
-        },
-        "name": "unnamedWire#225",
-        "path": []
+        "path": [
+          {
+            "x": 585.0,
+            "y": 660.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "I"
         },
         "name": "unnamedWire#226",
-        "path": []
+        "path": [
+          {
+            "x": 410.0,
+            "y": 560.0
+          },
+          {
+            "x": 410.0,
+            "y": 540.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#18",
+          "compName": "mux1#5",
           "pinName": "S0"
         },
         "name": "unnamedWire#227",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1#4",
           "pinName": "S0"
         },
         "name": "unnamedWire#228",
       },
       {
         "pin1": {
-          "compName": "BitDisplay#0",
+          "compName": "WireCrossPoint#34",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
-          "pinName": ""
+          "compName": "mux2#0",
+          "pinName": "I11"
         },
         "name": "unnamedWire#229",
         "path": []
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "I"
         },
         "name": "unnamedWire#23",
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#0",
-          "pinName": "OUT"
+          "compName": "WireCrossPoint#35",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "BitDisplay#1",
-          "pinName": ""
+          "compName": "mux2#1",
+          "pinName": "I01"
         },
         "name": "unnamedWire#230",
-        "path": []
+        "path": [
+          {
+            "x": 430.0,
+            "y": 740.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#0",
-          "pinName": "IN"
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "BitDisplay#2",
+          "compName": "WireCrossPoint#37",
           "pinName": ""
         },
         "name": "unnamedWire#231",
       },
       {
         "pin1": {
-          "compName": "TriStateBuffer#0",
-          "pinName": "EN"
+          "compName": "WireCrossPoint#37",
+          "pinName": ""
         },
         "pin2": {
-          "compName": "BitDisplay#3",
-          "pinName": ""
+          "compName": "TriStateBuffer#1",
+          "pinName": "OUT"
         },
         "name": "unnamedWire#232",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "NandGate#12",
+          "compName": "NandGate#11",
           "pinName": "A"
         },
         "name": "unnamedWire#233",
       },
       {
         "pin1": {
-          "compName": "NandGate#12",
+          "compName": "NandGate#11",
           "pinName": "B"
         },
         "pin2": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "name": "unnamedWire#234",
-        "path": []
+        "path": [
+          {
+            "x": 550.0,
+            "y": 250.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#33",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "pin2": {
           "pinName": "_OECT"
         },
         "name": "unnamedWire#235",
-        "path": []
+        "path": [
+          {
+            "x": 550.0,
+            "y": 215.0
+          },
+          {
+            "x": 565.0,
+            "y": 215.0
+          },
+          {
+            "x": 565.0,
+            "y": 25.0
+          },
+          {
+            "x": 550.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "IN"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "xor#0",
           "pinName": "Y"
         },
         "name": "unnamedWire#237",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "mux1#5",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#238",
+        "path": [
+          {
+            "x": 430.0,
+            "y": 555.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#39",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#20",
+          "pinName": ""
+        },
+        "name": "unnamedWire#239",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "name": "unnamedWire#24",
+        "path": [
+          {
+            "x": 190.0,
+            "y": 175.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "QIO0"
+        },
+        "name": "unnamedWire#240",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "WireCrossPoint#41",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#40",
+          "pinName": ""
+        },
+        "name": "unnamedWire#242",
+        "path": [
+          {
+            "x": 585.0,
+            "y": 615.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Am2904MSR#0",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#25",
-        "path": []
+        "path": [
+          {
+            "x": 300.0,
+            "y": 110.0
+          },
+          {
+            "x": 300.0,
+            "y": 125.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
+          "compName": "Splitter#4",
+          "pinName": "I"
         },
         "name": "unnamedWire#26",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": ""
         },
         "name": "unnamedWire#27",
-        "path": []
+        "path": [
+          {
+            "x": 405.0,
+            "y": 105.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#33",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "mu"
+          "compName": "Splitter#5",
+          "pinName": "I"
         },
         "name": "unnamedWire#28",
         "path": []
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "C"
         },
         "name": "unnamedWire#29",
-        "path": []
+        "path": [
+          {
+            "x": 255.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "C"
         },
         "name": "unnamedWire#30",
-        "path": []
+        "path": [
+          {
+            "x": 300.0,
+            "y": 60.0
+          },
+          {
+            "x": 300.0,
+            "y": 105.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "MSR_MUX"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "MUX"
         },
         "name": "unnamedWire#31",
-        "path": []
+        "path": [
+          {
+            "x": 200.0,
+            "y": 160.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "MC_EN"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "COVD_EN"
         },
         "name": "unnamedWire#32",
-        "path": []
+        "path": [
+          {
+            "x": 225.0,
+            "y": 570.0
+          },
+          {
+            "x": 225.0,
+            "y": 305.0
+          },
+          {
+            "x": 290.0,
+            "y": 305.0
+          },
+          {
+            "x": 290.0,
+            "y": 80.0
+          },
+          {
+            "x": 265.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "B"
         },
         "name": "unnamedWire#34",
-        "path": []
+        "path": [
+          {
+            "x": 225.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#16",
+          "pinName": "O0"
         },
         "name": "unnamedWire#4",
         "path": []
           "pinName": ""
         },
         "name": "unnamedWire#42",
-        "path": []
+        "path": [
+          {
+            "x": 320.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "_EOVR"
         },
         "name": "unnamedWire#43",
-        "path": []
+        "path": [
+          {
+            "x": 390.0,
+            "y": 85.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "_EN"
         },
         "name": "unnamedWire#44",
-        "path": []
+        "path": [
+          {
+            "x": 380.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "_EC"
         },
         "pin2": {
           "pinName": "Y"
         },
         "name": "unnamedWire#45",
-        "path": []
+        "path": [
+          {
+            "x": 370.0,
+            "y": 45.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "Am2904muSR#0",
           "pinName": "_EZ"
         },
         "name": "unnamedWire#46",
-        "path": []
+        "path": [
+          {
+            "x": 360.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "muSR_WEZ"
         },
         "name": "unnamedWire#47",
-        "path": []
+        "path": [
+          {
+            "x": 305.0,
+            "y": 30.0
+          },
+          {
+            "x": 305.0,
+            "y": 230.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "B"
         },
         "name": "unnamedWire#48",
-        "path": []
+        "path": [
+          {
+            "x": 310.0,
+            "y": 240.0
+          },
+          {
+            "x": 310.0,
+            "y": 50.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "YZ"
         },
         "name": "unnamedWire#49",
-        "path": []
+        "path": [
+          {
+            "x": 595.0,
+            "y": 40.0
+          },
+          {
+            "x": 595.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#16",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "YN"
         },
         "name": "unnamedWire#51",
-        "path": []
+        "path": [
+          {
+            "x": 595.0,
+            "y": 60.0
+          },
+          {
+            "x": 595.0,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "name": "unnamedWire#52",
-        "path": []
+        "path": [
+          {
+            "x": 590.0,
+            "y": 100.0
+          },
+          {
+            "x": 590.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "Y"
         },
         "name": "unnamedWire#54",
-        "path": []
+        "path": [
+          {
+            "x": 570.0,
+            "y": 50.0
+          },
+          {
+            "x": 415.0,
+            "y": 50.0
+          },
+          {
+            "x": 415.0,
+            "y": 180.0
+          },
+          {
+            "x": 195.0,
+            "y": 180.0
+          },
+          {
+            "x": 195.0,
+            "y": 120.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "A"
         },
         "name": "unnamedWire#55",
-        "path": []
+        "path": [
+          {
+            "x": 135.0,
+            "y": 10.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#57",
-        "path": []
+        "path": [
+          {
+            "x": 25.0,
+            "y": 20.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "muSR_WEN"
         },
         "name": "unnamedWire#58",
-        "path": []
+        "path": [
+          {
+            "x": 315.0,
+            "y": 70.0
+          },
+          {
+            "x": 315.0,
+            "y": 250.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "B"
         },
         "name": "unnamedWire#59",
-        "path": []
+        "path": [
+          {
+            "x": 320.0,
+            "y": 260.0
+          },
+          {
+            "x": 320.0,
+            "y": 90.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#16",
+          "pinName": "O2"
         },
         "name": "unnamedWire#6",
         "path": []
           "pinName": "A"
         },
         "name": "unnamedWire#60",
-        "path": []
+        "path": [
+          {
+            "x": 180.0,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "_EOVR"
         },
         "name": "unnamedWire#66",
-        "path": []
+        "path": [
+          {
+            "x": 245.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "_EN"
         },
         "pin2": {
           "pinName": "Y"
         },
         "name": "unnamedWire#67",
-        "path": []
+        "path": [
+          {
+            "x": 235.0,
+            "y": 60.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "_EC"
         },
         "name": "unnamedWire#68",
-        "path": []
+        "path": [
+          {
+            "x": 225.0,
+            "y": 40.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "Am2904MSR#0",
           "pinName": "_EZ"
         },
         "name": "unnamedWire#69",
-        "path": []
+        "path": [
+          {
+            "x": 215.0,
+            "y": 20.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#16",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "Y1"
         },
         "pin2": {
           "pinName": "B"
         },
         "name": "unnamedWire#71",
-        "path": []
+        "path": [
+          {
+            "x": 170.0,
+            "y": 45.0
+          },
+          {
+            "x": 170.0,
+            "y": 25.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "B"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "Y2"
         },
         "name": "unnamedWire#72",
-        "path": []
+        "path": [
+          {
+            "x": 175.0,
+            "y": 45.0
+          },
+          {
+            "x": 175.0,
+            "y": 55.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "Y3"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "Y4"
         },
         "pin2": {
           "pinName": "B"
         },
         "name": "unnamedWire#74",
-        "path": []
+        "path": [
+          {
+            "x": 175.0,
+            "y": 75.0
+          },
+          {
+            "x": 175.0,
+            "y": 85.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "A1"
         },
         "pin2": {
           "pinName": "_EZ"
         },
         "name": "unnamedWire#75",
-        "path": []
+        "path": [
+          {
+            "x": 50.0,
+            "y": 45.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "_EC"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "A2"
         },
         "name": "unnamedWire#76",
-        "path": []
+        "path": [
+          {
+            "x": 75.0,
+            "y": 55.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "A3"
         },
         "pin2": {
           "pinName": "_EN"
         },
         "name": "unnamedWire#77",
-        "path": []
+        "path": [
+          {
+            "x": 100.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "_EOVR"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "not4#0",
           "pinName": "A4"
         },
         "name": "unnamedWire#78",
-        "path": []
+        "path": [
+          {
+            "x": 125.0,
+            "y": 75.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "name": "unnamedWire#79",
-        "path": []
+        "path": [
+          {
+            "x": 570.0,
+            "y": 80.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#16",
+          "pinName": "O4"
         },
         "name": "unnamedWire#8",
         "path": []
           "pinName": ""
         },
         "name": "unnamedWire#81",
-        "path": []
+        "path": [
+          {
+            "x": 450.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "and#0",
           "pinName": "A"
         },
         "name": "unnamedWire#83",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "and#0",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "EN"
         },
         "name": "unnamedWire#84",
-        "path": []
+        "path": [
+          {
+            "x": 550.0,
+            "y": 65.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#85",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "Y2"
         },
         "name": "unnamedWire#86",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#87",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "Y4"
         },
         "name": "unnamedWire#88",
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "I0"
+          "compName": "Splitter#19",
+          "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "name": "unnamedWire#89",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#16",
+          "pinName": "O5"
         },
         "pin2": {
           "compName": "Splitter#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "I1"
+          "compName": "Splitter#19",
+          "pinName": "O1"
         },
         "name": "unnamedWire#90",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "I2"
+          "compName": "Splitter#19",
+          "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "name": "unnamedWire#91",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "I3"
+          "compName": "Splitter#19",
+          "pinName": "O3"
         },
         "name": "unnamedWire#92",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "O"
-        },
-        "pin2": {
           "compName": "WireCrossPoint#14",
           "pinName": ""
         },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "I"
+        },
         "name": "unnamedWire#93",
         "path": []
       },
           "pinName": "I"
         },
         "name": "unnamedWire#94",
-        "path": []
+        "path": [
+          {
+            "x": 190.0,
+            "y": 275.0
+          },
+          {
+            "x": 360.0,
+            "y": 275.0
+          },
+          {
+            "x": 360.0,
+            "y": 225.0
+          },
+          {
+            "x": 420.0,
+            "y": 225.0
+          },
+          {
+            "x": 420.0,
+            "y": 95.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#95",
-        "path": []
+        "path": [
+          {
+            "x": 455.0,
+            "y": 100.0
+          },
+          {
+            "x": 455.0,
+            "y": 130.0
+          },
+          {
+            "x": 435.0,
+            "y": 130.0
+          },
+          {
+            "x": 435.0,
+            "y": 140.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#96",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#97",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#98",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "pin2": {
   "highLevelStateHandlerSnippetID": "standard",
   "highLevelStateHandlerParams": {
     "subcomponentHighLevelStates": {
-      "musr": {
+      "msr": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "DeserializedSubmodelComponent#1"
+          "delegateTarget": "Am2904MSR#0"
         }
       },
-      "msr": {
+      "musr": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "DeserializedSubmodelComponent#0"
+          "delegateTarget": "Am2904muSR#0"
         }
       }
     },
index eff0611..927d41f 100644 (file)
@@ -1,11 +1,11 @@
 {
-  "width": 45.0,
-  "height": 46.0,
+  "width": 80.0,
+  "height": 75.0,
   "interfacePins": [
     {
       "location": {
-        "x": 14.0,
-        "y": 46.0
+        "x": 50.0,
+        "y": 0.0
       },
       "name": "C",
       "logicWidth": 1,
@@ -13,8 +13,8 @@
     },
     {
       "location": {
-        "x": 27.5,
-        "y": 46.0
+        "x": 60.0,
+        "y": 0.0
       },
       "name": "COVD_EN",
       "logicWidth": 1,
@@ -22,8 +22,8 @@
     },
     {
       "location": {
-        "x": 37.5,
-        "y": 46.0
+        "x": 70.0,
+        "y": 0.0
       },
       "name": "COVD_V",
       "logicWidth": 1,
@@ -32,7 +32,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 31.0
+        "y": 50.0
       },
       "name": "I",
       "logicWidth": 4,
@@ -40,8 +40,8 @@
     },
     {
       "location": {
-        "x": 4.0,
-        "y": 46.0
+        "x": 0.0,
+        "y": 70.0
       },
       "name": "MUX",
       "logicWidth": 3,
@@ -49,8 +49,8 @@
     },
     {
       "location": {
-        "x": 45.0,
-        "y": 19.0
+        "x": 80.0,
+        "y": 20.0
       },
       "name": "Q",
       "logicWidth": 4,
@@ -59,7 +59,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 18.0
+        "y": 30.0
       },
       "name": "Y",
       "logicWidth": 4,
@@ -67,7 +67,7 @@
     },
     {
       "location": {
-        "x": 15.5,
+        "x": 20.0,
         "y": 0.0
       },
       "name": "_EC",
@@ -76,7 +76,7 @@
     },
     {
       "location": {
-        "x": 25.5,
+        "x": 30.0,
         "y": 0.0
       },
       "name": "_EN",
@@ -85,8 +85,8 @@
     },
     {
       "location": {
-        "x": 35.5,
-        "y": 0.2
+        "x": 40.0,
+        "y": 0.0
       },
       "name": "_EOVR",
       "logicWidth": 1,
@@ -94,7 +94,7 @@
     },
     {
       "location": {
-        "x": 5.5,
+        "x": 10.0,
         "y": 0.0
       },
       "name": "_EZ",
     {
       "location": {
         "x": 0.0,
-        "y": 5.0
+        "y": 10.0
       },
       "name": "mu",
       "logicWidth": 4,
       "usage": "INPUT"
     }
   ],
-  "innerScale": 0.1,
+  "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 55.0,
-          "y": 110.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 35.0,
-          "y": 250.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 150.0,
-          "y": 280.0
-        }
-      },
-      {
-        "id": "not4",
-        "name": "DeserializedSubmodelComponent#3",
-        "pos": {
-          "x": 100.0,
-          "y": 330.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#4",
-        "pos": {
-          "x": 110.0,
-          "y": 60.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#5",
-        "pos": {
-          "x": 200.0,
-          "y": 230.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#6",
-        "pos": {
-          "x": 250.0,
-          "y": 180.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#7",
-        "pos": {
-          "x": 325.0,
-          "y": 290.0
-        }
-      },
-      {
-        "id": "and",
-        "name": "DeserializedSubmodelComponent#8",
-        "pos": {
-          "x": 380.0,
-          "y": 85.0
-        }
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 435.0,
-          "y": 175.0
-        },
-        "params": 4
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
         "pos": {
-          "x": 325.0,
-          "y": 90.0
+          "x": 170.0,
+          "y": 55.0
         },
         "params": 1
       },
           "x": 5.0,
           "y": 35.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#1",
         "pos": {
           "x": 5.0,
-          "y": 165.0
+          "y": 135.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#2",
         "pos": {
           "x": 45.0,
-          "y": 425.0
+          "y": 340.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#3",
         "pos": {
           "x": 5.0,
-          "y": 295.0
+          "y": 235.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 385.0,
+          "y": 85.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 29.0,
-          "y": 284.0
+          "x": 19.0,
+          "y": 224.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 414.0,
-          "y": 174.0
+          "x": 364.0,
+          "y": 84.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 89.0,
-          "y": 84.0
+          "x": 74.0,
+          "y": 54.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#11",
         "pos": {
-          "x": 89.0,
-          "y": 94.0
+          "x": 74.0,
+          "y": 64.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#12",
         "pos": {
-          "x": 19.0,
-          "y": 294.0
+          "x": 34.0,
+          "y": 234.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#13",
         "pos": {
-          "x": 194.0,
-          "y": 234.0
+          "x": 124.0,
+          "y": 174.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#14",
         "pos": {
-          "x": 89.0,
-          "y": 104.0
+          "x": 74.0,
+          "y": 74.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#15",
         "pos": {
-          "x": 319.0,
-          "y": 294.0
+          "x": 164.0,
+          "y": 59.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#16",
         "pos": {
-          "x": 319.0,
-          "y": 104.0
+          "x": 269.0,
+          "y": 39.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 419.0,
-          "y": 184.0
+          "x": 369.0,
+          "y": 94.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 424.0,
-          "y": 194.0
+          "x": 374.0,
+          "y": 104.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 429.0,
-          "y": 204.0
+          "x": 379.0,
+          "y": 114.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 84.0,
-          "y": 344.0
+          "x": 29.0,
+          "y": 284.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 94.0,
-          "y": 364.0
+          "x": 39.0,
+          "y": 304.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 29.0,
-          "y": 254.0
+          "x": 19.0,
+          "y": 194.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 74.0,
-          "y": 314.0
+          "x": 79.0,
+          "y": 254.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 49.0,
-          "y": 114.0
+          "x": 39.0,
+          "y": 84.0
         },
         "params": 1
       },
+      {
+        "id": "and",
+        "name": "and#0",
+        "pos": {
+          "x": 195.0,
+          "y": 50.0
+        }
+      },
       {
         "id": "dff4_finewe",
         "name": "dff4_finewe#0",
         "pos": {
-          "x": 375.0,
+          "x": 325.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#0",
+        "pos": {
+          "x": 280.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 45.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#1",
+        "pos": {
+          "x": 85.0,
+          "y": 220.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#2",
+        "pos": {
+          "x": 90.0,
+          "y": 30.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#3",
+        "pos": {
+          "x": 130.0,
           "y": 170.0
         }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#4",
+        "pos": {
+          "x": 175.0,
+          "y": 120.0
+        }
+      },
+      {
+        "id": "not4",
+        "name": "not4#0",
+        "pos": {
+          "x": 45.0,
+          "y": 270.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#0",
+        "pos": {
+          "x": 40.0,
+          "y": 190.0
+        }
       }
     ],
     "wires": [
         "name": "unnamedWire#0",
         "path": [
           {
-            "x": 140.0,
-            "y": 445.0
-          },
-          {
-            "x": 255.0,
-            "y": 445.0
-          },
-          {
-            "x": 255.0,
-            "y": 280.0
-          },
-          {
-            "x": 340.0,
-            "y": 280.0
-          },
-          {
-            "x": 340.0,
-            "y": 175.0
+            "x": 250.0,
+            "y": 85.0
           }
         ]
       },
         "name": "unnamedWire#1",
         "path": [
           {
-            "x": 355.0,
+            "x": 200.0,
             "y": 30.0
           },
           {
-            "x": 355.0,
-            "y": 215.0
+            "x": 305.0,
+            "y": 30.0
+          },
+          {
+            "x": 305.0,
+            "y": 125.0
           }
         ]
       },
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "pin2": {
         "path": [
           {
             "x": 35.0,
-            "y": 125.0
+            "y": 95.0
           },
           {
             "x": 35.0,
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#13",
           },
           {
             "x": 30.0,
-            "y": 135.0
+            "y": 105.0
           }
         ]
       },
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#14",
           },
           {
             "x": 25.0,
-            "y": 145.0
+            "y": 115.0
           }
         ]
       },
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#15",
           },
           {
             "x": 20.0,
-            "y": 155.0
+            "y": 125.0
           }
         ]
       },
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#16",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_2"
         },
         "pin2": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#18",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_4"
         },
         "pin2": {
         "name": "unnamedWire#2",
         "path": [
           {
-            "x": 255.0,
+            "x": 150.0,
             "y": 25.0
           },
           {
-            "x": 360.0,
+            "x": 310.0,
             "y": 25.0
           },
           {
-            "x": 360.0,
-            "y": 205.0
+            "x": 310.0,
+            "y": 115.0
           }
         ]
       },
           "pinName": "I"
         },
         "name": "unnamedWire#20",
-        "path": [
-          {
-            "x": 40.0,
-            "y": 435.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "xor#0",
           "pinName": "B"
         },
         "name": "unnamedWire#23",
         "path": [
           {
-            "x": 25.0,
-            "y": 305.0
+            "x": 30.0,
+            "y": 245.0
           },
           {
-            "x": 25.0,
-            "y": 265.0
+            "x": 30.0,
+            "y": 205.0
           }
         ]
       },
         "path": [
           {
             "x": 60.0,
-            "y": 445.0
+            "y": 360.0
           },
           {
             "x": 60.0,
-            "y": 415.0
+            "y": 335.0
           },
           {
-            "x": 30.0,
-            "y": 415.0
+            "x": 20.0,
+            "y": 335.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "xor#0",
           "pinName": "A"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#4",
+          "pinName": "O2"
         },
         "name": "unnamedWire#27",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#4",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "WireCrossPoint#1",
           "pinName": "_EC"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "and#0",
           "pinName": "A"
         },
         "name": "unnamedWire#3",
         "path": [
           {
-            "x": 155.0,
+            "x": 100.0,
             "y": 20.0
           },
           {
-            "x": 365.0,
+            "x": 190.0,
             "y": 20.0
           },
           {
-            "x": 365.0,
-            "y": 90.0
+            "x": 190.0,
+            "y": 55.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#30",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "Y2"
         },
         "name": "unnamedWire#31",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#32",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "Y4"
         },
         "name": "unnamedWire#33",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "A1"
         },
         "name": "unnamedWire#34",
         "path": [
           {
-            "x": 415.0,
-            "y": 380.0
+            "x": 365.0,
+            "y": 315.0
           },
           {
-            "x": 80.0,
-            "y": 380.0
+            "x": 25.0,
+            "y": 315.0
           },
           {
-            "x": 80.0,
-            "y": 335.0
+            "x": 25.0,
+            "y": 275.0
           }
         ]
       },
         "name": "unnamedWire#35",
         "path": [
           {
-            "x": 420.0,
-            "y": 385.0
+            "x": 370.0,
+            "y": 320.0
           },
           {
-            "x": 85.0,
-            "y": 385.0
+            "x": 30.0,
+            "y": 320.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "A3"
         },
         "name": "unnamedWire#36",
         "path": [
           {
-            "x": 425.0,
-            "y": 390.0
+            "x": 375.0,
+            "y": 325.0
           },
           {
-            "x": 90.0,
-            "y": 390.0
+            "x": 35.0,
+            "y": 325.0
           },
           {
-            "x": 90.0,
-            "y": 355.0
+            "x": 35.0,
+            "y": 295.0
           }
         ]
       },
         "name": "unnamedWire#37",
         "path": [
           {
-            "x": 430.0,
-            "y": 395.0
+            "x": 380.0,
+            "y": 330.0
           },
           {
-            "x": 95.0,
-            "y": 395.0
+            "x": 40.0,
+            "y": 330.0
           }
         ]
       },
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I0_4"
         },
         "pin2": {
         "name": "unnamedWire#39",
         "path": [
           {
-            "x": 85.0,
-            "y": 325.0
+            "x": 30.0,
+            "y": 265.0
           }
         ]
       },
         "name": "unnamedWire#4",
         "path": [
           {
-            "x": 55.0,
+            "x": 50.0,
             "y": 15.0
           },
           {
-            "x": 370.0,
+            "x": 320.0,
             "y": 15.0
           },
           {
-            "x": 370.0,
-            "y": 185.0
+            "x": 320.0,
+            "y": 95.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#40",
         "path": [
           {
-            "x": 95.0,
-            "y": 305.0
+            "x": 40.0,
+            "y": 245.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I0_3"
         },
         "pin2": {
         "name": "unnamedWire#42",
         "path": [
           {
-            "x": 30.0,
-            "y": 230.0
+            "x": 20.0,
+            "y": 175.0
           },
           {
-            "x": 50.0,
-            "y": 230.0
+            "x": 40.0,
+            "y": 175.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#43",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#44",
         "name": "unnamedWire#45",
         "path": [
           {
-            "x": 50.0,
-            "y": 105.0
+            "x": 40.0,
+            "y": 75.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "name": "unnamedWire#46",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#47",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "name": "unnamedWire#48",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#49",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#4",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I0_3"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "I0_1"
         },
         "pin2": {
         "name": "unnamedWire#54",
         "path": [
           {
-            "x": 90.0,
-            "y": 75.0
+            "x": 75.0,
+            "y": 45.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "A4"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "not4#0",
           "pinName": "A2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#57",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#59",
         "path": [
           {
-            "x": 20.0,
-            "y": 245.0
+            "x": 35.0,
+            "y": 185.0
           }
         ]
       },
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I0_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "xor#0",
           "pinName": "Y"
         },
         "name": "unnamedWire#60",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I0_3"
         },
         "pin2": {
         "name": "unnamedWire#61",
         "path": [
           {
-            "x": 75.0,
-            "y": 265.0
+            "x": 80.0,
+            "y": 205.0
           }
         ]
       },
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#62",
         "path": [
           {
-            "x": 80.0,
-            "y": 325.0
+            "x": 25.0,
+            "y": 265.0
           },
           {
-            "x": 80.0,
-            "y": 275.0
+            "x": 25.0,
+            "y": 215.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#63",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "Y2"
         },
         "name": "unnamedWire#64",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#65",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1_4#1",
           "pinName": "Y4"
         },
         "name": "unnamedWire#66",
         "name": "unnamedWire#67",
         "path": [
           {
-            "x": 195.0,
-            "y": 435.0
+            "x": 125.0,
+            "y": 350.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "S0"
         },
         "name": "unnamedWire#68",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "S0"
         },
         "name": "unnamedWire#69",
         "path": [
           {
-            "x": 105.0,
-            "y": 235.0
+            "x": 85.0,
+            "y": 175.0
           },
           {
-            "x": 105.0,
-            "y": 65.0
+            "x": 85.0,
+            "y": 35.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#4",
+          "pinName": "O0"
         },
         "name": "unnamedWire#7",
         "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "Y4"
         },
         "pin2": {
         "name": "unnamedWire#70",
         "path": [
           {
-            "x": 295.0,
-            "y": 215.0
+            "x": 235.0,
+            "y": 155.0
           },
           {
-            "x": 295.0,
-            "y": 255.0
+            "x": 235.0,
+            "y": 165.0
           }
         ]
       },
           "pinName": "D3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "Y3"
         },
         "name": "unnamedWire#71",
         "path": [
           {
-            "x": 300.0,
-            "y": 245.0
+            "x": 240.0,
+            "y": 155.0
           },
           {
-            "x": 300.0,
-            "y": 205.0
+            "x": 240.0,
+            "y": 145.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "and#0",
           "pinName": "Y"
         },
         "pin2": {
         "name": "unnamedWire#72",
         "path": [
           {
-            "x": 420.0,
-            "y": 90.0
+            "x": 235.0,
+            "y": 55.0
           },
           {
-            "x": 420.0,
-            "y": 110.0
+            "x": 235.0,
+            "y": 20.0
           },
           {
-            "x": 365.0,
-            "y": 110.0
+            "x": 315.0,
+            "y": 20.0
           },
           {
-            "x": 365.0,
-            "y": 195.0
+            "x": 315.0,
+            "y": 105.0
           }
         ]
       },
           "pinName": "D1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "Y1"
         },
         "name": "unnamedWire#73",
         "path": [
           {
-            "x": 310.0,
-            "y": 225.0
+            "x": 250.0,
+            "y": 135.0
           },
           {
-            "x": 310.0,
-            "y": 185.0
+            "x": 250.0,
+            "y": 125.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I1_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "Y4"
         },
         "name": "unnamedWire#74",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#75",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I1_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "Y2"
         },
         "name": "unnamedWire#76",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "mux1_4#3",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#77",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I0_4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "Y4"
         },
         "name": "unnamedWire#78",
         "path": [
           {
-            "x": 200.0,
-            "y": 225.0
+            "x": 140.0,
+            "y": 165.0
           },
           {
-            "x": 200.0,
-            "y": 95.0
+            "x": 140.0,
+            "y": 65.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#79",
         "path": [
           {
-            "x": 205.0,
-            "y": 85.0
+            "x": 145.0,
+            "y": 55.0
           },
           {
-            "x": 205.0,
-            "y": 215.0
+            "x": 145.0,
+            "y": 155.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#4",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "WireCrossPoint#3",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I0_2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "Y2"
         },
         "name": "unnamedWire#80",
         "path": [
           {
-            "x": 210.0,
-            "y": 205.0
+            "x": 150.0,
+            "y": 145.0
           },
           {
-            "x": 210.0,
-            "y": 75.0
+            "x": 150.0,
+            "y": 45.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "mux1_4#2",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#81",
         "path": [
           {
-            "x": 215.0,
-            "y": 65.0
+            "x": 155.0,
+            "y": 35.0
           },
           {
-            "x": 215.0,
-            "y": 195.0
+            "x": 155.0,
+            "y": 135.0
           }
         ]
       },
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "S0"
         },
         "name": "unnamedWire#82",
         "path": [
           {
-            "x": 245.0,
-            "y": 425.0
+            "x": 170.0,
+            "y": 340.0
           },
           {
-            "x": 245.0,
-            "y": 185.0
+            "x": 170.0,
+            "y": 125.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "NandGate#0",
+          "pinName": "A"
         },
         "name": "unnamedWire#83",
         "path": []
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
-        },
-        "pin2": {
           "compName": "_submodelinterface",
           "pinName": "COVD_EN"
         },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
         "name": "unnamedWire#84",
         "path": [
           {
-            "x": 275.0,
-            "y": 295.0
+            "x": 300.0,
+            "y": 10.0
+          },
+          {
+            "x": 270.0,
+            "y": 10.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
-          "pinName": "S0"
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
         },
         "name": "unnamedWire#85",
-        "path": []
+        "path": [
+          {
+            "x": 165.0,
+            "y": 40.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "COVD_V"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#86",
         "path": [
           {
-            "x": 375.0,
-            "y": 325.0
+            "x": 350.0,
+            "y": 70.0
           },
           {
-            "x": 320.0,
-            "y": 325.0
+            "x": 265.0,
+            "y": 70.0
           },
           {
-            "x": 320.0,
-            "y": 315.0
+            "x": 265.0,
+            "y": 200.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "mux1_4#4",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux1#0",
           "pinName": "I0"
         },
         "name": "unnamedWire#87",
         "path": [
           {
-            "x": 305.0,
-            "y": 195.0
+            "x": 245.0,
+            "y": 135.0
           },
           {
-            "x": 305.0,
-            "y": 305.0
+            "x": 245.0,
+            "y": 145.0
+          },
+          {
+            "x": 275.0,
+            "y": 145.0
+          },
+          {
+            "x": 275.0,
+            "y": 190.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "mux1#0",
           "pinName": "Y"
         },
         "pin2": {
         "name": "unnamedWire#88",
         "path": [
           {
-            "x": 365.0,
-            "y": 295.0
+            "x": 320.0,
+            "y": 180.0
           },
           {
-            "x": 365.0,
-            "y": 235.0
+            "x": 320.0,
+            "y": 145.0
           }
         ]
       },
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "and#0",
           "pinName": "B"
         },
         "name": "unnamedWire#89",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
-          "pinName": ""
+          "compName": "NandGate#0",
+          "pinName": "B"
         },
         "name": "unnamedWire#90",
-        "path": []
+        "path": [
+          {
+            "x": 165.0,
+            "y": 70.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "NandGate#0",
-          "pinName": "B"
+          "compName": "mux1#0",
+          "pinName": "S0"
         },
         "name": "unnamedWire#91",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "NandGate#0",
-          "pinName": "A"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#16",
-          "pinName": ""
-        },
-        "name": "unnamedWire#92",
         "path": [
           {
-            "x": 320.0,
-            "y": 95.0
+            "x": 270.0,
+            "y": 180.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#93",
index 3ec88ac..2c007e5 100644 (file)
   "innerScale": 0.4,
   "submodel": {
     "components": [
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 40.0,
-          "y": 20.0
-        }
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 110.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "WireCrossPoint",
           "y": 149.0
         },
         "params": 1
+      },
+      {
+        "id": "xor",
+        "name": "xor#0",
+        "pos": {
+          "x": 40.0,
+          "y": 20.0
+        }
       }
     ],
     "wires": [
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "xor#0",
           "pinName": "A"
         },
         "name": "unnamedWire#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "xor#0",
           "pinName": "B"
         },
         "name": "unnamedWire#4",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "xor#0",
           "pinName": "Y"
         },
         "pin2": {
     "pinLabelMargin": 0.5
   },
   "outlineRendererSnippetID": "default",
-  "highLevelStateHandlerSnippetID": "standard",
-  "highLevelStateHandlerParams": {
-    "subcomponentHighLevelStates": {},
-    "atomicHighLevelStates": {}
-  },
+  "highLevelStateHandlerSnippetID": "default",
   "version": "0.1.5"
 }
\ No newline at end of file
index a199100..3b859b2 100644 (file)
@@ -1,11 +1,11 @@
 {
-  "width": 45.0,
-  "height": 46.0,
+  "width": 50.0,
+  "height": 65.0,
   "interfacePins": [
     {
       "location": {
-        "x": 14.0,
-        "y": 46.0
+        "x": 0.0,
+        "y": 10.0
       },
       "name": "C",
       "logicWidth": 1,
@@ -13,8 +13,8 @@
     },
     {
       "location": {
-        "x": 27.5,
-        "y": 46.0
+        "x": 0.0,
+        "y": 50.0
       },
       "name": "CINV",
       "logicWidth": 1,
@@ -23,7 +23,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 31.0
+        "y": 40.0
       },
       "name": "I",
       "logicWidth": 4,
@@ -32,7 +32,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 13.5
+        "y": 30.0
       },
       "name": "M",
       "logicWidth": 4,
@@ -40,8 +40,8 @@
     },
     {
       "location": {
-        "x": 4.0,
-        "y": 46.0
+        "x": 0.0,
+        "y": 20.0
       },
       "name": "MUX",
       "logicWidth": 2,
@@ -49,8 +49,8 @@
     },
     {
       "location": {
-        "x": 37.5,
-        "y": 46.0
+        "x": 0.0,
+        "y": 60.0
       },
       "name": "OVRRET",
       "logicWidth": 1,
@@ -58,8 +58,8 @@
     },
     {
       "location": {
-        "x": 45.0,
-        "y": 19.0
+        "x": 50.0,
+        "y": 10.0
       },
       "name": "Q",
       "logicWidth": 4,
@@ -67,7 +67,7 @@
     },
     {
       "location": {
-        "x": 15.5,
+        "x": 20.0,
         "y": 0.0
       },
       "name": "_EC",
@@ -76,7 +76,7 @@
     },
     {
       "location": {
-        "x": 25.5,
+        "x": 30.0,
         "y": 0.0
       },
       "name": "_EN",
@@ -85,7 +85,7 @@
     },
     {
       "location": {
-        "x": 35.5,
+        "x": 40.0,
         "y": 0.0
       },
       "name": "_EOVR",
@@ -94,7 +94,7 @@
     },
     {
       "location": {
-        "x": 5.5,
+        "x": 10.0,
         "y": 0.0
       },
       "name": "_EZ",
       "usage": "INPUT"
     }
   ],
-  "innerScale": 0.1,
+  "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 45.0,
-          "y": 240.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 100.0,
-          "y": 190.0
-        }
-      },
-      {
-        "id": "xor",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 215.0,
-          "y": 200.0
-        }
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 435.0,
-          "y": 175.0
-        },
-        "params": 4
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
         "pos": {
-          "x": 245.0,
-          "y": 245.0
+          "x": 155.0,
+          "y": 135.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#1",
         "pos": {
-          "x": 215.0,
-          "y": 255.0
+          "x": 125.0,
+          "y": 150.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#2",
         "pos": {
-          "x": 215.0,
-          "y": 235.0
+          "x": 125.0,
+          "y": 130.0
         },
         "params": 1
       },
         "name": "Splitter#0",
         "pos": {
           "x": 5.0,
-          "y": 120.0
+          "y": 135.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#1",
         "pos": {
           "x": 5.0,
-          "y": 295.0
+          "y": 185.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
         "name": "Splitter#2",
         "pos": {
-          "x": 45.0,
-          "y": 430.0
+          "x": 5.0,
+          "y": 95.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 230.0,
+          "y": 30.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 89.0,
-          "y": 234.0
+          "x": 19.0,
+          "y": 119.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 89.0,
-          "y": 224.0
+          "x": 59.0,
+          "y": 109.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 89.0,
-          "y": 214.0
+          "x": 59.0,
+          "y": 99.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 429.0,
-          "y": 204.0
+          "x": 224.0,
+          "y": 59.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 209.0,
-          "y": 244.0
+          "x": 114.0,
+          "y": 134.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 59.0,
+          "y": 119.0
         },
         "params": 1
       },
         "id": "dff4_finewe",
         "name": "dff4_finewe#0",
         "pos": {
-          "x": 375.0,
-          "y": 170.0
+          "x": 185.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 25.0,
+          "y": 125.0
+        }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#1",
+        "pos": {
+          "x": 65.0,
+          "y": 75.0
+        }
+      },
+      {
+        "id": "xor",
+        "name": "xor#0",
+        "pos": {
+          "x": 130.0,
+          "y": 105.0
         }
       }
     ],
           "pinName": "Q1"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#3",
+          "pinName": "O3"
         },
         "name": "unnamedWire#0",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#3",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "dff4_finewe#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_4"
         },
         "pin2": {
           "pinName": "O0"
         },
         "name": "unnamedWire#10",
-        "path": []
+        "path": [
+          {
+            "x": 20.0,
+            "y": 210.0
+          },
+          {
+            "x": 20.0,
+            "y": 215.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#3",
+          "pinName": "O0"
         },
         "name": "unnamedWire#11",
         "path": []
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#12",
         "path": [
           {
             "x": 20.0,
-            "y": 150.0
+            "y": 165.0
           },
           {
             "x": 20.0,
-            "y": 285.0
+            "y": 170.0
           }
         ]
       },
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#13",
         "path": [
           {
-            "x": 25.0,
-            "y": 140.0
+            "x": 20.0,
+            "y": 155.0
           },
           {
-            "x": 25.0,
-            "y": 275.0
+            "x": 20.0,
+            "y": 160.0
           }
         ]
       },
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#14",
         "path": [
           {
-            "x": 30.0,
-            "y": 130.0
+            "x": 20.0,
+            "y": 145.0
           },
           {
-            "x": 30.0,
-            "y": 265.0
+            "x": 20.0,
+            "y": 150.0
           }
         ]
       },
           "pinName": "I"
         },
         "name": "unnamedWire#15",
-        "path": [
-          {
-            "x": 40.0,
-            "y": 435.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
         "name": "unnamedWire#16",
         "path": [
           {
-            "x": 90.0,
-            "y": 440.0
+            "x": 20.0,
+            "y": 105.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I1_4"
         },
         "name": "unnamedWire#17",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I1_3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "name": "unnamedWire#18",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I1_2"
         },
         "name": "unnamedWire#19",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#3",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "dff4_finewe#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#20",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I0_1"
         },
         "pin2": {
         "name": "unnamedWire#21",
         "path": [
           {
-            "x": 90.0,
-            "y": 205.0
+            "x": 60.0,
+            "y": 90.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#22",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I0_3"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#25",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#0",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#27",
         "path": [
           {
-            "x": 40.0,
-            "y": 235.0
-          },
-          {
-            "x": 40.0,
-            "y": 245.0
+            "x": 20.0,
+            "y": 130.0
           }
         ]
       },
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "S0"
         },
         "name": "unnamedWire#28",
         "path": [
           {
-            "x": 85.0,
-            "y": 430.0
+            "x": 20.0,
+            "y": 95.0
           },
           {
-            "x": 85.0,
-            "y": 195.0
+            "x": 20.0,
+            "y": 80.0
           }
         ]
       },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "dff4_finewe#0",
           "pinName": "A"
         },
         "name": "unnamedWire#30",
-        "path": [
-          {
-            "x": 240.0,
-            "y": 245.0
-          },
-          {
-            "x": 240.0,
-            "y": 250.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
         "name": "unnamedWire#31",
         "path": [
           {
-            "x": 240.0,
-            "y": 260.0
+            "x": 150.0,
+            "y": 150.0
           },
           {
-            "x": 240.0,
-            "y": 265.0
+            "x": 150.0,
+            "y": 160.0
           }
         ]
       },
         "name": "unnamedWire#32",
         "path": [
           {
-            "x": 375.0,
-            "y": 360.0
-          },
-          {
-            "x": 205.0,
-            "y": 360.0
+            "x": 115.0,
+            "y": 300.0
           },
           {
-            "x": 205.0,
-            "y": 260.0
+            "x": 115.0,
+            "y": 155.0
           }
         ]
       },
         "name": "unnamedWire#34",
         "path": [
           {
-            "x": 430.0,
-            "y": 280.0
+            "x": 225.0,
+            "y": 175.0
           },
           {
-            "x": 210.0,
-            "y": 280.0
+            "x": 120.0,
+            "y": 175.0
           },
           {
-            "x": 210.0,
-            "y": 270.0
+            "x": 120.0,
+            "y": 165.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "Y2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "xor#0",
           "pinName": "A"
         },
         "name": "unnamedWire#35",
-        "path": []
+        "path": [
+          {
+            "x": 125.0,
+            "y": 90.0
+          },
+          {
+            "x": 125.0,
+            "y": 110.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "CINV"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "xor#0",
           "pinName": "B"
         },
         "name": "unnamedWire#36",
         "path": [
           {
-            "x": 275.0,
-            "y": 390.0
-          },
-          {
-            "x": 190.0,
-            "y": 390.0
+            "x": 105.0,
+            "y": 250.0
           },
           {
-            "x": 190.0,
-            "y": 215.0
+            "x": 105.0,
+            "y": 120.0
           }
         ]
       },
         "name": "unnamedWire#37",
         "path": [
           {
-            "x": 370.0,
-            "y": 185.0
+            "x": 180.0,
+            "y": 40.0
           },
           {
-            "x": 370.0,
+            "x": 180.0,
             "y": 5.0
           },
           {
-            "x": 55.0,
+            "x": 50.0,
             "y": 5.0
           }
         ]
         "name": "unnamedWire#38",
         "path": [
           {
-            "x": 140.0,
-            "y": 325.0
-          },
-          {
-            "x": 345.0,
-            "y": 325.0
+            "x": 55.0,
+            "y": 50.0
           },
           {
-            "x": 345.0,
-            "y": 175.0
+            "x": 55.0,
+            "y": 30.0
           }
         ]
       },
         "name": "unnamedWire#39",
         "path": [
           {
-            "x": 355.0,
-            "y": 215.0
+            "x": 200.0,
+            "y": 20.0
+          },
+          {
+            "x": 165.0,
+            "y": 20.0
+          },
+          {
+            "x": 165.0,
+            "y": 70.0
           }
         ]
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#3",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": "Q"
         },
         "name": "unnamedWire#4",
-        "path": []
+        "path": [
+          {
+            "x": 245.0,
+            "y": 45.0
+          },
+          {
+            "x": 245.0,
+            "y": 50.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#40",
         "path": [
           {
-            "x": 360.0,
-            "y": 205.0
+            "x": 170.0,
+            "y": 60.0
           },
           {
-            "x": 360.0,
+            "x": 170.0,
             "y": 15.0
           },
           {
-            "x": 255.0,
+            "x": 150.0,
             "y": 15.0
           }
         ]
         "name": "unnamedWire#41",
         "path": [
           {
-            "x": 155.0,
+            "x": 100.0,
             "y": 10.0
           },
           {
-            "x": 365.0,
+            "x": 175.0,
             "y": 10.0
           },
           {
-            "x": 365.0,
-            "y": 195.0
+            "x": 175.0,
+            "y": 50.0
           }
         ]
       },
           "pinName": "D1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "Y1"
         },
         "name": "unnamedWire#42",
-        "path": [
-          {
-            "x": 315.0,
-            "y": 225.0
-          },
-          {
-            "x": 315.0,
-            "y": 195.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "xor#0",
           "pinName": "Y"
         },
         "pin2": {
         "name": "unnamedWire#43",
         "path": [
           {
-            "x": 310.0,
-            "y": 205.0
+            "x": 170.0,
+            "y": 110.0
           },
           {
-            "x": 310.0,
-            "y": 235.0
+            "x": 170.0,
+            "y": 90.0
           }
         ]
       },
           "pinName": "D3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "Y3"
         },
         "name": "unnamedWire#44",
-        "path": [
-          {
-            "x": 305.0,
-            "y": 245.0
-          },
-          {
-            "x": 305.0,
-            "y": 225.0
-          },
-          {
-            "x": 170.0,
-            "y": 225.0
-          },
-          {
-            "x": 170.0,
-            "y": 215.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "mux1_4#1",
           "pinName": "Y4"
         },
         "name": "unnamedWire#45",
         "path": [
           {
-            "x": 160.0,
-            "y": 245.0
-          },
-          {
-            "x": 160.0,
-            "y": 225.0
+            "x": 115.0,
+            "y": 110.0
           }
         ]
       },
           "pinName": "D4"
         },
         "name": "unnamedWire#46",
-        "path": []
+        "path": [
+          {
+            "x": 180.0,
+            "y": 145.0
+          },
+          {
+            "x": 180.0,
+            "y": 110.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "A"
         },
         "name": "unnamedWire#47",
-        "path": [
-          {
-            "x": 210.0,
-            "y": 240.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
         "name": "unnamedWire#48",
         "path": [
           {
-            "x": 210.0,
-            "y": 250.0
+            "x": 115.0,
+            "y": 145.0
           }
         ]
       },
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#49",
         "path": [
           {
-            "x": 35.0,
-            "y": 120.0
+            "x": 20.0,
+            "y": 135.0
           },
           {
-            "x": 35.0,
-            "y": 255.0
+            "x": 20.0,
+            "y": 140.0
           }
         ]
       },
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#7",
-        "path": []
+        "path": [
+          {
+            "x": 20.0,
+            "y": 185.0
+          },
+          {
+            "x": 20.0,
+            "y": 180.0
+          }
+        ]
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_2"
         },
         "pin2": {
           "pinName": "O2"
         },
         "name": "unnamedWire#8",
-        "path": []
+        "path": [
+          {
+            "x": 20.0,
+            "y": 190.0
+          },
+          {
+            "x": 20.0,
+            "y": 195.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#9",
-        "path": []
+        "path": [
+          {
+            "x": 20.0,
+            "y": 205.0
+          },
+          {
+            "x": 20.0,
+            "y": 200.0
+          }
+        ]
       }
     ],
     "version": "0.1.1"
   },
   "symbolRendererSnippetID": "simpleRectangularLike",
   "symbolRendererParams": {
-    "centerText": "muSR",
+    "centerText": "µSR",
     "centerTextHeight": 5.0,
     "horizontalComponentCenter": 17.5,
     "pinLabelHeight": 3.5,
index 2a91d76..b1bc97f 100644 (file)
@@ -1,10 +1,10 @@
 {
-  "width": 72.0,
-  "height": 67.0,
+  "width": 60.0,
+  "height": 45.0,
   "interfacePins": [
     {
       "location": {
-        "x": 60.0,
+        "x": 40.0,
         "y": 0.0
       },
       "name": "C",
@@ -13,8 +13,8 @@
     },
     {
       "location": {
-        "x": 72.0,
-        "y": 40.0
+        "x": 60.0,
+        "y": 30.0
       },
       "name": "CI",
       "logicWidth": 1,
@@ -22,7 +22,7 @@
     },
     {
       "location": {
-        "x": 36.0,
+        "x": 30.0,
         "y": 0.0
       },
       "name": "D",
@@ -32,7 +32,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 50.0
+        "y": 25.0
       },
       "name": "I",
       "logicWidth": 4,
@@ -40,8 +40,8 @@
     },
     {
       "location": {
-        "x": 38.0,
-        "y": 67.0
+        "x": 35.0,
+        "y": 45.0
       },
       "name": "Y",
       "logicWidth": 12,
@@ -50,7 +50,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 38.0
+        "y": 10.0
       },
       "name": "_CC",
       "logicWidth": 1,
@@ -59,7 +59,7 @@
     {
       "location": {
         "x": 0.0,
-        "y": 44.0
+        "y": 15.0
       },
       "name": "_CCEN",
       "logicWidth": 1,
@@ -67,8 +67,8 @@
     },
     {
       "location": {
-        "x": 72.0,
-        "y": 14.0
+        "x": 60.0,
+        "y": 5.0
       },
       "name": "_FULL",
       "logicWidth": 1,
@@ -76,8 +76,8 @@
     },
     {
       "location": {
-        "x": 19.0,
-        "y": 67.0
+        "x": 15.0,
+        "y": 45.0
       },
       "name": "_MAP",
       "logicWidth": 1,
@@ -85,8 +85,8 @@
     },
     {
       "location": {
-        "x": 49.0,
-        "y": 67.0
+        "x": 40.0,
+        "y": 45.0
       },
       "name": "_OE",
       "logicWidth": 1,
@@ -94,8 +94,8 @@
     },
     {
       "location": {
-        "x": 13.0,
-        "y": 67.0
+        "x": 10.0,
+        "y": 45.0
       },
       "name": "_PL",
       "logicWidth": 1,
     {
       "location": {
         "x": 0.0,
-        "y": 6.0
+        "y": 5.0
       },
       "name": "_RLD",
       "logicWidth": 1,
     },
     {
       "location": {
-        "x": 25.0,
-        "y": 67.0
+        "x": 20.0,
+        "y": 45.0
       },
       "name": "_VECT",
       "logicWidth": 1,
         "id": "Am2910InstrPLA",
         "name": "Am2910InstrPLA#0",
         "pos": {
-          "x": 80.0,
-          "y": 155.0
+          "x": 70.0,
+          "y": 90.0
         }
       },
       {
         "id": "Am2910RegCntr",
         "name": "Am2910RegCntr#0",
         "pos": {
-          "x": 160.0,
-          "y": 25.0
+          "x": 130.0,
+          "y": 15.0
         }
       },
       {
         "id": "Am2910SP",
         "name": "Am2910SP#0",
         "pos": {
-          "x": 305.0,
-          "y": 55.0
+          "x": 240.0,
+          "y": 10.0
         }
       },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#0",
-        "pos": {
-          "x": 160.0,
-          "y": 95.0
-        },
-        "params": 12
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#1",
-        "pos": {
-          "x": 260.0,
-          "y": 115.0
-        },
-        "params": 12
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#2",
-        "pos": {
-          "x": 345.0,
-          "y": 180.0
-        },
-        "params": 12
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#3",
-        "pos": {
-          "x": 265.0,
-          "y": 150.0
-        },
-        "params": 12
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#4",
-        "pos": {
-          "x": 260.0,
-          "y": 85.0
-        },
-        "params": 3
-      },
-      {
-        "id": "BitDisplay",
-        "name": "BitDisplay#5",
-        "pos": {
-          "x": 260.0,
-          "y": 70.0
-        },
-        "params": 3
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
         "pos": {
           "x": 40.0,
-          "y": 185.0
+          "y": 45.0
         },
         "params": 1
       },
         "name": "NandGate#1",
         "pos": {
           "x": 10.0,
-          "y": 210.0
+          "y": 60.0
         },
         "params": 1
       },
         "id": "NandGate",
         "name": "NandGate#2",
         "pos": {
-          "x": 250.0,
-          "y": 305.0
+          "x": 205.0,
+          "y": 195.0
         },
         "params": 1
       },
         "id": "TriStateBuffer",
         "name": "TriStateBuffer#0",
         "pos": {
-          "x": 180.0,
-          "y": 290.0
+          "x": 165.0,
+          "y": 180.0
         },
         "params": {
           "logicWidth": 12,
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
         "pos": {
-          "x": 324.0,
-          "y": 149.0
+          "x": 259.0,
+          "y": 99.0
         },
         "params": 12
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#1",
         "pos": {
-          "x": 294.0,
-          "y": 104.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
-        "pos": {
-          "x": 244.0,
-          "y": 319.0
+          "x": 224.0,
+          "y": 59.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "pos": {
-          "x": 189.0,
-          "y": 274.0
+          "x": 174.0,
+          "y": 174.0
         },
         "params": 12
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#3",
         "pos": {
-          "x": 179.0,
-          "y": 89.0
+          "x": 164.0,
+          "y": 59.0
         },
         "params": 12
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
-          "x": 179.0,
-          "y": 14.0
+          "x": 149.0,
+          "y": 9.0
         },
         "params": 12
       },
         "name": "WireCrossPoint#5",
         "pos": {
           "x": 4.0,
-          "y": 219.0
+          "y": 74.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 299.0,
-          "y": 79.0
+          "x": 234.0,
+          "y": 34.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 299.0,
-          "y": 44.0
+          "x": 199.0,
+          "y": 34.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 299.0,
-          "y": 169.0
+          "x": 234.0,
+          "y": 69.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 299.0,
-          "y": 114.0
+          "x": 199.0,
+          "y": 209.0
         },
         "params": 1
       },
         "id": "dff12",
         "name": "dff12#0",
         "pos": {
-          "x": 305.0,
-          "y": 160.0
+          "x": 240.0,
+          "y": 105.0
         }
       },
       {
-        "id": "inc12",
-        "name": "inc12#0",
+        "id": "inc",
+        "name": "inc#0",
         "pos": {
-          "x": 305.0,
-          "y": 190.0
-        }
+          "x": 240.0,
+          "y": 140.0
+        },
+        "params": 12
       },
       {
         "id": "nor12",
         "name": "nor12#0",
         "pos": {
-          "x": 190.0,
-          "y": 80.0
+          "x": 175.0,
+          "y": 50.0
         }
       },
       {
         "id": "ram5_12",
         "name": "ram5_12#0",
         "pos": {
-          "x": 305.0,
-          "y": 100.0
+          "x": 240.0,
+          "y": 55.0
         }
       },
       {
         "id": "sel4_12",
         "name": "sel4_12#0",
         "pos": {
-          "x": 150.0,
-          "y": 175.0
+          "x": 135.0,
+          "y": 110.0
         }
       }
     ],
         "name": "unnamedWire#10",
         "path": [
           {
-            "x": 230.0,
-            "y": 90.0
+            "x": 215.0,
+            "y": 60.0
           },
           {
-            "x": 230.0,
-            "y": 120.0
+            "x": 215.0,
+            "y": 75.0
           },
           {
-            "x": 95.0,
-            "y": 120.0
+            "x": 85.0,
+            "y": 75.0
           }
         ]
       },
         "name": "unnamedWire#11",
         "path": [
           {
-            "x": 115.0,
-            "y": 160.0
+            "x": 105.0,
+            "y": 95.0
           },
           {
-            "x": 115.0,
-            "y": 45.0
+            "x": 105.0,
+            "y": 35.0
           }
         ]
       },
         "name": "unnamedWire#12",
         "path": [
           {
-            "x": 120.0,
-            "y": 170.0
+            "x": 110.0,
+            "y": 105.0
           },
           {
-            "x": 120.0,
-            "y": 55.0
+            "x": 110.0,
+            "y": 45.0
           }
         ]
       },
         "name": "unnamedWire#13",
         "path": [
           {
-            "x": 295.0,
-            "y": 220.0
+            "x": 225.0,
+            "y": 155.0
           }
         ]
       },
         "name": "unnamedWire#14",
         "path": [
           {
-            "x": 290.0,
-            "y": 230.0
+            "x": 230.0,
+            "y": 165.0
           },
           {
-            "x": 290.0,
-            "y": 70.0
+            "x": 230.0,
+            "y": 25.0
           }
         ]
       },
         "name": "unnamedWire#15",
         "path": [
           {
-            "x": 295.0,
-            "y": 60.0
+            "x": 225.0,
+            "y": 15.0
           }
         ]
       },
           "pinName": ""
         },
         "pin2": {
-          "compName": "inc12#0",
+          "compName": "inc#0",
           "pinName": "A"
         },
         "name": "unnamedWire#18",
         "path": [
           {
-            "x": 325.0,
-            "y": 275.0
+            "x": 260.0,
+            "y": 175.0
           }
         ]
       },
         "name": "unnamedWire#19",
         "path": [
           {
-            "x": 200.0,
-            "y": 130.0
+            "x": 185.0,
+            "y": 85.0
           }
         ]
       },
         "name": "unnamedWire#20",
         "path": [
           {
-            "x": 220.0,
-            "y": 150.0
+            "x": 205.0,
+            "y": 100.0
           }
         ]
       },
         "name": "unnamedWire#25",
         "path": [
           {
-            "x": 145.0,
-            "y": 15.0
+            "x": 125.0,
+            "y": 10.0
           },
           {
-            "x": 145.0,
-            "y": 150.0
+            "x": 125.0,
+            "y": 65.0
           },
           {
-            "x": 160.0,
-            "y": 150.0
+            "x": 145.0,
+            "y": 65.0
           }
         ]
       },
         "path": [
           {
             "x": 65.0,
-            "y": 195.0
+            "y": 55.0
           },
           {
             "x": 65.0,
-            "y": 160.0
+            "y": 95.0
           }
         ]
       },
         "path": [
           {
             "x": 5.0,
-            "y": 215.0
+            "y": 65.0
           }
         ]
       },
           "pinName": "B"
         },
         "name": "unnamedWire#32",
-        "path": [
-          {
-            "x": 5.0,
-            "y": 225.0
-          }
-        ]
+        "path": []
       },
       {
         "pin1": {
         "path": [
           {
             "x": 35.0,
-            "y": 220.0
+            "y": 70.0
           },
           {
             "x": 35.0,
-            "y": 200.0
+            "y": 60.0
           }
         ]
       },
           "pinName": "C"
         },
         "name": "unnamedWire#35",
-        "path": []
+        "path": [
+          {
+            "x": 235.0,
+            "y": 115.0
+          }
+        ]
       },
       {
         "pin1": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "inc12#0",
+          "compName": "inc#0",
           "pinName": "Y"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "inc12#0",
+          "compName": "inc#0",
           "pinName": "CI"
         },
         "pin2": {
         "name": "unnamedWire#42",
         "path": [
           {
-            "x": 85.0,
-            "y": 290.0
+            "x": 75.0,
+            "y": 180.0
           },
           {
-            "x": 65.0,
-            "y": 290.0
+            "x": 50.0,
+            "y": 180.0
           }
         ]
       },
           "pinName": "_MAP"
         },
         "name": "unnamedWire#43",
-        "path": []
+        "path": [
+          {
+            "x": 85.0,
+            "y": 185.0
+          },
+          {
+            "x": 75.0,
+            "y": 185.0
+          }
+        ]
       },
       {
         "pin1": {
         "name": "unnamedWire#44",
         "path": [
           {
-            "x": 105.0,
-            "y": 290.0
+            "x": 95.0,
+            "y": 190.0
           },
           {
-            "x": 125.0,
-            "y": 290.0
+            "x": 100.0,
+            "y": 190.0
           }
         ]
       },
         "name": "unnamedWire#45",
         "path": [
           {
-            "x": 70.0,
-            "y": 250.0
+            "x": 35.0,
+            "y": 125.0
           },
           {
-            "x": 70.0,
-            "y": 175.0
+            "x": 35.0,
+            "y": 110.0
           }
         ]
       },
-      {
-        "pin1": {
-          "compName": "Am2910RegCntr#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "BitDisplay#0",
-          "pinName": ""
-        },
-        "name": "unnamedWire#46",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "ram5_12#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "BitDisplay#1",
-          "pinName": ""
-        },
-        "name": "unnamedWire#47",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "inc12#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "BitDisplay#2",
-          "pinName": ""
-        },
-        "name": "unnamedWire#48",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "dff12#0",
-          "pinName": "Y"
-        },
-        "pin2": {
-          "compName": "BitDisplay#3",
-          "pinName": ""
-        },
-        "name": "unnamedWire#49",
-        "path": []
-      },
       {
         "pin1": {
           "compName": "dff12#0",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
         "name": "unnamedWire#50",
         "path": []
       },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#9",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#8",
-          "pinName": ""
-        },
-        "name": "unnamedWire#51",
-        "path": []
-      },
       {
         "pin1": {
           "compName": "TriStateBuffer#0",
           "pinName": "_OE"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "Am2910SP#0",
-          "pinName": "A"
-        },
-        "pin2": {
-          "compName": "BitDisplay#5",
-          "pinName": ""
-        },
-        "name": "unnamedWire#54",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Am2910SP#0",
-          "pinName": "B"
-        },
-        "pin2": {
-          "compName": "BitDisplay#4",
-          "pinName": ""
-        },
-        "name": "unnamedWire#55",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#57",
         "path": [
           {
-            "x": 245.0,
-            "y": 310.0
+            "x": 200.0,
+            "y": 200.0
           }
         ]
       },
         "name": "unnamedWire#58",
         "path": [
           {
-            "x": 275.0,
-            "y": 300.0
+            "x": 230.0,
+            "y": 190.0
           },
           {
-            "x": 275.0,
-            "y": 315.0
+            "x": 230.0,
+            "y": 205.0
           }
         ]
       },
           "pinName": ""
         },
         "name": "unnamedWire#9",
-        "path": []
+        "path": [
+          {
+            "x": 150.0,
+            "y": 60.0
+          }
+        ]
       }
     ],
     "version": "0.1.1"
   "highLevelStateHandlerSnippetID": "standard",
   "highLevelStateHandlerParams": {
     "subcomponentHighLevelStates": {
-      "r": {
+      "mupc": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "Am2910RegCntr#0"
+          "delegateTarget": "dff12#0"
         }
       },
-      "stack": {
+      "r": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram5_12#0"
+          "delegateTarget": "Am2910RegCntr#0"
         }
       },
-      "mupc": {
+      "sp": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "dff12#0"
+          "delegateTarget": "Am2910SP#0"
         }
       },
-      "sp": {
+      "stack": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "Am2910SP#0"
+          "delegateTarget": "ram5_12#0"
         }
       }
     },
index f5283a0..4d5ef60 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 175.0,
-          "y": 170.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 130.0,
-          "y": 160.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 130.0,
-          "y": 130.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#13",
-        "pos": {
-          "x": 175.0,
-          "y": 80.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#14",
-        "pos": {
-          "x": 175.0,
-          "y": 110.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#15",
-        "pos": {
-          "x": 130.0,
-          "y": 100.0
-        }
-      },
-      {
-        "id": "mux1_12",
-        "name": "DeserializedSubmodelComponent#17",
-        "pos": {
-          "x": 15.0,
-          "y": 90.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#4",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 175.0,
-          "y": 20.0
+          "x": 70.0,
+          "y": 65.0
+        },
+        "params": {
+          "logicWidth": 12,
+          "orientation": "RIGHT"
         }
       },
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#5",
+        "id": "Splitter",
+        "name": "Splitter#1",
         "pos": {
-          "x": 175.0,
-          "y": 50.0
+          "x": 250.0,
+          "y": 45.0
+        },
+        "params": {
+          "logicWidth": 12,
+          "orientation": "LEFT"
         }
       },
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#6",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
-          "x": 130.0,
-          "y": 10.0
-        }
+          "x": 124.0,
+          "y": 14.0
+        },
+        "params": 1
       },
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#7",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
         "pos": {
-          "x": 130.0,
-          "y": 40.0
-        }
+          "x": 124.0,
+          "y": 44.0
+        },
+        "params": 1
       },
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#8",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
         "pos": {
-          "x": 130.0,
-          "y": 70.0
-        }
+          "x": 169.0,
+          "y": 114.0
+        },
+        "params": 1
       },
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#9",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
         "pos": {
-          "x": 175.0,
-          "y": 140.0
-        }
+          "x": 124.0,
+          "y": 104.0
+        },
+        "params": 1
       },
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
         "pos": {
-          "x": 250.0,
-          "y": 45.0
+          "x": 124.0,
+          "y": 134.0
         },
-        "params": 12
+        "params": 1
       },
       {
-        "id": "Splitter",
-        "name": "Splitter#0",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
         "pos": {
-          "x": 70.0,
-          "y": 65.0
+          "x": 124.0,
+          "y": 74.0
         },
-        "params": 12
+        "params": 1
       },
       {
-        "id": "TextComponent",
-        "name": "TextComponent#0",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
         "pos": {
-          "x": -35.0,
-          "y": -5.0
+          "x": 264.0,
+          "y": 99.0
         },
-        "params": "a"
+        "params": 12
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 169.0,
           "y": 54.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 169.0,
           "y": 144.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 169.0,
           "y": 24.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
+        "name": "WireCrossPoint#9",
         "pos": {
           "x": 169.0,
           "y": 84.0
         "params": 1
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
+        "id": "dff",
+        "name": "dff#0",
         "pos": {
-          "x": 169.0,
-          "y": 114.0
-        },
-        "params": 1
+          "x": 175.0,
+          "y": 20.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
+        "id": "dff",
+        "name": "dff#1",
         "pos": {
-          "x": 124.0,
-          "y": 14.0
-        },
-        "params": 1
+          "x": 175.0,
+          "y": 50.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
+        "id": "dff",
+        "name": "dff#10",
         "pos": {
-          "x": 124.0,
-          "y": 44.0
-        },
-        "params": 1
+          "x": 175.0,
+          "y": 110.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
+        "id": "dff",
+        "name": "dff#11",
         "pos": {
-          "x": 124.0,
-          "y": 104.0
-        },
-        "params": 1
+          "x": 130.0,
+          "y": 100.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
+        "id": "dff",
+        "name": "dff#2",
         "pos": {
-          "x": 124.0,
-          "y": 134.0
-        },
-        "params": 1
+          "x": 130.0,
+          "y": 10.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
+        "id": "dff",
+        "name": "dff#3",
         "pos": {
-          "x": 124.0,
-          "y": 74.0
-        },
-        "params": 1
+          "x": 130.0,
+          "y": 40.0
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
+        "id": "dff",
+        "name": "dff#4",
         "pos": {
-          "x": 264.0,
-          "y": 99.0
-        },
-        "params": 12
+          "x": 130.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#5",
+        "pos": {
+          "x": 175.0,
+          "y": 140.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#6",
+        "pos": {
+          "x": 175.0,
+          "y": 170.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#7",
+        "pos": {
+          "x": 130.0,
+          "y": 160.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#8",
+        "pos": {
+          "x": 130.0,
+          "y": 130.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#9",
+        "pos": {
+          "x": 175.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "mux1_12",
+        "name": "mux1_12#0",
+        "pos": {
+          "x": 15.0,
+          "y": 90.0
+        }
       }
     ],
     "wires": [
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#0",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#11",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#10",
           "pinName": "D"
         },
         "name": "unnamedWire#11",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#8",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#5",
           "pinName": "D"
         },
         "name": "unnamedWire#13",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#7",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#6",
           "pinName": "D"
         },
         "name": "unnamedWire#15",
           "pinName": "WE"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1_12#0",
           "pinName": "S"
         },
         "name": "unnamedWire#16",
           "pinName": "D"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1_12#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#17",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1_12#0",
           "pinName": "Y"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#2",
           "pinName": "C"
         },
         "name": "unnamedWire#21",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#22",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#3",
           "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#23",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "name": "unnamedWire#24",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#4",
           "pinName": "C"
         },
         "name": "unnamedWire#25",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#26",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#11",
           "pinName": "C"
         },
         "name": "unnamedWire#27",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "name": "unnamedWire#28",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#8",
           "pinName": "C"
         },
         "name": "unnamedWire#29",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#17",
+          "compName": "mux1_12#0",
           "pinName": "I0"
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#3",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#7",
           "pinName": "C"
         },
         "name": "unnamedWire#30",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#6",
           "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#31",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#5",
           "pinName": "C"
         },
         "name": "unnamedWire#32",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#33",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#10",
           "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#34",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#35",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#9",
           "pinName": "C"
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#37",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#1",
           "pinName": "C"
         },
         "name": "unnamedWire#38",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#39",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#2",
           "pinName": "D"
         },
         "name": "unnamedWire#4",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#0",
           "pinName": "C"
         },
         "name": "unnamedWire#40",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#0",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#1",
+          "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#2",
           "pinName": "Q"
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#0",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I10"
+          "compName": "Splitter#1",
+          "pinName": "O10"
         },
         "name": "unnamedWire#54",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I9"
+          "compName": "Splitter#1",
+          "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#3",
           "pinName": "Q"
         },
         "name": "unnamedWire#55",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#1",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I8"
+          "compName": "Splitter#1",
+          "pinName": "O8"
         },
         "name": "unnamedWire#56",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I7"
+          "compName": "Splitter#1",
+          "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#4",
           "pinName": "Q"
         },
         "name": "unnamedWire#57",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#9",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I6"
+          "compName": "Splitter#1",
+          "pinName": "O6"
         },
         "name": "unnamedWire#58",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#1",
+          "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#11",
           "pinName": "Q"
         },
         "name": "unnamedWire#59",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#3",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#1",
+          "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#10",
           "pinName": "Q"
         },
         "name": "unnamedWire#60",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#8",
           "pinName": "Q"
         },
         "name": "unnamedWire#61",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#5",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#1",
+          "pinName": "O2"
         },
         "name": "unnamedWire#62",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#1",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#7",
           "pinName": "Q"
         },
         "name": "unnamedWire#63",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#6",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#1",
+          "pinName": "O0"
         },
         "name": "unnamedWire#64",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#1",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#65",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#1",
           "pinName": "D"
         },
         "name": "unnamedWire#7",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#4",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#9",
           "pinName": "D"
         },
         "name": "unnamedWire#9",
     "pinLabelMargin": 0.5
   },
   "outlineRendererSnippetID": "default",
-  "highLevelStateHandlerSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q12",
+            "q11",
+            "q10",
+            "q9",
+            "q8",
+            "q7",
+            "q6",
+            "q5",
+            "q4",
+            "q3",
+            "q2",
+            "q1"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#6",
+          "subStateID": "q"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#3",
+          "subStateID": "q"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#2",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#7",
+          "subStateID": "q"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#5",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#8",
+          "subStateID": "q"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#10",
+          "subStateID": "q"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#11",
+          "subStateID": "q"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#9",
+          "subStateID": "q"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#4",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      }
+    }
+  },
   "version": "0.1.5"
 }
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16.json
new file mode 100644 (file)
index 0000000..3b2dbb4
--- /dev/null
@@ -0,0 +1,1536 @@
+{
+  "width": 45.0,
+  "height": 55.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 25.0
+      },
+      "name": "D",
+      "logicWidth": 16,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 45.0,
+        "y": 25.0
+      },
+      "name": "Q",
+      "logicWidth": 16,
+      "usage": "TRISTATE"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 50.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 210.0,
+          "y": 50.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 74.0,
+          "y": 19.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 74.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 119.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 119.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 119.0,
+          "y": 89.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 119.0,
+          "y": 149.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 119.0,
+          "y": 179.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 74.0,
+          "y": 79.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 74.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 74.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 74.0,
+          "y": 199.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 74.0,
+          "y": 139.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 119.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 119.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "dff",
+        "name": "dff#0",
+        "pos": {
+          "x": 80.0,
+          "y": 15.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#1",
+        "pos": {
+          "x": 125.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#10",
+        "pos": {
+          "x": 125.0,
+          "y": 235.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#11",
+        "pos": {
+          "x": 80.0,
+          "y": 225.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#12",
+        "pos": {
+          "x": 80.0,
+          "y": 195.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#13",
+        "pos": {
+          "x": 125.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#14",
+        "pos": {
+          "x": 125.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#15",
+        "pos": {
+          "x": 80.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#2",
+        "pos": {
+          "x": 125.0,
+          "y": 55.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#3",
+        "pos": {
+          "x": 80.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#4",
+        "pos": {
+          "x": 125.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#5",
+        "pos": {
+          "x": 125.0,
+          "y": 115.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#6",
+        "pos": {
+          "x": 80.0,
+          "y": 75.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#7",
+        "pos": {
+          "x": 80.0,
+          "y": 105.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#8",
+        "pos": {
+          "x": 80.0,
+          "y": 135.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#9",
+        "pos": {
+          "x": 125.0,
+          "y": 205.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 50.0
+          },
+          {
+            "x": 20.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#1",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 40.0
+          },
+          {
+            "x": 25.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#15",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 180.0
+          },
+          {
+            "x": 45.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#14",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 160.0
+          },
+          {
+            "x": 40.0,
+            "y": 190.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#12",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 210.0
+          },
+          {
+            "x": 35.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 180.0
+          },
+          {
+            "x": 30.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#11",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 240.0
+          },
+          {
+            "x": 25.0,
+            "y": 190.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "dff#10",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 200.0
+          },
+          {
+            "x": 20.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 70.0
+          },
+          {
+            "x": 30.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#7",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#15",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#12",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#2",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 70.0
+          },
+          {
+            "x": 35.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#10",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#14",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#13",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#4",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#2",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 75.0,
+            "y": 10.0
+          },
+          {
+            "x": 120.0,
+            "y": 10.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 20.0
+          },
+          {
+            "x": 10.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#49",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 50.0
+          },
+          {
+            "x": 200.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#4",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#1",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#50",
+        "path": [
+          {
+            "x": 195.0,
+            "y": 30.0
+          },
+          {
+            "x": 195.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#51",
+        "path": [
+          {
+            "x": 190.0,
+            "y": 70.0
+          },
+          {
+            "x": 190.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "dff#2",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#52",
+        "path": [
+          {
+            "x": 185.0,
+            "y": 80.0
+          },
+          {
+            "x": 185.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#53",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 90.0
+          },
+          {
+            "x": 180.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#4",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#54",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 90.0
+          },
+          {
+            "x": 175.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "dff#7",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#5",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#57",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 130.0
+          },
+          {
+            "x": 170.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#13",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#58",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 150.0
+          },
+          {
+            "x": 175.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "dff#15",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#59",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 150.0
+          },
+          {
+            "x": 180.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#7",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 120.0
+          },
+          {
+            "x": 65.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#14",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#60",
+        "path": [
+          {
+            "x": 185.0,
+            "y": 160.0
+          },
+          {
+            "x": 185.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "dff#12",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 190.0,
+            "y": 170.0
+          },
+          {
+            "x": 190.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#9",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 195.0,
+            "y": 210.0
+          },
+          {
+            "x": 195.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#63",
+        "path": [
+          {
+            "x": 200.0,
+            "y": 190.0
+          },
+          {
+            "x": 200.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#10",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#64",
+        "path": [
+          {
+            "x": 205.0,
+            "y": 240.0
+          },
+          {
+            "x": 205.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 60.0,
+            "y": 120.0
+          },
+          {
+            "x": 60.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#8",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 150.0
+          },
+          {
+            "x": 55.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "dff#13",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 140.0
+          },
+          {
+            "x": 50.0,
+            "y": 160.0
+          }
+        ]
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n16 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 30.0,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q16",
+            "q15",
+            "q14",
+            "q13",
+            "q12",
+            "q11",
+            "q10",
+            "q9",
+            "q8",
+            "q7",
+            "q6",
+            "q5",
+            "q4",
+            "q3",
+            "q2",
+            "q1"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#10",
+          "subStateID": "q"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#7",
+          "subStateID": "q"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#4",
+          "subStateID": "q"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#6",
+          "subStateID": "q"
+        }
+      },
+      "q13": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#2",
+          "subStateID": "q"
+        }
+      },
+      "q14": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#3",
+          "subStateID": "q"
+        }
+      },
+      "q15": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      },
+      "q16": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#11",
+          "subStateID": "q"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#9",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#12",
+          "subStateID": "q"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#14",
+          "subStateID": "q"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#15",
+          "subStateID": "q"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#13",
+          "subStateID": "q"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#8",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#5",
+          "subStateID": "q"
+        }
+      }
+    }
+  },
+  "version": "0.1.5"
+}
\ No newline at end of file
index af3897d..7889ffa 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 140.0,
-          "y": 15.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 190.0,
-          "y": 25.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 190.0,
-          "y": 235.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 140.0,
-          "y": 225.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 140.0,
-          "y": 195.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#13",
-        "pos": {
-          "x": 190.0,
-          "y": 145.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#14",
-        "pos": {
-          "x": 190.0,
-          "y": 175.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#15",
-        "pos": {
-          "x": 140.0,
-          "y": 165.0
-        }
-      },
-      {
-        "id": "mux1_16",
-        "name": "DeserializedSubmodelComponent#16",
-        "pos": {
-          "x": 15.0,
-          "y": 95.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 190.0,
-          "y": 55.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#3",
-        "pos": {
-          "x": 140.0,
-          "y": 45.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#4",
-        "pos": {
-          "x": 190.0,
-          "y": 85.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#5",
-        "pos": {
-          "x": 190.0,
-          "y": 115.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#6",
-        "pos": {
-          "x": 140.0,
-          "y": 75.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#7",
-        "pos": {
-          "x": 140.0,
-          "y": 105.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#8",
-        "pos": {
-          "x": 140.0,
-          "y": 135.0
-        }
-      },
-      {
-        "id": "dff",
-        "name": "DeserializedSubmodelComponent#9",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 190.0,
-          "y": 205.0
+          "x": 75.0,
+          "y": 70.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
         }
       },
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "Splitter",
+        "name": "Splitter#1",
         "pos": {
           "x": 275.0,
           "y": 50.0
         },
-        "params": 16
-      },
-      {
-        "id": "Splitter",
-        "name": "Splitter#0",
-        "pos": {
-          "x": 75.0,
-          "y": 70.0
-        },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
-        "pos": {
-          "x": 184.0,
-          "y": 29.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "pos": {
           "x": 184.0,
           "y": 119.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 184.0,
           "y": 209.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 184.0,
           "y": 89.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 184.0,
           "y": 149.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 184.0,
           "y": 179.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#5",
+        "name": "WireCrossPoint#4",
         "pos": {
           "x": 134.0,
           "y": 169.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#6",
+        "name": "WireCrossPoint#5",
         "pos": {
           "x": 134.0,
           "y": 199.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 134.0,
           "y": 139.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#8",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 289.0,
           "y": 124.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 184.0,
           "y": 59.0
         },
         "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 184.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "dff",
+        "name": "dff#0",
+        "pos": {
+          "x": 140.0,
+          "y": 15.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#1",
+        "pos": {
+          "x": 190.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#10",
+        "pos": {
+          "x": 190.0,
+          "y": 235.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#11",
+        "pos": {
+          "x": 140.0,
+          "y": 225.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#12",
+        "pos": {
+          "x": 140.0,
+          "y": 195.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#13",
+        "pos": {
+          "x": 190.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#14",
+        "pos": {
+          "x": 190.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#15",
+        "pos": {
+          "x": 140.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#2",
+        "pos": {
+          "x": 190.0,
+          "y": 55.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#3",
+        "pos": {
+          "x": 140.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#4",
+        "pos": {
+          "x": 190.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#5",
+        "pos": {
+          "x": 190.0,
+          "y": 115.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#6",
+        "pos": {
+          "x": 140.0,
+          "y": 75.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#7",
+        "pos": {
+          "x": 140.0,
+          "y": 105.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#8",
+        "pos": {
+          "x": 140.0,
+          "y": 135.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#9",
+        "pos": {
+          "x": 190.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "mux1_16",
+        "name": "mux1_16#0",
+        "pos": {
+          "x": 15.0,
+          "y": 95.0
+        }
       }
     ],
     "wires": [
           "pinName": "O15"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "dff#0",
           "pinName": "D"
         },
         "name": "unnamedWire#0",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "dff#1",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#15",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#14",
           "pinName": "D"
         },
         "name": "unnamedWire#11",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#12",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#9",
           "pinName": "D"
         },
         "name": "unnamedWire#13",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#11",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#10",
           "pinName": "D"
         },
         "name": "unnamedWire#15",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux1_16#0",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "dff#0",
           "pinName": "C"
         },
         "name": "unnamedWire#17",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "dff#3",
           "pinName": "C"
         },
         "name": "unnamedWire#19",
           "pinName": "O13"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "dff#3",
           "pinName": "D"
         },
         "name": "unnamedWire#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#6",
           "pinName": "C"
         },
         "name": "unnamedWire#21",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#7",
           "pinName": "C"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#24",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#8",
           "pinName": "C"
         },
         "name": "unnamedWire#25",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "name": "unnamedWire#26",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#15",
           "pinName": "C"
         },
         "name": "unnamedWire#27",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#28",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#12",
           "pinName": "C"
         },
         "name": "unnamedWire#29",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "dff#2",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#11",
           "pinName": "C"
         },
         "name": "unnamedWire#30",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#10",
           "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "name": "unnamedWire#31",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#9",
           "pinName": "C"
         },
         "name": "unnamedWire#32",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#33",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#14",
           "pinName": "C"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#34",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#35",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#13",
           "pinName": "C"
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#37",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#5",
           "pinName": "C"
         },
         "name": "unnamedWire#38",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "name": "unnamedWire#39",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#6",
           "pinName": "D"
         },
         "name": "unnamedWire#4",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#4",
           "pinName": "C"
         },
         "name": "unnamedWire#40",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#41",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "dff#2",
           "pinName": "C"
         },
         "name": "unnamedWire#42",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#43",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "dff#1",
           "pinName": "C"
         },
         "name": "unnamedWire#44",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#45",
           "pinName": "_WE"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux1_16#0",
           "pinName": "S"
         },
         "name": "unnamedWire#47",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I15"
+          "compName": "Splitter#1",
+          "pinName": "O15"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "dff#0",
           "pinName": "Q"
         },
         "name": "unnamedWire#49",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#4",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "dff#1",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I14"
+          "compName": "Splitter#1",
+          "pinName": "O14"
         },
         "name": "unnamedWire#50",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I13"
+          "compName": "Splitter#1",
+          "pinName": "O13"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "dff#3",
           "pinName": "Q"
         },
         "name": "unnamedWire#51",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I12"
+          "compName": "Splitter#1",
+          "pinName": "O12"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "dff#2",
           "pinName": "Q"
         },
         "name": "unnamedWire#52",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#1",
+          "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "dff#6",
           "pinName": "Q"
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "dff#4",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I10"
+          "compName": "Splitter#1",
+          "pinName": "O10"
         },
         "name": "unnamedWire#54",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I9"
+          "compName": "Splitter#1",
+          "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#7",
           "pinName": "Q"
         },
         "name": "unnamedWire#55",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#5",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I8"
+          "compName": "Splitter#1",
+          "pinName": "O8"
         },
         "name": "unnamedWire#56",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I7"
+          "compName": "Splitter#1",
+          "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#8",
           "pinName": "Q"
         },
         "name": "unnamedWire#57",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#13",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I6"
+          "compName": "Splitter#1",
+          "pinName": "O6"
         },
         "name": "unnamedWire#58",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#1",
+          "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "dff#15",
           "pinName": "Q"
         },
         "name": "unnamedWire#59",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "dff#7",
           "pinName": "D"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#1",
+          "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "dff#14",
           "pinName": "Q"
         },
         "name": "unnamedWire#60",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "dff#12",
           "pinName": "Q"
         },
         "name": "unnamedWire#61",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "dff#9",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#1",
+          "pinName": "O2"
         },
         "name": "unnamedWire#62",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#1",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "dff#11",
           "pinName": "Q"
         },
         "name": "unnamedWire#63",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "dff#10",
           "pinName": "Q"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#1",
+          "pinName": "O0"
         },
         "name": "unnamedWire#64",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#1",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#65",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux1_16#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#67",
           "pinName": "D"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#16",
+          "compName": "mux1_16#0",
           "pinName": "I0"
         },
         "name": "unnamedWire#68",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "dff#5",
           "pinName": "D"
         },
         "name": "unnamedWire#7",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "dff#8",
           "pinName": "D"
         },
         "pin2": {
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "dff#13",
           "pinName": "D"
         },
         "name": "unnamedWire#9",
     "pinLabelMargin": 0.5
   },
   "outlineRendererSnippetID": "default",
-  "highLevelStateHandlerSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q16",
+            "q15",
+            "q14",
+            "q13",
+            "q12",
+            "q11",
+            "q10",
+            "q9",
+            "q8",
+            "q7",
+            "q6",
+            "q5",
+            "q4",
+            "q3",
+            "q2",
+            "q1"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#10",
+          "subStateID": "q"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#7",
+          "subStateID": "q"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#4",
+          "subStateID": "q"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#6",
+          "subStateID": "q"
+        }
+      },
+      "q13": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#2",
+          "subStateID": "q"
+        }
+      },
+      "q14": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#3",
+          "subStateID": "q"
+        }
+      },
+      "q15": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      },
+      "q16": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#11",
+          "subStateID": "q"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#9",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#12",
+          "subStateID": "q"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#14",
+          "subStateID": "q"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#15",
+          "subStateID": "q"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#13",
+          "subStateID": "q"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#8",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#5",
+          "subStateID": "q"
+        }
+      }
+    }
+  },
   "version": "0.1.5"
 }
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json
new file mode 100644 (file)
index 0000000..be8da02
--- /dev/null
@@ -0,0 +1,1632 @@
+{
+  "width": 60.0,
+  "height": 60.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 35.0
+      },
+      "name": "D",
+      "logicWidth": 16,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 60.0,
+        "y": 25.0
+      },
+      "name": "Q",
+      "logicWidth": 16,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 20.0
+      },
+      "name": "WE",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 75.0,
+          "y": 70.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 275.0,
+          "y": 50.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 134.0,
+          "y": 19.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 134.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 184.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 184.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 184.0,
+          "y": 89.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 184.0,
+          "y": 149.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 184.0,
+          "y": 179.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 134.0,
+          "y": 79.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 134.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 134.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 134.0,
+          "y": 199.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 134.0,
+          "y": 139.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 289.0,
+          "y": 124.0
+        },
+        "params": 16
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 184.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 184.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "dff",
+        "name": "dff#0",
+        "pos": {
+          "x": 140.0,
+          "y": 15.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#1",
+        "pos": {
+          "x": 190.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#10",
+        "pos": {
+          "x": 190.0,
+          "y": 235.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#11",
+        "pos": {
+          "x": 140.0,
+          "y": 225.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#12",
+        "pos": {
+          "x": 140.0,
+          "y": 195.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#13",
+        "pos": {
+          "x": 190.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#14",
+        "pos": {
+          "x": 190.0,
+          "y": 175.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#15",
+        "pos": {
+          "x": 140.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#2",
+        "pos": {
+          "x": 190.0,
+          "y": 55.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#3",
+        "pos": {
+          "x": 140.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#4",
+        "pos": {
+          "x": 190.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#5",
+        "pos": {
+          "x": 190.0,
+          "y": 115.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#6",
+        "pos": {
+          "x": 140.0,
+          "y": 75.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#7",
+        "pos": {
+          "x": 140.0,
+          "y": 105.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#8",
+        "pos": {
+          "x": 140.0,
+          "y": 135.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#9",
+        "pos": {
+          "x": 190.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "mux1_16",
+        "name": "mux1_16#0",
+        "pos": {
+          "x": 15.0,
+          "y": 95.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 70.0
+          },
+          {
+            "x": 90.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#1",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 40.0
+          },
+          {
+            "x": 95.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#15",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 180.0
+          },
+          {
+            "x": 120.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#14",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 180.0
+          },
+          {
+            "x": 115.0,
+            "y": 190.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#12",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 210.0
+          },
+          {
+            "x": 110.0,
+            "y": 190.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 200.0
+          },
+          {
+            "x": 105.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#11",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 240.0
+          },
+          {
+            "x": 100.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "dff#10",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 95.0,
+            "y": 220.0
+          },
+          {
+            "x": 95.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "mux1_16#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#2",
+        "path": [
+          {
+            "x": 100.0,
+            "y": 90.0
+          },
+          {
+            "x": 100.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#7",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#15",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#12",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#2",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 105.0,
+            "y": 70.0
+          },
+          {
+            "x": 105.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 135.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#10",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 185.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#14",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#13",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 110.0,
+            "y": 110.0
+          },
+          {
+            "x": 110.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#4",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#2",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#45",
+        "path": [
+          {
+            "x": 135.0,
+            "y": 10.0
+          },
+          {
+            "x": 185.0,
+            "y": 10.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "WE"
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "S"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 20.0
+          },
+          {
+            "x": 35.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "dff#0",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#49",
+        "path": [
+          {
+            "x": 265.0,
+            "y": 50.0
+          },
+          {
+            "x": 265.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#4",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#5",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 100.0
+          },
+          {
+            "x": 115.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#1",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#50",
+        "path": [
+          {
+            "x": 260.0,
+            "y": 30.0
+          },
+          {
+            "x": 260.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "dff#3",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#51",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 70.0
+          },
+          {
+            "x": 255.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "dff#2",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#52",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 80.0
+          },
+          {
+            "x": 250.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#53",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 90.0
+          },
+          {
+            "x": 245.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#4",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#54",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 90.0
+          },
+          {
+            "x": 240.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "dff#7",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#5",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#57",
+        "path": [
+          {
+            "x": 235.0,
+            "y": 130.0
+          },
+          {
+            "x": 235.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#13",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#58",
+        "path": [
+          {
+            "x": 240.0,
+            "y": 150.0
+          },
+          {
+            "x": 240.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "dff#15",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#59",
+        "path": [
+          {
+            "x": 245.0,
+            "y": 150.0
+          },
+          {
+            "x": 245.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#7",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#6",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 120.0
+          },
+          {
+            "x": 120.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#14",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#60",
+        "path": [
+          {
+            "x": 250.0,
+            "y": 160.0
+          },
+          {
+            "x": 250.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "dff#12",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 255.0,
+            "y": 170.0
+          },
+          {
+            "x": 255.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#9",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 260.0,
+            "y": 210.0
+          },
+          {
+            "x": 260.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#63",
+        "path": [
+          {
+            "x": 265.0,
+            "y": 190.0
+          },
+          {
+            "x": 265.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#10",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#64",
+        "path": [
+          {
+            "x": 270.0,
+            "y": 240.0
+          },
+          {
+            "x": 270.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "I0"
+        },
+        "name": "unnamedWire#67",
+        "path": [
+          {
+            "x": 290.0,
+            "y": 275.0
+          },
+          {
+            "x": 10.0,
+            "y": 275.0
+          },
+          {
+            "x": 10.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "mux1_16#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#68",
+        "path": [
+          {
+            "x": 5.0,
+            "y": 175.0
+          },
+          {
+            "x": 5.0,
+            "y": 185.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#7",
+        "path": [
+          {
+            "x": 125.0,
+            "y": 140.0
+          },
+          {
+            "x": 125.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#8",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "dff#13",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n16 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 30.0,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q16",
+            "q15",
+            "q14",
+            "q13",
+            "q12",
+            "q11",
+            "q10",
+            "q9",
+            "q8",
+            "q7",
+            "q6",
+            "q5",
+            "q4",
+            "q3",
+            "q2",
+            "q1"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#10",
+          "subStateID": "q"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#7",
+          "subStateID": "q"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#4",
+          "subStateID": "q"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#6",
+          "subStateID": "q"
+        }
+      },
+      "q13": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#2",
+          "subStateID": "q"
+        }
+      },
+      "q14": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#3",
+          "subStateID": "q"
+        }
+      },
+      "q15": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      },
+      "q16": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#11",
+          "subStateID": "q"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#9",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#12",
+          "subStateID": "q"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#14",
+          "subStateID": "q"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#15",
+          "subStateID": "q"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#13",
+          "subStateID": "q"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#8",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#5",
+          "subStateID": "q"
+        }
+      }
+    }
+  },
+  "version": "0.1.5"
+}
\ No newline at end of file
index d54a34e..99b9a91 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 55.0,
-          "y": 70.0
-        }
-      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
           "x": 115.0,
           "y": 170.0
         }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 55.0,
+          "y": 70.0
+        }
       }
     ],
     "wires": [
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
           "pinName": "D1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#10",
           "pinName": "D2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_2"
         },
         "name": "unnamedWire#11",
           "pinName": "D3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#12",
           "pinName": "D4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_4"
         },
         "name": "unnamedWire#17",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#24",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#25",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#28",
           "pinName": "WE"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#9",
   "highLevelStateHandlerParams": {
     "subcomponentHighLevelStates": {},
     "atomicHighLevelStates": {
-      "q1": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dff#0",
-          "subStateID": "q"
-        }
-      },
-      "q2": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dff#1",
-          "subStateID": "q"
-        }
-      },
       "q": {
         "id": "bitVectorSplitting",
         "params": {
           "vectorPartTargets": [
-            "q1",
-            "q2",
+            "q4",
             "q3",
-            "q4"
+            "q2",
+            "q1"
           ],
           "vectorPartLengthes": [
             1,
           ]
         }
       },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      },
       "q3": {
         "id": "delegating",
         "params": {
index 2902594..9a18841 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 55.0,
-          "y": 70.0
-        }
-      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#0",
           "x": 115.0,
           "y": 170.0
         }
+      },
+      {
+        "id": "mux1_4",
+        "name": "mux1_4#0",
+        "pos": {
+          "x": 55.0,
+          "y": 70.0
+        }
       }
     ],
     "wires": [
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
           "pinName": "D1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_1"
         },
         "name": "unnamedWire#10",
           "pinName": "D2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_2"
         },
         "name": "unnamedWire#11",
           "pinName": "D3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_3"
         },
         "name": "unnamedWire#12",
           "pinName": "D4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I0_4"
         },
         "name": "unnamedWire#17",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y2"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y3"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "Y4"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_1"
         },
         "name": "unnamedWire#24",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_2"
         },
         "name": "unnamedWire#25",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_3"
         },
         "name": "unnamedWire#26",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "I1_4"
         },
         "name": "unnamedWire#28",
           "pinName": "_WE"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux1_4#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#9",
   "highLevelStateHandlerParams": {
     "subcomponentHighLevelStates": {},
     "atomicHighLevelStates": {
-      "q1": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dff#0",
-          "subStateID": "q"
-        }
-      },
-      "q2": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dff#1",
-          "subStateID": "q"
-        }
-      },
       "q": {
         "id": "bitVectorSplitting",
         "params": {
           "vectorPartTargets": [
-            "q1",
-            "q2",
+            "q4",
             "q3",
-            "q4"
+            "q2",
+            "q1"
           ],
           "vectorPartLengthes": [
             1,
           ]
         }
       },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#1",
+          "subStateID": "q"
+        }
+      },
       "q3": {
         "id": "delegating",
         "params": {
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff8.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff8.json
new file mode 100644 (file)
index 0000000..2251459
--- /dev/null
@@ -0,0 +1,836 @@
+{
+  "width": 35.0,
+  "height": 30.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "D",
+      "logicWidth": 8,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 35.0,
+        "y": 15.0
+      },
+      "name": "Q",
+      "logicWidth": 8,
+      "usage": "TRISTATE"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 40.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 160.0,
+          "y": 40.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 39.0,
+          "y": 14.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 89.0,
+          "y": 54.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 39.0,
+          "y": 44.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 39.0,
+          "y": 74.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 89.0,
+          "y": 84.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 89.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "dff",
+        "name": "dff#10",
+        "pos": {
+          "x": 95.0,
+          "y": 50.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#11",
+        "pos": {
+          "x": 45.0,
+          "y": 40.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#4",
+        "pos": {
+          "x": 45.0,
+          "y": 10.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#5",
+        "pos": {
+          "x": 95.0,
+          "y": 80.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#6",
+        "pos": {
+          "x": 95.0,
+          "y": 110.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#7",
+        "pos": {
+          "x": 45.0,
+          "y": 100.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#8",
+        "pos": {
+          "x": 45.0,
+          "y": 70.0
+        }
+      },
+      {
+        "id": "dff",
+        "name": "dff#9",
+        "pos": {
+          "x": 95.0,
+          "y": 20.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 5.0
+          },
+          {
+            "x": 90.0,
+            "y": 5.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#1",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 15.0
+          },
+          {
+            "x": 10.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#11",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#10",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 55.0
+          },
+          {
+            "x": 25.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#10",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#11",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 70.0
+          },
+          {
+            "x": 25.0,
+            "y": 65.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#8",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 85.0
+          },
+          {
+            "x": 25.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#13",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 90.0
+          },
+          {
+            "x": 25.0,
+            "y": 95.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#7",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 115.0
+          },
+          {
+            "x": 25.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "dff#6",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#15",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 110.0
+          },
+          {
+            "x": 20.0,
+            "y": 125.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#7",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#30",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#6",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#31",
+        "path": [
+          {
+            "x": 90.0,
+            "y": 115.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#5",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff#10",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff#4",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "dff#4",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#57",
+        "path": [
+          {
+            "x": 155.0,
+            "y": 40.0
+          },
+          {
+            "x": 155.0,
+            "y": 15.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#9",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#58",
+        "path": [
+          {
+            "x": 150.0,
+            "y": 25.0
+          },
+          {
+            "x": 150.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "dff#11",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#59",
+        "path": [
+          {
+            "x": 145.0,
+            "y": 60.0
+          },
+          {
+            "x": 145.0,
+            "y": 45.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "dff#10",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#60",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 70.0
+          },
+          {
+            "x": 140.0,
+            "y": 55.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "dff#8",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#61",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 80.0
+          },
+          {
+            "x": 140.0,
+            "y": 75.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#5",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#62",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 85.0
+          },
+          {
+            "x": 140.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "dff#7",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#63",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 100.0
+          },
+          {
+            "x": 140.0,
+            "y": 105.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#6",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#64",
+        "path": [
+          {
+            "x": 140.0,
+            "y": 115.0
+          },
+          {
+            "x": 140.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "dff#4",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#8",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 25.0
+          },
+          {
+            "x": 20.0,
+            "y": 40.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "dff#9",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#9",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 50.0
+          },
+          {
+            "x": 25.0,
+            "y": 35.0
+          }
+        ]
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n8 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 30.0,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q8",
+            "q7",
+            "q6",
+            "q5",
+            "q4",
+            "q3",
+            "q2",
+            "q1"
+          ],
+          "vectorPartLengthes": [
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1,
+            1
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#6",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#7",
+          "subStateID": "q"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#5",
+          "subStateID": "q"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#8",
+          "subStateID": "q"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#10",
+          "subStateID": "q"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#11",
+          "subStateID": "q"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#9",
+          "subStateID": "q"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff#4",
+          "subStateID": "q"
+        }
+      }
+    }
+  },
+  "version": "0.1.5"
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff80.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff80.json
new file mode 100644 (file)
index 0000000..e1f37bc
--- /dev/null
@@ -0,0 +1,3563 @@
+{
+  "width": 25.0,
+  "height": 165.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "C",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 85.0
+      },
+      "name": "D",
+      "logicWidth": 80,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 25.0,
+        "y": 85.0
+      },
+      "name": "Q",
+      "logicWidth": 80,
+      "usage": "OUTPUT"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 15.0,
+          "y": 30.0
+        },
+        "params": {
+          "logicWidth": 80,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 90.0,
+          "y": 750.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#10",
+        "pos": {
+          "x": 30.0,
+          "y": 670.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#11",
+        "pos": {
+          "x": 30.0,
+          "y": 750.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#12",
+        "pos": {
+          "x": 90.0,
+          "y": 510.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#13",
+        "pos": {
+          "x": 90.0,
+          "y": 590.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#14",
+        "pos": {
+          "x": 90.0,
+          "y": 110.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#15",
+        "pos": {
+          "x": 90.0,
+          "y": 430.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#16",
+        "pos": {
+          "x": 90.0,
+          "y": 190.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#17",
+        "pos": {
+          "x": 90.0,
+          "y": 350.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#18",
+        "pos": {
+          "x": 90.0,
+          "y": 270.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#19",
+        "pos": {
+          "x": 90.0,
+          "y": 670.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 30.0,
+          "y": 30.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#20",
+        "pos": {
+          "x": 90.0,
+          "y": 30.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#21",
+        "pos": {
+          "x": 105.0,
+          "y": 30.0
+        },
+        "params": {
+          "logicWidth": 80,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 30.0,
+          "y": 110.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 30.0,
+          "y": 190.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#5",
+        "pos": {
+          "x": 30.0,
+          "y": 270.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#6",
+        "pos": {
+          "x": 30.0,
+          "y": 350.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#7",
+        "pos": {
+          "x": 30.0,
+          "y": 430.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#8",
+        "pos": {
+          "x": 30.0,
+          "y": 510.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#9",
+        "pos": {
+          "x": 30.0,
+          "y": 590.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
+        "pos": {
+          "x": 44.0,
+          "y": 54.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 44.0,
+          "y": 134.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 44.0,
+          "y": 214.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 44.0,
+          "y": 294.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 44.0,
+          "y": 454.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 44.0,
+          "y": 374.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 44.0,
+          "y": 614.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 44.0,
+          "y": 534.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 44.0,
+          "y": 694.0
+        },
+        "params": 1
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#0",
+        "pos": {
+          "x": 50.0,
+          "y": 770.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#1",
+        "pos": {
+          "x": 50.0,
+          "y": 690.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#2",
+        "pos": {
+          "x": 50.0,
+          "y": 610.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#3",
+        "pos": {
+          "x": 50.0,
+          "y": 530.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#4",
+        "pos": {
+          "x": 50.0,
+          "y": 450.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#5",
+        "pos": {
+          "x": 50.0,
+          "y": 370.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#6",
+        "pos": {
+          "x": 50.0,
+          "y": 290.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#7",
+        "pos": {
+          "x": 50.0,
+          "y": 210.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#8",
+        "pos": {
+          "x": 50.0,
+          "y": 130.0
+        }
+      },
+      {
+        "id": "dff8",
+        "name": "dff8#9",
+        "pos": {
+          "x": 50.0,
+          "y": 50.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O79"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O78"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O69"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O59"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#100",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O58"
+        },
+        "name": "unnamedWire#101",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O57"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#102",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O56"
+        },
+        "name": "unnamedWire#103",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O55"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#104",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O54"
+        },
+        "name": "unnamedWire#105",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O53"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#106",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O52"
+        },
+        "name": "unnamedWire#107",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O51"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#108",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O50"
+        },
+        "name": "unnamedWire#109",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O68"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O49"
+        },
+        "pin2": {
+          "compName": "Splitter#18",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#110",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O48"
+        },
+        "name": "unnamedWire#111",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O47"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#112",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O46"
+        },
+        "name": "unnamedWire#113",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O45"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#114",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O44"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O43"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#116",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O42"
+        },
+        "name": "unnamedWire#117",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O41"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#118",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O40"
+        },
+        "name": "unnamedWire#119",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O67"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O39"
+        },
+        "pin2": {
+          "compName": "Splitter#15",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#120",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#15",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O38"
+        },
+        "name": "unnamedWire#121",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O37"
+        },
+        "pin2": {
+          "compName": "Splitter#15",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#122",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#15",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O36"
+        },
+        "name": "unnamedWire#123",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O35"
+        },
+        "pin2": {
+          "compName": "Splitter#15",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#124",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#15",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O34"
+        },
+        "name": "unnamedWire#125",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O33"
+        },
+        "pin2": {
+          "compName": "Splitter#15",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#126",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#15",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O32"
+        },
+        "name": "unnamedWire#127",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O31"
+        },
+        "pin2": {
+          "compName": "Splitter#12",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#128",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#12",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O30"
+        },
+        "name": "unnamedWire#129",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O66"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O29"
+        },
+        "pin2": {
+          "compName": "Splitter#12",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#130",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#12",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O28"
+        },
+        "name": "unnamedWire#131",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O27"
+        },
+        "pin2": {
+          "compName": "Splitter#12",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#132",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#12",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O26"
+        },
+        "name": "unnamedWire#133",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O25"
+        },
+        "pin2": {
+          "compName": "Splitter#12",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#134",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#12",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O24"
+        },
+        "name": "unnamedWire#135",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O23"
+        },
+        "pin2": {
+          "compName": "Splitter#13",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#136",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#13",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O22"
+        },
+        "name": "unnamedWire#137",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O21"
+        },
+        "pin2": {
+          "compName": "Splitter#13",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#138",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#13",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O20"
+        },
+        "name": "unnamedWire#139",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O65"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O19"
+        },
+        "pin2": {
+          "compName": "Splitter#13",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#140",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#13",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O18"
+        },
+        "name": "unnamedWire#141",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O17"
+        },
+        "pin2": {
+          "compName": "Splitter#13",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#142",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#13",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O16"
+        },
+        "name": "unnamedWire#143",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#144",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#145",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#146",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#147",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#148",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#149",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O64"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#150",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#151",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#152",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#154",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#155",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#156",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#157",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#158",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#159",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O63"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#9",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#160",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff8#9",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#161",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#8",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#162",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#7",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#163",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#6",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#164",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#5",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#165",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#7",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#4",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#166",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#8",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#3",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#167",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#9",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#2",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#168",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#10",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#1",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#169",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O62"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#11",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#170",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#0",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#171",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff8#1",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#172",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#13",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#2",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#173",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff8#3",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#12",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#174",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#15",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#4",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#175",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff8#5",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#176",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#18",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#6",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#177",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "dff8#7",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#178",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "dff8#8",
+          "pinName": "Q"
+        },
+        "name": "unnamedWire#179",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O61"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "D"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#180",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Q"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#181",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "name": "unnamedWire#182",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 25.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#9",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#183",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#8",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#184",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#0",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "name": "unnamedWire#185",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#1",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "name": "unnamedWire#186",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#7",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#187",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#2",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "name": "unnamedWire#188",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#6",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#189",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O60"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#3",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#190",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#5",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#191",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#192",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#4",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#193",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#194",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#3",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#195",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#196",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#2",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#197",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#198",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#1",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#199",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O77"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O59"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "dff8#0",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#200",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 775.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O58"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O57"
+        },
+        "pin2": {
+          "compName": "Splitter#4",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#4",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O56"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O55"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O54"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O53"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O52"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O51"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O50"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O76"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O49"
+        },
+        "pin2": {
+          "compName": "Splitter#5",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#5",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O48"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O47"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O46"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O45"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O44"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O43"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O42"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O41"
+        },
+        "pin2": {
+          "compName": "Splitter#6",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#6",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O40"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O75"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O39"
+        },
+        "pin2": {
+          "compName": "Splitter#7",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#7",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O38"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O37"
+        },
+        "pin2": {
+          "compName": "Splitter#7",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#7",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O36"
+        },
+        "name": "unnamedWire#43",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O35"
+        },
+        "pin2": {
+          "compName": "Splitter#7",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#44",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#7",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O34"
+        },
+        "name": "unnamedWire#45",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O33"
+        },
+        "pin2": {
+          "compName": "Splitter#7",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#7",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O32"
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O31"
+        },
+        "pin2": {
+          "compName": "Splitter#8",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#48",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#8",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O30"
+        },
+        "name": "unnamedWire#49",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O74"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O29"
+        },
+        "pin2": {
+          "compName": "Splitter#8",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#8",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O28"
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O27"
+        },
+        "pin2": {
+          "compName": "Splitter#8",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#52",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#8",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O26"
+        },
+        "name": "unnamedWire#53",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O25"
+        },
+        "pin2": {
+          "compName": "Splitter#8",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#54",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#8",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O24"
+        },
+        "name": "unnamedWire#55",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O23"
+        },
+        "pin2": {
+          "compName": "Splitter#9",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#56",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#9",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O22"
+        },
+        "name": "unnamedWire#57",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O21"
+        },
+        "pin2": {
+          "compName": "Splitter#9",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#58",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#9",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O20"
+        },
+        "name": "unnamedWire#59",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O73"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O19"
+        },
+        "pin2": {
+          "compName": "Splitter#9",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#60",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#9",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O18"
+        },
+        "name": "unnamedWire#61",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O17"
+        },
+        "pin2": {
+          "compName": "Splitter#9",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#62",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#9",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O16"
+        },
+        "name": "unnamedWire#63",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "Splitter#10",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#64",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#10",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#65",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "Splitter#10",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#66",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#10",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#67",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#10",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#68",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#10",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#69",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O72"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#10",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#70",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#10",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#71",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#11",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#72",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#11",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#73",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#11",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#74",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#11",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#75",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#11",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#76",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#11",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#11",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#78",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#11",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#79",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O71"
+        },
+        "pin2": {
+          "compName": "Splitter#3",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O79"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#80",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O78"
+        },
+        "name": "unnamedWire#81",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O77"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#82",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O76"
+        },
+        "name": "unnamedWire#83",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O75"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#84",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O74"
+        },
+        "name": "unnamedWire#85",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O73"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#86",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O72"
+        },
+        "name": "unnamedWire#87",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O71"
+        },
+        "pin2": {
+          "compName": "Splitter#14",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#88",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O70"
+        },
+        "name": "unnamedWire#89",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#3",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O70"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O69"
+        },
+        "pin2": {
+          "compName": "Splitter#14",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#90",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O68"
+        },
+        "name": "unnamedWire#91",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O67"
+        },
+        "pin2": {
+          "compName": "Splitter#14",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#92",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O66"
+        },
+        "name": "unnamedWire#93",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O65"
+        },
+        "pin2": {
+          "compName": "Splitter#14",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#94",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#14",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O64"
+        },
+        "name": "unnamedWire#95",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O63"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O62"
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O61"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#98",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O60"
+        },
+        "name": "unnamedWire#99",
+        "path": []
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "D flip flop\n80 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 30.0,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q80-73",
+            "q72-65",
+            "q64-57",
+            "q56-49",
+            "q48-41",
+            "q40-33",
+            "q32-25",
+            "q24-17",
+            "q16-9",
+            "q8-1"
+          ],
+          "vectorPartLengthes": [
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q1"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q2"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q3"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q4"
+        }
+      },
+      "q13": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q5"
+        }
+      },
+      "q14": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q6"
+        }
+      },
+      "q15": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q7"
+        }
+      },
+      "q16": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q8"
+        }
+      },
+      "q16-9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q"
+        }
+      },
+      "q17": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q1"
+        }
+      },
+      "q18": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q2"
+        }
+      },
+      "q19": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q3"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q2"
+        }
+      },
+      "q20": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q4"
+        }
+      },
+      "q21": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q5"
+        }
+      },
+      "q22": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q6"
+        }
+      },
+      "q23": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q7"
+        }
+      },
+      "q24": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q8"
+        }
+      },
+      "q24-17": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q"
+        }
+      },
+      "q25": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q1"
+        }
+      },
+      "q26": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q2"
+        }
+      },
+      "q27": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q3"
+        }
+      },
+      "q28": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q4"
+        }
+      },
+      "q29": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q5"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q3"
+        }
+      },
+      "q30": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q6"
+        }
+      },
+      "q31": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q7"
+        }
+      },
+      "q32": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q8"
+        }
+      },
+      "q32-25": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q"
+        }
+      },
+      "q33": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q1"
+        }
+      },
+      "q34": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q2"
+        }
+      },
+      "q35": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q3"
+        }
+      },
+      "q36": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q4"
+        }
+      },
+      "q37": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q5"
+        }
+      },
+      "q38": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q6"
+        }
+      },
+      "q39": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q7"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q4"
+        }
+      },
+      "q40": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q8"
+        }
+      },
+      "q40-33": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q"
+        }
+      },
+      "q41": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q1"
+        }
+      },
+      "q42": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q2"
+        }
+      },
+      "q43": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q3"
+        }
+      },
+      "q44": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q4"
+        }
+      },
+      "q45": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q5"
+        }
+      },
+      "q46": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q6"
+        }
+      },
+      "q47": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q7"
+        }
+      },
+      "q48": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q8"
+        }
+      },
+      "q48-41": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q"
+        }
+      },
+      "q49": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q1"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q5"
+        }
+      },
+      "q50": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q2"
+        }
+      },
+      "q51": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q3"
+        }
+      },
+      "q52": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q4"
+        }
+      },
+      "q53": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q5"
+        }
+      },
+      "q54": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q6"
+        }
+      },
+      "q55": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q7"
+        }
+      },
+      "q56": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q8"
+        }
+      },
+      "q56-49": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q"
+        }
+      },
+      "q57": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q1"
+        }
+      },
+      "q58": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q2"
+        }
+      },
+      "q59": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q3"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q6"
+        }
+      },
+      "q60": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q4"
+        }
+      },
+      "q61": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q5"
+        }
+      },
+      "q62": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q6"
+        }
+      },
+      "q63": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q7"
+        }
+      },
+      "q64": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q8"
+        }
+      },
+      "q64-57": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q"
+        }
+      },
+      "q65": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q1"
+        }
+      },
+      "q66": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q2"
+        }
+      },
+      "q67": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q3"
+        }
+      },
+      "q68": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q4"
+        }
+      },
+      "q69": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q5"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q7"
+        }
+      },
+      "q70": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q6"
+        }
+      },
+      "q71": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q7"
+        }
+      },
+      "q72": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q8"
+        }
+      },
+      "q72-65": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q"
+        }
+      },
+      "q73": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q1"
+        }
+      },
+      "q74": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q2"
+        }
+      },
+      "q75": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q3"
+        }
+      },
+      "q76": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q4"
+        }
+      },
+      "q77": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q5"
+        }
+      },
+      "q78": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q6"
+        }
+      },
+      "q79": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q7"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q8"
+        }
+      },
+      "q8-1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q"
+        }
+      },
+      "q80": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q8"
+        }
+      },
+      "q80-73": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q1"
+        }
+      }
+    }
+  },
+  "version": "0.1.5"
+}
\ No newline at end of file
index 27361df..87f5370 100644 (file)
   "highLevelStateHandlerParams": {
     "subcomponentHighLevelStates": {},
     "atomicHighLevelStates": {
-      "q1": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dlatch#0",
-          "subStateID": "q"
-        }
-      },
-      "q2": {
-        "id": "delegating",
-        "params": {
-          "delegateTarget": "dlatch#1",
-          "subStateID": "q"
-        }
-      },
       "q": {
         "id": "bitVectorSplitting",
         "params": {
           "vectorPartTargets": [
-            "q1",
-            "q2",
+            "q4",
             "q3",
-            "q4"
+            "q2",
+            "q1"
           ],
           "vectorPartLengthes": [
             1,
           ]
         }
       },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dlatch#0",
+          "subStateID": "q"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dlatch#1",
+          "subStateID": "q"
+        }
+      },
       "q3": {
         "id": "delegating",
         "params": {
index 0d1cb5a..9f1da98 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 95.0,
-          "y": 145.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 95.0,
-          "y": 205.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 150.0,
-          "y": 285.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#13",
-        "pos": {
-          "x": 150.0,
-          "y": 225.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#14",
-        "pos": {
-          "x": 95.0,
-          "y": 265.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#15",
-        "pos": {
-          "x": 150.0,
-          "y": 345.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#4",
-        "pos": {
-          "x": 150.0,
-          "y": 45.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#5",
-        "pos": {
-          "x": 95.0,
-          "y": 85.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#6",
-        "pos": {
-          "x": 150.0,
-          "y": 105.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#7",
-        "pos": {
-          "x": 95.0,
-          "y": 25.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#8",
-        "pos": {
-          "x": 95.0,
-          "y": 325.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#9",
-        "pos": {
-          "x": 150.0,
-          "y": 165.0
-        }
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 235.0,
-          "y": 95.0
-        },
-        "params": 12
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 45.0
         },
-        "params": 12
+        "params": {
+          "logicWidth": 12,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 245.0
         },
-        "params": 12
+        "params": {
+          "logicWidth": 12,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
+        "id": "Splitter",
+        "name": "Splitter#2",
         "pos": {
-          "x": 144.0,
-          "y": 239.0
+          "x": 235.0,
+          "y": 95.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 12,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 139.0,
-          "y": 229.0
+          "y": 49.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 144.0,
-          "y": 299.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
-        "pos": {
-          "x": 139.0,
-          "y": 289.0
+          "y": 59.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
+        "name": "WireCrossPoint#10",
         "pos": {
           "x": 89.0,
           "y": 4.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 84.0,
           "y": 19.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 49.0,
           "y": 24.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 49.0,
           "y": 14.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 84.0,
           "y": 269.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 89.0,
           "y": 279.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#20",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 84.0,
           "y": 209.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#21",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 89.0,
           "y": 219.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#22",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 89.0,
           "y": 159.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#23",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 84.0,
           "y": 149.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#24",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 144.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
         "pos": {
           "x": 84.0,
           "y": 89.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#25",
+        "name": "WireCrossPoint#21",
         "pos": {
           "x": 89.0,
           "y": 99.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#26",
+        "name": "WireCrossPoint#22",
         "pos": {
           "x": 84.0,
           "y": 29.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#27",
+        "name": "WireCrossPoint#23",
         "pos": {
           "x": 89.0,
           "y": 39.0
         },
         "params": 1
       },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#3",
+        "pos": {
+          "x": 139.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#4",
         "pos": {
           "x": 139.0,
-          "y": 49.0
+          "y": 169.0
         },
         "params": 1
       },
         "name": "WireCrossPoint#5",
         "pos": {
           "x": 144.0,
-          "y": 59.0
+          "y": 179.0
         },
         "params": 1
       },
         "name": "WireCrossPoint#6",
         "pos": {
           "x": 144.0,
-          "y": 119.0
+          "y": 239.0
         },
         "params": 1
       },
         "name": "WireCrossPoint#7",
         "pos": {
           "x": 139.0,
-          "y": 109.0
+          "y": 229.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 139.0,
-          "y": 169.0
+          "x": 144.0,
+          "y": 299.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 144.0,
-          "y": 179.0
+          "x": 139.0,
+          "y": 289.0
         },
         "params": 1
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#0",
+        "pos": {
+          "x": 150.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#1",
+        "pos": {
+          "x": 95.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#10",
+        "pos": {
+          "x": 95.0,
+          "y": 265.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#11",
+        "pos": {
+          "x": 150.0,
+          "y": 345.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#2",
+        "pos": {
+          "x": 150.0,
+          "y": 105.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#3",
+        "pos": {
+          "x": 95.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#4",
+        "pos": {
+          "x": 95.0,
+          "y": 325.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#5",
+        "pos": {
+          "x": 150.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#6",
+        "pos": {
+          "x": 95.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#7",
+        "pos": {
+          "x": 95.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#8",
+        "pos": {
+          "x": 150.0,
+          "y": 285.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#9",
+        "pos": {
+          "x": 150.0,
+          "y": 225.0
+        }
       }
     ],
     "wires": [
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "name": "unnamedWire#0",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "name": "unnamedWire#1",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#7",
           "pinName": "S1"
         },
         "name": "unnamedWire#10",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#2",
+          "pinName": "O11"
         },
         "name": "unnamedWire#103",
         "path": [
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I10"
+          "compName": "Splitter#2",
+          "pinName": "O10"
         },
         "name": "unnamedWire#104",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I9"
+          "compName": "Splitter#2",
+          "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#1",
           "pinName": "Y"
         },
         "name": "unnamedWire#105",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#2",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I8"
+          "compName": "Splitter#2",
+          "pinName": "O8"
         },
         "name": "unnamedWire#106",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I7"
+          "compName": "Splitter#2",
+          "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#6",
           "pinName": "Y"
         },
         "name": "unnamedWire#107",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#5",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I6"
+          "compName": "Splitter#2",
+          "pinName": "O6"
         },
         "name": "unnamedWire#108",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#2",
+          "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#7",
           "pinName": "Y"
         },
         "name": "unnamedWire#109",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#7",
           "pinName": "S2"
         },
         "name": "unnamedWire#11",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#9",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#2",
+          "pinName": "O4"
         },
         "name": "unnamedWire#110",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#2",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#10",
           "pinName": "Y"
         },
         "name": "unnamedWire#111",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#8",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#2",
+          "pinName": "O2"
         },
         "name": "unnamedWire#112",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#2",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#4",
           "pinName": "Y"
         },
         "name": "unnamedWire#113",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#11",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#2",
+          "pinName": "O0"
         },
         "name": "unnamedWire#114",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#2",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "name": "unnamedWire#116",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#10",
           "pinName": "S1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#12",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#10",
           "pinName": "S2"
         },
         "name": "unnamedWire#13",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#11",
           "pinName": "S1"
         },
         "name": "unnamedWire#16",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#8",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#18",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#8",
           "pinName": "S1"
         },
         "name": "unnamedWire#19",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "name": "unnamedWire#2",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#9",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#20",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#9",
           "pinName": "S1"
         },
         "name": "unnamedWire#21",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#5",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#22",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#5",
           "pinName": "S1"
         },
         "name": "unnamedWire#23",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#2",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#24",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#2",
           "pinName": "S1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "name": "unnamedWire#25",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#0",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#26",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#0",
           "pinName": "S1"
         },
         "name": "unnamedWire#27",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#14",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#3",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "name": "unnamedWire#35",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#37",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#38",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#39",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#3",
           "pinName": "S1"
         },
         "name": "unnamedWire#4",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#40",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#41",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#42",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#11",
           "pinName": "S2"
         },
         "name": "unnamedWire#43",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#26",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "name": "unnamedWire#44",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "name": "unnamedWire#45",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "name": "unnamedWire#46",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "name": "unnamedWire#47",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#4",
           "pinName": "S1"
         },
         "name": "unnamedWire#48",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#4",
           "pinName": "S2"
         },
         "name": "unnamedWire#49",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#3",
           "pinName": "S2"
         },
         "name": "unnamedWire#5",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "name": "unnamedWire#50",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "name": "unnamedWire#51",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "name": "unnamedWire#52",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#27",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#1",
           "pinName": "S1"
         },
         "name": "unnamedWire#6",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#3",
           "pinName": "I1"
         },
         "name": "unnamedWire#64",
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#65",
           "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#1",
           "pinName": "I1"
         },
         "name": "unnamedWire#66",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#2",
           "pinName": "I1"
         },
         "name": "unnamedWire#67",
           "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#6",
           "pinName": "I1"
         },
         "name": "unnamedWire#68",
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#5",
           "pinName": "I1"
         },
         "name": "unnamedWire#69",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#1",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "name": "unnamedWire#7",
           "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#7",
           "pinName": "I1"
         },
         "name": "unnamedWire#70",
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#9",
           "pinName": "I1"
         },
         "name": "unnamedWire#71",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#10",
           "pinName": "I1"
         },
         "name": "unnamedWire#72",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#8",
           "pinName": "I1"
         },
         "name": "unnamedWire#73",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#4",
           "pinName": "I1"
         },
         "name": "unnamedWire#74",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#11",
           "pinName": "I1"
         },
         "name": "unnamedWire#75",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#6",
           "pinName": "S1"
         },
         "name": "unnamedWire#8",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#3",
           "pinName": "I2"
         },
         "name": "unnamedWire#82",
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#0",
           "pinName": "I2"
         },
         "name": "unnamedWire#83",
           "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#1",
           "pinName": "I2"
         },
         "name": "unnamedWire#84",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#2",
           "pinName": "I2"
         },
         "name": "unnamedWire#85",
           "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#6",
           "pinName": "I2"
         },
         "name": "unnamedWire#86",
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#5",
           "pinName": "I2"
         },
         "name": "unnamedWire#87",
           "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#7",
           "pinName": "I2"
         },
         "name": "unnamedWire#88",
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#9",
           "pinName": "I2"
         },
         "name": "unnamedWire#89",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#6",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "name": "unnamedWire#9",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#10",
           "pinName": "I2"
         },
         "name": "unnamedWire#90",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#8",
           "pinName": "I2"
         },
         "name": "unnamedWire#91",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#4",
           "pinName": "I2"
         },
         "name": "unnamedWire#92",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#11",
           "pinName": "I2"
         },
         "name": "unnamedWire#93",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "name": "unnamedWire#94",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "name": "unnamedWire#95",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#13",
           "pinName": ""
         },
         "pin2": {
           "pinName": "S"
         },
         "pin2": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "name": "unnamedWire#98",
index 65ce55c..e29bbbf 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 115.0,
-          "y": 25.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 175.0,
-          "y": 45.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#10",
-        "pos": {
-          "x": 115.0,
-          "y": 265.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#11",
-        "pos": {
-          "x": 115.0,
-          "y": 325.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#12",
-        "pos": {
-          "x": 175.0,
-          "y": 405.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#13",
-        "pos": {
-          "x": 175.0,
-          "y": 345.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#14",
-        "pos": {
-          "x": 115.0,
-          "y": 385.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#15",
-        "pos": {
-          "x": 175.0,
-          "y": 465.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 115.0,
-          "y": 85.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#3",
-        "pos": {
-          "x": 175.0,
-          "y": 105.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#4",
-        "pos": {
-          "x": 175.0,
-          "y": 165.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#5",
-        "pos": {
-          "x": 115.0,
-          "y": 205.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#6",
-        "pos": {
-          "x": 175.0,
-          "y": 225.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#7",
-        "pos": {
-          "x": 115.0,
-          "y": 145.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#8",
-        "pos": {
-          "x": 115.0,
-          "y": 445.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#9",
-        "pos": {
-          "x": 175.0,
-          "y": 285.0
-        }
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 260.0,
-          "y": 175.0
-        },
-        "params": 16
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 50.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 375.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 260.0,
+          "y": 175.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
           "y": 299.0
         },
         "params": 1
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#0",
+        "pos": {
+          "x": 115.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#1",
+        "pos": {
+          "x": 175.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#10",
+        "pos": {
+          "x": 115.0,
+          "y": 265.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#11",
+        "pos": {
+          "x": 115.0,
+          "y": 325.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#12",
+        "pos": {
+          "x": 175.0,
+          "y": 405.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#13",
+        "pos": {
+          "x": 175.0,
+          "y": 345.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#14",
+        "pos": {
+          "x": 115.0,
+          "y": 385.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#15",
+        "pos": {
+          "x": 175.0,
+          "y": 465.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#2",
+        "pos": {
+          "x": 115.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#3",
+        "pos": {
+          "x": 175.0,
+          "y": 105.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#4",
+        "pos": {
+          "x": 175.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#5",
+        "pos": {
+          "x": 115.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#6",
+        "pos": {
+          "x": 175.0,
+          "y": 225.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#7",
+        "pos": {
+          "x": 115.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#8",
+        "pos": {
+          "x": 115.0,
+          "y": 445.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#9",
+        "pos": {
+          "x": 175.0,
+          "y": 285.0
+        }
       }
     ],
     "wires": [
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "S1"
         },
         "name": "unnamedWire#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "S2"
         },
         "name": "unnamedWire#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#11",
           "pinName": "S1"
         },
         "name": "unnamedWire#10",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I14"
+          "compName": "Splitter#2",
+          "pinName": "O14"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "Y"
         },
         "name": "unnamedWire#100",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "sel1#2",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I13"
+          "compName": "Splitter#2",
+          "pinName": "O13"
         },
         "name": "unnamedWire#101",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I12"
+          "compName": "Splitter#2",
+          "pinName": "O12"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "sel1#3",
           "pinName": "Y"
         },
         "name": "unnamedWire#102",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#7",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#2",
+          "pinName": "O11"
         },
         "name": "unnamedWire#103",
         "path": [
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#4",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I10"
+          "compName": "Splitter#2",
+          "pinName": "O10"
         },
         "name": "unnamedWire#104",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I9"
+          "compName": "Splitter#2",
+          "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#5",
           "pinName": "Y"
         },
         "name": "unnamedWire#105",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#6",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I8"
+          "compName": "Splitter#2",
+          "pinName": "O8"
         },
         "name": "unnamedWire#106",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I7"
+          "compName": "Splitter#2",
+          "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#10",
           "pinName": "Y"
         },
         "name": "unnamedWire#107",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#9",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I6"
+          "compName": "Splitter#2",
+          "pinName": "O6"
         },
         "name": "unnamedWire#108",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#2",
+          "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#11",
           "pinName": "Y"
         },
         "name": "unnamedWire#109",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#11",
           "pinName": "S2"
         },
         "name": "unnamedWire#11",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#13",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#2",
+          "pinName": "O4"
         },
         "name": "unnamedWire#110",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#2",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#14",
           "pinName": "Y"
         },
         "name": "unnamedWire#111",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#12",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#2",
+          "pinName": "O2"
         },
         "name": "unnamedWire#112",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#2",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#8",
           "pinName": "Y"
         },
         "name": "unnamedWire#113",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#15",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#2",
+          "pinName": "O0"
         },
         "name": "unnamedWire#114",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#2",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#14",
           "pinName": "S1"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#14",
           "pinName": "S2"
         },
         "name": "unnamedWire#13",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#15",
           "pinName": "S1"
         },
         "name": "unnamedWire#16",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#12",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#12",
           "pinName": "S1"
         },
         "name": "unnamedWire#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "sel1#2",
           "pinName": "S1"
         },
         "name": "unnamedWire#2",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#13",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#13",
           "pinName": "S1"
         },
         "name": "unnamedWire#21",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#9",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#9",
           "pinName": "S1"
         },
         "name": "unnamedWire#23",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#6",
           "pinName": "S2"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#6",
           "pinName": "S1"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#4",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#4",
           "pinName": "S1"
         },
         "name": "unnamedWire#27",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "sel1#3",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "sel1#3",
           "pinName": "S1"
         },
         "name": "unnamedWire#29",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "sel1#2",
           "pinName": "S2"
         },
         "name": "unnamedWire#3",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "S1"
         },
         "name": "unnamedWire#31",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#7",
           "pinName": "S1"
         },
         "name": "unnamedWire#4",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#15",
           "pinName": "S2"
         },
         "name": "unnamedWire#43",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#8",
           "pinName": "S1"
         },
         "name": "unnamedWire#48",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#8",
           "pinName": "S2"
         },
         "name": "unnamedWire#49",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#7",
           "pinName": "S2"
         },
         "name": "unnamedWire#5",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#5",
           "pinName": "S1"
         },
         "name": "unnamedWire#6",
           "pinName": "O15"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#60",
           "pinName": "O14"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "I1"
         },
         "name": "unnamedWire#61",
           "pinName": "O13"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "sel1#2",
           "pinName": "I1"
         },
         "name": "unnamedWire#62",
           "pinName": "O12"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "sel1#3",
           "pinName": "I1"
         },
         "name": "unnamedWire#63",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#7",
           "pinName": "I1"
         },
         "name": "unnamedWire#64",
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#4",
           "pinName": "I1"
         },
         "name": "unnamedWire#65",
           "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#5",
           "pinName": "I1"
         },
         "name": "unnamedWire#66",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#6",
           "pinName": "I1"
         },
         "name": "unnamedWire#67",
           "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#10",
           "pinName": "I1"
         },
         "name": "unnamedWire#68",
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#9",
           "pinName": "I1"
         },
         "name": "unnamedWire#69",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#5",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#11",
           "pinName": "I1"
         },
         "name": "unnamedWire#70",
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#13",
           "pinName": "I1"
         },
         "name": "unnamedWire#71",
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#14",
           "pinName": "I1"
         },
         "name": "unnamedWire#72",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#12",
           "pinName": "I1"
         },
         "name": "unnamedWire#73",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#8",
           "pinName": "I1"
         },
         "name": "unnamedWire#74",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#15",
           "pinName": "I1"
         },
         "name": "unnamedWire#75",
           "pinName": "O15"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "I2"
         },
         "name": "unnamedWire#78",
           "pinName": "O14"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "I2"
         },
         "name": "unnamedWire#79",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#10",
           "pinName": "S1"
         },
         "name": "unnamedWire#8",
           "pinName": "O13"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "sel1#2",
           "pinName": "I2"
         },
         "name": "unnamedWire#80",
           "pinName": "O12"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "sel1#3",
           "pinName": "I2"
         },
         "name": "unnamedWire#81",
           "pinName": "O11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#7",
+          "compName": "sel1#7",
           "pinName": "I2"
         },
         "name": "unnamedWire#82",
           "pinName": "O10"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#4",
+          "compName": "sel1#4",
           "pinName": "I2"
         },
         "name": "unnamedWire#83",
           "pinName": "O9"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#5",
+          "compName": "sel1#5",
           "pinName": "I2"
         },
         "name": "unnamedWire#84",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#6",
+          "compName": "sel1#6",
           "pinName": "I2"
         },
         "name": "unnamedWire#85",
           "pinName": "O7"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#10",
           "pinName": "I2"
         },
         "name": "unnamedWire#86",
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#9",
+          "compName": "sel1#9",
           "pinName": "I2"
         },
         "name": "unnamedWire#87",
           "pinName": "O5"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#11",
+          "compName": "sel1#11",
           "pinName": "I2"
         },
         "name": "unnamedWire#88",
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#13",
+          "compName": "sel1#13",
           "pinName": "I2"
         },
         "name": "unnamedWire#89",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#10",
+          "compName": "sel1#10",
           "pinName": "S2"
         },
         "pin2": {
           "pinName": "O3"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#14",
+          "compName": "sel1#14",
           "pinName": "I2"
         },
         "name": "unnamedWire#90",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#12",
+          "compName": "sel1#12",
           "pinName": "I2"
         },
         "name": "unnamedWire#91",
           "pinName": "O1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#8",
+          "compName": "sel1#8",
           "pinName": "I2"
         },
         "name": "unnamedWire#92",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#15",
+          "compName": "sel1#15",
           "pinName": "I2"
         },
         "name": "unnamedWire#93",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I15"
+          "compName": "Splitter#2",
+          "pinName": "O15"
         },
         "name": "unnamedWire#99",
         "path": [
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_8.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_8.json
new file mode 100644 (file)
index 0000000..4a34c7c
--- /dev/null
@@ -0,0 +1,1297 @@
+{
+  "width": 40.0,
+  "height": 55.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 0.0,
+        "y": 15.0
+      },
+      "name": "I0",
+      "logicWidth": 8,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 40.0
+      },
+      "name": "I1",
+      "logicWidth": 8,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 0.0,
+        "y": 5.0
+      },
+      "name": "S",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 40.0,
+        "y": 25.0
+      },
+      "name": "Y",
+      "logicWidth": 8,
+      "usage": "OUTPUT"
+    }
+  ],
+  "innerScale": 0.2,
+  "submodel": {
+    "components": [
+      {
+        "id": "NandGate",
+        "name": "NandGate#0",
+        "pos": {
+          "x": 15.0,
+          "y": 10.0
+        },
+        "params": 1
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": 5.0,
+          "y": 40.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": 5.0,
+          "y": 165.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 185.0,
+          "y": 90.0
+        },
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#10",
+        "pos": {
+          "x": 69.0,
+          "y": 4.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#11",
+        "pos": {
+          "x": 64.0,
+          "y": 19.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#12",
+        "pos": {
+          "x": 9.0,
+          "y": 24.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#13",
+        "pos": {
+          "x": 9.0,
+          "y": 14.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#14",
+        "pos": {
+          "x": 64.0,
+          "y": 149.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 69.0,
+          "y": 159.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 64.0,
+          "y": 89.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#17",
+        "pos": {
+          "x": 69.0,
+          "y": 99.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#18",
+        "pos": {
+          "x": 69.0,
+          "y": 39.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#19",
+        "pos": {
+          "x": 64.0,
+          "y": 29.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#4",
+        "pos": {
+          "x": 114.0,
+          "y": 49.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#5",
+        "pos": {
+          "x": 119.0,
+          "y": 59.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#6",
+        "pos": {
+          "x": 119.0,
+          "y": 119.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#7",
+        "pos": {
+          "x": 114.0,
+          "y": 109.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 119.0,
+          "y": 179.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 114.0,
+          "y": 169.0
+        },
+        "params": 1
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#10",
+        "pos": {
+          "x": 75.0,
+          "y": 145.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#11",
+        "pos": {
+          "x": 125.0,
+          "y": 225.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#4",
+        "pos": {
+          "x": 75.0,
+          "y": 205.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#5",
+        "pos": {
+          "x": 125.0,
+          "y": 45.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#6",
+        "pos": {
+          "x": 75.0,
+          "y": 25.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#7",
+        "pos": {
+          "x": 75.0,
+          "y": 85.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#8",
+        "pos": {
+          "x": 125.0,
+          "y": 165.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#9",
+        "pos": {
+          "x": 125.0,
+          "y": 105.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#7",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "sel1#6",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#107",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 90.0
+          },
+          {
+            "x": 180.0,
+            "y": 30.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#5",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#108",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 50.0
+          },
+          {
+            "x": 175.0,
+            "y": 100.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "sel1#7",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#109",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 110.0
+          },
+          {
+            "x": 170.0,
+            "y": 90.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#7",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "sel1#9",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#110",
+        "path": [
+          {
+            "x": 165.0,
+            "y": 110.0
+          },
+          {
+            "x": 165.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "sel1#10",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#111",
+        "path": [
+          {
+            "x": 165.0,
+            "y": 130.0
+          },
+          {
+            "x": 165.0,
+            "y": 150.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#8",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#112",
+        "path": [
+          {
+            "x": 170.0,
+            "y": 170.0
+          },
+          {
+            "x": 170.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "sel1#4",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#113",
+        "path": [
+          {
+            "x": 175.0,
+            "y": 150.0
+          },
+          {
+            "x": 175.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#11",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#114",
+        "path": [
+          {
+            "x": 180.0,
+            "y": 230.0
+          },
+          {
+            "x": 180.0,
+            "y": 160.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#115",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#116",
+        "path": [
+          {
+            "x": 10.0,
+            "y": 5.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#10",
+          "pinName": "S1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#10",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#11",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#16",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#8",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#8",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "sel1#9",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#9",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "sel1#5",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#5",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#10",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "name": "unnamedWire#3",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 5.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#7",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#9",
+          "pinName": ""
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#4",
+          "pinName": ""
+        },
+        "name": "unnamedWire#4",
+        "path": [
+          {
+            "x": 115.0,
+            "y": 20.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#5",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#6",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "name": "unnamedWire#42",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#8",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#11",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#43",
+        "path": [
+          {
+            "x": 120.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#46",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "name": "unnamedWire#47",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#14",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#4",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#48",
+        "path": [
+          {
+            "x": 65.0,
+            "y": 210.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#4",
+          "pinName": "S2"
+        },
+        "name": "unnamedWire#49",
+        "path": [
+          {
+            "x": 70.0,
+            "y": 220.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "name": "unnamedWire#50",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#17",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "name": "unnamedWire#51",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "sel1#6",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#68",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 40.0
+          },
+          {
+            "x": 55.0,
+            "y": 50.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "sel1#5",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#69",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 50.0
+          },
+          {
+            "x": 50.0,
+            "y": 70.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "sel1#7",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#70",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 60.0
+          },
+          {
+            "x": 45.0,
+            "y": 110.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "sel1#9",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#71",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 70.0
+          },
+          {
+            "x": 40.0,
+            "y": 130.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "sel1#10",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#72",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 80.0
+          },
+          {
+            "x": 35.0,
+            "y": 170.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "sel1#8",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#73",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 90.0
+          },
+          {
+            "x": 30.0,
+            "y": 190.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "sel1#4",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#74",
+        "path": [
+          {
+            "x": 25.0,
+            "y": 100.0
+          },
+          {
+            "x": 25.0,
+            "y": 230.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "sel1#11",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#75",
+        "path": [
+          {
+            "x": 20.0,
+            "y": 110.0
+          },
+          {
+            "x": 20.0,
+            "y": 250.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#76",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#77",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#19",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "sel1#6",
+          "pinName": "S1"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "sel1#6",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#86",
+        "path": [
+          {
+            "x": 55.0,
+            "y": 165.0
+          },
+          {
+            "x": 55.0,
+            "y": 60.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "sel1#5",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#87",
+        "path": [
+          {
+            "x": 50.0,
+            "y": 175.0
+          },
+          {
+            "x": 50.0,
+            "y": 80.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "sel1#7",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#88",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 185.0
+          },
+          {
+            "x": 45.0,
+            "y": 120.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "sel1#9",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#89",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 195.0
+          },
+          {
+            "x": 40.0,
+            "y": 140.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "sel1#6",
+          "pinName": "S2"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#18",
+          "pinName": ""
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "sel1#10",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#90",
+        "path": [
+          {
+            "x": 35.0,
+            "y": 205.0
+          },
+          {
+            "x": 35.0,
+            "y": 180.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "sel1#8",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#91",
+        "path": [
+          {
+            "x": 30.0,
+            "y": 215.0
+          },
+          {
+            "x": 30.0,
+            "y": 200.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "sel1#4",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#92",
+        "path": [
+          {
+            "x": 45.0,
+            "y": 225.0
+          },
+          {
+            "x": 45.0,
+            "y": 240.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "sel1#11",
+          "pinName": "I2"
+        },
+        "name": "unnamedWire#93",
+        "path": [
+          {
+            "x": 40.0,
+            "y": 235.0
+          },
+          {
+            "x": 40.0,
+            "y": 260.0
+          }
+        ]
+      },
+      {
+        "pin1": {
+          "compName": "NandGate#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#11",
+          "pinName": ""
+        },
+        "name": "unnamedWire#94",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#95",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "B"
+        },
+        "name": "unnamedWire#96",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "NandGate#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#97",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "S"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#98",
+        "path": []
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "simpleRectangularLike",
+  "symbolRendererParams": {
+    "centerText": "MUX\n8 bit",
+    "centerTextHeight": 5.0,
+    "horizontalComponentCenter": 23.5,
+    "pinLabelHeight": 3.5,
+    "pinLabelMargin": 0.5
+  },
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "default",
+  "version": "0.1.5"
+}
\ No newline at end of file
index 3a1507a..91d1220 100644 (file)
   "innerScale": 0.4,
   "submodel": {
     "components": [
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 60.0,
-          "y": 35.0
-        }
-      },
-      {
-        "id": "sel1",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 60.0,
-          "y": 100.0
-        }
-      },
-      {
-        "id": "mux1",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 115.0,
-          "y": 20.0
-        }
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
+        "name": "WireCrossPoint#0",
         "pos": {
           "x": 24.0,
           "y": 29.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#2",
+        "name": "WireCrossPoint#1",
         "pos": {
           "x": 24.0,
           "y": 49.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
+        "name": "WireCrossPoint#2",
         "pos": {
           "x": 54.0,
           "y": 39.0
         },
         "params": 1
+      },
+      {
+        "id": "mux1",
+        "name": "mux1#0",
+        "pos": {
+          "x": 115.0,
+          "y": 20.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#0",
+        "pos": {
+          "x": 60.0,
+          "y": 35.0
+        }
+      },
+      {
+        "id": "sel1",
+        "name": "sel1#1",
+        "pos": {
+          "x": 60.0,
+          "y": 100.0
+        }
       }
     ],
     "wires": [
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "name": "unnamedWire#0",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "S2"
         },
         "name": "unnamedWire#11",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "S1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#14",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#2",
+          "compName": "WireCrossPoint#1",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "S2"
         },
         "name": "unnamedWire#16",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "S1"
         },
         "name": "unnamedWire#17",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#1",
+          "compName": "WireCrossPoint#0",
           "pinName": ""
         },
         "pin2": {
           "pinName": "I00"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#2",
           "pinName": "I01"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "I2"
         },
         "name": "unnamedWire#3",
           "pinName": "I10"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "I1"
         },
         "name": "unnamedWire#4",
           "pinName": "I11"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "I2"
         },
         "name": "unnamedWire#5",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "Y"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "sel1#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "I0"
         },
         "name": "unnamedWire#7",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
+          "compName": "sel1#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#8",
           "pinName": "S1"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "S0"
         },
         "name": "unnamedWire#9",
diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux2_4.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux2_4.json
deleted file mode 100644 (file)
index 5f8c0c8..0000000
+++ /dev/null
@@ -1,700 +0,0 @@
-{
-  "width": 62.0,
-  "height": 90.0,
-  "interfacePins": [
-    {
-      "location": {
-        "x": 0.0,
-        "y": 30.0
-      },
-      "name": "I00",
-      "logicWidth": 4,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 40.0
-      },
-      "name": "I01",
-      "logicWidth": 4,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 50.0
-      },
-      "name": "I10",
-      "logicWidth": 4,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 60.0
-      },
-      "name": "I11",
-      "logicWidth": 4,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 10.0
-      },
-      "name": "S0",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 0.0,
-        "y": 20.0
-      },
-      "name": "S1",
-      "logicWidth": 1,
-      "usage": "INPUT"
-    },
-    {
-      "location": {
-        "x": 62.0,
-        "y": 16.0
-      },
-      "name": "Y",
-      "logicWidth": 4,
-      "usage": "OUTPUT"
-    }
-  ],
-  "innerScale": 0.4,
-  "submodel": {
-    "components": [
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#0",
-        "pos": {
-          "x": 40.0,
-          "y": 30.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#1",
-        "pos": {
-          "x": 40.0,
-          "y": 125.0
-        }
-      },
-      {
-        "id": "mux1_4",
-        "name": "DeserializedSubmodelComponent#2",
-        "pos": {
-          "x": 100.0,
-          "y": 20.0
-        }
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 140.0,
-          "y": 25.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Splitter",
-        "name": "Splitter#0",
-        "pos": {
-          "x": 25.0,
-          "y": 45.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Splitter",
-        "name": "Splitter#1",
-        "pos": {
-          "x": 25.0,
-          "y": 85.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Splitter",
-        "name": "Splitter#2",
-        "pos": {
-          "x": 25.0,
-          "y": 140.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Splitter",
-        "name": "Splitter#3",
-        "pos": {
-          "x": 25.0,
-          "y": 180.0
-        },
-        "params": 4
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
-        "pos": {
-          "x": 19.0,
-          "y": 34.0
-        },
-        "params": 1
-      }
-    ],
-    "wires": [
-      {
-        "pin1": {
-          "compName": "Splitter#2",
-          "pinName": "O0"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I0_1"
-        },
-        "name": "unnamedWire#0",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I0_2"
-        },
-        "pin2": {
-          "compName": "Splitter#2",
-          "pinName": "O1"
-        },
-        "name": "unnamedWire#1",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_1"
-        },
-        "pin2": {
-          "compName": "Splitter#1",
-          "pinName": "O0"
-        },
-        "name": "unnamedWire#10",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#1",
-          "pinName": "O3"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_4"
-        },
-        "name": "unnamedWire#11",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_4"
-        },
-        "pin2": {
-          "compName": "Splitter#0",
-          "pinName": "O3"
-        },
-        "name": "unnamedWire#12",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_3"
-        },
-        "pin2": {
-          "compName": "Splitter#0",
-          "pinName": "O2"
-        },
-        "name": "unnamedWire#13",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_2"
-        },
-        "pin2": {
-          "compName": "Splitter#0",
-          "pinName": "O1"
-        },
-        "name": "unnamedWire#14",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I0_1"
-        },
-        "pin2": {
-          "compName": "Splitter#0",
-          "pinName": "O0"
-        },
-        "name": "unnamedWire#15",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S0"
-        },
-        "pin2": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "name": "unnamedWire#16",
-        "path": [
-          {
-            "x": 20.0,
-            "y": 25.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "S0"
-        },
-        "name": "unnamedWire#17",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "WireCrossPoint#0",
-          "pinName": ""
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "S0"
-        },
-        "name": "unnamedWire#18",
-        "path": [
-          {
-            "x": 20.0,
-            "y": 130.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#0",
-          "pinName": "I"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "I00"
-        },
-        "name": "unnamedWire#19",
-        "path": [
-          {
-            "x": 15.0,
-            "y": 60.0
-          },
-          {
-            "x": 15.0,
-            "y": 75.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#2",
-          "pinName": "O2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I0_3"
-        },
-        "name": "unnamedWire#2",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I01"
-        },
-        "pin2": {
-          "compName": "Splitter#1",
-          "pinName": "I"
-        },
-        "name": "unnamedWire#20",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#2",
-          "pinName": "I"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "I10"
-        },
-        "name": "unnamedWire#21",
-        "path": [
-          {
-            "x": 15.0,
-            "y": 155.0
-          },
-          {
-            "x": 15.0,
-            "y": 125.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "I11"
-        },
-        "pin2": {
-          "compName": "Splitter#3",
-          "pinName": "I"
-        },
-        "name": "unnamedWire#22",
-        "path": [
-          {
-            "x": 10.0,
-            "y": 150.0
-          },
-          {
-            "x": 10.0,
-            "y": 195.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I0_1"
-        },
-        "name": "unnamedWire#23",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I0_2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y2"
-        },
-        "name": "unnamedWire#24",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y3"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I0_3"
-        },
-        "name": "unnamedWire#25",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I0_4"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "Y4"
-        },
-        "name": "unnamedWire#26",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I1_1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Y1"
-        },
-        "name": "unnamedWire#27",
-        "path": [
-          {
-            "x": 80.0,
-            "y": 75.0
-          },
-          {
-            "x": 80.0,
-            "y": 130.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Y2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I1_2"
-        },
-        "name": "unnamedWire#28",
-        "path": [
-          {
-            "x": 85.0,
-            "y": 140.0
-          },
-          {
-            "x": 85.0,
-            "y": 85.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I1_3"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Y3"
-        },
-        "name": "unnamedWire#29",
-        "path": [
-          {
-            "x": 90.0,
-            "y": 95.0
-          },
-          {
-            "x": 90.0,
-            "y": 150.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#3",
-          "pinName": "O0"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I1_1"
-        },
-        "name": "unnamedWire#3",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "I1_4"
-        },
-        "name": "unnamedWire#30",
-        "path": [
-          {
-            "x": 95.0,
-            "y": 160.0
-          },
-          {
-            "x": 95.0,
-            "y": 105.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
-        },
-        "pin2": {
-          "compName": "_submodelinterface",
-          "pinName": "Y"
-        },
-        "name": "unnamedWire#31",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I0"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Y1"
-        },
-        "name": "unnamedWire#32",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Y2"
-        },
-        "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I1"
-        },
-        "name": "unnamedWire#33",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Y3"
-        },
-        "name": "unnamedWire#34",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "Y4"
-        },
-        "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I3"
-        },
-        "name": "unnamedWire#35",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "_submodelinterface",
-          "pinName": "S1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
-          "pinName": "S0"
-        },
-        "name": "unnamedWire#36",
-        "path": [
-          {
-            "x": 15.0,
-            "y": 50.0
-          },
-          {
-            "x": 15.0,
-            "y": 20.0
-          },
-          {
-            "x": 60.0,
-            "y": 20.0
-          },
-          {
-            "x": 60.0,
-            "y": 25.0
-          }
-        ]
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I0_4"
-        },
-        "pin2": {
-          "compName": "Splitter#2",
-          "pinName": "O3"
-        },
-        "name": "unnamedWire#4",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#3",
-          "pinName": "O1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I1_2"
-        },
-        "name": "unnamedWire#5",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I1_3"
-        },
-        "pin2": {
-          "compName": "Splitter#3",
-          "pinName": "O2"
-        },
-        "name": "unnamedWire#6",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#3",
-          "pinName": "O3"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#1",
-          "pinName": "I1_4"
-        },
-        "name": "unnamedWire#7",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#1",
-          "pinName": "O2"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_3"
-        },
-        "name": "unnamedWire#8",
-        "path": []
-      },
-      {
-        "pin1": {
-          "compName": "Splitter#1",
-          "pinName": "O1"
-        },
-        "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
-          "pinName": "I1_2"
-        },
-        "name": "unnamedWire#9",
-        "path": []
-      }
-    ],
-    "version": "0.1.1"
-  },
-  "symbolRendererSnippetID": "simpleRectangularLike",
-  "symbolRendererParams": {
-    "centerText": "mux1_4",
-    "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
index 7b54b5d..ac5aa8a 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "mux2",
-        "name": "DeserializedSubmodelComponent#0",
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#0",
         "pos": {
-          "x": 35.0,
-          "y": 185.0
-        }
+          "x": 19.0,
+          "y": 104.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#1",
+        "pos": {
+          "x": 24.0,
+          "y": 94.0
+        },
+        "params": 1
       },
       {
         "id": "mux1",
-        "name": "DeserializedSubmodelComponent#2",
+        "name": "mux1#0",
         "pos": {
           "x": 125.0,
           "y": 20.0
       },
       {
         "id": "mux2",
-        "name": "DeserializedSubmodelComponent#3",
+        "name": "mux2#0",
         "pos": {
           "x": 35.0,
-          "y": 85.0
+          "y": 185.0
         }
       },
       {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#0",
-        "pos": {
-          "x": 19.0,
-          "y": 104.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#1",
+        "id": "mux2",
+        "name": "mux2#1",
         "pos": {
-          "x": 24.0,
-          "y": 94.0
-        },
-        "params": 1
+          "x": 35.0,
+          "y": 85.0
+        }
       }
     ],
     "wires": [
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "I11"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "I00"
         },
         "pin2": {
           "pinName": "I101"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "I01"
         },
         "name": "unnamedWire#12",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "I10"
         },
         "pin2": {
           "pinName": "I111"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "I11"
         },
         "name": "unnamedWire#14",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "I1"
         },
         "name": "unnamedWire#15",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "I0"
         },
         "name": "unnamedWire#16",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "S0"
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "S1"
         },
         "name": "unnamedWire#2",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "S0"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "S1"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#0",
+          "compName": "mux2#0",
           "pinName": "S0"
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#2",
+          "compName": "mux1#0",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "I000"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "I00"
         },
         "name": "unnamedWire#7",
       },
       {
         "pin1": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "I01"
         },
         "pin2": {
           "pinName": "I010"
         },
         "pin2": {
-          "compName": "DeserializedSubmodelComponent#3",
+          "compName": "mux2#1",
           "pinName": "I10"
         },
         "name": "unnamedWire#9",
index a9175b7..3732257 100644 (file)
           "delegateTarget": "dlatch4#0"
         }
       },
-      "c11": {
+      "c01": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "dlatch4#3"
+          "delegateTarget": "dlatch4#1"
         }
       },
       "c10": {
           "delegateTarget": "dlatch4#2"
         }
       },
-      "c01": {
+      "c11": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "dlatch4#1"
+          "delegateTarget": "dlatch4#3"
         }
       }
     },
index 7b57534..de91b6b 100644 (file)
           "delegateTarget": "ram2#0"
         }
       },
-      "c11": {
+      "c0000": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#3"
+          "delegateTarget": "ram2#0",
+          "prefix": "c00"
         }
       },
-      "c10": {
+      "c0001": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#2"
+          "delegateTarget": "ram2#1",
+          "prefix": "c00"
         }
       },
-      "c01": {
+      "c0010": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#1"
+          "delegateTarget": "ram2#2",
+          "prefix": "c00"
         }
       },
-      "c1000": {
+      "c0011": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#0",
-          "prefix": "c10"
+          "delegateTarget": "ram2#3",
+          "prefix": "c00"
         }
       },
-      "c1011": {
+      "c01": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#3",
-          "prefix": "c10"
+          "delegateTarget": "ram2#1"
         }
       },
-      "c1110": {
+      "c0100": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#2",
-          "prefix": "c11"
+          "delegateTarget": "ram2#0",
+          "prefix": "c01"
         }
       },
-      "c1001": {
+      "c0101": {
         "id": "delegating",
         "params": {
           "delegateTarget": "ram2#1",
-          "prefix": "c10"
+          "prefix": "c01"
         }
       },
-      "c1100": {
+      "c0110": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#0",
-          "prefix": "c11"
+          "delegateTarget": "ram2#2",
+          "prefix": "c01"
         }
       },
-      "c1111": {
+      "c0111": {
         "id": "delegating",
         "params": {
           "delegateTarget": "ram2#3",
-          "prefix": "c11"
+          "prefix": "c01"
         }
       },
-      "c0000": {
+      "c10": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#0",
-          "prefix": "c00"
+          "delegateTarget": "ram2#2"
         }
       },
-      "c0011": {
+      "c1000": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#3",
-          "prefix": "c00"
+          "delegateTarget": "ram2#0",
+          "prefix": "c10"
         }
       },
-      "c0110": {
+      "c1001": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#2",
-          "prefix": "c01"
+          "delegateTarget": "ram2#1",
+          "prefix": "c10"
         }
       },
-      "c0010": {
+      "c1010": {
         "id": "delegating",
         "params": {
           "delegateTarget": "ram2#2",
-          "prefix": "c00"
+          "prefix": "c10"
         }
       },
-      "c1010": {
+      "c1011": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#2",
+          "delegateTarget": "ram2#3",
           "prefix": "c10"
         }
       },
-      "c0101": {
+      "c11": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#1",
-          "prefix": "c01"
+          "delegateTarget": "ram2#3"
         }
       },
-      "c0001": {
+      "c1100": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#1",
-          "prefix": "c00"
+          "delegateTarget": "ram2#0",
+          "prefix": "c11"
         }
       },
-      "c0100": {
+      "c1101": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#0",
-          "prefix": "c01"
+          "delegateTarget": "ram2#1",
+          "prefix": "c11"
         }
       },
-      "c0111": {
+      "c1110": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#3",
-          "prefix": "c01"
+          "delegateTarget": "ram2#2",
+          "prefix": "c11"
         }
       },
-      "c1101": {
+      "c1111": {
         "id": "delegating",
         "params": {
-          "delegateTarget": "ram2#1",
+          "delegateTarget": "ram2#3",
           "prefix": "c11"
         }
       }
index d53f4c8..afd89f1 100644 (file)
@@ -53,7 +53,7 @@
     "components": [
       {
         "id": "NandGate",
-        "name": "NandGate#1",
+        "name": "NandGate#0",
         "pos": {
           "x": 35.0,
           "y": 30.0
@@ -62,7 +62,7 @@
       },
       {
         "id": "NandGate",
-        "name": "NandGate#2",
+        "name": "NandGate#1",
         "pos": {
           "x": 35.0,
           "y": 55.0
@@ -71,7 +71,7 @@
       },
       {
         "id": "NandGate",
-        "name": "NandGate#3",
+        "name": "NandGate#2",
         "pos": {
           "x": 60.0,
           "y": 40.0
@@ -86,7 +86,7 @@
           "pinName": "S1"
         },
         "pin2": {
-          "compName": "NandGate#1",
+          "compName": "NandGate#0",
           "pinName": "A"
         },
         "name": "unnamedWire#0",
           "pinName": "S2"
         },
         "pin2": {
-          "compName": "NandGate#2",
+          "compName": "NandGate#1",
           "pinName": "A"
         },
         "name": "unnamedWire#1",
       },
       {
         "pin1": {
-          "compName": "NandGate#3",
+          "compName": "NandGate#2",
           "pinName": "Y"
         },
         "pin2": {
           "pinName": "I1"
         },
         "pin2": {
-          "compName": "NandGate#1",
+          "compName": "NandGate#0",
           "pinName": "B"
         },
         "name": "unnamedWire#5",
           "pinName": "I2"
         },
         "pin2": {
-          "compName": "NandGate#2",
+          "compName": "NandGate#1",
           "pinName": "B"
         },
         "name": "unnamedWire#7",
       },
       {
         "pin1": {
-          "compName": "NandGate#1",
+          "compName": "NandGate#0",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "NandGate#3",
+          "compName": "NandGate#2",
           "pinName": "A"
         },
         "name": "unnamedWire#8"
       },
       {
         "pin1": {
-          "compName": "NandGate#2",
+          "compName": "NandGate#1",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "NandGate#3",
+          "compName": "NandGate#2",
           "pinName": "B"
         },
         "name": "unnamedWire#9"
index 172c4b1..10cf141 100644 (file)
@@ -7,9 +7,11 @@ import org.osgi.framework.BundleContext;
 
 import net.mograsim.logic.model.serializing.ClassLoaderBasedResourceLoader;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.machine.MachineLoader;
 
 public class Am2900Loader implements BundleActivator
 {
+       // TODO use dff16 in dff16_we & dff16_invwe
        private static AtomicBoolean activated = new AtomicBoolean(false);
 
        @Override
@@ -31,6 +33,7 @@ public class Am2900Loader implements BundleActivator
                ClassLoaderBasedResourceLoader resourceLoader = ClassLoaderBasedResourceLoader.create(Am2900Loader.class.getClassLoader());
                IndirectModelComponentCreator.registerResourceLoader(resourceLoader, "Am2900Loader");
                IndirectModelComponentCreator.loadStandardComponentIDs(Am2900Loader.class.getResourceAsStream("standardComponentIDMapping.json"));
+               MachineLoader.setup();
 //             System.out.println("SETUP DONE"); // TODO: Debug
        }
 }
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java
new file mode 100644 (file)
index 0000000..981c848
--- /dev/null
@@ -0,0 +1,78 @@
+package net.mograsim.logic.model.am2900.components;
+
+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.Z;
+import static net.mograsim.logic.core.types.Bit.ZERO;
+
+import java.util.Arrays;
+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.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position;
+
+public class Modelinc extends SimpleRectangularHardcodedModelComponent
+{
+       private final int logicWidth;
+
+       public Modelinc(LogicModelModifiable model, String name, int logicWidth)
+       {
+               super(model, "inc", name, "Incrementer", false);
+               this.logicWidth = logicWidth;
+               setSize(40, 20);
+               addPin(new Pin(model, this, "A", logicWidth, PinUsage.INPUT, 20, 20), Position.TOP);
+               addPin(new Pin(model, this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT);
+               addPin(new Pin(model, this, "Y", logicWidth, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
+
+               init();
+       }
+
+       @Override
+       public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
+       {
+               Bit[] ABits = readEnds.get("A").getValues().getBits();
+               Bit CIVal = readEnds.get("CI").getValue();
+               Bit[] YBits = new Bit[logicWidth];
+               if (CIVal == X)
+                       Arrays.fill(YBits, X);
+               else if (CIVal == U)
+                       Arrays.fill(YBits, U);
+               else if (CIVal == Z)
+                       Arrays.fill(YBits, X);
+               else if (CIVal == ZERO)
+                       YBits = ABits;
+               else
+               {
+                       Bit carry = Bit.ONE;
+                       // TODO extract to helper. This code almost also exists in ModelAm2910RegCntr.
+                       for (int i = logicWidth - 1; i >= 0; i--)
+                       {
+                               Bit a = ABits[i];
+                               YBits[i] = a.xor(carry);
+                               carry = a.and(carry);
+                       }
+               }
+               readWriteEnds.get("Y").feedSignals(YBits);
+               return null;
+       }
+
+       @Override
+       public Integer getParamsForSerializing(IdentifyParams idParams)
+       {
+               return logicWidth;
+       }
+
+       static
+       {
+               IndirectModelComponentCreator.setComponentSupplier(Modelinc.class.getCanonicalName(),
+                               (m, p, n) -> new Modelinc(m, n, p.getAsInt()));
+       }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc12.java
deleted file mode 100644 (file)
index 05d2eee..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package net.mograsim.logic.model.am2900.components;
-
-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.Z;
-import static net.mograsim.logic.core.types.Bit.ZERO;
-
-import java.util.Arrays;
-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 Modelinc12 extends SimpleRectangularHardcodedModelComponent
-{
-       public Modelinc12(LogicModelModifiable model, String name)
-       {
-               super(model, "inc12", name, "Incrementer", false);
-               setSize(40, 20);
-               addPin(new Pin(model, this, "A", 12, PinUsage.INPUT, 20, 20), Position.TOP);
-               addPin(new Pin(model, this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT);
-               addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 20, 0), Position.BOTTOM);
-
-               init();
-       }
-
-       @Override
-       public Object recalculate(Object lastState, Map<String, ReadEnd> readEnds, Map<String, ReadWriteEnd> readWriteEnds)
-       {
-               Bit[] ABits = readEnds.get("A").getValues().getBits();
-               Bit CIVal = readEnds.get("CI").getValue();
-               Bit[] YBits = new Bit[12];
-               if (CIVal == X)
-                       Arrays.fill(YBits, X);
-               else if (CIVal == U)
-                       Arrays.fill(YBits, U);
-               else if (CIVal == Z)
-                       Arrays.fill(YBits, X);
-               else if (CIVal == ZERO)
-                       YBits = ABits;
-               else
-               {
-                       Bit carry = Bit.ONE;
-                       // TODO extract to helper. This code almost also exists in ModelAm2910RegCntr.
-                       for (int i = 11; i >= 0; i--)
-                       {
-                               Bit a = ABits[i];
-                               YBits[i] = a.xor(carry);
-                               carry = a.and(carry);
-                       }
-               }
-               readWriteEnds.get("Y").feedSignals(YBits);
-               return null;
-       }
-
-       static
-       {
-               IndirectModelComponentCreator.setComponentSupplier(Modelinc12.class.getCanonicalName(), (m, p, n) -> new Modelinc12(m, n));
-       }
-}
\ No newline at end of file
index 05ebf45..0c101bb 100644 (file)
@@ -62,7 +62,7 @@ public class ModelAm2910RegCntr extends SimpleRectangularHardcodedModelComponent
                        else if (WE.getValue() == ONE)
                        {
                                Bit carry = Bit.ZERO;
-                               // TODO extract to helper. This code almost also exists in Modelinc12.
+                               // TODO extract to helper. This code almost also exists in Modelinc.
                                for (int i = 11; i >= 0; i--)
                                {
                                        Bit a = QC[i];
index 1263aab..d61b751 100644 (file)
@@ -11,19 +11,20 @@ import net.mograsim.machine.mi.parameters.ParameterClassification;
 
 public class Am2900MicroInstructionDefinition implements MicroInstructionDefinition
 {
-       private final static MnemonicFamily am2910Instructions = new MnemonicFamily(new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
+       private final static MnemonicFamily am2910Instructions = new MnemonicFamily("JZ", "CJS", "JMAP", "PUSH", "JSRP", "CJV", "JRP", "RFCT",
+                       "RPCT", "CRTN", "CJPP", "LDCT", "LOOP", "CONT", "TWB");
        private final static MnemonicFamily am2904StatusInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
-       private final static MnemonicFamily am2904ShiftInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
-       private final static MnemonicFamily am2904CarryInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
-       private final static MnemonicFamily am2901DestInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
-       private final static MnemonicFamily am2901FuncInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
-       private final static MnemonicFamily am2901SrcInstructions = new MnemonicFamily(
-                       new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
+                       new String[] { "Zero", "NotZero", "UGTEQ", "ULT", "UGT", "ULTEQ", "SGTEQ", "SLT", "SGT", "SLTEQ" },
+                       new long[] { 0x5, 0x4, 0xB, 0xA, 0xC, 0xD, 0x2, 0x3, 0x0, 0x1 }, 4);
+       private final static MnemonicFamily am2904ShiftInstructions = new MnemonicFamily("SL", "SH", "SCONI", "SDH", "SDC", "SDN", "SDL",
+                       "SDCO", "SRCO", "SRCIO", "SR", "SDIC", "SDRCI", "SDRCO", "SDXOR", "SDR");
+       private final static MnemonicFamily am2904CarryInstructions = new MnemonicFamily(new String[] { "0", "1", "Cx", "µ", "!µ", "M", "!M" },
+                       new long[] { 0b000000, 0b010000, 0b100000, 0b110000, 0b110100, 0b111000, 0b111100 }, 6);
+       private final static MnemonicFamily am2901DestInstructions = new MnemonicFamily("QREG", "NOP", "RAMA", "RAMF", "RAMQD", "RAMD", "RAMQU",
+                       "RAMU");
+       private final static MnemonicFamily am2901FuncInstructions = new MnemonicFamily("ADD", "SUBR", "SUBS", "OR", "AND", "NOTRS", "EXOR",
+                       "EXNOR");
+       private final static MnemonicFamily am2901SrcInstructions = new MnemonicFamily("AQ", "AB", "ZQ", "ZB", "ZA", "DA", "DQ", "DZ");
        private final static MnemonicFamily interruptInstructions = new MnemonicFamily(
                        new MnemonicPair("X", BitVector.of(Bit.ZERO, 4))/* TODO */);
        private final static BooleanClassification hL = new BooleanClassification("H", "L");
index bcfae4a..c3b221e 100644 (file)
@@ -7,11 +7,12 @@ mograsim version: 0.1.3
   "Am2910SP": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910SP",
   "dff12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modeldff12",
   "dff4_finewe": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modeldff4_finewe",
-  "inc12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelinc12",
+  "inc": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelinc",
   "nor12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelnor12",
   "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12",
   "sel4_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelsel4_12",
   
+  "Am2900": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json",
   "Am2901": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901.json",
   "Am2901ALUFuncDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUFuncDecode.json",
   "Am2901ALUInclDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUInclDecode.json",
@@ -30,20 +31,24 @@ mograsim version: 0.1.3
   "andor414": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/andor414.json",
   "demux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/demux2.json",
   "dff": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff.json",
-  "dff12_we": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff12_we.json",
-  "dff16_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_invwe.json",
   "dff4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff4.json",
   "dff4_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff4_invwe.json",
+  "dff8": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff8.json",
+  "dff12_we": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff12_we.json",
+  "dff16": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16.json",
+  "dff16_we": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_we.json",
+  "dff16_invwe": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_invwe.json",
+  "dff80": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff80.json",
   "dlatch": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dlatch.json",
   "dlatch4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dlatch4.json",
   "fulladder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/fulladder.json",
   "halfadder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/halfadder.json",
   "mux1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1.json",
+  "mux1_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_4.json",
+  "mux1_8": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_8.json",
   "mux1_12": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_12.json",
   "mux1_16": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_16.json",
-  "mux1_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_4.json",
   "mux2": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux2.json",
-  "mux2_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux2_4.json",
   "mux3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux3.json",
   "nand3": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/nand3.json",
   "not4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/not4.json",
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java
new file mode 100644 (file)
index 0000000..7a16134
--- /dev/null
@@ -0,0 +1,74 @@
+package net.mograsim.logic.model.examples;
+
+import java.util.ArrayList;
+
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler.BitVectorSplittingAtomicHighLevelStateHandlerParams;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler.DelegatingAtomicHighLevelStateHandlerParams;
+
+public class GenerateDff80HighLevelStateHandler
+{
+       public static void main(String[] args)
+       {
+               Am2900Loader.setup();
+               LogicModelModifiable model = new LogicModelModifiable();
+               DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model, null, null, null);
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#0");// LSB
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#1");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#2");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#3");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#4");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#5");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#6");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#7");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#8");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#9");// MSB
+
+               StandardHighLevelStateHandler hlsh = new StandardHighLevelStateHandler(comp);
+               comp.setHighLevelStateHandler(hlsh);
+               BitVectorSplittingAtomicHighLevelStateHandlerParams p = new BitVectorSplittingAtomicHighLevelStateHandlerParams();
+               p.vectorPartLengthes = new ArrayList<>();
+               p.vectorPartTargets = new ArrayList<>();
+               for (int i = 0; i < 10; i++)
+               {
+                       addHandlersForByte(comp, hlsh, i, p);
+               }
+               hlsh.addAtomicHighLevelState("q", new BitVectorSplittingAtomicHighLevelStateHandler(comp, p));
+
+               System.out.println(comp.getHighLevelStateHandler().getParamsForSerializingJSON(new IdentifyParams()));
+       }
+
+       private static void addHandlersForByte(SubmodelComponent comp, StandardHighLevelStateHandler hlsh, int LSByteIndex,
+                       BitVectorSplittingAtomicHighLevelStateHandlerParams p2)
+       {
+               // TODO remove the "+ 1" as soon as HighLevelStates count from 0
+               // Also replace the 1 in "bitIndexInByte = 1" below with a 0
+               int LSBitIndex = LSByteIndex * 8 + 1;
+               int MSBitIndex = LSBitIndex + 7;
+               String dffThisByte = "dff8#" + LSByteIndex;
+               String thisByteHLSID = "q" + MSBitIndex + "-" + LSBitIndex;
+
+               p2.vectorPartLengthes.add(0, 8);
+               p2.vectorPartTargets.add(0, thisByteHLSID);
+
+               DelegatingAtomicHighLevelStateHandlerParams p = new DelegatingAtomicHighLevelStateHandlerParams();
+               p.delegateTarget = dffThisByte;
+               p.subStateID = "q";
+               hlsh.addAtomicHighLevelState(thisByteHLSID, new DelegatingAtomicHighLevelStateHandler(comp, p));
+               for (int bitIndexOuter = LSBitIndex, bitIndexInByte = 1; bitIndexOuter <= MSBitIndex; bitIndexOuter++, bitIndexInByte++)
+               {
+                       p = new DelegatingAtomicHighLevelStateHandlerParams();
+                       p.delegateTarget = dffThisByte;
+                       p.subStateID = "q" + bitIndexInByte;
+                       hlsh.addAtomicHighLevelState("q" + bitIndexOuter, new DelegatingAtomicHighLevelStateHandler(comp, p));
+               }
+       }
+}
\ No newline at end of file
index 38d362e..1e654c8 100644 (file)
@@ -26,8 +26,7 @@ public class ModelComponentTestbench
        public static void createTestbench(LogicModelModifiable model)
        {
                Am2900Loader.setup();
-               ModelComponent comp = IndirectModelComponentCreator.createComponent(model,
-                               "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dff16_invwe.json");
+               ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2900");
 
                List<String> inputPinNames = new ArrayList<>();
                List<String> outputPinNames = new ArrayList<>();
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONs.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONs.java
new file mode 100644 (file)
index 0000000..c9486cc
--- /dev/null
@@ -0,0 +1,284 @@
+package net.mograsim.logic.model.examples;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
+import net.mograsim.logic.model.model.wires.ModelWire;
+import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
+import net.mograsim.logic.model.model.wires.MovablePin;
+import net.mograsim.logic.model.model.wires.Pin;
+import net.mograsim.logic.model.model.wires.PinUsage;
+import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
+
+public class ReserializeJSONs
+{
+       public static double GRIDSIZE = 2.5;
+       public static boolean changePinUsages = false;
+       public static boolean changeComponentNames = false;
+       public static boolean snapWCPs = true;
+       public static boolean warnNonSnappedPoints = true;
+
+       public static void main(String[] args) throws IOException
+       {
+               Am2900Loader.setup();
+               try (Scanner sysin = new Scanner(System.in))
+               {
+                       System.out.print("Directory to search for JSONs in / JSON file to reserialize >");
+                       Path root = Paths.get(sysin.nextLine());
+                       if (!Files.exists(root))
+                               throw new IllegalArgumentException("Path doesn't exist");
+                       if (Files.isRegularFile(root))
+                               reserializeJSON(root, sysin);
+                       else
+                       {
+                               System.out.print("Recursive? >");
+                               boolean recursive = Boolean.valueOf(sysin.nextLine());
+                               try (Stream<Path> jsons = recursive ? Files.walk(root) : Files.list(root))
+                               {
+                                       jsons.filter(Files::isRegularFile).filter(p -> p.getFileName().toString().endsWith(".json"))
+                                                       .forEach(j -> reserializeJSON(j, sysin));
+                               }
+                       }
+               }
+       }
+
+       public static void reserializeJSON(Path componentPath, Scanner sysin)
+       {
+               try
+               {
+                       DeserializedSubmodelComponent comp = (DeserializedSubmodelComponent) IndirectModelComponentCreator
+                                       .createComponent(new LogicModelModifiable(), "jsonfile:" + componentPath.toString());
+                       System.out.println("Reserializing " + componentPath);
+                       if (changePinUsages)
+                               comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin ->
+                               {
+                                       PinUsage usage = null;
+                                       while (usage == null)
+                                               try
+                                               {
+                                                       System.out.print("  Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >");
+                                                       String usageStr = sysin.nextLine().toUpperCase();
+                                                       usage = usageStr.equals("") ? pin.usage
+                                                                       : usageStr.equals("I") ? PinUsage.INPUT
+                                                                                       : usageStr.equals("O") ? PinUsage.OUTPUT
+                                                                                                       : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr);
+                                               }
+                                               catch (@SuppressWarnings("unused") IllegalArgumentException e)
+                                               {
+                                                       System.err.println("  Illegal usage");
+                                               }
+                                       setInterfacePinUsage(comp, pin, usage);
+                               });
+                       LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+                       Map<String, String> componentNameRemapping = new HashMap<>();
+                       if (changeComponentNames)
+                       {
+                               componentNameRemapping.put(SubmodelComponent.SUBMODEL_INTERFACE_NAME, SubmodelComponent.SUBMODEL_INTERFACE_NAME);
+                               LogicModelModifiable tempModel = new LogicModelModifiable();
+                               IdentifyParams iP = new IdentifyParams();
+                               submodelModifiable.getComponentsByName().entrySet().stream()
+                                               .filter(e -> !e.getKey().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
+                                               .sorted(Comparator.comparing(Entry::getKey, ReserializeJSONs::compareStringsWithIntegers)).forEach(e ->
+                                               {
+                                                       String oldName = e.getKey();
+                                                       ModelComponent subcomp = e.getValue();
+                                                       String defaultName = tempModel.getDefaultComponentName(subcomp);
+                                                       String newName = null;
+                                                       while (newName == null)
+                                                       {
+                                                               System.out.print("  New name for component " + oldName + " of type " + subcomp.getIDForSerializing(iP)
+                                                                               + " (empty: " + defaultName + ") >");
+                                                               newName = sysin.nextLine();
+                                                               if (newName.equals(""))
+                                                                       newName = defaultName;
+                                                               if (tempModel.getComponentsByName().containsKey(newName))
+                                                               {
+                                                                       System.err.println("  There already is a component with that name");
+                                                                       newName = null;
+                                                               }
+                                                       }
+                                                       componentNameRemapping.put(oldName, newName);
+                                                       IndirectModelComponentCreator.createComponent(tempModel, subcomp.getIDForSerializing(iP),
+                                                                       subcomp.getParamsForSerializingJSON(iP), newName).moveTo(subcomp.getPosX(), subcomp.getPosY());
+                                               });
+                               SubmodelInterface tempSubmodelInterface = new SubmodelInterface(tempModel);
+                               for (Pin p : submodelModifiable.getComponentsByName().get(SubmodelComponent.SUBMODEL_INTERFACE_NAME).getPins().values())
+                                       tempSubmodelInterface
+                                                       .addPin(new Pin(tempModel, tempSubmodelInterface, p.name, p.logicWidth, p.usage, p.getRelX(), p.getRelY()));
+                               for (ModelWire w : submodelModifiable.getWiresByName().values())
+                                       createWire(componentNameRemapping::get, tempModel, w);
+
+                               Optional<ModelComponent> o;
+                               while ((o = submodelModifiable.getComponentsByName().values().stream()
+                                               .filter(c -> !c.getName().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)).findAny()).isPresent())
+                                       submodelModifiable.destroyComponent(o.get());
+
+                               tempModel.getComponentsByName().values().stream()
+                                               .filter(c -> !c.getName().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
+                                               .forEach(c -> IndirectModelComponentCreator.createComponent(submodelModifiable, c.getIDForSerializing(iP),
+                                                               c.getParamsForSerializingJSON(iP), c.getName()).moveTo(c.getPosX(), c.getPosY()));
+                               for (ModelWire w : tempModel.getWiresByName().values())
+                                       createWire(Function.identity(), submodelModifiable, w);
+                       }
+                       if (snapWCPs)
+                               submodelModifiable.getComponentsByName().values().stream().filter(c -> c instanceof ModelWireCrossPoint).forEach(c ->
+                               {
+                                       double x = c.getPosX();
+                                       double y = c.getPosY();
+                                       c.moveTo(x % GRIDSIZE == 0 ? x - 1 : x, y % GRIDSIZE == 0 ? y - 1 : y);
+                               });
+                       if (warnNonSnappedPoints)
+                       {
+                               if (comp.getWidth() % GRIDSIZE != 0 || comp.getHeight() % GRIDSIZE != 0)
+                                       System.out.println("  Size is not snapped to grid: " + comp.getWidth() + "," + comp.getHeight());
+                               submodelModifiable.getComponentsByName().values().forEach(c ->
+                               {
+                                       double x = c.getPosX();
+                                       double y = c.getPosY();
+                                       if (c instanceof ModelWireCrossPoint)
+                                       {
+                                               x++;
+                                               y++;
+                                       }
+                                       if (x % GRIDSIZE != 0 || y % GRIDSIZE != 0)
+                                               System.out.println("  Component " + c.getName() + " (type " + c.getIDForSerializing(new IdentifyParams())
+                                                               + ") is not snapped to grid: " + x + "," + y);
+                               });
+                               submodelModifiable.getWiresByName().values().stream().forEach(w ->
+                               {
+                                       Point[] p = w.getPath();
+                                       if (p != null)
+                                               for (int i = 0; i < p.length; i++)
+                                                       if (p[i].x % GRIDSIZE != 0 || p[i].y % GRIDSIZE != 0)
+                                                               System.out.println(
+                                                                               "  Wire " + w.name + " path point #" + i + " is not snapped to grid: " + p[i].x + "," + p[i].y);
+                               });
+                               comp.getPins().values().forEach(p ->
+                               {
+                                       if (p.getRelX() % GRIDSIZE != 0 || p.getRelY() % GRIDSIZE != 0)
+                                               System.out.println("  Interface point " + p.name + " is not snapped to grid: " + p.getRelX() + "," + p.getRelY());
+                               });
+                       }
+                       SubmodelComponentSerializer.serialize(comp, componentPath.toString());
+                       if (changeComponentNames && (comp.getHighLevelStateHandler() == null
+                                       || !(comp.getHighLevelStateHandler() instanceof DefaultHighLevelStateHandler)))
+                       {
+                               System.out.println("  A non-default HighLevelStateHandler was detected. Check for changes there manually.");
+                               System.out.print("  Empty line to continue to next component, old component name to get new component name >");
+                               for (String line = sysin.nextLine(); !line.equals(""); line = sysin.nextLine())
+                                       System.out.println("  " + line + "->" + componentNameRemapping.get(line) + " >");
+                       }
+               }
+               catch (Exception e)
+               {
+                       System.err.println("An error occurred visiting " + componentPath + ":");
+                       e.printStackTrace();
+               }
+       }
+
+       private static ModelWire createWire(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
+                       ModelWire w)
+       {
+               return new ModelWire(tempModelForDefaultNames, w.name,
+                               getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin1()),
+                               getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin2()), w.getPath());
+       }
+
+       private static Pin getRemappedPin(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
+                       Pin pin)
+       {
+               return tempModelForDefaultNames.getComponentsByName().get(componentNameRemapping.apply(pin.component.getName())).getPin(pin.name);
+       }
+
+       private static int compareStringsWithIntegers(String a, String b)
+       {
+               int aLoc = 0;
+               int bLoc = 0;
+               for (;;)
+               {
+                       if (aLoc == a.length())
+                       {
+                               if (bLoc == b.length())
+                                       return 0;
+                               return -1;
+                       }
+                       if (bLoc == b.length())
+                               return 1;
+                       int aInt = 0;
+                       int aIntLen = 0;
+                       char nextCharA;
+                       for (;;)
+                       {
+                               nextCharA = a.charAt(aLoc++);
+                               if (nextCharA < '0' || nextCharA > '9')
+                                       break;
+                               aIntLen++;
+                               aInt = aInt * 10 + nextCharA - '0';
+                               if (aLoc == a.length())
+                                       break;
+                       }
+                       int bInt = 0;
+                       int bIntLen = 0;
+                       char nextCharB;
+                       for (;;)
+                       {
+                               nextCharB = b.charAt(bLoc++);
+                               if (nextCharB < '0' || nextCharB > '9')
+                                       break;
+                               bIntLen++;
+                               bInt = bInt * 10 + nextCharB - '0';
+                               if (bLoc == b.length())
+                                       break;
+                       }
+                       if (aIntLen != 0)
+                       {
+                               if (bIntLen == 0)
+                                       return -1;
+                               int comp = Integer.compare(aInt, bInt);
+                               if (comp != 0)
+                                       return comp;
+                       } else
+                       {
+                               if (bIntLen != 0)
+                                       return 1;
+                               int comp = Character.compare(nextCharA, nextCharB);
+                               if (comp != 0)
+                                       return comp;
+                       }
+               }
+       }
+
+       private static void setInterfacePinUsage(DeserializedSubmodelComponent comp, Pin interfacePin, PinUsage usage)
+       {
+               Set<ModelWire> wiresConnectedToPin = comp.submodel.getWiresByName().values().stream()
+                               .filter(w -> w.getPin1() == interfacePin || w.getPin2() == interfacePin).collect(Collectors.toSet());
+               LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
+               wiresConnectedToPin.forEach(submodelModifiable::destroyWire);
+               comp.removeSubmodelInterface(interfacePin.name);
+               comp.addSubmodelInterface(new MovablePin(submodelModifiable, comp, interfacePin.name, interfacePin.logicWidth, usage,
+                               interfacePin.getRelX(), interfacePin.getRelY()));
+               wiresConnectedToPin.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), w.getPin2()));
+       }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeJSONsSettingUsages.java
deleted file mode 100644 (file)
index f1e90aa..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-package net.mograsim.logic.model.examples;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Scanner;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import net.mograsim.logic.model.am2900.Am2900Loader;
-import net.mograsim.logic.model.model.LogicModelModifiable;
-import net.mograsim.logic.model.model.components.ModelComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-import net.mograsim.logic.model.model.components.submodels.SubmodelInterface;
-import net.mograsim.logic.model.model.wires.ModelWire;
-import net.mograsim.logic.model.model.wires.MovablePin;
-import net.mograsim.logic.model.model.wires.Pin;
-import net.mograsim.logic.model.model.wires.PinUsage;
-import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifyParams;
-import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
-import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
-
-public class ReserializeJSONsSettingUsages
-{
-       public static boolean changePinUsages = false;
-       public static boolean changeComponentNames = true;
-
-       public static void main(String[] args) throws IOException
-       {
-               Am2900Loader.setup();
-               try (Scanner sysin = new Scanner(System.in))
-               {
-                       System.out.print("Directory to search for JSONs in / JSON file to reserialize >");
-                       Path root = Paths.get(sysin.nextLine());
-                       if (!Files.exists(root))
-                               throw new IllegalArgumentException("Path doesn't exist");
-                       if (Files.isRegularFile(root))
-                               reserializeJSON(root, sysin);
-                       else
-                       {
-                               System.out.print("Recursive? >");
-                               boolean recursive = Boolean.valueOf(sysin.nextLine());
-                               try (Stream<Path> jsons = recursive ? Files.walk(root) : Files.list(root))
-                               {
-                                       jsons.filter(Files::isRegularFile).filter(p -> p.getFileName().toString().endsWith(".json"))
-                                                       .forEach(j -> reserializeJSON(j, sysin));
-                               }
-                       }
-               }
-       }
-
-       public static void reserializeJSON(Path json, Scanner sysin)
-       {
-               try
-               {
-                       DeserializedSubmodelComponent comp = (DeserializedSubmodelComponent) IndirectModelComponentCreator
-                                       .createComponent(new LogicModelModifiable(), "jsonfile:" + json.toString());
-                       System.out.println("Reserializing " + json);
-                       if (changePinUsages)
-                               comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin ->
-                               {
-                                       PinUsage usage = null;
-                                       while (usage == null)
-                                               try
-                                               {
-                                                       System.out.print("  Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >");
-                                                       String usageStr = sysin.nextLine().toUpperCase();
-                                                       usage = usageStr.equals("") ? pin.usage
-                                                                       : usageStr.equals("I") ? PinUsage.INPUT
-                                                                                       : usageStr.equals("O") ? PinUsage.OUTPUT
-                                                                                                       : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr);
-                                               }
-                                               catch (@SuppressWarnings("unused") IllegalArgumentException e)
-                                               {
-                                                       System.err.println("  Illegal usage");
-                                               }
-                                       setInterfacePinUsage(comp, pin, usage);
-                               });
-                       LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
-                       if (changeComponentNames)
-                       {
-                               Map<String, String> componentNameRemapping = new HashMap<>();
-                               componentNameRemapping.put(SubmodelComponent.SUBMODEL_INTERFACE_NAME, SubmodelComponent.SUBMODEL_INTERFACE_NAME);
-                               LogicModelModifiable tempModel = new LogicModelModifiable();
-                               IdentifyParams iP = new IdentifyParams();
-                               submodelModifiable.getComponentsByName().entrySet().stream()
-                                               .filter(e -> !e.getKey().equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
-                                               .sorted(Comparator.comparing(Entry::getKey, ReserializeJSONsSettingUsages::compareStringsWithIntegers)).forEach(e ->
-                                               {
-                                                       String oldName = e.getKey();
-                                                       ModelComponent subcomp = e.getValue();
-                                                       String defaultName = tempModel.getDefaultComponentName(subcomp);
-                                                       String newName = null;
-                                                       while (newName == null)
-                                                       {
-                                                               System.out.print("  New name for component " + oldName + " of type " + subcomp.getIDForSerializing(iP)
-                                                                               + " (empty: " + defaultName + ") >");
-                                                               newName = sysin.nextLine();
-                                                               if (newName.equals(""))
-                                                                       newName = defaultName;
-                                                               if (tempModel.getComponentsByName().containsKey(newName))
-                                                               {
-                                                                       System.err.println("  There already is a component with that name");
-                                                                       newName = null;
-                                                               }
-                                                       }
-                                                       componentNameRemapping.put(oldName, newName);
-                                                       IndirectModelComponentCreator.createComponent(tempModel, subcomp.getIDForSerializing(iP),
-                                                                       subcomp.getParamsForSerializingJSON(iP), newName).moveTo(subcomp.getPosX(), subcomp.getPosY());
-                                               });
-                               SubmodelInterface tempSubmodelInterface = new SubmodelInterface(tempModel);
-                               for (Pin p : submodelModifiable.getComponentsByName().get(SubmodelComponent.SUBMODEL_INTERFACE_NAME).getPins().values())
-                                       tempSubmodelInterface
-                                                       .addPin(new Pin(tempModel, tempSubmodelInterface, p.name, p.logicWidth, p.usage, p.getRelX(), p.getRelY()));
-                               for (ModelWire w : submodelModifiable.getWiresByName().values())
-                                       createWire(componentNameRemapping::get, tempModel, w);
-
-                               Optional<ModelComponent> o;
-                               while ((o = submodelModifiable.getComponentsByName().values().stream()
-                                               .filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME)).findAny()).isPresent())
-                                       submodelModifiable.destroyComponent(o.get());
-
-                               tempModel.getComponentsByName().values().stream().filter(c -> !c.name.equals(SubmodelComponent.SUBMODEL_INTERFACE_NAME))
-                                               .forEach(c -> IndirectModelComponentCreator
-                                                               .createComponent(submodelModifiable, c.getIDForSerializing(iP), c.getParamsForSerializingJSON(iP), c.name)
-                                                               .moveTo(c.getPosX(), c.getPosY()));
-                               for (ModelWire w : tempModel.getWiresByName().values())
-                                       createWire(Function.identity(), submodelModifiable, w);
-                       }
-                       SubmodelComponentSerializer.serialize(comp, json.toString());
-               }
-               catch (Exception e)
-               {
-                       System.err.println("An error occurred visiting " + json + ":");
-                       e.printStackTrace();
-               }
-       }
-
-       private static ModelWire createWire(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
-                       ModelWire w)
-       {
-               return new ModelWire(tempModelForDefaultNames, w.name,
-                               getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin1()),
-                               getRemappedPin(componentNameRemapping, tempModelForDefaultNames, w.getPin2()), w.getPath());
-       }
-
-       private static Pin getRemappedPin(Function<String, String> componentNameRemapping, LogicModelModifiable tempModelForDefaultNames,
-                       Pin pin)
-       {
-               return tempModelForDefaultNames.getComponentsByName().get(componentNameRemapping.apply(pin.component.name)).getPin(pin.name);
-       }
-
-       private static int compareStringsWithIntegers(String a, String b)
-       {
-               int aLoc = 0;
-               int bLoc = 0;
-               for (;;)
-               {
-                       if (aLoc == a.length())
-                       {
-                               if (bLoc == b.length())
-                                       return 0;
-                               return -1;
-                       }
-                       if (bLoc == b.length())
-                               return 1;
-                       int aInt = 0;
-                       int aIntLen = 0;
-                       char nextCharA;
-                       for (;;)
-                       {
-                               nextCharA = a.charAt(aLoc++);
-                               if (nextCharA < '0' || nextCharA > '9')
-                                       break;
-                               aIntLen++;
-                               aInt = aInt * 10 + nextCharA - '0';
-                               if (aLoc == a.length())
-                                       break;
-                       }
-                       int bInt = 0;
-                       int bIntLen = 0;
-                       char nextCharB;
-                       for (;;)
-                       {
-                               nextCharB = b.charAt(bLoc++);
-                               if (nextCharB < '0' || nextCharB > '9')
-                                       break;
-                               bIntLen++;
-                               bInt = bInt * 10 + nextCharB - '0';
-                               if (bLoc == b.length())
-                                       break;
-                       }
-                       if (aIntLen != 0)
-                       {
-                               if (bIntLen == 0)
-                                       return -1;
-                               int comp = Integer.compare(aInt, bInt);
-                               if (comp != 0)
-                                       return comp;
-                       } else
-                       {
-                               if (bIntLen != 0)
-                                       return 1;
-                               int comp = Character.compare(nextCharA, nextCharB);
-                               if (comp != 0)
-                                       return comp;
-                       }
-               }
-       }
-
-       private static void setInterfacePinUsage(DeserializedSubmodelComponent comp, Pin interfacePin, PinUsage usage)
-       {
-               Set<ModelWire> wiresConnectedToPin = comp.submodel.getWiresByName().values().stream()
-                               .filter(w -> w.getPin1() == interfacePin || w.getPin2() == interfacePin).collect(Collectors.toSet());
-               LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable();
-               wiresConnectedToPin.forEach(submodelModifiable::destroyWire);
-               comp.removeSubmodelInterface(interfacePin.name);
-               comp.addSubmodelInterface(new MovablePin(submodelModifiable, comp, interfacePin.name, interfacePin.logicWidth, usage,
-                               interfacePin.getRelX(), interfacePin.getRelY()));
-               wiresConnectedToPin.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), w.getPin2()));
-       }
-}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java
new file mode 100644 (file)
index 0000000..2f6cd4e
--- /dev/null
@@ -0,0 +1,35 @@
+package net.mograsim.logic.model;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+public class JavaJsonLineCounter
+{
+       public static void main(String[] args) throws IOException
+       {
+               printLineCount("..", "java");
+               printLineCount("..", "json");
+       }
+
+       private static void printLineCount(String path, String filetype) throws IOException
+       {
+               long lineCount = Files.walk(Paths.get(path)).filter(Files::isRegularFile).filter(p -> p.toString().endsWith('.' + filetype))
+                               .flatMap((Function<Path, Stream<String>>) p ->
+                               {
+                                       try
+                                       {
+                                               return Files.lines(p);
+                                       }
+                                       catch (IOException e)
+                                       {
+                                               throw new UncheckedIOException(e);
+                                       }
+                               }).count();
+               System.out.println("Total lines in " + filetype + " files: " + lineCount);
+       }
+}
\ No newline at end of file
index 60c1cf8..bddddea 100644 (file)
@@ -13,13 +13,13 @@ import net.mograsim.logic.model.model.components.ModelComponent;
 public class TestableAm2901Impl implements TestableAm2901
 {
        private ModelComponent am2901;
-       private CoreManualSwitch I8, I7, I6, I5, I4, I3, I2, I1, I0;
+       private CoreManualSwitch I;
        private CoreManualSwitch C;
        private CoreManualSwitch Cn;
-       private CoreManualSwitch D1, D2, D3, D4;
-       private CoreManualSwitch A0, A1, A2, A3;
-       private CoreManualSwitch B0, B1, B2, B3;
-       private CoreBitDisplay Y1, Y2, Y3, Y4;
+       private CoreManualSwitch D;
+       private CoreManualSwitch A;
+       private CoreManualSwitch B;
+       private CoreBitDisplay Y;
        private CoreBitDisplay F_0, Cn_4, OVR, F3;
        private SwitchWithDisplay RAMn, RAMn_3, Qn, Qn_3;
 
@@ -40,48 +40,34 @@ public class TestableAm2901Impl implements TestableAm2901
        @Override
        public void setDest(Am2901_Dest dest)
        {
-               var bits = TestUtil.of(dest.ordinal(), 3);
-               I8.setState(bits.getLSBit(2));
-               I7.setState(bits.getLSBit(1));
-               I6.setState(bits.getLSBit(0));
+               BitVector oldI = I.getValues();
+               I.setState(TestUtil.of(dest.ordinal(), 3).concat(oldI.subVector(3)));
        }
 
        @Override
        public void setFunc(Am2901_Func func)
        {
-               var bits = TestUtil.of(func.ordinal(), 3);
-               I5.setState(bits.getLSBit(2));
-               I4.setState(bits.getLSBit(1));
-               I3.setState(bits.getLSBit(0));
+               BitVector oldI = I.getValues();
+               I.setState(oldI.subVector(0, 3).concat(TestUtil.of(func.ordinal(), 3)).concat(oldI.subVector(6)));
        }
 
        @Override
        public void setSrc(Am2901_Src src)
        {
-               var bits = TestUtil.of(src.ordinal(), 3);
-               I2.setState(bits.getLSBit(2));
-               I1.setState(bits.getLSBit(1));
-               I0.setState(bits.getLSBit(0));
+               BitVector oldI = I.getValues();
+               I.setState(oldI.subVector(0, 6).concat(TestUtil.of(src.ordinal(), 3)));
        }
 
        @Override
        public void setReg_A(String val_4_bit)
        {
-               var bits = BitVector.parse(val_4_bit);
-               A3.setState(bits.getLSBit(3));
-               A2.setState(bits.getLSBit(2));
-               A1.setState(bits.getLSBit(1));
-               A0.setState(bits.getLSBit(0));
+               A.setState(BitVector.parse(val_4_bit));
        }
 
        @Override
        public void setReg_B(String val_4_bit)
        {
-               var bits = BitVector.parse(val_4_bit);
-               B3.setState(bits.getLSBit(3));
-               B2.setState(bits.getLSBit(2));
-               B1.setState(bits.getLSBit(1));
-               B0.setState(bits.getLSBit(0));
+               B.setState(BitVector.parse(val_4_bit));
        }
 
        @Override
@@ -99,11 +85,7 @@ public class TestableAm2901Impl implements TestableAm2901
        @Override
        public void setD(String val_4_bit)
        {
-               var bits = BitVector.parse(val_4_bit);
-               D4.setState(bits.getLSBit(3));
-               D3.setState(bits.getLSBit(2));
-               D2.setState(bits.getLSBit(1));
-               D1.setState(bits.getLSBit(0));
+               D.setState(BitVector.parse(val_4_bit));
        }
 
        @Override
@@ -199,11 +181,7 @@ public class TestableAm2901Impl implements TestableAm2901
        @Override
        public String getY()
        {
-               var y3 = Y4.getDisplayedValue();
-               var y2 = Y3.getDisplayedValue();
-               var y1 = Y2.getDisplayedValue();
-               var y0 = Y1.getDisplayedValue();
-               return y3.concat(y2).concat(y1).concat(y0).toString();
+               return Y.getDisplayedValue().toString();
        }
 
        @Override
diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.json b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/am2900/am2904/TestableAm2904.json
new file mode 100644 (file)
index 0000000..964d7d3
--- /dev/null
@@ -0,0 +1,846 @@
+{
+  "width": 0.0,
+  "height": 0.0,
+  "interfacePins": [
+    {
+      "location": {
+        "x": 10.0,
+        "y": 20.0
+      },
+      "name": "C",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 125.0
+      },
+      "name": "C0",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 75.0
+      },
+      "name": "CT",
+      "logicWidth": 1,
+      "usage": "OUTPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 125.0
+      },
+      "name": "Cx",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 30.0
+      },
+      "name": "IC",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 35.0
+      },
+      "name": "IN",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 40.0
+      },
+      "name": "IOVR",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 25.0
+      },
+      "name": "IZ",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": -87.66482568016058,
+        "y": 58.834004835619645
+      },
+      "name": "I_10",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": -80.0,
+        "y": 40.0
+      },
+      "name": "I_11_12",
+      "logicWidth": 2,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": -85.0,
+        "y": 100.0
+      },
+      "name": "I_5_0",
+      "logicWidth": 6,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": -84.26853373181032,
+        "y": 78.72500503091884
+      },
+      "name": "I_6_9",
+      "logicWidth": 4,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 145.0
+      },
+      "name": "QIO0",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 145.0
+      },
+      "name": "QIOn",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 135.0
+      },
+      "name": "SIO0",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 135.0
+      },
+      "name": "SIOn",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 30.0
+      },
+      "name": "YC",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 35.0
+      },
+      "name": "YN",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 40.0
+      },
+      "name": "YOVR",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 25.0
+      },
+      "name": "YZ",
+      "logicWidth": 1,
+      "usage": "TRISTATE"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 45.0
+      },
+      "name": "_CEM",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 50.0
+      },
+      "name": "_CEmu",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 60.0
+      },
+      "name": "_EC",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 65.0
+      },
+      "name": "_EN",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 70.0
+      },
+      "name": "_EOVR",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 55.0
+      },
+      "name": "_EZ",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 145.0,
+        "y": 65.0
+      },
+      "name": "_OECT",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 80.0,
+        "y": 10.0
+      },
+      "name": "_OEY",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    },
+    {
+      "location": {
+        "x": 10.0,
+        "y": 100.0
+      },
+      "name": "_SE",
+      "logicWidth": 1,
+      "usage": "INPUT"
+    }
+  ],
+  "innerScale": 1.0,
+  "submodel": {
+    "components": [
+      {
+        "id": "Merger",
+        "name": "Merger#0",
+        "pos": {
+          "x": -30.0,
+          "y": 70.0
+        },
+        "params": 13
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#0",
+        "pos": {
+          "x": -45.0,
+          "y": 140.0
+        },
+        "params": 6
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#1",
+        "pos": {
+          "x": -45.0,
+          "y": 100.0
+        },
+        "params": 4
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": -45.0,
+          "y": 70.0
+        },
+        "params": 2
+      },
+      {
+        "id": "Am2904",
+        "name": "Am2904#0",
+        "pos": {
+          "x": 20.0,
+          "y": 15.0
+        }
+      }
+    ],
+    "wires": [
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "C"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "C"
+        },
+        "name": "unnamedWire#0",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IZ"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IZ"
+        },
+        "name": "unnamedWire#1",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EZ"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_EZ"
+        },
+        "name": "unnamedWire#10",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I_5_0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#11",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I0"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#12",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I1"
+        },
+        "name": "unnamedWire#13",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I2"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#14",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I3"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I4"
+        },
+        "pin2": {
+          "compName": "Splitter#0",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#0",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I5"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I6"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I7"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "IC"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "IC"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#1",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I8"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I9"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#21",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#2",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I11"
+        },
+        "name": "unnamedWire#22",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "I12"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#23",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I_6_9"
+        },
+        "pin2": {
+          "compName": "Splitter#1",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#24",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Merger#0",
+          "pinName": "O"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#25",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I_10"
+        },
+        "pin2": {
+          "compName": "Merger#0",
+          "pinName": "I10"
+        },
+        "name": "unnamedWire#26",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "I_11_12"
+        },
+        "pin2": {
+          "compName": "Splitter#2",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#27",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_SE"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_SE"
+        },
+        "name": "unnamedWire#28",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "Cx"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "Cx"
+        },
+        "name": "unnamedWire#29",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "IN"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IN"
+        },
+        "name": "unnamedWire#3",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "SIOn"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "SIOn"
+        },
+        "name": "unnamedWire#30",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "QIOn"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "QIOn"
+        },
+        "name": "unnamedWire#31",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "QIO0"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "QIO0"
+        },
+        "name": "unnamedWire#32",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "SIO0"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "SIO0"
+        },
+        "name": "unnamedWire#33",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "C0"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "C0"
+        },
+        "name": "unnamedWire#34",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "CT"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "CT"
+        },
+        "name": "unnamedWire#35",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_OECT"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_OECT"
+        },
+        "name": "unnamedWire#36",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YOVR"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "YOVR"
+        },
+        "name": "unnamedWire#37",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YN"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "YN"
+        },
+        "name": "unnamedWire#38",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YC"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "YC"
+        },
+        "name": "unnamedWire#39",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "IOVR"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "IOVR"
+        },
+        "name": "unnamedWire#4",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "YZ"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "YZ"
+        },
+        "name": "unnamedWire#40",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_OEY"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_OEY"
+        },
+        "name": "unnamedWire#41",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEM"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_CEM"
+        },
+        "name": "unnamedWire#5",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "_CEmu"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_CEmu"
+        },
+        "name": "unnamedWire#6",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EC"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_EC"
+        },
+        "name": "unnamedWire#7",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2904#0",
+          "pinName": "_EN"
+        },
+        "pin2": {
+          "compName": "_submodelinterface",
+          "pinName": "_EN"
+        },
+        "name": "unnamedWire#8",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "_submodelinterface",
+          "pinName": "_EOVR"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_EOVR"
+        },
+        "name": "unnamedWire#9",
+        "path": []
+      }
+    ],
+    "version": "0.1.1"
+  },
+  "symbolRendererSnippetID": "default",
+  "outlineRendererSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {
+      "musr": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "Am2904#0",
+          "prefix": "musr"
+        }
+      },
+      "msr": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "Am2904#0",
+          "prefix": "msr"
+        }
+      }
+    },
+    "atomicHighLevelStates": {}
+  },
+  "version": "0.1.5"
+}
\ No newline at end of file
index 677a3e1..b43f130 100644 (file)
@@ -13,7 +13,10 @@ public class TestableAm2904Impl implements TestableAm2904
 {
 
        private ModelComponent am2904;
-       private CoreManualSwitch I;
+       private CoreManualSwitch I_5_0;
+       private CoreManualSwitch I_6_9;
+       private CoreManualSwitch I_10;
+       private CoreManualSwitch I_11_12;
        private CoreManualSwitch C;
        private CoreManualSwitch Cx;
        private CoreManualSwitch IC, IN, IOVR, IZ;
@@ -26,7 +29,8 @@ public class TestableAm2904Impl implements TestableAm2904
        private SwitchWithDisplay SIO0, SIOn, QIO0, QIOn;
        private SwitchWithDisplay YC, YN, YOVR, YZ;
 
-       private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this, "Am2904");
+       private final TestEnvironmentHelper testHelper = new TestEnvironmentHelper(this,
+                       "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/am2904/TestableAm2904.json");
 
        @Override
        public void setup()
@@ -52,33 +56,25 @@ public class TestableAm2904Impl implements TestableAm2904
        @Override
        public void setInstruction(Am2904_Inst inst)
        {
-               var old = I.getValues();
-               var newPart = BitVector.from(inst.ordinal(), 6);
-               I.setState(old.subVector(0, 7).concat(newPart));
+               I_5_0.setState(BitVector.from(inst.ordinal(), 6));
        }
 
        @Override
        public void setShiftCode(String val_4_bit)
        {
-               var old = I.getValues();
-               var newPart = BitVector.parse(val_4_bit);
-               I.setState(old.subVector(0, 3).concat(newPart).concat(old.subVector(7)));
+               I_6_9.setState(BitVector.parse(val_4_bit));
        }
 
        @Override
        public void setI10(Am2904_ShiftDir dir)
        {
-               var old = I.getValues();
-               var newPart = BitVector.from(dir.ordinal(), 1);
-               I.setState(old.subVector(0, 2).concat(newPart).concat(old.subVector(3)));
+               I_10.setState(BitVector.from(dir.ordinal(), 1));
        }
 
        @Override
        public void setCarry(Am2904_Carry carry)
        {
-               var old = I.getValues();
-               var newPart = BitVector.from(carry.ordinal(), 2);
-               I.setState(newPart.concat(old.subVector(2)));
+               I_11_12.setState(BitVector.from(carry.ordinal(), 2));
        }
 
        @Override
index c269719..90baafb 100644 (file)
@@ -1,6 +1,5 @@
 package net.mograsim.logic.model.editor;
 
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
@@ -24,7 +23,6 @@ import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.wires.ModelWire;
 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
@@ -36,7 +34,6 @@ public final class Editor
        final Set<ComponentInfo> copyBuffer = new HashSet<>();
        public final DeserializedSubmodelComponent toBeEdited;
        public final HandleManager handleManager;
-       final static Map<ModelComponent, String> identifierPerComponent = new HashMap<>();
        public final EditorGUI gui;
        public final StateManager stateManager;
        private final SaveLoadManager saveManager;
@@ -56,8 +53,6 @@ public final class Editor
                saveManager = new SaveLoadManager(this);
                dialogManager = new DialogManager(gui.shell);
 
-               toBeEdited.submodel.addComponentRemovedListener(c -> identifierPerComponent.remove(c));
-
                gui.open();
        }
 
@@ -173,16 +168,7 @@ public final class Editor
 
        private ModelComponent addComponent(String identifier, JsonElement params)
        {
-               ModelComponent comp = IndirectModelComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
-               identifierPerComponent.put(comp, identifier);
-               return comp;
-       }
-
-       public static String getIdentifier(ModelComponent c)
-       {
-               if (identifierPerComponent.containsKey(c))
-                       return identifierPerComponent.get(c);
-               return c.getIDForSerializing(new IdentifyParams());
+               return IndirectModelComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
        }
 
        public void duplicate()
index 63d922a..14868e9 100644 (file)
@@ -6,9 +6,9 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
 
 import net.haspamelodica.swt.helper.gcs.GeneralGC;
+import net.haspamelodica.swt.helper.swtobjectwrappers.Font;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Point;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
-import net.mograsim.logic.model.editor.Editor;
 import net.mograsim.logic.model.editor.Editor.ComponentInfo;
 import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
@@ -57,6 +57,11 @@ public class ComponentHandle extends Handle
                        bounds.width += LENGTH_OFFSET;
                        bounds.height += LENGTH_OFFSET;
                        gc.drawRectangle(bounds);
+                       Font oldFont = gc.getFont();
+                       gc.setFont(new Font(oldFont.getName(), 5, oldFont.getStyle()));
+                       gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
+                       gc.drawText(parent.getName(), bounds.x, bounds.y, true);
+                       gc.setFont(oldFont);
                }
        }
 
@@ -89,8 +94,9 @@ public class ComponentHandle extends Handle
        @Override
        public Optional<ComponentInfo> reqCopy(Point refPoint)
        {
-               return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y, Editor.getIdentifier(parent),
-                               parent.getParamsForSerializingJSON(new IdentifyParams())));
+               IdentifyParams idParams = new IdentifyParams();
+               return Optional.of(new ComponentInfo(parent.getPosX() - refPoint.x, parent.getPosY() - refPoint.y,
+                               parent.getIDForSerializing(idParams), parent.getParamsForSerializingJSON(idParams)));
        }
 
        @Override
index b14a69e..15346c6 100644 (file)
@@ -38,7 +38,7 @@ import net.mograsim.preferences.Preferences;
  */
 public class LogicUICanvas extends ZoomableCanvas
 {
-       private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = true;
+       private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = false;
 
        private final LogicModel model;
 
@@ -224,11 +224,11 @@ public class LogicUICanvas extends ZoomableCanvas
        private void addComponentSelectorItems(List<ModelComponent> componentsByItemIndex, String base, Combo componentSelector,
                        LogicModel model)
        {
-               model.getComponentsByName().values().stream().sorted((c1, c2) -> c1.name.compareTo(c2.name)).forEach(c ->
+               model.getComponentsByName().values().stream().sorted((c1, c2) -> c1.getName().compareTo(c2.getName())).forEach(c ->
                {
                        if (!(c instanceof ModelWireCrossPoint || c instanceof SubmodelInterface))
                        {
-                               String item = base + c.name;
+                               String item = base + c.getName();
                                componentsByItemIndex.add(c);
                                componentSelector.add(item);
                                if (c instanceof SubmodelComponent)
index 227d9b1..839d5f9 100644 (file)
@@ -51,10 +51,10 @@ public class LogicModel
         */
        protected void componentCreated(ModelComponent component, Runnable destroyed)
        {
-               if (components.containsKey(component.name))
+               if (components.containsKey(component.getName()))
                        throw new IllegalStateException("Don't add the same component twice!");
-               components.put(component.name, component);
-               componentDestroyFunctions.put(component.name, destroyed);
+               components.put(component.getName(), component);
+               componentDestroyFunctions.put(component.getName(), destroyed);
                callComponentAddedListeners(component);
                requestRedraw();
        }
@@ -66,10 +66,10 @@ public class LogicModel
         */
        protected void destroyComponent(ModelComponent component)
        {
-               componentDestroyFunctions.get(component.name).run();
-               if (!components.containsKey(component.name))
+               componentDestroyFunctions.get(component.getName()).run();
+               if (!components.containsKey(component.getName()))
                        throw new IllegalStateException("Don't remove the same component twice!");
-               components.remove(component.name);
+               components.remove(component.getName());
                callComponentRemovedListeners(component);
                requestRedraw();
        }
index 6fcfa9a..d543c54 100644 (file)
@@ -30,9 +30,10 @@ public abstract class ModelComponent implements JSONSerializable
         */
        protected final LogicModelModifiable model;
        /**
-        * The name of this component. Is unique for all components in its model.
+        * The name of this component. Is unique for all components in its model.<br>
+        * Does never change, but can't be final since it is set in {@link #init()}.
         */
-       public final String name;
+       private String name;
        private final Rectangle bounds;
        /**
         * The list of all pins of this component by name.
@@ -66,7 +67,7 @@ public abstract class ModelComponent implements JSONSerializable
        protected ModelComponent(LogicModelModifiable model, String name, boolean callInit)
        {
                this.model = model;
-               this.name = name == null ? model.getDefaultComponentName(this) : name;
+               this.name = name;
                this.bounds = new Rectangle(0, 0, 0, 0);
                this.pinsByName = new HashMap<>();
                this.pinsUnmodifiable = Collections.unmodifiableMap(pinsByName);
@@ -82,13 +83,25 @@ public abstract class ModelComponent implements JSONSerializable
 
        /**
         * Initializes this component. This method should be called exactly once in this component's constructor.<br>
-        * Currently, this method only registers this component in the model.
+        * <ul>
+        * <li>If <code>{@link #name}==null</code>, sets {@link #name} to {@link LogicModelModifiable#getDefaultComponentName(ModelComponent)}.
+        * <li>Registers this component in the model.
+        * </ul>
         */
        protected void init()
        {
+               if (name == null)
+                       name = model.getDefaultComponentName(this);
                model.componentCreated(this, this::destroyed);
        }
 
+       // basic getters
+
+       public String getName()
+       {
+               return name;
+       }
+
        /**
         * Destroys this component. This method is called from {@link LogicModelModifiable#componentDestroyed(ModelComponent)
         * destroyComponent()} of the model this component is a part of.<br>
@@ -155,17 +168,30 @@ public abstract class ModelComponent implements JSONSerializable
         * Returns the pin with the given name of this component.
         * 
         * @throws IllegalArgumentException if there is no pin with the given name
+        * @see #getPinOrNull(String)
         * 
         * @author Daniel Kirschten
         */
        public Pin getPin(String name)
        {
-               Pin pin = pinsByName.get(name);
+               Pin pin = getPinOrNull(name);
                if (pin == null)
                        throw new IllegalArgumentException("No pin with the name " + name);
                return pin;
        }
 
+       /**
+        * Returns the pin with the given name of this component, or <code>null</code> if there is no such pin.
+        * 
+        * @see #getPin(String)
+        * 
+        * @author Daniel Kirschten
+        */
+       public Pin getPinOrNull(String name)
+       {
+               return pinsByName.get(name);
+       }
+
        // high-level access
 
        /**
index 7152392..6efc9ad 100644 (file)
@@ -8,6 +8,8 @@ import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
 import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.Orientation;
+import net.mograsim.logic.model.model.components.atomic.ModelSplitter.SplitterParams;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.PinUsage;
 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
@@ -18,6 +20,7 @@ import net.mograsim.preferences.ColorDefinition;
 import net.mograsim.preferences.ColorManager;
 import net.mograsim.preferences.Preferences;
 
+//TODO delete this legacy class
 public class ModelMerger extends ModelComponent
 {
        private static final double width = 10;
@@ -41,8 +44,8 @@ public class ModelMerger extends ModelComponent
                setSize(width, (logicWidth - 1) * heightPerPin);
                double inputHeight = (logicWidth - 1) * heightPerPin;
                for (int i = 0; i < logicWidth; i++, inputHeight -= 10)
-                       addPin(new Pin(model, this, "I" + i, 1, PinUsage.TRISTATE, 0, inputHeight));
-               addPin(this.outputPin = new Pin(model, this, "O", logicWidth, PinUsage.TRISTATE, width, (logicWidth - 1) * heightPerPin / 2));
+                       addPin(new Pin(model, this, "O" + i, 1, PinUsage.TRISTATE, 0, inputHeight));
+               addPin(this.outputPin = new Pin(model, this, "I", logicWidth, PinUsage.TRISTATE, width, (logicWidth - 1) * heightPerPin / 2));
                inputEnds = new ReadEnd[logicWidth];
 
                init();
@@ -81,16 +84,26 @@ public class ModelMerger extends ModelComponent
                gc.setLineCap(oldLineCap);
        }
 
+       @Override
+       public Pin getPin(String name)
+       {
+               Pin pin = getPinOrNull(name);
+               return pin == null ? getPin(name.replace('O', 'i').replace('I', 'O').replace('i', 'I')) : pin;
+       }
+
        @Override
        public String getIDForSerializing(IdentifyParams idParams)
        {
-               return "Merger";
+               return "Splitter";
        }
 
        @Override
-       public Integer getParamsForSerializing(IdentifyParams idParams)
+       public SplitterParams getParamsForSerializing(IdentifyParams idParams)
        {
-               return logicWidth;
+               SplitterParams splitterParams = new SplitterParams();
+               splitterParams.logicWidth = logicWidth;
+               splitterParams.orientation = Orientation.LEFT;
+               return splitterParams;
        }
 
        public void setCoreModelBinding(ReadEnd[] inputEnds, ReadEnd outputEnd)
index 708a4ad..962f2ac 100644 (file)
@@ -8,12 +8,15 @@ import net.mograsim.logic.core.types.BitVectorFormatter;
 import net.mograsim.logic.core.wires.CoreWire.ReadEnd;
 import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.components.Orientation;
+import net.mograsim.logic.model.model.components.OrientationCalculator;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.PinUsage;
 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
 import net.mograsim.logic.model.modeladapter.componentadapters.SplitterAdapter;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.util.JsonHandler;
 import net.mograsim.preferences.ColorDefinition;
 import net.mograsim.preferences.ColorManager;
 import net.mograsim.preferences.Preferences;
@@ -23,26 +26,31 @@ public class ModelSplitter extends ModelComponent
        private static final double width = 10;
        private static final double heightPerPin = 10;
 
+       private final double heightWithoutOC;
        public final int logicWidth;
+       private final OrientationCalculator oc;
        private final Pin inputPin;
 
        private ReadEnd inputEnd;
        private final ReadEnd[] outputEnds;
 
-       public ModelSplitter(LogicModelModifiable model, int logicWidth)
+       public ModelSplitter(LogicModelModifiable model, SplitterParams params)
        {
-               this(model, logicWidth, null);
+               this(model, params, null);
        }
 
-       public ModelSplitter(LogicModelModifiable model, int logicWidth, String name)
+       public ModelSplitter(LogicModelModifiable model, SplitterParams params, String name)
        {
                super(model, name, false);
-               this.logicWidth = logicWidth;
-               setSize(width, (logicWidth - 1) * heightPerPin);
-               addPin(this.inputPin = new Pin(model, this, "I", logicWidth, PinUsage.TRISTATE, 0, (logicWidth - 1) * heightPerPin / 2));
+               this.logicWidth = params.logicWidth;
+               this.oc = new OrientationCalculator(toggleLeftDownAlt(params.orientation), width,
+                               this.heightWithoutOC = (logicWidth - 1) * heightPerPin);
+               setSize(oc.width(), oc.height());
+               double inLineY = (logicWidth - 1) * heightPerPin / 2;
+               addPin(this.inputPin = new Pin(model, this, "I", logicWidth, PinUsage.TRISTATE, oc.newX(0, inLineY), oc.newY(0, inLineY)));
                double outputHeight = (logicWidth - 1) * heightPerPin;
                for (int i = 0; i < logicWidth; i++, outputHeight -= 10)
-                       addPin(new Pin(model, this, "O" + i, 1, PinUsage.TRISTATE, width, outputHeight));
+                       addPin(new Pin(model, this, "O" + i, 1, PinUsage.TRISTATE, oc.newX(width, outputHeight), oc.newY(width, outputHeight)));
                outputEnds = new ReadEnd[logicWidth];
 
                init();
@@ -59,16 +67,18 @@ public class ModelSplitter extends ModelComponent
                        gc.setForeground(ColorManager.current().toColor(c));
                gc.setLineWidth(
                                Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire." + (logicWidth == 1 ? "singlebit" : "multibit")));
-               double inLineY = posY + (logicWidth - 1) * heightPerPin / 2;
-               gc.drawLine(posX, inLineY, posX + width / 2, inLineY);
+               double inLineY = heightWithoutOC / 2;
+               gc.drawLine(posX + oc.newX(0, inLineY), posY + oc.newY(0, inLineY), posX + oc.newX(width / 2, inLineY),
+                               posY + oc.newY(width / 2, inLineY));
                gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.wire.singlebit"));
-               double outputHeight = posY;
+               double outputHeight = 0;
                for (int i = 0; i < logicWidth; i++, outputHeight += 10)
                {
                        c = BitVectorFormatter.formatAsColor(outputEnds[i]);
                        if (c != null)
                                gc.setForeground(ColorManager.current().toColor(c));
-                       gc.drawLine(posX + width / 2, outputHeight, posX + width, outputHeight);
+                       gc.drawLine(posX + oc.newX(width / 2, outputHeight), posY + oc.newY(width / 2, outputHeight),
+                                       posX + oc.newX(width, outputHeight), posY + oc.newY(width, outputHeight));
                }
                gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground"));
                int oldLineCap = gc.getLineCap();
@@ -76,7 +86,8 @@ public class ModelSplitter extends ModelComponent
                // TODO find better "replacement" for JOIN_BEVEL
                // TODO it looks weird that the vertical line is thinner than the single multibit wire.
                gc.setLineCap(lineJoin == SWT.JOIN_MITER ? SWT.CAP_SQUARE : lineJoin == SWT.JOIN_ROUND ? SWT.CAP_ROUND : SWT.CAP_SQUARE);
-               gc.drawLine(posX + width / 2, posY, posX + width / 2, posY + heightPerPin * (logicWidth - 1));
+               gc.drawLine(posX + oc.newX(width / 2, 0), posY + oc.newY(width / 2, 0), posX + oc.newX(width / 2, heightWithoutOC),
+                               posY + oc.newY(width / 2, heightWithoutOC));
                gc.setLineWidth(Preferences.current().getDouble("net.mograsim.logic.model.linewidth.default"));
                gc.setLineCap(oldLineCap);
        }
@@ -88,9 +99,12 @@ public class ModelSplitter extends ModelComponent
        }
 
        @Override
-       public Integer getParamsForSerializing(IdentifyParams idParams)
+       public SplitterParams getParamsForSerializing(IdentifyParams idParams)
        {
-               return logicWidth;
+               SplitterParams splitterParams = new SplitterParams();
+               splitterParams.logicWidth = logicWidth;
+               splitterParams.orientation = toggleLeftDownAlt(oc.getOrientation());
+               return splitterParams;
        }
 
        public void setCoreModelBinding(ReadEnd inputEnd, ReadEnd[] outputEnds)
@@ -104,10 +118,48 @@ public class ModelSplitter extends ModelComponent
                return inputPin;
        }
 
+       /**
+        * Used to leave bit order intuitive (MSB left or on top)
+        */
+       private static Orientation toggleLeftDownAlt(Orientation orientation)
+       {
+               // TODO if we upgrade to Java 12, replace with switch-expression
+               switch (orientation)
+               {
+               case LEFT:
+                       return Orientation.LEFT_ALT;
+               case LEFT_ALT:
+                       return Orientation.LEFT;
+               case DOWN:
+                       return Orientation.DOWN_ALT;
+               case DOWN_ALT:
+                       return Orientation.DOWN;
+               default:
+                       return orientation;
+               }
+       }
+
+       public static class SplitterParams
+       {
+               public int logicWidth;
+               public Orientation orientation;
+       }
+
        static
        {
                LogicCoreAdapter.addComponentAdapter(new SplitterAdapter());
-               IndirectModelComponentCreator.setComponentSupplier(ModelSplitter.class.getCanonicalName(),
-                               (m, p, n) -> new ModelSplitter(m, p.getAsInt(), n));
+               IndirectModelComponentCreator.setComponentSupplier(ModelSplitter.class.getCanonicalName(), (m, p, n) ->
+               {
+                       // TODO remove legacy params parsing
+                       SplitterParams params;
+                       if (p.isJsonPrimitive())
+                       {
+                               params = new SplitterParams();
+                               params.logicWidth = p.getAsInt();
+                               params.orientation = Orientation.RIGHT;
+                       } else
+                               params = JsonHandler.fromJsonTree(p, SplitterParams.class);
+                       return new ModelSplitter(m, params, n);
+               });
        }
 }
\ No newline at end of file
index d47b44d..8971285 100644 (file)
@@ -38,6 +38,11 @@ public abstract class SimpleRectangularHardcodedModelComponent extends ModelComp
 
        // creation and destruction
 
+       public SimpleRectangularHardcodedModelComponent(LogicModelModifiable model, String id, String name, String centerText)
+       {
+               this(model, id, name, centerText, true);
+       }
+
        public SimpleRectangularHardcodedModelComponent(LogicModelModifiable model, String id, String name, String centerText, boolean callInit)
        {
                super(model, name, false);
index 5aa5e38..9388e2f 100644 (file)
@@ -167,7 +167,7 @@ public abstract class SubmodelComponent extends ModelComponent
                default:
                        throw new IllegalArgumentException("Unknown enum constant: " + supermodelPin.usage);
                }
-               MovablePin submodelPin = new MovablePin(model, submodelInterface, name, supermodelPin.logicWidth, submodelPinUsage,
+               MovablePin submodelPin = new MovablePin(submodelModifiable, submodelInterface, name, supermodelPin.logicWidth, submodelPinUsage,
                                supermodelPin.getRelX() / submodelScale, supermodelPin.getRelY() / submodelScale);
 
                submodelPin.addPinMovedListener(p ->
index b41fc52..93fc945 100644 (file)
@@ -234,7 +234,7 @@ public final class LegacySubmodelComponentSerializer
                        innerComponentParams.pos = new Point(innerComponent.getPosX(), innerComponent.getPosY());
                        innerComponentParams.id = innerComponent.getIDForSerializing(idParams);
                        innerComponentParams.params = innerComponent.getParamsForSerializingJSON(idParams);
-                       innerComponentParams.name = innerComponent.name;
+                       innerComponentParams.name = innerComponent.getName();
                        i1++;
                }
                submodelParams.subComps = componentParams;
@@ -249,9 +249,9 @@ public final class LegacySubmodelComponentSerializer
                        LegacyInnerPinParams pin1Params = new LegacyInnerPinParams(), pin2Params = new LegacyInnerPinParams();
 
                        pin1Params.pinName = innerWire.getPin1().name;
-                       pin1Params.compName = innerWire.getPin1().component.name;
+                       pin1Params.compName = innerWire.getPin1().component.getName();
                        pin2Params.pinName = innerWire.getPin2().name;
-                       pin2Params.compName = innerWire.getPin2().component.name;
+                       pin2Params.compName = innerWire.getPin2().component.getName();
                        innerWireParams.name = innerWire.name;
                        innerWireParams.pin1 = pin1Params;
                        innerWireParams.pin2 = pin2Params;
index f871c87..97b84ce 100644 (file)
@@ -142,7 +142,7 @@ public class LogicModelSerializer
                        compParams.pos = new Point(component.getPosX(), component.getPosY());
                        compParams.id = component.getIDForSerializing(idParams);
                        compParams.params = component.getParamsForSerializingJSON(idParams);
-                       compParams.name = component.name;
+                       compParams.name = component.getName();
                }
                modelParams.components = componentsParams.toArray(ComponentParams[]::new);
                Arrays.sort(modelParams.components, Comparator.comparing(c -> c.name));
@@ -156,9 +156,9 @@ public class LogicModelSerializer
                        PinParams pin1Params = new PinParams(), pin2Params = new PinParams();
 
                        pin1Params.pinName = innerWire.getPin1().name;
-                       pin1Params.compName = innerWire.getPin1().component.name;
+                       pin1Params.compName = innerWire.getPin1().component.getName();
                        pin2Params.pinName = innerWire.getPin2().name;
-                       pin2Params.compName = innerWire.getPin2().component.name;
+                       pin2Params.compName = innerWire.getPin2().component.getName();
                        innerWireParams.name = innerWire.name;
                        innerWireParams.pin1 = pin1Params;
                        innerWireParams.pin2 = pin2Params;
diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java
deleted file mode 100644 (file)
index ba3ae19..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard;
-
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-
-public class HighLevelStateHandlerContext
-{
-       public final SubmodelComponent component;
-       public final String stateID;
-
-       public HighLevelStateHandlerContext(SubmodelComponent component, String stateID)
-       {
-               this.component = component;
-               this.stateID = stateID;
-       }
-}
\ No newline at end of file
index af3ad22..58e8e64 100644 (file)
@@ -1,8 +1,10 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.TreeMap;
 import java.util.function.BiFunction;
 import java.util.function.Function;
 
@@ -20,7 +22,9 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
 {
        private final SubmodelComponent component;
        private final Map<String, SubcomponentHighLevelStateHandler> subcomponentHighLevelStateHandlers;
+       private final Map<String, SubcomponentHighLevelStateHandler> subcomponentHighLevelStateHandlersUnmodifiable;
        private final Map<String, AtomicHighLevelStateHandler> atomicHighLevelStateHandlers;
+       private final Map<String, AtomicHighLevelStateHandler> atomicHighLevelStateHandlersUnmodifiable;
 
        public StandardHighLevelStateHandler(SubmodelComponent component)
        {
@@ -31,7 +35,9 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        {
                this.component = component;
                this.subcomponentHighLevelStateHandlers = new HashMap<>();
+               this.subcomponentHighLevelStateHandlersUnmodifiable = Collections.unmodifiableMap(subcomponentHighLevelStateHandlers);
                this.atomicHighLevelStateHandlers = new HashMap<>();
+               this.atomicHighLevelStateHandlersUnmodifiable = Collections.unmodifiableMap(atomicHighLevelStateHandlers);
                if (params != null)
                {
                        params.subcomponentHighLevelStates.forEach(this::addSubcomponentHighLevelState);
@@ -48,16 +54,15 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        }
 
        public <P, H extends SubcomponentHighLevelStateHandler> H addSubcomponentHighLevelState(String subcomponentStateID,
-                       BiFunction<HighLevelStateHandlerContext, P, H> handlerConstructor, P handlerParams)
+                       BiFunction<SubmodelComponent, P, H> handlerConstructor, P handlerParams)
        {
                return addSubcomponentHighLevelState(subcomponentStateID, c -> handlerConstructor.apply(c, handlerParams));
        }
 
        public <H extends SubcomponentHighLevelStateHandler> H addSubcomponentHighLevelState(String subcomponentStateID,
-                       Function<HighLevelStateHandlerContext, H> handlerConstructor)
+                       Function<SubmodelComponent, H> handlerConstructor)
        {
-               HighLevelStateHandlerContext context = new HighLevelStateHandlerContext(component, subcomponentStateID);
-               H handler = handlerConstructor.apply(context);
+               H handler = handlerConstructor.apply(component);
                addSubcomponentHighLevelState(subcomponentStateID, handler);
                return handler;
        }
@@ -68,6 +73,17 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
                subcomponentHighLevelStateHandlers.put(subcomponentStateID, handler);
        }
 
+       public void removeSubcomponentHighLevelState(String subcomponentStateID)
+       {
+               checkHighLevelStateIDPart(subcomponentStateID);
+               subcomponentHighLevelStateHandlers.remove(subcomponentStateID);
+       }
+
+       public Map<String, SubcomponentHighLevelStateHandler> getSubcomponentHighLevelStates()
+       {
+               return subcomponentHighLevelStateHandlersUnmodifiable;
+       }
+
        public AtomicHighLevelStateHandler addAtomicHighLevelState(String atomicStateID, AtomicHighLevelStateHandlerParams handlerParams)
        {
                return addAtomicHighLevelState(atomicStateID,
@@ -76,16 +92,15 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        }
 
        public <P, H extends AtomicHighLevelStateHandler> H addAtomicHighLevelState(String subcomponentStateID,
-                       BiFunction<HighLevelStateHandlerContext, P, H> handlerConstructor, P handlerParams)
+                       BiFunction<SubmodelComponent, P, H> handlerConstructor, P handlerParams)
        {
                return addAtomicHighLevelState(subcomponentStateID, c -> handlerConstructor.apply(c, handlerParams));
        }
 
        public <H extends AtomicHighLevelStateHandler> H addAtomicHighLevelState(String subcomponentStateID,
-                       Function<HighLevelStateHandlerContext, H> handlerConstructor)
+                       Function<SubmodelComponent, H> handlerConstructor)
        {
-               HighLevelStateHandlerContext context = new HighLevelStateHandlerContext(component, subcomponentStateID);
-               H handler = handlerConstructor.apply(context);
+               H handler = handlerConstructor.apply(component);
                addAtomicHighLevelState(subcomponentStateID, handler);
                return handler;
        }
@@ -96,6 +111,17 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
                atomicHighLevelStateHandlers.put(atomicStateID, handler);
        }
 
+       public void removeAtomicHighLevelState(String atomicStateID)
+       {
+               checkHighLevelStateIDPart(atomicStateID);
+               atomicHighLevelStateHandlers.remove(atomicStateID);
+       }
+
+       public Map<String, AtomicHighLevelStateHandler> getAtomicHighLevelStates()
+       {
+               return atomicHighLevelStateHandlersUnmodifiable;
+       }
+
        private static void checkHighLevelStateIDPart(String stateIDPart)
        {
                if (stateIDPart.indexOf('.') != -1)
@@ -151,8 +177,8 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        public StandardHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
        {
                StandardHighLevelStateHandlerParams params = new StandardHighLevelStateHandlerParams();
-               params.subcomponentHighLevelStates = new HashMap<>();
-               params.atomicHighLevelStates = new HashMap<>();
+               params.subcomponentHighLevelStates = new TreeMap<>();
+               params.atomicHighLevelStates = new TreeMap<>();
                for (Entry<String, SubcomponentHighLevelStateHandler> e : subcomponentHighLevelStateHandlers.entrySet())
                {
                        String stateID = e.getKey();
index d052cb1..158adda 100644 (file)
@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.snippets.CodeSnippetSupplier;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.AtomicHighLevelStateHandler;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.SubcomponentHighLevelStateHandler;
@@ -11,8 +12,8 @@ import net.mograsim.logic.model.util.JsonHandler;
 
 public class StandardHighLevelStateHandlerSnippetSuppliers
 {
-       public static final CodeSnippetSupplier<HighLevelStateHandlerContext, AtomicHighLevelStateHandler> atomicHandlerSupplier;
-       public static final CodeSnippetSupplier<HighLevelStateHandlerContext, SubcomponentHighLevelStateHandler> subcomponentHandlerSupplier;
+       public static final CodeSnippetSupplier<SubmodelComponent, AtomicHighLevelStateHandler> atomicHandlerSupplier;
+       public static final CodeSnippetSupplier<SubmodelComponent, SubcomponentHighLevelStateHandler> subcomponentHandlerSupplier;
 
        static
        {
index b5630a5..7ae2912 100644 (file)
@@ -1,6 +1,7 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import net.mograsim.logic.core.types.Bit;
@@ -8,27 +9,30 @@ import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
-       private SubmodelComponent component;
+       private final SubmodelComponent component;
        private final List<String> vectorPartTargets;
+       private final List<String> vectorPartTargetsUnmodifiable;
        private final List<Integer> vectorPartLengthes;
+       private final List<Integer> vectorPartLengthesUnmodifiable;
        private int length;
 
-       public BitVectorSplittingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public BitVectorSplittingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public BitVectorSplittingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context,
+       public BitVectorSplittingAtomicHighLevelStateHandler(SubmodelComponent component,
                        BitVectorSplittingAtomicHighLevelStateHandlerParams params)
        {
-               this.component = context.component;
+               this.component = component;
                this.vectorPartTargets = new ArrayList<>();
+               this.vectorPartTargetsUnmodifiable = Collections.unmodifiableList(vectorPartTargets);
                this.vectorPartLengthes = new ArrayList<>();
+               this.vectorPartLengthesUnmodifiable = Collections.unmodifiableList(vectorPartLengthes);
                if (params != null)
                        setVectorParts(params.vectorPartTargets, params.vectorPartLengthes);
        }
@@ -62,6 +66,16 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
                length += lengthes.stream().mapToInt(Integer::intValue).sum();
        }
 
+       public List<String> getVectorPartTargets()
+       {
+               return vectorPartTargetsUnmodifiable;
+       }
+
+       public List<Integer> getVectorPartLenghtes()
+       {
+               return vectorPartLengthesUnmodifiable;
+       }
+
        @Override
        public Object getHighLevelState()
        {
@@ -77,7 +91,7 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
                        if (vectorPart.length() != vectorPartLengthes.get(partIndex))
                                throw new IllegalArgumentException(
                                                "Incorrect vector part length: " + vectorPart.length() + "; expected " + vectorPartLengthes.get(partIndex));
-                       result = vectorPart.concat(result);
+                       result = result.concat(vectorPart);
                }
                return result;
        }
@@ -88,7 +102,7 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
                BitVector newStateCasted = (BitVector) newState;
                if (newStateCasted.length() != length)
                        throw new IllegalArgumentException("Incorrect vector length: " + newStateCasted.length() + "; expected " + length);
-               for (int partIndex = vectorPartTargets.size() - 1, bitIndex = 0; partIndex >= 0; partIndex--)
+               for (int partIndex = 0, bitIndex = 0; partIndex < vectorPartTargets.size(); partIndex++)
                {
                        int vectorPartLength = vectorPartLengthes.get(partIndex);
                        BitVector vectorPart = newStateCasted.subVector(bitIndex, bitIndex + vectorPartLength);
index 7a56882..9d2645d 100644 (file)
@@ -4,7 +4,6 @@ import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
@@ -13,23 +12,33 @@ public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelSta
        private ModelComponent delegateTarget;
        private String subStateID;
 
-       public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public DelegatingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context, DelegatingAtomicHighLevelStateHandlerParams params)
+       public DelegatingAtomicHighLevelStateHandler(SubmodelComponent component, DelegatingAtomicHighLevelStateHandlerParams params)
        {
-               this.parentComponent = context.component;
+               this.parentComponent = component;
                if (params != null)
                {
                        // TODO document this
                        if (params.delegateTarget == null)
                                setDelegateTarget(parentComponent);
                        else
-                               setDelegateTarget(parentComponent.submodel.getComponentsByName().get(params.delegateTarget));
+                       {
+                               ModelComponent delegateTarget = parentComponent.submodel.getComponentsByName().get(params.delegateTarget);
+                               if (delegateTarget == null)
+                                       throw new NullPointerException("No subcomponent with name " + params.delegateTarget);
+                               setDelegateTarget(delegateTarget);
+                       }
                        setSubStateID(params.subStateID);
                }
+               parentComponent.submodel.addComponentRemovedListener(c ->
+               {
+                       if (delegateTarget == c)
+                               delegateTarget = null;
+               });
        }
 
        public void set(ModelComponent delegateTarget, String subStateID)
@@ -42,26 +51,40 @@ public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelSta
        {
                if (delegateTarget == null)
                        this.delegateTarget = parentComponent;
-               else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.name) != delegateTarget)
+               else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.getName()) != delegateTarget)
                        throw new IllegalArgumentException(
                                        "Can only set components belonging to the submodel of the parent component of this handler as the delegate target");
                this.delegateTarget = delegateTarget;
        }
 
+       public ModelComponent getDelegateTarget()
+       {
+               return delegateTarget;
+       }
+
        public void setSubStateID(String subStateID)
        {
                this.subStateID = subStateID;
        }
 
+       public String getSubStateID()
+       {
+               return subStateID;
+       }
+
        @Override
        public Object getHighLevelState()
        {
+               if (delegateTarget == null)
+                       throw new IllegalStateException("Delegating to a component that was destroyed");
                return delegateTarget.getHighLevelState(subStateID);
        }
 
        @Override
        public void setHighLevelState(Object newState)
        {
+               if (delegateTarget == null)
+                       throw new IllegalStateException("Delegating to a component that was destroyed");
                delegateTarget.setHighLevelState(subStateID, newState);
        }
 
@@ -74,8 +97,10 @@ public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelSta
        @Override
        public DelegatingAtomicHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
        {
+               if (delegateTarget == null)
+                       throw new IllegalStateException("Delegating to a component that was destroyed");
                DelegatingAtomicHighLevelStateHandlerParams params = new DelegatingAtomicHighLevelStateHandlerParams();
-               params.delegateTarget = delegateTarget.name;
+               params.delegateTarget = delegateTarget.getName();
                params.subStateID = subStateID;
                return params;
        }
index ecf3a4d..276f541 100644 (file)
@@ -1,6 +1,7 @@
 package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -12,32 +13,40 @@ import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.ModelWire;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
 {
-       private SubmodelComponent component;
+       private final SubmodelComponent component;
        private int logicWidth;
        private final List<ModelWire> wiresToForce;
+       private final List<ModelWire> wiresToForceUnmodifiable;
        private final List<ModelWire> wiresToForceInverted;
+       private final List<ModelWire> wiresToForceInvertedUnmodifiable;
 
-       public WireForcingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public WireForcingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public WireForcingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context, WireForcingAtomicHighLevelStateHandlerParams params)
+       public WireForcingAtomicHighLevelStateHandler(SubmodelComponent component, WireForcingAtomicHighLevelStateHandlerParams params)
        {
-               this.component = context.component;
+               this.component = component;
                this.wiresToForce = new ArrayList<>();
+               this.wiresToForceUnmodifiable = Collections.unmodifiableList(wiresToForce);
                this.wiresToForceInverted = new ArrayList<>();
+               this.wiresToForceInvertedUnmodifiable = Collections.unmodifiableList(wiresToForceInverted);
                if (params != null)
                {
                        Map<String, ModelWire> wiresByName = component.submodel.getWiresByName();
                        setWiresToForce(params.wiresToForce.stream().map((Function<String, ModelWire>) wiresByName::get).collect(Collectors.toList()),
                                        params.wiresToForceInverted.stream().map((Function<String, ModelWire>) wiresByName::get).collect(Collectors.toList()));
                }
+               component.submodel.addWireRemovedListener(w ->
+               {
+                       wiresToForce.removeIf(w::equals);
+                       wiresToForceInverted.removeIf(w::equals);
+               });
        }
 
        public void set(List<ModelWire> wiresToForce, List<ModelWire> wiresToForceInverted)
@@ -62,6 +71,8 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
                        logicWidth = wire.logicWidth;
                else if (wire.logicWidth != logicWidth)
                        throw new IllegalArgumentException("Can only force wires of the same logic width");
+               // this can add the same wire multiple times, but maybe there is a weird configuration where it is neccessary, due to race
+               // conditions, to force the same wire twice.
                if (inverted)
                        wiresToForceInverted.add(wire);
                else
@@ -75,6 +86,16 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
                logicWidth = 0;
        }
 
+       public List<ModelWire> getWiresToForce()
+       {
+               return wiresToForceUnmodifiable;
+       }
+
+       public List<ModelWire> getWiresToForceInverted()
+       {
+               return wiresToForceInvertedUnmodifiable;
+       }
+
        @Override
        public Object getHighLevelState()
        {
index 0d1fd65..12a9888 100644 (file)
@@ -4,7 +4,6 @@ import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler
@@ -13,24 +12,34 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent
        private ModelComponent delegateTarget;
        private String prefix;
 
-       public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public DelegatingSubcomponentHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context,
+       public DelegatingSubcomponentHighLevelStateHandler(SubmodelComponent component,
                        DelegatingSubcomponentHighLevelStateHandlerParams params)
        {
-               this.parentComponent = context.component;
+               this.parentComponent = component;
                if (params != null)
                {
                        // TODO document this
                        if (params.delegateTarget == null)
                                setDelegateTarget(parentComponent);
                        else
-                               this.delegateTarget = parentComponent.submodel.getComponentsByName().get(params.delegateTarget);
+                       {
+                               ModelComponent delegateTarget = parentComponent.submodel.getComponentsByName().get(params.delegateTarget);
+                               if (delegateTarget == null)
+                                       throw new NullPointerException("No subcomponent with name " + params.delegateTarget);
+                               setDelegateTarget(delegateTarget);
+                       }
                        setPrefix(params.prefix);
                }
+               parentComponent.submodel.addComponentRemovedListener(c ->
+               {
+                       if (delegateTarget == c)
+                               delegateTarget = null;
+               });
        }
 
        public void set(ModelComponent delegateTarget, String prefix)
@@ -43,26 +52,40 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent
        {
                if (delegateTarget == null)
                        this.delegateTarget = parentComponent;
-               else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.name) != delegateTarget)
+               else if (parentComponent.submodel.getComponentsByName().get(delegateTarget.getName()) != delegateTarget)
                        throw new IllegalArgumentException(
                                        "Can only set components belonging to the submodel of the parent component of this handler as the delegate target");
                this.delegateTarget = delegateTarget;
        }
 
+       public ModelComponent getDelegateTarget()
+       {
+               return delegateTarget;
+       }
+
        public void setPrefix(String prefix)
        {
                this.prefix = prefix;
        }
 
+       public String getPrefix()
+       {
+               return prefix;
+       }
+
        @Override
        public Object getHighLevelState(String subStateID)
        {
+               if (delegateTarget == null)
+                       throw new IllegalStateException("Delegating to a component that was destroyed");
                return delegateTarget.getHighLevelState(getDelegateTargetHighLevelStateID(subStateID));
        }
 
        @Override
        public void setHighLevelState(String subStateID, Object newState)
        {
+               if (delegateTarget == null)
+                       throw new IllegalStateException("Delegating to a component that was destroyed");
                delegateTarget.setHighLevelState(getDelegateTargetHighLevelStateID(subStateID), newState);
        }
 
@@ -81,7 +104,7 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent
        public DelegatingSubcomponentHighLevelStateHandlerParams getParamsForSerializing(IdentifyParams idParams)
        {
                DelegatingSubcomponentHighLevelStateHandlerParams params = new DelegatingSubcomponentHighLevelStateHandlerParams();
-               params.delegateTarget = delegateTarget.name;
+               params.delegateTarget = delegateTarget.getName();
                params.prefix = prefix;
                return params;
        }
index a638013..ede8710 100644 (file)
@@ -30,6 +30,7 @@ public class PinNamesSymbolRenderer implements Renderer
                this.pinLabelMargin = params.pinLabelMargin;
                if (params.pinNamePositions != null)
                        params.pinNamePositions.forEach(this::setPinPosition);
+               component.addPinRemovedListener(p -> setPinPosition(p, null));
        }
 
        public void setPinPosition(String pinName, Position position)
index 0f151b9..20491ce 100644 (file)
@@ -6,6 +6,7 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.stream.Collectors;
 
 import com.google.gson.Gson;
@@ -29,7 +30,8 @@ public class JsonHandler
         */
        public static <T> T readJson(InputStream input, Class<T> type) throws IOException
        {
-               try (InputStreamReader reader = new InputStreamReader(input); BufferedReader bf = new BufferedReader(reader))
+               try (InputStreamReader reader = new InputStreamReader(input, StandardCharsets.UTF_8);
+                               BufferedReader bf = new BufferedReader(reader))
                {
                        return fromJson(bf.lines().collect(Collectors.joining("\n")), type);
                }
@@ -64,4 +66,4 @@ public class JsonHandler
        {
                return parser.toJsonTree(o);
        }
-}
+}
\ No newline at end of file
index 6936168..d604d94 100644 (file)
@@ -17,3 +17,5 @@ Export-Package: net.mograsim.machine,
  net.mograsim.machine.mi,
  net.mograsim.machine.mi.parameters,
  net.mograsim.machine.standard.memory
+Bundle-Activator: net.mograsim.machine.MachineLoader
+Bundle-ActivationPolicy: lazy
diff --git a/net.mograsim.machine/src/net/mograsim/machine/MachineLoader.java b/net.mograsim.machine/src/net/mograsim/machine/MachineLoader.java
new file mode 100644 (file)
index 0000000..9a88575
--- /dev/null
@@ -0,0 +1,36 @@
+package net.mograsim.machine;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+import net.mograsim.logic.model.serializing.ClassLoaderBasedResourceLoader;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+
+public class MachineLoader implements BundleActivator
+{
+       private static AtomicBoolean activated = new AtomicBoolean(false);
+
+       @Override
+       public void start(BundleContext context) throws Exception
+       {
+               setup();
+       }
+
+       @Override
+       public void stop(BundleContext context) throws Exception
+       {
+               // nothing
+       }
+
+       public static void setup()
+       {
+               if (activated.getAndSet(true))
+                       return;
+               ClassLoaderBasedResourceLoader resourceLoader = ClassLoaderBasedResourceLoader.create(MachineLoader.class.getClassLoader());
+               IndirectModelComponentCreator.registerResourceLoader(resourceLoader, "MachineLoader");
+               IndirectModelComponentCreator.loadStandardComponentIDs(MachineLoader.class.getResourceAsStream("standardComponentIDMapping.json"));
+//             System.out.println("SETUP DONE"); // TODO: Debug
+       }
+}
index 6d38491..c983561 100644 (file)
@@ -38,6 +38,7 @@ public class StandardMicroInstructionMemory implements MicroInstructionMemory
        public void setCell(long address, MicroInstruction data)
        {
                this.data[translate(address)] = data;
+               notifyObservers(address);
        }
 
        @Override
index a513b60..54c275b 100644 (file)
@@ -11,14 +11,67 @@ public class MnemonicFamily implements ParameterClassification
 {
        private final Mnemonic[] values;
        private final String[] stringValues;
-       private final Map<String, Mnemonic> byText;
-       private final int vectorLength;
+       private Map<String, Mnemonic> byText;
+       private int vectorLength;
+       
+       public MnemonicFamily(String... names)
+       {
+               this.values = new Mnemonic[names.length];
+               this.stringValues = new String[names.length];
+               BitVector[] values = new BitVector[names.length];
+               int bits = (int) Math.ceil(Math.log(names.length));
+               for(int i = 0; i < names.length; i++)
+               {
+                       values[i] = BitVector.from(i, bits);
+               }
+               
+               setup(names, values);
+       }
+       
+       public MnemonicFamily(String[] names, long[] values, int bits)
+       {
+               if(names.length != values.length)
+                       throw new IllegalArgumentException();
+               this.values = new Mnemonic[values.length];
+               this.stringValues = new String[values.length];
+               BitVector[] vectors = new BitVector[values.length];
+               
+               for(int i = 0; i < vectors.length; i++)
+               {
+                       vectors[i] = BitVector.from(values[i], bits);
+               }
+               
+               setup(names, vectors);
+       }
+       
+       public MnemonicFamily(String[] names, BitVector[] values)
+       {
+               if(names.length != values.length)
+                       throw new IllegalArgumentException();
+               this.values = new Mnemonic[values.length];
+               this.stringValues = new String[values.length];
+               
+               setup(names, values);
+       }
        
        public MnemonicFamily(MnemonicPair... values)
        {
                this.values = new Mnemonic[values.length];
                this.stringValues = new String[values.length];
                
+               setup(values);
+       }
+       
+       private void setup(String[] names, BitVector[] values)
+       {
+               MnemonicPair[] mnemonics = new MnemonicPair[values.length];
+               for(int i = 0; i < values.length; i++)
+                       mnemonics[i] = new MnemonicPair(names[i], values[i]);
+               setup(mnemonics);
+       }
+       
+       private void setup(MnemonicPair[] values)
+       {
                for(int i = 0; i < values.length; i++)
                {
                        this.values[i] = createMnemonic(values[i], i);
@@ -37,7 +90,7 @@ public class MnemonicFamily implements ParameterClassification
                if(values.length != byText.keySet().size())
                        throw new IllegalArgumentException("MnemonicFamily contains multiple Mnemonics with the same name!");
        }
-       
+
        private Mnemonic createMnemonic(MnemonicPair mnemonicPair, int ordinal)
        {
                return new Mnemonic(mnemonicPair.name, mnemonicPair.value, this, ordinal);
index 9f5b1cc..2b4f905 100644 (file)
@@ -4,7 +4,6 @@ import net.haspamelodica.swt.helper.gcs.GeneralGC;
 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
 import net.mograsim.logic.model.model.LogicModelModifiable;
 import net.mograsim.logic.model.model.components.ModelComponent;
-import net.mograsim.logic.model.model.components.atomic.ModelAndGate;
 import net.mograsim.logic.model.model.wires.Pin;
 import net.mograsim.logic.model.model.wires.PinUsage;
 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
@@ -12,8 +11,8 @@ import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
 import net.mograsim.logic.model.snippets.Renderer;
 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer;
-import net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer.CenteredTextParams;
+import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
 import net.mograsim.logic.model.util.JsonHandler;
 import net.mograsim.machine.MainMemoryDefinition;
 
@@ -28,13 +27,16 @@ public class ModelMemoryWA extends ModelComponent
 
        public ModelMemoryWA(LogicModelModifiable model, MainMemoryDefinition definition, String name)
        {
-               super(model, name,false);
+               super(model, name, false);
                this.definition = definition;
 
-               CenteredTextParams renderer1Params = new CenteredTextParams();
-               renderer1Params.text = "RAM";
-               renderer1Params.fontHeight = 24;
-               this.symbolRenderer = new CenteredTextSymbolRenderer(this, renderer1Params);
+               SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
+               rendererParams.centerText = "RAM";
+               rendererParams.centerTextHeight = 24;
+               rendererParams.horizontalComponentCenter = width / 100;
+               rendererParams.pinLabelHeight = 17.5;
+               rendererParams.pinLabelMargin = 2.5;
+               this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
                this.outlineRenderer = new DefaultOutlineRenderer(this);
 
                setSize(width, height);
@@ -42,7 +44,7 @@ public class ModelMemoryWA extends ModelComponent
                addPin(addrPin = new Pin(model, this, "A", definition.getMemoryAddressBits(), PinUsage.INPUT, 0, 10));
                addPin(dataPin = new Pin(model, this, "D", definition.getCellWidth(), PinUsage.TRISTATE, 0, 30));
                addPin(rWPin = new Pin(model, this, "RW", 1, PinUsage.INPUT, 0, 50));
-               
+
                init();
        }
 
@@ -103,7 +105,7 @@ public class ModelMemoryWA extends ModelComponent
        static
        {
                LogicCoreAdapter.addComponentAdapter(new WordAddressableMemoryAdapter());
-               IndirectModelComponentCreator.setComponentSupplier(ModelAndGate.class.getCanonicalName(), (m, p, n) ->
+               IndirectModelComponentCreator.setComponentSupplier(ModelMemoryWA.class.getCanonicalName(), (m, p, n) ->
                {
                        ModelMemoryWAParams params = JsonHandler.fromJsonTree(p, ModelMemoryWAParams.class);
                        return new ModelMemoryWA(m, MainMemoryDefinition.create(params.addrBits, params.cellWidth, params.minAddr, params.maxAddr), n);
diff --git a/net.mograsim.machine/src/net/mograsim/machine/standardComponentIDMapping.json b/net.mograsim.machine/src/net/mograsim/machine/standardComponentIDMapping.json
new file mode 100644 (file)
index 0000000..eb8c941
--- /dev/null
@@ -0,0 +1,4 @@
+mograsim version: 0.1.3
+{
+  "MemoryWA": "resloader:MachineLoader:class:net.mograsim.machine.standard.memory.ModelMemoryWA"
+}
\ No newline at end of file
diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/LazyTableViewer.java
new file mode 100644 (file)
index 0000000..e00742f
--- /dev/null
@@ -0,0 +1,50 @@
+package net.mograsim.plugin.tables;
+
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ILazyContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Table;
+
+public class LazyTableViewer extends TableViewer
+{
+
+       public LazyTableViewer(Composite parent, int style)
+       {
+               super(parent, style | SWT.VIRTUAL);
+       }
+
+       public LazyTableViewer(Composite parent)
+       {
+               super(parent);
+       }
+
+       public LazyTableViewer(Table table)
+       {
+               super(table);
+       }
+
+       @Override
+       public void setContentProvider(IContentProvider provider)
+       {
+               if (!(provider instanceof ILazyContentProvider))
+                       throw new IllegalArgumentException("Content provider must be an ILazyContentProvider");
+               super.setContentProvider(provider);
+       }
+
+       public void refreshLazy()
+       {
+               Table t = getTable();
+               ILazyContentProvider provider = (ILazyContentProvider) getContentProvider();
+               doClearAll();
+               int startIndex = t.getTopIndex();
+               int numRows = t.getBounds().height / t.getItemHeight();
+               int endIndex = startIndex + numRows + 5;
+
+               for (int i = startIndex; i < endIndex; i++)
+               {
+                       provider.updateElement(i);
+               }
+       }
+}
index 3227e9f..356428b 100644 (file)
@@ -3,7 +3,6 @@ package net.mograsim.plugin.tables.memory;
 import java.math.BigInteger;
 import java.util.Optional;
 
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.VerifyListener;
@@ -25,12 +24,13 @@ import net.mograsim.plugin.MachineContext.ContextObserver;
 import net.mograsim.plugin.asm.AsmNumberUtil;
 import net.mograsim.plugin.tables.AddressLabelProvider;
 import net.mograsim.plugin.tables.DisplaySettings;
+import net.mograsim.plugin.tables.LazyTableViewer;
 import net.mograsim.plugin.tables.NumberColumnLabelProvider;
 import net.mograsim.plugin.tables.RadixSelector;
 
 public class MemoryView extends ViewPart implements ContextObserver
 {
-       private TableViewer viewer;
+       private LazyTableViewer viewer;
        private MemoryTableContentProvider provider;
        private DisplaySettings displaySettings;
 
@@ -46,7 +46,7 @@ public class MemoryView extends ViewPart implements ContextObserver
                createHeader(parent);
                createViewer(parent);
 
-               displaySettings.addObserver(() -> viewer.refresh());
+               displaySettings.addObserver(() -> viewer.refreshLazy());
 
                setupContextBinding();
        }
@@ -97,7 +97,7 @@ public class MemoryView extends ViewPart implements ContextObserver
 
        private void createViewer(Composite parent)
        {
-               viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
+               viewer = new LazyTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
                createColumns();
                Table table = viewer.getTable();
                table.setHeaderVisible(true);
index ddca578..b8021b7 100644 (file)
@@ -10,6 +10,7 @@ public class InstructionTableContentProvider implements ILazyContentProvider
 {
        private TableViewer viewer;
        private MicroInstructionMemory memory;
+       private long minAddr = 0;
 
        @Override
        public void updateElement(int index)
@@ -24,6 +25,14 @@ public class InstructionTableContentProvider implements ILazyContentProvider
                this.viewer = (TableViewer) viewer;
                this.memory = (MicroInstructionMemory) newInput;
                if (this.memory != null)
+               {
                        this.viewer.setItemCount((int) memory.size());
+                       this.minAddr = memory.getDefinition().getMinimalAddress();
+               }
+       }
+
+       public void update(long address)
+       {
+               updateElement((int) (address - minAddr));
        }
 }
index f0db46f..35b6933 100644 (file)
@@ -6,7 +6,6 @@ import java.util.Optional;
 
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TableViewerColumn;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
@@ -25,9 +24,9 @@ import net.mograsim.machine.mi.MicroInstructionMemoryParser;
 import net.mograsim.machine.mi.parameters.ParameterClassification;
 import net.mograsim.plugin.MachineContext;
 import net.mograsim.plugin.MachineContext.ContextObserver;
-import net.mograsim.plugin.asm.AsmNumberUtil.NumberType;
 import net.mograsim.plugin.tables.AddressLabelProvider;
 import net.mograsim.plugin.tables.DisplaySettings;
+import net.mograsim.plugin.tables.LazyTableViewer;
 import net.mograsim.plugin.tables.RadixSelector;
 import net.mograsim.plugin.util.DropDownMenu;
 import net.mograsim.plugin.util.DropDownMenu.DropDownEntry;
@@ -35,17 +34,18 @@ import net.mograsim.plugin.util.DropDownMenu.DropDownEntry;
 public class InstructionView extends ViewPart implements ContextObserver
 {
        private String saveLoc = null;
-       private TableViewer viewer;
+       private LazyTableViewer viewer;
        private TableViewerColumn[] columns = new TableViewerColumn[0];
        private MicroInstructionDefinition miDef;
        private MicroInstructionMemory memory;
        private DisplaySettings displaySettings;
+       private InstructionTableContentProvider provider;
 
        @SuppressWarnings("unused")
        @Override
        public void createPartControl(Composite parent)
        {
-               InstructionTableContentProvider provider = new InstructionTableContentProvider();
+               provider = new InstructionTableContentProvider();
                GridLayout layout = new GridLayout(3, false);
                setupMenuButtons(parent);
 
@@ -53,18 +53,20 @@ public class InstructionView extends ViewPart implements ContextObserver
                new RadixSelector(parent, displaySettings);
 
                parent.setLayout(layout);
-               viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
+               viewer = new LazyTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL);
+
                Table table = viewer.getTable();
                table.setHeaderVisible(true);
                table.setLinesVisible(true);
                viewer.setUseHashlookup(true);
                viewer.setContentProvider(provider);
+               getSite().setSelectionProvider(viewer);
 
                GridData viewerData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
                viewerData.horizontalSpan = 3;
                viewer.getTable().setLayoutData(viewerData);
 
-               displaySettings.addObserver(() -> viewer.refresh());
+               displaySettings.addObserver(() -> viewer.refreshLazy());
                MachineContext.getInstance().registerObserver(this);
        }
 
@@ -152,11 +154,11 @@ public class InstructionView extends ViewPart implements ContextObserver
                        provider = new ParameterLabelProvider(index);
                        break;
                case INTEGER_IMMEDIATE:
-                       support = new IntegerEditingSupport(viewer, miDef, index, new DisplaySettings(NumberType.DECIMAL));
+                       support = new IntegerEditingSupport(viewer, miDef, index, displaySettings, this.provider);
                        provider = new IntegerColumnLabelProvider(displaySettings, index);
                        break;
                case MNEMONIC:
-                       support = new MnemonicEditingSupport(viewer, miDef, index);
+                       support = new MnemonicEditingSupport(viewer, miDef, index, this.provider);
                        provider = new ParameterLabelProvider(index);
                        break;
                default:
index 0a7ad28..d3b48ce 100644 (file)
@@ -14,18 +14,24 @@ public class IntegerEditingSupport extends NumberCellEditingSupport
 {
        private IntegerClassification classification;
        private int index;
+       private InstructionTableContentProvider provider;
 
-       public IntegerEditingSupport(TableViewer viewer, MicroInstructionDefinition miDef, int index, DisplaySettings displaySettings)
+       public IntegerEditingSupport(TableViewer viewer, MicroInstructionDefinition miDef, int index, DisplaySettings displaySettings,
+                       InstructionTableContentProvider provider)
        {
                super(viewer, displaySettings);
                classification = (IntegerClassification) miDef.getParameterClassifications()[index];
                this.index = index;
+               this.provider = provider;
        }
 
        @Override
        protected void setAsBigInteger(Object element, BigInteger value)
        {
-               ((InstructionTableRow) element).data.setParameter(index, new IntegerImmediate(value, classification.getExpectedBits()));
+               InstructionTableRow row = ((InstructionTableRow) element);
+               row.data.setParameter(index, new IntegerImmediate(value, classification.getExpectedBits()));
+               provider.update(row.address);
+//             viewer.update(element, null); Does not do anything for some reason
        }
 
        @Override
index 910fefa..765e434 100644 (file)
@@ -14,17 +14,18 @@ public class MnemonicEditingSupport extends EditingSupport
 {
        private final ComboBoxCellEditor editor;
        private final MnemonicFamily family;
-       private final TableViewer viewer;
        private final int index;
+       private InstructionTableContentProvider provider;
 
-       public MnemonicEditingSupport(TableViewer viewer, MicroInstructionDefinition definition, int index)
+       public MnemonicEditingSupport(TableViewer viewer, MicroInstructionDefinition definition, int index,
+                       InstructionTableContentProvider provider)
        {
                super(viewer);
-               this.viewer = viewer;
                family = (MnemonicFamily) definition.getParameterClassifications()[index];
                editor = new ComboBoxCellEditor(viewer.getTable(), family.getStringValues(), SWT.READ_ONLY);
                this.index = index;
                editor.setValidator(new MnemonicCellEditorValidator(family));
+               this.provider = provider;
        }
 
        @Override
@@ -48,8 +49,9 @@ public class MnemonicEditingSupport extends EditingSupport
        @Override
        protected void setValue(Object element, Object value)
        {
-               ((InstructionTableRow) element).data.setParameter(index, family.get((Integer) value));
-               viewer.update(element, null);
+               InstructionTableRow row = ((InstructionTableRow) element);
+               row.data.setParameter(index, family.get((Integer) value));
+               provider.update(row.address);
        }
 
 }
index 8be2c4e..7e12101 100644 (file)
@@ -760,4 +760,11 @@ exception as provided by Oracle in the LICENSE file that accompanied this code.&
          version="0.1.0.qualifier"
          unpack="false"/>
 
+   <plugin
+         id="net.mograsim.machine"
+         download-size="1"
+         install-size="1"
+         version="0.1.0.qualifier"
+         unpack="false"/>
+
 </feature>