Made GUIMerger and GUISplitter the same thing
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 11 Sep 2019 14:40:47 +0000 (16:40 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Wed, 11 Sep 2019 14:40:47 +0000 (16:40 +0200)
15 files changed:
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/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_invwe.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.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/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

index 27be709..dbca8f2 100644 (file)
         }
       },
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "NandGate",
+        "name": "NandGate#0",
         "pos": {
-          "x": 235.0,
-          "y": 56.0
+          "x": 255.0,
+          "y": 495.0
         },
-        "params": 8
+        "params": 1
       },
       {
-        "id": "Merger",
-        "name": "Merger#1",
+        "id": "NandGate",
+        "name": "NandGate#1",
         "pos": {
-          "x": 235.0,
-          "y": 136.0
+          "x": 270.0,
+          "y": 550.0
         },
-        "params": 4
+        "params": 1
       },
       {
-        "id": "Merger",
-        "name": "Merger#2",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 235.0,
-          "y": 176.0
+          "x": 215.0,
+          "y": 56.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "id": "Merger",
-        "name": "Merger#3",
+        "id": "Splitter",
+        "name": "Splitter#1",
         "pos": {
-          "x": 360.0,
-          "y": 20.0
+          "x": 305.0,
+          "y": 30.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "id": "Merger",
-        "name": "Merger#4",
+        "id": "Splitter",
+        "name": "Splitter#10",
         "pos": {
-          "x": 360.0,
-          "y": 125.0
+          "x": 600.0,
+          "y": 395.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
-        "id": "NandGate",
-        "name": "NandGate#0",
+        "id": "Splitter",
+        "name": "Splitter#11",
         "pos": {
-          "x": 255.0,
-          "y": 495.0
+          "x": 235.0,
+          "y": 56.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 8,
+          "orientation": "LEFT"
+        }
       },
       {
-        "id": "NandGate",
-        "name": "NandGate#1",
+        "id": "Splitter",
+        "name": "Splitter#12",
         "pos": {
-          "x": 270.0,
-          "y": 550.0
+          "x": 235.0,
+          "y": 136.0
         },
-        "params": 1
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#0",
+        "name": "Splitter#13",
         "pos": {
-          "x": 215.0,
-          "y": 56.0
+          "x": 235.0,
+          "y": 176.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#1",
+        "name": "Splitter#14",
         "pos": {
-          "x": 305.0,
-          "y": 30.0
+          "x": 360.0,
+          "y": 20.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#10",
+        "name": "Splitter#15",
         "pos": {
-          "x": 600.0,
-          "y": 395.0
+          "x": 360.0,
+          "y": 125.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
           "x": 305.0,
           "y": 135.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 405.0,
           "y": 395.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 405.0,
           "y": 435.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 470.0,
           "y": 395.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 470.0,
           "y": 435.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 535.0,
           "y": 435.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 535.0,
           "y": 395.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 600.0,
           "y": 435.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "WireCrossPoint",
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#14",
         "pos": {
-          "x": 355.0,
-          "y": 510.0
+          "x": 354.0,
+          "y": 509.0
         },
         "params": 16
       },
       },
       {
         "id": "dff16_we",
-        "name": "dff16_we#1",
+        "name": "dff16_we#0",
         "pos": {
           "x": 290.0,
           "y": 485.0
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "O"
+          "compName": "Splitter#14",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "O"
+          "compName": "Splitter#15",
+          "pinName": "I"
         },
         "name": "unnamedWire#114",
         "path": []
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "dff16_we#1",
+          "compName": "dff16_we#0",
           "pinName": "WE"
         },
         "name": "unnamedWire#127",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "dff16_we#1",
+          "compName": "dff16_we#0",
           "pinName": "D"
         },
         "name": "unnamedWire#128",
       },
       {
         "pin1": {
-          "compName": "dff16_we#1",
+          "compName": "dff16_we#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",
           "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": []
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I3"
+          "compName": "Splitter#12",
+          "pinName": "O3"
         },
         "name": "unnamedWire#55",
         "path": [
           "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": "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",
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "O"
+          "compName": "Splitter#13",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Splitter#2",
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "O"
+          "compName": "Splitter#12",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Splitter#1",
           "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": "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": "mux1_4#0",
           "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": "mux1_4#1",
           "pinName": "Y3"
         },
         "pin2": {
-          "compName": "Merger#4",
-          "pinName": "I1"
+          "compName": "Splitter#15",
+          "pinName": "O1"
         },
         "name": "unnamedWire#79",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#4",
-          "pinName": "I0"
+          "compName": "Splitter#15",
+          "pinName": "O0"
         },
         "pin2": {
           "compName": "mux1_4#1",
index b74dd6a..86f578b 100644 (file)
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
-        "pos": {
-          "x": 334.0,
-          "y": 394.0
-        },
-        "params": 1
-      },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#11",
         "pos": {
           "x": 229.0,
           "y": 909.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#12",
+        "name": "WireCrossPoint#11",
         "pos": {
           "x": 234.0,
           "y": 919.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#13",
+        "name": "WireCrossPoint#12",
         "pos": {
           "x": 239.0,
           "y": 929.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#14",
+        "name": "WireCrossPoint#13",
         "pos": {
           "x": 244.0,
           "y": 939.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#15",
+        "name": "WireCrossPoint#14",
         "pos": {
           "x": 319.0,
           "y": 909.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#16",
+        "name": "WireCrossPoint#15",
         "pos": {
           "x": 334.0,
           "y": 939.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#17",
+        "name": "WireCrossPoint#16",
         "pos": {
           "x": 134.0,
           "y": 1039.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#18",
+        "name": "WireCrossPoint#17",
         "pos": {
           "x": 139.0,
           "y": 1049.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#19",
+        "name": "WireCrossPoint#18",
         "pos": {
           "x": 379.0,
           "y": 529.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#20",
+        "name": "WireCrossPoint#19",
         "pos": {
           "x": 394.0,
           "y": 544.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#21",
+        "name": "WireCrossPoint#2",
+        "pos": {
+          "x": 254.0,
+          "y": 749.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#20",
         "pos": {
           "x": 434.0,
           "y": 734.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#22",
+        "name": "WireCrossPoint#21",
         "pos": {
           "x": 354.0,
           "y": 504.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#23",
+        "name": "WireCrossPoint#22",
         "pos": {
           "x": 359.0,
           "y": 509.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#24",
+        "name": "WireCrossPoint#23",
         "pos": {
           "x": 364.0,
           "y": 514.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#25",
+        "name": "WireCrossPoint#24",
         "pos": {
           "x": 369.0,
           "y": 519.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#26",
+        "name": "WireCrossPoint#25",
         "pos": {
           "x": 354.0,
           "y": 449.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#27",
+        "name": "WireCrossPoint#26",
         "pos": {
           "x": 359.0,
           "y": 459.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#28",
+        "name": "WireCrossPoint#27",
         "pos": {
           "x": 364.0,
           "y": 469.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#29",
+        "name": "WireCrossPoint#28",
         "pos": {
           "x": 369.0,
           "y": 479.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#3",
+        "name": "WireCrossPoint#29",
         "pos": {
-          "x": 254.0,
-          "y": 749.0
+          "x": 104.0,
+          "y": 769.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#30",
+        "name": "WireCrossPoint#3",
         "pos": {
-          "x": 104.0,
-          "y": 769.0
+          "x": 134.0,
+          "y": 729.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#31",
+        "name": "WireCrossPoint#30",
         "pos": {
           "x": 109.0,
           "y": 779.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#32",
+        "name": "WireCrossPoint#31",
         "pos": {
           "x": 114.0,
           "y": 789.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#33",
+        "name": "WireCrossPoint#32",
         "pos": {
           "x": 109.0,
           "y": 809.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#34",
+        "name": "WireCrossPoint#33",
         "pos": {
           "x": 114.0,
           "y": 819.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#35",
+        "name": "WireCrossPoint#34",
         "pos": {
           "x": 119.0,
           "y": 829.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#36",
+        "name": "WireCrossPoint#35",
         "pos": {
           "x": 104.0,
           "y": 799.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#37",
+        "name": "WireCrossPoint#36",
         "pos": {
           "x": 109.0,
           "y": 839.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#38",
+        "name": "WireCrossPoint#37",
         "pos": {
           "x": 114.0,
           "y": 849.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#39",
+        "name": "WireCrossPoint#38",
         "pos": {
           "x": 119.0,
           "y": 859.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#4",
+        "name": "WireCrossPoint#39",
         "pos": {
-          "x": 134.0,
-          "y": 729.0
+          "x": 414.0,
+          "y": 449.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#40",
+        "name": "WireCrossPoint#4",
         "pos": {
-          "x": 414.0,
-          "y": 449.0
+          "x": 129.0,
+          "y": 739.0
         },
         "params": 1
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#41",
+        "name": "WireCrossPoint#40",
         "pos": {
           "x": 99.0,
           "y": 964.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#42",
+        "name": "WireCrossPoint#41",
         "pos": {
           "x": 99.0,
           "y": 764.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#44",
+        "name": "WireCrossPoint#42",
         "pos": {
           "x": 124.0,
           "y": 889.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#45",
+        "name": "WireCrossPoint#43",
         "pos": {
           "x": 364.0,
           "y": 889.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#46",
+        "name": "WireCrossPoint#44",
         "pos": {
           "x": 134.0,
           "y": 894.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#47",
+        "name": "WireCrossPoint#45",
         "pos": {
           "x": 409.0,
           "y": 894.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#48",
+        "name": "WireCrossPoint#46",
         "pos": {
           "x": 144.0,
           "y": 1079.0
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 129.0,
-          "y": 739.0
+          "x": 124.0,
+          "y": 749.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 124.0,
-          "y": 749.0
+          "x": 349.0,
+          "y": 364.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 349.0,
-          "y": 364.0
+          "x": 344.0,
+          "y": 374.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 344.0,
-          "y": 374.0
+          "x": 339.0,
+          "y": 384.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 339.0,
-          "y": 384.0
+          "x": 334.0,
+          "y": 394.0
         },
         "params": 1
       },
           "pinName": "F3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "name": "unnamedWire#100",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#25",
+          "compName": "WireCrossPoint#24",
           "pinName": ""
         },
         "name": "unnamedWire#101",
       },
       {
         "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": {
       },
       {
         "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": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "name": "unnamedWire#114",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "name": "unnamedWire#115",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#24",
+          "compName": "WireCrossPoint#23",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#32",
+          "compName": "WireCrossPoint#31",
           "pinName": ""
         },
         "name": "unnamedWire#116",
           "pinName": "A1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#41",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "name": "unnamedWire#117",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#30",
+          "compName": "WireCrossPoint#29",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#31",
+          "compName": "WireCrossPoint#30",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "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",
       },
       {
         "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": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "name": "unnamedWire#13",
       },
       {
         "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": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#36",
+          "compName": "WireCrossPoint#35",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "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#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "name": "unnamedWire#153",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#40",
+          "compName": "WireCrossPoint#39",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#41",
+          "compName": "WireCrossPoint#40",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#3",
+          "compName": "WireCrossPoint#2",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "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": {
       },
       {
         "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": {
           "pinName": "EN"
         },
         "pin2": {
-          "compName": "WireCrossPoint#47",
+          "compName": "WireCrossPoint#45",
           "pinName": ""
         },
         "name": "unnamedWire#170",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "pin2": {
           "pinName": "C4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#48",
+          "compName": "WireCrossPoint#46",
           "pinName": ""
         },
         "name": "unnamedWire#172",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#48",
+          "compName": "WireCrossPoint#46",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#48",
+          "compName": "WireCrossPoint#46",
           "pinName": ""
         },
         "pin2": {
           "pinName": "LSH"
         },
         "pin2": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "name": "unnamedWire#18",
           "pinName": "NSH"
         },
         "pin2": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "name": "unnamedWire#19",
           "pinName": "RSH"
         },
         "pin2": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "name": "unnamedWire#20",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#4",
+          "compName": "WireCrossPoint#3",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#6",
+          "compName": "WireCrossPoint#5",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#46",
+          "compName": "WireCrossPoint#44",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#5",
+          "compName": "WireCrossPoint#4",
           "pinName": ""
         },
         "pin2": {
           "pinName": "SC"
         },
         "pin2": {
-          "compName": "WireCrossPoint#44",
+          "compName": "WireCrossPoint#42",
           "pinName": ""
         },
         "name": "unnamedWire#26",
           "pinName": "Q1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#48",
           "pinName": "Q2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#49",
           "pinName": "Q3"
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#50",
           "pinName": "Q4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#51",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#8",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "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": "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",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "name": "unnamedWire#72",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "name": "unnamedWire#73",
       },
       {
         "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": {
           "pinName": "RAMn"
         },
         "pin2": {
-          "compName": "WireCrossPoint#42",
+          "compName": "WireCrossPoint#41",
           "pinName": ""
         },
         "name": "unnamedWire#78",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#11",
+          "compName": "WireCrossPoint#10",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#15",
+          "compName": "WireCrossPoint#14",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#12",
+          "compName": "WireCrossPoint#11",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#13",
+          "compName": "WireCrossPoint#12",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#16",
+          "compName": "WireCrossPoint#15",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#17",
+          "compName": "WireCrossPoint#16",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#18",
+          "compName": "WireCrossPoint#17",
           "pinName": ""
         },
         "pin2": {
           "pinName": "F1"
         },
         "pin2": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "name": "unnamedWire#92",
           "pinName": "F4"
         },
         "pin2": {
-          "compName": "WireCrossPoint#20",
+          "compName": "WireCrossPoint#19",
           "pinName": ""
         },
         "name": "unnamedWire#93",
           "pinName": "OUT"
         },
         "pin2": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "name": "unnamedWire#94",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#47",
+          "compName": "WireCrossPoint#45",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#21",
+          "compName": "WireCrossPoint#20",
           "pinName": ""
         },
         "pin2": {
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#19",
+          "compName": "WireCrossPoint#18",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#22",
+          "compName": "WireCrossPoint#21",
           "pinName": ""
         },
         "name": "unnamedWire#98",
           "pinName": "F2"
         },
         "pin2": {
-          "compName": "WireCrossPoint#23",
+          "compName": "WireCrossPoint#22",
           "pinName": ""
         },
         "name": "unnamedWire#99",
index 836fe5c..769a0a4 100644 (file)
           "y": 95.0
         }
       },
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 20.0,
-          "y": 235.0
-        },
-        "params": 6
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#1",
-        "pos": {
-          "x": 20.0,
-          "y": 185.0
-        },
-        "params": 5
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#2",
-        "pos": {
-          "x": 15.0,
-          "y": 65.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#3",
-        "pos": {
-          "x": 520.0,
-          "y": 90.0
-        },
-        "params": 4
-      },
-      {
-        "id": "Merger",
-        "name": "Merger#4",
-        "pos": {
-          "x": 20.0,
-          "y": 165.0
-        },
-        "params": 2
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 165.0
         },
-        "params": 13
+        "params": {
+          "logicWidth": 13,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 575.0,
           "y": 40.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 445.0,
           "y": 300.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 455.0,
           "y": 635.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 455.0,
           "y": 710.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 135.0,
           "y": 645.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 310.0,
           "y": 645.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 430.0,
           "y": 535.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#16",
+        "pos": {
+          "x": 20.0,
+          "y": 235.0
+        },
+        "params": {
+          "logicWidth": 6,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#17",
+        "pos": {
+          "x": 20.0,
+          "y": 185.0
+        },
+        "params": {
+          "logicWidth": 5,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#18",
+        "pos": {
+          "x": 15.0,
+          "y": 65.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#19",
+        "pos": {
+          "x": 520.0,
+          "y": 90.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
           "x": 440.0,
           "y": 90.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#20",
+        "pos": {
+          "x": 20.0,
+          "y": 165.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "Splitter",
           "x": 465.0,
           "y": 100.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 425.0,
           "y": 150.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 425.0,
           "y": 190.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 320.0,
           "y": 310.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 445.0,
           "y": 340.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 445.0,
           "y": 380.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 255.0,
           "y": 430.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "TriStateBuffer",
           "pinName": "O6"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I0"
+          "compName": "Splitter#17",
+          "pinName": "O0"
         },
         "name": "unnamedWire#10",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I1"
+          "compName": "Splitter#17",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O8"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "I2"
+          "compName": "Splitter#17",
+          "pinName": "O2"
         },
         "name": "unnamedWire#12",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#1",
-          "pinName": "I3"
+          "compName": "Splitter#17",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "Splitter#0",
           "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",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#16",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "Am2904RegCTInstrDecode#0",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "Merger#1",
-          "pinName": "O"
+          "compName": "Splitter#17",
+          "pinName": "I"
         },
         "name": "unnamedWire#16",
         "path": [
           "pinName": "IOVR"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I0"
+          "compName": "Splitter#18",
+          "pinName": "O0"
         },
         "name": "unnamedWire#17",
         "path": [
           "pinName": "IN"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I1"
+          "compName": "Splitter#18",
+          "pinName": "O1"
         },
         "name": "unnamedWire#18",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "I2"
+          "compName": "Splitter#18",
+          "pinName": "O2"
         },
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": "IZ"
         },
         "pin2": {
-          "compName": "Merger#2",
-          "pinName": "I3"
+          "compName": "Splitter#18",
+          "pinName": "O3"
         },
         "name": "unnamedWire#20",
         "path": [
       },
       {
         "pin1": {
-          "compName": "Merger#2",
-          "pinName": "O"
+          "compName": "Splitter#18",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "WireCrossPoint#1",
           "pinName": "O0"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#16",
+          "pinName": "O0"
         },
         "name": "unnamedWire#4",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#16",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O2"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I2"
+          "compName": "Splitter#16",
+          "pinName": "O2"
         },
         "name": "unnamedWire#6",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#16",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "Splitter#0",
           "pinName": "O4"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#16",
+          "pinName": "O4"
         },
         "name": "unnamedWire#8",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#3",
-          "pinName": "I0"
+          "compName": "Splitter#19",
+          "pinName": "O0"
         },
         "pin2": {
           "compName": "mux1_4#0",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I5"
+          "compName": "Splitter#16",
+          "pinName": "O5"
         },
         "pin2": {
           "compName": "Splitter#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": "mux1_4#0",
           "pinName": "Y1"
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "I3"
+          "compName": "Splitter#19",
+          "pinName": "O3"
         },
         "name": "unnamedWire#92",
         "path": []
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#3",
-          "pinName": "O"
+          "compName": "Splitter#19",
+          "pinName": "I"
         },
         "name": "unnamedWire#93",
         "path": []
index a5b084d..927d41f 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 385.0,
-          "y": 85.0
-        },
-        "params": 4
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 35.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 135.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 45.0,
           "y": 340.0
         },
-        "params": 3
+        "params": {
+          "logicWidth": 3,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 235.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#4",
+        "pos": {
+          "x": 385.0,
+          "y": 85.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
           "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",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#4",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#4",
+          "pinName": "O0"
         },
         "name": "unnamedWire#7",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#4",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "WireCrossPoint#3",
index ab44304..2c007e5 100644 (file)
           "x": 5.0,
           "y": 110.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "WireCrossPoint",
index 7faf69d..3b859b2 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "id": "Merger",
-        "name": "Merger#0",
-        "pos": {
-          "x": 230.0,
-          "y": 30.0
-        },
-        "params": 4
-      },
       {
         "id": "NandGate",
         "name": "NandGate#0",
           "x": 5.0,
           "y": 135.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 185.0
         },
-        "params": 4
+        "params": {
+          "logicWidth": 4,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
           "x": 5.0,
           "y": 95.0
         },
-        "params": 2
+        "params": {
+          "logicWidth": 2,
+          "orientation": "RIGHT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#3",
+        "pos": {
+          "x": 230.0,
+          "y": 30.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
           "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",
           "pinName": ""
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I0"
+          "compName": "Splitter#3",
+          "pinName": "O0"
         },
         "name": "unnamedWire#11",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I1"
+          "compName": "Splitter#3",
+          "pinName": "O1"
         },
         "pin2": {
           "compName": "dff4_finewe#0",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "O"
+          "compName": "Splitter#3",
+          "pinName": "I"
         },
         "pin2": {
           "compName": "_submodelinterface",
index 04a629f..9163fc3 100644 (file)
         },
         "params": 1
       },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
-        "pos": {
-          "x": 199.0,
-          "y": 209.0
-        },
-        "params": 1
-      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
+        "name": "WireCrossPoint#8",
         "pos": {
           "x": 234.0,
           "y": 69.0
         },
         "params": 1
       },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#9",
+        "pos": {
+          "x": 199.0,
+          "y": 209.0
+        },
+        "params": 1
+      },
       {
         "id": "dff12",
         "name": "dff12#0",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#36",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
           "pinName": "_OE"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#53",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "pin2": {
           "pinName": "A"
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#9",
           "pinName": ""
         },
         "name": "unnamedWire#57",
index 20f0664..1f15137 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 250.0,
-          "y": 45.0
+          "x": 70.0,
+          "y": 65.0
         },
-        "params": 12
+        "params": {
+          "logicWidth": 12,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#0",
+        "name": "Splitter#1",
         "pos": {
-          "x": 70.0,
-          "y": 65.0
+          "x": 250.0,
+          "y": 45.0
         },
-        "params": 12
+        "params": {
+          "logicWidth": 12,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "TextComponent",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#1",
+          "pinName": "O11"
         },
         "pin2": {
           "compName": "dff#2",
           "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": "dff#3",
           "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": "dff#4",
           "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": "dff#11",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#1",
+          "pinName": "O4"
         },
         "pin2": {
           "compName": "dff#10",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "dff#8",
           "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": "dff#7",
           "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#5",
index 11bc97c..e6cda44 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 275.0,
-          "y": 50.0
+          "x": 75.0,
+          "y": 70.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#0",
+        "name": "Splitter#1",
         "pos": {
-          "x": 75.0,
-          "y": 70.0
+          "x": 275.0,
+          "y": 50.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I15"
+          "compName": "Splitter#1",
+          "pinName": "O15"
         },
         "pin2": {
           "compName": "dff#0",
           "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": "dff#3",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I12"
+          "compName": "Splitter#1",
+          "pinName": "O12"
         },
         "pin2": {
           "compName": "dff#2",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#1",
+          "pinName": "O11"
         },
         "pin2": {
           "compName": "dff#6",
           "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": "dff#7",
           "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": "dff#8",
           "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": "dff#15",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#1",
+          "pinName": "O4"
         },
         "pin2": {
           "compName": "dff#14",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "dff#12",
           "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": "dff#11",
           "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#7",
index bbc264b..3fc94f9 100644 (file)
   "submodel": {
     "components": [
       {
-        "id": "Merger",
-        "name": "Merger#0",
+        "id": "Splitter",
+        "name": "Splitter#0",
         "pos": {
-          "x": 275.0,
-          "y": 50.0
+          "x": 75.0,
+          "y": 70.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "RIGHT"
+        }
       },
       {
         "id": "Splitter",
-        "name": "Splitter#0",
+        "name": "Splitter#1",
         "pos": {
-          "x": 75.0,
-          "y": 70.0
+          "x": 275.0,
+          "y": 50.0
         },
-        "params": 16
+        "params": {
+          "logicWidth": 16,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I15"
+          "compName": "Splitter#1",
+          "pinName": "O15"
         },
         "pin2": {
           "compName": "dff#0",
           "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": "dff#3",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I12"
+          "compName": "Splitter#1",
+          "pinName": "O12"
         },
         "pin2": {
           "compName": "dff#2",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#1",
+          "pinName": "O11"
         },
         "pin2": {
           "compName": "dff#6",
           "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": "dff#7",
           "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": "dff#8",
           "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": "dff#15",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I4"
+          "compName": "Splitter#1",
+          "pinName": "O4"
         },
         "pin2": {
           "compName": "dff#14",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I3"
+          "compName": "Splitter#1",
+          "pinName": "O3"
         },
         "pin2": {
           "compName": "dff#12",
           "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": "dff#11",
           "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#7",
index faeaeb5..9f1da98 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "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": "Splitter",
+        "name": "Splitter#2",
+        "pos": {
+          "x": 235.0,
+          "y": 95.0
+        },
+        "params": {
+          "logicWidth": 12,
+          "orientation": "LEFT"
+        }
       },
       {
         "id": "WireCrossPoint",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#2",
+          "pinName": "O11"
         },
         "name": "unnamedWire#103",
         "path": [
           "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": "sel1#1",
           "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": "sel1#6",
           "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": "sel1#7",
           "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": "sel1#10",
           "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": "sel1#4",
           "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",
index c282fa5..e29bbbf 100644 (file)
   "innerScale": 0.2,
   "submodel": {
     "components": [
-      {
-        "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",
       },
       {
         "pin1": {
-          "compName": "Merger#0",
-          "pinName": "I14"
+          "compName": "Splitter#2",
+          "pinName": "O14"
         },
         "pin2": {
           "compName": "sel1#1",
           "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": "sel1#3",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I11"
+          "compName": "Splitter#2",
+          "pinName": "O11"
         },
         "name": "unnamedWire#103",
         "path": [
           "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": "sel1#5",
           "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": "sel1#10",
           "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": "sel1#11",
           "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": "sel1#14",
           "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": "sel1#8",
           "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",
           "pinName": "Y"
         },
         "pin2": {
-          "compName": "Merger#0",
-          "pinName": "I15"
+          "compName": "Splitter#2",
+          "pinName": "O15"
         },
         "name": "unnamedWire#99",
         "path": [
index 9171ee8..d543c54 100644 (file)
@@ -168,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