From ad841126238b8b7653a311a9c89d3dada18ce3c5 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Wed, 11 Sep 2019 16:40:47 +0200 Subject: [PATCH] Made GUIMerger and GUISplitter the same thing --- .../logic/model/am2900/components/Am2900.json | 282 +++++++----- .../am2900/components/am2901/Am2901.json | 404 +++++++++--------- .../am2900/components/am2904/Am2904.json | 289 ++++++++----- .../am2900/components/am2904/Am2904MSR.json | 61 ++- .../components/am2904/Am2904TestLogic.json | 5 +- .../am2900/components/am2904/Am2904muSR.json | 56 ++- .../am2900/components/am2910/Am2910.json | 32 +- .../model/am2900/components/dff12_we.json | 76 ++-- .../model/am2900/components/dff16_invwe.json | 92 ++-- .../model/am2900/components/dff16_we.json | 92 ++-- .../model/am2900/components/mux1_12.json | 83 ++-- .../model/am2900/components/mux1_16.json | 99 +++-- .../model/components/ModelComponent.java | 15 +- .../model/components/atomic/ModelMerger.java | 23 +- .../components/atomic/ModelSplitter.java | 84 +++- 15 files changed, 974 insertions(+), 719 deletions(-) diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json index 27be7090..dbca8f24 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json @@ -157,94 +157,118 @@ } }, { - "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", @@ -253,7 +277,10 @@ "x": 305.0, "y": 135.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -262,7 +289,10 @@ "x": 405.0, "y": 395.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -271,7 +301,10 @@ "x": 405.0, "y": 435.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -280,7 +313,10 @@ "x": 470.0, "y": 395.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -289,7 +325,10 @@ "x": 470.0, "y": 435.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -298,7 +337,10 @@ "x": 535.0, "y": 435.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -307,7 +349,10 @@ "x": 535.0, "y": 395.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -316,7 +361,10 @@ "x": 600.0, "y": 435.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "WireCrossPoint", @@ -376,8 +424,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#14", "pos": { - "x": 355.0, - "y": 510.0 + "x": 354.0, + "y": 509.0 }, "params": 16 }, @@ -487,7 +535,7 @@ }, { "id": "dff16_we", - "name": "dff16_we#1", + "name": "dff16_we#0", "pos": { "x": 290.0, "y": 485.0 @@ -734,8 +782,8 @@ }, { "pin1": { - "compName": "Merger#3", - "pinName": "O" + "compName": "Splitter#14", + "pinName": "I" }, "pin2": { "compName": "WireCrossPoint#10", @@ -750,8 +798,8 @@ "pinName": "" }, "pin2": { - "compName": "Merger#4", - "pinName": "O" + "compName": "Splitter#15", + "pinName": "I" }, "name": "unnamedWire#114", "path": [] @@ -918,7 +966,7 @@ "pinName": "Y" }, "pin2": { - "compName": "dff16_we#1", + "compName": "dff16_we#0", "pinName": "WE" }, "name": "unnamedWire#127", @@ -930,7 +978,7 @@ "pinName": "Y" }, "pin2": { - "compName": "dff16_we#1", + "compName": "dff16_we#0", "pinName": "D" }, "name": "unnamedWire#128", @@ -1046,7 +1094,7 @@ }, { "pin1": { - "compName": "dff16_we#1", + "compName": "dff16_we#0", "pinName": "Q" }, "pin2": { @@ -1482,16 +1530,16 @@ "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", @@ -1506,16 +1554,16 @@ "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", @@ -1542,8 +1590,8 @@ "pinName": "O11" }, "pin2": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#11", + "pinName": "O3" }, "name": "unnamedWire#50", "path": [] @@ -1554,16 +1602,16 @@ "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", @@ -1578,8 +1626,8 @@ "pinName": "O8" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#11", + "pinName": "O0" }, "name": "unnamedWire#53", "path": [] @@ -1607,8 +1655,8 @@ "pinName": "" }, "pin2": { - "compName": "Merger#1", - "pinName": "I3" + "compName": "Splitter#12", + "pinName": "O3" }, "name": "unnamedWire#55", "path": [ @@ -1624,16 +1672,16 @@ "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", @@ -1648,16 +1696,16 @@ "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", @@ -1680,8 +1728,8 @@ }, { "pin1": { - "compName": "Merger#1", - "pinName": "I0" + "compName": "Splitter#12", + "pinName": "O0" }, "pin2": { "compName": "Splitter#0", @@ -1696,16 +1744,16 @@ "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", @@ -1824,8 +1872,8 @@ }, { "pin1": { - "compName": "Merger#2", - "pinName": "O" + "compName": "Splitter#13", + "pinName": "I" }, "pin2": { "compName": "Splitter#2", @@ -1836,8 +1884,8 @@ }, { "pin1": { - "compName": "Merger#1", - "pinName": "O" + "compName": "Splitter#12", + "pinName": "I" }, "pin2": { "compName": "Splitter#1", @@ -1852,16 +1900,16 @@ "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", @@ -1876,16 +1924,16 @@ "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", @@ -1900,16 +1948,16 @@ "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", @@ -1924,8 +1972,8 @@ "pinName": "Y3" }, "pin2": { - "compName": "Merger#4", - "pinName": "I1" + "compName": "Splitter#15", + "pinName": "O1" }, "name": "unnamedWire#79", "path": [] @@ -1944,8 +1992,8 @@ }, { "pin1": { - "compName": "Merger#4", - "pinName": "I0" + "compName": "Splitter#15", + "pinName": "O0" }, "pin2": { "compName": "mux1_4#1", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901.json index b74dd6af..86f578bc 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2901/Am2901.json @@ -424,15 +424,6 @@ { "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 @@ -441,7 +432,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#12", + "name": "WireCrossPoint#11", "pos": { "x": 234.0, "y": 919.0 @@ -450,7 +441,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#13", + "name": "WireCrossPoint#12", "pos": { "x": 239.0, "y": 929.0 @@ -459,7 +450,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#14", + "name": "WireCrossPoint#13", "pos": { "x": 244.0, "y": 939.0 @@ -468,7 +459,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#15", + "name": "WireCrossPoint#14", "pos": { "x": 319.0, "y": 909.0 @@ -477,7 +468,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#16", + "name": "WireCrossPoint#15", "pos": { "x": 334.0, "y": 939.0 @@ -486,7 +477,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#17", + "name": "WireCrossPoint#16", "pos": { "x": 134.0, "y": 1039.0 @@ -495,7 +486,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#18", + "name": "WireCrossPoint#17", "pos": { "x": 139.0, "y": 1049.0 @@ -504,7 +495,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#19", + "name": "WireCrossPoint#18", "pos": { "x": 379.0, "y": 529.0 @@ -513,7 +504,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#20", + "name": "WireCrossPoint#19", "pos": { "x": 394.0, "y": 544.0 @@ -522,7 +513,16 @@ }, { "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 @@ -531,7 +531,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#22", + "name": "WireCrossPoint#21", "pos": { "x": 354.0, "y": 504.0 @@ -540,7 +540,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#23", + "name": "WireCrossPoint#22", "pos": { "x": 359.0, "y": 509.0 @@ -549,7 +549,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#24", + "name": "WireCrossPoint#23", "pos": { "x": 364.0, "y": 514.0 @@ -558,7 +558,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#25", + "name": "WireCrossPoint#24", "pos": { "x": 369.0, "y": 519.0 @@ -567,7 +567,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#26", + "name": "WireCrossPoint#25", "pos": { "x": 354.0, "y": 449.0 @@ -576,7 +576,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#27", + "name": "WireCrossPoint#26", "pos": { "x": 359.0, "y": 459.0 @@ -585,7 +585,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#28", + "name": "WireCrossPoint#27", "pos": { "x": 364.0, "y": 469.0 @@ -594,7 +594,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#29", + "name": "WireCrossPoint#28", "pos": { "x": 369.0, "y": 479.0 @@ -603,25 +603,25 @@ }, { "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 @@ -630,7 +630,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#32", + "name": "WireCrossPoint#31", "pos": { "x": 114.0, "y": 789.0 @@ -639,7 +639,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#33", + "name": "WireCrossPoint#32", "pos": { "x": 109.0, "y": 809.0 @@ -648,7 +648,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#34", + "name": "WireCrossPoint#33", "pos": { "x": 114.0, "y": 819.0 @@ -657,7 +657,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#35", + "name": "WireCrossPoint#34", "pos": { "x": 119.0, "y": 829.0 @@ -666,7 +666,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#36", + "name": "WireCrossPoint#35", "pos": { "x": 104.0, "y": 799.0 @@ -675,7 +675,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#37", + "name": "WireCrossPoint#36", "pos": { "x": 109.0, "y": 839.0 @@ -684,7 +684,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#38", + "name": "WireCrossPoint#37", "pos": { "x": 114.0, "y": 849.0 @@ -693,7 +693,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#39", + "name": "WireCrossPoint#38", "pos": { "x": 119.0, "y": 859.0 @@ -702,25 +702,25 @@ }, { "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 @@ -729,7 +729,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#42", + "name": "WireCrossPoint#41", "pos": { "x": 99.0, "y": 764.0 @@ -738,7 +738,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#44", + "name": "WireCrossPoint#42", "pos": { "x": 124.0, "y": 889.0 @@ -747,7 +747,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#45", + "name": "WireCrossPoint#43", "pos": { "x": 364.0, "y": 889.0 @@ -756,7 +756,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#46", + "name": "WireCrossPoint#44", "pos": { "x": 134.0, "y": 894.0 @@ -765,7 +765,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#47", + "name": "WireCrossPoint#45", "pos": { "x": 409.0, "y": 894.0 @@ -774,7 +774,7 @@ }, { "id": "WireCrossPoint", - "name": "WireCrossPoint#48", + "name": "WireCrossPoint#46", "pos": { "x": 144.0, "y": 1079.0 @@ -785,8 +785,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#5", "pos": { - "x": 129.0, - "y": 739.0 + "x": 124.0, + "y": 749.0 }, "params": 1 }, @@ -794,8 +794,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#6", "pos": { - "x": 124.0, - "y": 749.0 + "x": 349.0, + "y": 364.0 }, "params": 1 }, @@ -803,8 +803,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#7", "pos": { - "x": 349.0, - "y": 364.0 + "x": 344.0, + "y": 374.0 }, "params": 1 }, @@ -812,8 +812,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#8", "pos": { - "x": 344.0, - "y": 374.0 + "x": 339.0, + "y": 384.0 }, "params": 1 }, @@ -821,8 +821,8 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#9", "pos": { - "x": 339.0, - "y": 384.0 + "x": 334.0, + "y": 394.0 }, "params": 1 }, @@ -985,7 +985,7 @@ "pinName": "F3" }, "pin2": { - "compName": "WireCrossPoint#24", + "compName": "WireCrossPoint#23", "pinName": "" }, "name": "unnamedWire#100", @@ -1010,11 +1010,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#20", + "compName": "WireCrossPoint#19", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#25", + "compName": "WireCrossPoint#24", "pinName": "" }, "name": "unnamedWire#101", @@ -1027,11 +1027,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#22", + "compName": "WireCrossPoint#21", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#26", + "compName": "WireCrossPoint#25", "pinName": "" }, "name": "unnamedWire#102", @@ -1039,11 +1039,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#23", + "compName": "WireCrossPoint#22", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#27", + "compName": "WireCrossPoint#26", "pinName": "" }, "name": "unnamedWire#103", @@ -1051,11 +1051,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#24", + "compName": "WireCrossPoint#23", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#28", + "compName": "WireCrossPoint#27", "pinName": "" }, "name": "unnamedWire#104", @@ -1063,11 +1063,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#25", + "compName": "WireCrossPoint#24", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#29", + "compName": "WireCrossPoint#28", "pinName": "" }, "name": "unnamedWire#105", @@ -1075,7 +1075,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#26", + "compName": "WireCrossPoint#25", "pinName": "" }, "pin2": { @@ -1087,7 +1087,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#27", + "compName": "WireCrossPoint#26", "pinName": "" }, "pin2": { @@ -1099,7 +1099,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#28", + "compName": "WireCrossPoint#27", "pinName": "" }, "pin2": { @@ -1111,7 +1111,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#29", + "compName": "WireCrossPoint#28", "pinName": "" }, "pin2": { @@ -1135,7 +1135,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#26", + "compName": "WireCrossPoint#25", "pinName": "" }, "pin2": { @@ -1152,7 +1152,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#27", + "compName": "WireCrossPoint#26", "pinName": "" }, "pin2": { @@ -1169,7 +1169,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#28", + "compName": "WireCrossPoint#27", "pinName": "" }, "pin2": { @@ -1186,7 +1186,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#29", + "compName": "WireCrossPoint#28", "pinName": "" }, "pin2": { @@ -1203,11 +1203,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#22", + "compName": "WireCrossPoint#21", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#30", + "compName": "WireCrossPoint#29", "pinName": "" }, "name": "unnamedWire#114", @@ -1220,11 +1220,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#23", + "compName": "WireCrossPoint#22", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#31", + "compName": "WireCrossPoint#30", "pinName": "" }, "name": "unnamedWire#115", @@ -1237,11 +1237,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#24", + "compName": "WireCrossPoint#23", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#32", + "compName": "WireCrossPoint#31", "pinName": "" }, "name": "unnamedWire#116", @@ -1258,7 +1258,7 @@ "pinName": "A1" }, "pin2": { - "compName": "WireCrossPoint#41", + "compName": "WireCrossPoint#40", "pinName": "" }, "name": "unnamedWire#117", @@ -1271,7 +1271,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#30", + "compName": "WireCrossPoint#29", "pinName": "" }, "pin2": { @@ -1283,7 +1283,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#31", + "compName": "WireCrossPoint#30", "pinName": "" }, "pin2": { @@ -1312,7 +1312,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#32", + "compName": "WireCrossPoint#31", "pinName": "" }, "pin2": { @@ -1324,11 +1324,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#31", + "compName": "WireCrossPoint#30", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#33", + "compName": "WireCrossPoint#32", "pinName": "" }, "name": "unnamedWire#121", @@ -1336,11 +1336,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#32", + "compName": "WireCrossPoint#31", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#34", + "compName": "WireCrossPoint#33", "pinName": "" }, "name": "unnamedWire#122", @@ -1348,11 +1348,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#25", + "compName": "WireCrossPoint#24", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#35", + "compName": "WireCrossPoint#34", "pinName": "" }, "name": "unnamedWire#123", @@ -1365,11 +1365,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#30", + "compName": "WireCrossPoint#29", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#36", + "compName": "WireCrossPoint#35", "pinName": "" }, "name": "unnamedWire#124", @@ -1377,7 +1377,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#36", + "compName": "WireCrossPoint#35", "pinName": "" }, "pin2": { @@ -1389,7 +1389,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#33", + "compName": "WireCrossPoint#32", "pinName": "" }, "pin2": { @@ -1401,7 +1401,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#34", + "compName": "WireCrossPoint#33", "pinName": "" }, "pin2": { @@ -1413,7 +1413,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#35", + "compName": "WireCrossPoint#34", "pinName": "" }, "pin2": { @@ -1425,11 +1425,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#33", + "compName": "WireCrossPoint#32", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#37", + "compName": "WireCrossPoint#36", "pinName": "" }, "name": "unnamedWire#129", @@ -1441,7 +1441,7 @@ "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#3", + "compName": "WireCrossPoint#2", "pinName": "" }, "name": "unnamedWire#13", @@ -1458,11 +1458,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#34", + "compName": "WireCrossPoint#33", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#38", + "compName": "WireCrossPoint#37", "pinName": "" }, "name": "unnamedWire#130", @@ -1470,11 +1470,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#35", + "compName": "WireCrossPoint#34", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#39", + "compName": "WireCrossPoint#38", "pinName": "" }, "name": "unnamedWire#131", @@ -1482,7 +1482,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#37", + "compName": "WireCrossPoint#36", "pinName": "" }, "pin2": { @@ -1494,7 +1494,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#38", + "compName": "WireCrossPoint#37", "pinName": "" }, "pin2": { @@ -1506,7 +1506,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#39", + "compName": "WireCrossPoint#38", "pinName": "" }, "pin2": { @@ -1518,7 +1518,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#16", + "compName": "WireCrossPoint#15", "pinName": "" }, "pin2": { @@ -1530,7 +1530,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#36", + "compName": "WireCrossPoint#35", "pinName": "" }, "pin2": { @@ -1547,7 +1547,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#37", + "compName": "WireCrossPoint#36", "pinName": "" }, "pin2": { @@ -1564,7 +1564,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#38", + "compName": "WireCrossPoint#37", "pinName": "" }, "pin2": { @@ -1581,7 +1581,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#39", + "compName": "WireCrossPoint#38", "pinName": "" }, "pin2": { @@ -1598,7 +1598,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#3", + "compName": "WireCrossPoint#2", "pinName": "" }, "pin2": { @@ -1933,7 +1933,7 @@ "pinName": "Y" }, "pin2": { - "compName": "WireCrossPoint#40", + "compName": "WireCrossPoint#39", "pinName": "" }, "name": "unnamedWire#153", @@ -1941,7 +1941,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#40", + "compName": "WireCrossPoint#39", "pinName": "" }, "pin2": { @@ -1958,7 +1958,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#40", + "compName": "WireCrossPoint#39", "pinName": "" }, "pin2": { @@ -2004,7 +2004,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#41", + "compName": "WireCrossPoint#40", "pinName": "" }, "pin2": { @@ -2029,7 +2029,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#19", + "compName": "WireCrossPoint#18", "pinName": "" }, "pin2": { @@ -2041,7 +2041,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#3", + "compName": "WireCrossPoint#2", "pinName": "" }, "pin2": { @@ -2058,7 +2058,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#42", + "compName": "WireCrossPoint#41", "pinName": "" }, "pin2": { @@ -2075,7 +2075,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#42", + "compName": "WireCrossPoint#41", "pinName": "" }, "pin2": { @@ -2096,7 +2096,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#20", + "compName": "WireCrossPoint#19", "pinName": "" }, "pin2": { @@ -2117,11 +2117,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#44", + "compName": "WireCrossPoint#42", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#6", + "compName": "WireCrossPoint#5", "pinName": "" }, "name": "unnamedWire#164", @@ -2129,7 +2129,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#45", + "compName": "WireCrossPoint#43", "pinName": "" }, "pin2": { @@ -2150,7 +2150,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#45", + "compName": "WireCrossPoint#43", "pinName": "" }, "pin2": { @@ -2162,11 +2162,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#45", + "compName": "WireCrossPoint#43", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#44", + "compName": "WireCrossPoint#42", "pinName": "" }, "name": "unnamedWire#167", @@ -2174,11 +2174,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#46", + "compName": "WireCrossPoint#44", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#4", + "compName": "WireCrossPoint#3", "pinName": "" }, "name": "unnamedWire#168", @@ -2186,11 +2186,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#46", + "compName": "WireCrossPoint#44", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#47", + "compName": "WireCrossPoint#45", "pinName": "" }, "name": "unnamedWire#169", @@ -2198,7 +2198,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#3", + "compName": "WireCrossPoint#2", "pinName": "" }, "pin2": { @@ -2227,7 +2227,7 @@ "pinName": "EN" }, "pin2": { - "compName": "WireCrossPoint#47", + "compName": "WireCrossPoint#45", "pinName": "" }, "name": "unnamedWire#170", @@ -2235,7 +2235,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#20", + "compName": "WireCrossPoint#19", "pinName": "" }, "pin2": { @@ -2256,7 +2256,7 @@ "pinName": "C4" }, "pin2": { - "compName": "WireCrossPoint#48", + "compName": "WireCrossPoint#46", "pinName": "" }, "name": "unnamedWire#172", @@ -2269,7 +2269,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#48", + "compName": "WireCrossPoint#46", "pinName": "" }, "pin2": { @@ -2290,7 +2290,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#48", + "compName": "WireCrossPoint#46", "pinName": "" }, "pin2": { @@ -2315,7 +2315,7 @@ "pinName": "LSH" }, "pin2": { - "compName": "WireCrossPoint#4", + "compName": "WireCrossPoint#3", "pinName": "" }, "name": "unnamedWire#18", @@ -2340,7 +2340,7 @@ "pinName": "NSH" }, "pin2": { - "compName": "WireCrossPoint#5", + "compName": "WireCrossPoint#4", "pinName": "" }, "name": "unnamedWire#19", @@ -2394,7 +2394,7 @@ "pinName": "RSH" }, "pin2": { - "compName": "WireCrossPoint#6", + "compName": "WireCrossPoint#5", "pinName": "" }, "name": "unnamedWire#20", @@ -2415,7 +2415,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#4", + "compName": "WireCrossPoint#3", "pinName": "" }, "pin2": { @@ -2427,7 +2427,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#5", + "compName": "WireCrossPoint#4", "pinName": "" }, "pin2": { @@ -2439,7 +2439,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#6", + "compName": "WireCrossPoint#5", "pinName": "" }, "pin2": { @@ -2451,7 +2451,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#46", + "compName": "WireCrossPoint#44", "pinName": "" }, "pin2": { @@ -2468,7 +2468,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#5", + "compName": "WireCrossPoint#4", "pinName": "" }, "pin2": { @@ -2489,7 +2489,7 @@ "pinName": "SC" }, "pin2": { - "compName": "WireCrossPoint#44", + "compName": "WireCrossPoint#42", "pinName": "" }, "name": "unnamedWire#26", @@ -3061,7 +3061,7 @@ "pinName": "Q1" }, "pin2": { - "compName": "WireCrossPoint#7", + "compName": "WireCrossPoint#6", "pinName": "" }, "name": "unnamedWire#48", @@ -3086,7 +3086,7 @@ "pinName": "Q2" }, "pin2": { - "compName": "WireCrossPoint#8", + "compName": "WireCrossPoint#7", "pinName": "" }, "name": "unnamedWire#49", @@ -3136,7 +3136,7 @@ "pinName": "Q3" }, "pin2": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "name": "unnamedWire#50", @@ -3161,7 +3161,7 @@ "pinName": "Q4" }, "pin2": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "name": "unnamedWire#51", @@ -3182,7 +3182,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#7", + "compName": "WireCrossPoint#6", "pinName": "" }, "pin2": { @@ -3194,7 +3194,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#8", + "compName": "WireCrossPoint#7", "pinName": "" }, "pin2": { @@ -3206,7 +3206,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "pin2": { @@ -3218,7 +3218,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "pin2": { @@ -3230,7 +3230,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#7", + "compName": "WireCrossPoint#6", "pinName": "" }, "pin2": { @@ -3247,7 +3247,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#8", + "compName": "WireCrossPoint#7", "pinName": "" }, "pin2": { @@ -3264,7 +3264,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "pin2": { @@ -3281,7 +3281,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "pin2": { @@ -3411,7 +3411,7 @@ "pinName": "Q1" }, "pin2": { - "compName": "WireCrossPoint#11", + "compName": "WireCrossPoint#10", "pinName": "" }, "name": "unnamedWire#64", @@ -3423,7 +3423,7 @@ "pinName": "Q2" }, "pin2": { - "compName": "WireCrossPoint#12", + "compName": "WireCrossPoint#11", "pinName": "" }, "name": "unnamedWire#65", @@ -3435,7 +3435,7 @@ "pinName": "Q3" }, "pin2": { - "compName": "WireCrossPoint#13", + "compName": "WireCrossPoint#12", "pinName": "" }, "name": "unnamedWire#66", @@ -3447,7 +3447,7 @@ "pinName": "Q4" }, "pin2": { - "compName": "WireCrossPoint#14", + "compName": "WireCrossPoint#13", "pinName": "" }, "name": "unnamedWire#67", @@ -3455,11 +3455,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#11", + "compName": "WireCrossPoint#10", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#15", + "compName": "WireCrossPoint#14", "pinName": "" }, "name": "unnamedWire#68", @@ -3467,7 +3467,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#15", + "compName": "WireCrossPoint#14", "pinName": "" }, "pin2": { @@ -3504,11 +3504,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#14", + "compName": "WireCrossPoint#13", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#16", + "compName": "WireCrossPoint#15", "pinName": "" }, "name": "unnamedWire#70", @@ -3520,7 +3520,7 @@ "pinName": "Qn" }, "pin2": { - "compName": "WireCrossPoint#41", + "compName": "WireCrossPoint#40", "pinName": "" }, "name": "unnamedWire#71", @@ -3537,11 +3537,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#12", + "compName": "WireCrossPoint#11", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#17", + "compName": "WireCrossPoint#16", "pinName": "" }, "name": "unnamedWire#72", @@ -3566,11 +3566,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#13", + "compName": "WireCrossPoint#12", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#18", + "compName": "WireCrossPoint#17", "pinName": "" }, "name": "unnamedWire#73", @@ -3595,7 +3595,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#17", + "compName": "WireCrossPoint#16", "pinName": "" }, "pin2": { @@ -3607,7 +3607,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#18", + "compName": "WireCrossPoint#17", "pinName": "" }, "pin2": { @@ -3619,7 +3619,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#14", + "compName": "WireCrossPoint#13", "pinName": "" }, "pin2": { @@ -3648,7 +3648,7 @@ "pinName": "RAMn" }, "pin2": { - "compName": "WireCrossPoint#42", + "compName": "WireCrossPoint#41", "pinName": "" }, "name": "unnamedWire#78", @@ -3665,7 +3665,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#11", + "compName": "WireCrossPoint#10", "pinName": "" }, "pin2": { @@ -3723,7 +3723,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#15", + "compName": "WireCrossPoint#14", "pinName": "" }, "pin2": { @@ -3740,7 +3740,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#12", + "compName": "WireCrossPoint#11", "pinName": "" }, "pin2": { @@ -3761,7 +3761,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#13", + "compName": "WireCrossPoint#12", "pinName": "" }, "pin2": { @@ -3782,7 +3782,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#16", + "compName": "WireCrossPoint#15", "pinName": "" }, "pin2": { @@ -3799,7 +3799,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#17", + "compName": "WireCrossPoint#16", "pinName": "" }, "pin2": { @@ -3816,7 +3816,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#18", + "compName": "WireCrossPoint#17", "pinName": "" }, "pin2": { @@ -3960,7 +3960,7 @@ "pinName": "F1" }, "pin2": { - "compName": "WireCrossPoint#19", + "compName": "WireCrossPoint#18", "pinName": "" }, "name": "unnamedWire#92", @@ -3981,7 +3981,7 @@ "pinName": "F4" }, "pin2": { - "compName": "WireCrossPoint#20", + "compName": "WireCrossPoint#19", "pinName": "" }, "name": "unnamedWire#93", @@ -4002,7 +4002,7 @@ "pinName": "OUT" }, "pin2": { - "compName": "WireCrossPoint#21", + "compName": "WireCrossPoint#20", "pinName": "" }, "name": "unnamedWire#94", @@ -4010,7 +4010,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#47", + "compName": "WireCrossPoint#45", "pinName": "" }, "pin2": { @@ -4022,7 +4022,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#21", + "compName": "WireCrossPoint#20", "pinName": "" }, "pin2": { @@ -4055,7 +4055,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#21", + "compName": "WireCrossPoint#20", "pinName": "" }, "pin2": { @@ -4076,11 +4076,11 @@ }, { "pin1": { - "compName": "WireCrossPoint#19", + "compName": "WireCrossPoint#18", "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#22", + "compName": "WireCrossPoint#21", "pinName": "" }, "name": "unnamedWire#98", @@ -4097,7 +4097,7 @@ "pinName": "F2" }, "pin2": { - "compName": "WireCrossPoint#23", + "compName": "WireCrossPoint#22", "pinName": "" }, "name": "unnamedWire#99", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904.json index 836fe5c0..769a0a4a 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904.json @@ -280,51 +280,6 @@ "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", @@ -440,7 +395,10 @@ "x": 5.0, "y": 165.0 }, - "params": 13 + "params": { + "logicWidth": 13, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -449,7 +407,10 @@ "x": 575.0, "y": 40.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -458,7 +419,10 @@ "x": 445.0, "y": 300.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -467,7 +431,10 @@ "x": 455.0, "y": 635.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -476,7 +443,10 @@ "x": 455.0, "y": 710.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -485,7 +455,10 @@ "x": 135.0, "y": 645.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -494,7 +467,10 @@ "x": 310.0, "y": 645.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -503,7 +479,58 @@ "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", @@ -512,7 +539,22 @@ "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", @@ -521,7 +563,10 @@ "x": 465.0, "y": 100.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -530,7 +575,10 @@ "x": 425.0, "y": 150.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -539,7 +587,10 @@ "x": 425.0, "y": 190.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -548,7 +599,10 @@ "x": 320.0, "y": 310.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -557,7 +611,10 @@ "x": 445.0, "y": 340.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -566,7 +623,10 @@ "x": 445.0, "y": 380.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -575,7 +635,10 @@ "x": 255.0, "y": 430.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "TriStateBuffer", @@ -1220,8 +1283,8 @@ "pinName": "O6" }, "pin2": { - "compName": "Merger#1", - "pinName": "I0" + "compName": "Splitter#17", + "pinName": "O0" }, "name": "unnamedWire#10", "path": [] @@ -1353,8 +1416,8 @@ }, { "pin1": { - "compName": "Merger#1", - "pinName": "I1" + "compName": "Splitter#17", + "pinName": "O1" }, "pin2": { "compName": "Splitter#0", @@ -1528,8 +1591,8 @@ "pinName": "O8" }, "pin2": { - "compName": "Merger#1", - "pinName": "I2" + "compName": "Splitter#17", + "pinName": "O2" }, "name": "unnamedWire#12", "path": [] @@ -1680,8 +1743,8 @@ }, { "pin1": { - "compName": "Merger#1", - "pinName": "I3" + "compName": "Splitter#17", + "pinName": "O3" }, "pin2": { "compName": "Splitter#0", @@ -1878,8 +1941,8 @@ "pinName": "O11" }, "pin2": { - "compName": "Merger#4", - "pinName": "I0" + "compName": "Splitter#20", + "pinName": "O0" }, "name": "unnamedWire#139", "path": [] @@ -1890,16 +1953,16 @@ "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", @@ -1910,8 +1973,8 @@ }, { "pin1": { - "compName": "Merger#4", - "pinName": "O" + "compName": "Splitter#20", + "pinName": "I" }, "pin2": { "compName": "Am2904RegCTInstrDecode#0", @@ -2093,8 +2156,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#16", + "pinName": "I" }, "pin2": { "compName": "Am2904RegCTInstrDecode#0", @@ -2292,8 +2355,8 @@ "pinName": "I" }, "pin2": { - "compName": "Merger#1", - "pinName": "O" + "compName": "Splitter#17", + "pinName": "I" }, "name": "unnamedWire#16", "path": [ @@ -2465,8 +2528,8 @@ "pinName": "IOVR" }, "pin2": { - "compName": "Merger#2", - "pinName": "I0" + "compName": "Splitter#18", + "pinName": "O0" }, "name": "unnamedWire#17", "path": [ @@ -2641,8 +2704,8 @@ "pinName": "IN" }, "pin2": { - "compName": "Merger#2", - "pinName": "I1" + "compName": "Splitter#18", + "pinName": "O1" }, "name": "unnamedWire#18", "path": [ @@ -2810,8 +2873,8 @@ }, { "pin1": { - "compName": "Merger#2", - "pinName": "I2" + "compName": "Splitter#18", + "pinName": "O2" }, "pin2": { "compName": "_submodelinterface", @@ -3051,8 +3114,8 @@ "pinName": "IZ" }, "pin2": { - "compName": "Merger#2", - "pinName": "I3" + "compName": "Splitter#18", + "pinName": "O3" }, "name": "unnamedWire#20", "path": [ @@ -3448,8 +3511,8 @@ }, { "pin1": { - "compName": "Merger#2", - "pinName": "O" + "compName": "Splitter#18", + "pinName": "I" }, "pin2": { "compName": "WireCrossPoint#1", @@ -4095,8 +4158,8 @@ "pinName": "O0" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#16", + "pinName": "O0" }, "name": "unnamedWire#4", "path": [] @@ -4275,8 +4338,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#16", + "pinName": "O1" }, "pin2": { "compName": "Splitter#0", @@ -4478,8 +4541,8 @@ "pinName": "O2" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#16", + "pinName": "O2" }, "name": "unnamedWire#6", "path": [] @@ -4631,8 +4694,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#16", + "pinName": "O3" }, "pin2": { "compName": "Splitter#0", @@ -4819,8 +4882,8 @@ "pinName": "O4" }, "pin2": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#16", + "pinName": "O4" }, "name": "unnamedWire#8", "path": [] @@ -4945,8 +5008,8 @@ }, { "pin1": { - "compName": "Merger#3", - "pinName": "I0" + "compName": "Splitter#19", + "pinName": "O0" }, "pin2": { "compName": "mux1_4#0", @@ -4957,8 +5020,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#16", + "pinName": "O5" }, "pin2": { "compName": "Splitter#0", @@ -4973,16 +5036,16 @@ "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", @@ -4997,8 +5060,8 @@ "pinName": "Y1" }, "pin2": { - "compName": "Merger#3", - "pinName": "I3" + "compName": "Splitter#19", + "pinName": "O3" }, "name": "unnamedWire#92", "path": [] @@ -5009,8 +5072,8 @@ "pinName": "" }, "pin2": { - "compName": "Merger#3", - "pinName": "O" + "compName": "Splitter#19", + "pinName": "I" }, "name": "unnamedWire#93", "path": [] diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json index a5b084d7..927d41f8 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json @@ -114,15 +114,6 @@ "innerScale": 0.2, "submodel": { "components": [ - { - "id": "Merger", - "name": "Merger#0", - "pos": { - "x": 385.0, - "y": 85.0 - }, - "params": 4 - }, { "id": "NandGate", "name": "NandGate#0", @@ -139,7 +130,10 @@ "x": 5.0, "y": 35.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -148,7 +142,10 @@ "x": 5.0, "y": 135.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -157,7 +154,10 @@ "x": 45.0, "y": 340.0 }, - "params": 3 + "params": { + "logicWidth": 3, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -166,7 +166,22 @@ "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", @@ -738,16 +753,16 @@ "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", @@ -1128,8 +1143,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#4", + "pinName": "I" }, "pin2": { "compName": "_submodelinterface", @@ -1434,8 +1449,8 @@ "pinName": "" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#4", + "pinName": "O0" }, "name": "unnamedWire#7", "path": [] @@ -1624,8 +1639,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#4", + "pinName": "O1" }, "pin2": { "compName": "WireCrossPoint#3", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json index ab443041..2c007e54 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json @@ -148,7 +148,10 @@ "x": 5.0, "y": 110.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "WireCrossPoint", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json index 7faf69d3..3b859b24 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json @@ -105,15 +105,6 @@ "innerScale": 0.2, "submodel": { "components": [ - { - "id": "Merger", - "name": "Merger#0", - "pos": { - "x": 230.0, - "y": 30.0 - }, - "params": 4 - }, { "id": "NandGate", "name": "NandGate#0", @@ -148,7 +139,10 @@ "x": 5.0, "y": 135.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -157,7 +151,10 @@ "x": 5.0, "y": 185.0 }, - "params": 4 + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -166,7 +163,22 @@ "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", @@ -262,16 +274,16 @@ "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", @@ -307,8 +319,8 @@ "pinName": "" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#3", + "pinName": "O0" }, "name": "unnamedWire#11", "path": [] @@ -443,8 +455,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#3", + "pinName": "O1" }, "pin2": { "compName": "dff4_finewe#0", @@ -810,8 +822,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#3", + "pinName": "I" }, "pin2": { "compName": "_submodelinterface", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json index 04a629fd..9163fc3c 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json @@ -204,15 +204,6 @@ }, "params": 1 }, - { - "id": "WireCrossPoint", - "name": "WireCrossPoint#10", - "pos": { - "x": 199.0, - "y": 209.0 - }, - "params": 1 - }, { "id": "WireCrossPoint", "name": "WireCrossPoint#2", @@ -269,13 +260,22 @@ }, { "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", @@ -770,7 +770,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "pin2": { @@ -791,7 +791,7 @@ "pinName": "" }, "pin2": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "name": "unnamedWire#36", @@ -967,7 +967,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#9", + "compName": "WireCrossPoint#8", "pinName": "" }, "pin2": { @@ -995,7 +995,7 @@ "pinName": "_OE" }, "pin2": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "name": "unnamedWire#53", @@ -1003,7 +1003,7 @@ }, { "pin1": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "pin2": { @@ -1019,7 +1019,7 @@ "pinName": "A" }, "pin2": { - "compName": "WireCrossPoint#10", + "compName": "WireCrossPoint#9", "pinName": "" }, "name": "unnamedWire#57", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff12_we.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff12_we.json index 20f06642..1f151375 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff12_we.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff12_we.json @@ -43,22 +43,28 @@ "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", @@ -797,8 +803,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I11" + "compName": "Splitter#1", + "pinName": "O11" }, "pin2": { "compName": "dff#2", @@ -822,8 +828,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I10" + "compName": "Splitter#1", + "pinName": "O10" }, "name": "unnamedWire#54", "path": [ @@ -839,8 +845,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I9" + "compName": "Splitter#1", + "pinName": "O9" }, "pin2": { "compName": "dff#3", @@ -864,8 +870,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I8" + "compName": "Splitter#1", + "pinName": "O8" }, "name": "unnamedWire#56", "path": [ @@ -881,8 +887,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I7" + "compName": "Splitter#1", + "pinName": "O7" }, "pin2": { "compName": "dff#4", @@ -906,8 +912,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I6" + "compName": "Splitter#1", + "pinName": "O6" }, "name": "unnamedWire#58", "path": [ @@ -923,8 +929,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#1", + "pinName": "O5" }, "pin2": { "compName": "dff#11", @@ -956,8 +962,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#1", + "pinName": "O4" }, "pin2": { "compName": "dff#10", @@ -968,8 +974,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#1", + "pinName": "O3" }, "pin2": { "compName": "dff#8", @@ -993,8 +999,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#1", + "pinName": "O2" }, "name": "unnamedWire#62", "path": [ @@ -1010,8 +1016,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#1", + "pinName": "O1" }, "pin2": { "compName": "dff#7", @@ -1035,8 +1041,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#1", + "pinName": "O0" }, "name": "unnamedWire#64", "path": [ @@ -1052,8 +1058,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#1", + "pinName": "I" }, "pin2": { "compName": "WireCrossPoint#5", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_invwe.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_invwe.json index 11bc97cc..e6cda444 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_invwe.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_invwe.json @@ -43,22 +43,28 @@ "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", @@ -978,8 +984,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I15" + "compName": "Splitter#1", + "pinName": "O15" }, "pin2": { "compName": "dff#0", @@ -1024,8 +1030,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I14" + "compName": "Splitter#1", + "pinName": "O14" }, "name": "unnamedWire#50", "path": [ @@ -1041,8 +1047,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I13" + "compName": "Splitter#1", + "pinName": "O13" }, "pin2": { "compName": "dff#3", @@ -1062,8 +1068,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I12" + "compName": "Splitter#1", + "pinName": "O12" }, "pin2": { "compName": "dff#2", @@ -1083,8 +1089,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I11" + "compName": "Splitter#1", + "pinName": "O11" }, "pin2": { "compName": "dff#6", @@ -1108,8 +1114,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I10" + "compName": "Splitter#1", + "pinName": "O10" }, "name": "unnamedWire#54", "path": [ @@ -1125,8 +1131,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I9" + "compName": "Splitter#1", + "pinName": "O9" }, "pin2": { "compName": "dff#7", @@ -1141,16 +1147,16 @@ "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", @@ -1174,8 +1180,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I6" + "compName": "Splitter#1", + "pinName": "O6" }, "name": "unnamedWire#58", "path": [ @@ -1191,8 +1197,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#1", + "pinName": "O5" }, "pin2": { "compName": "dff#15", @@ -1233,8 +1239,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#1", + "pinName": "O4" }, "pin2": { "compName": "dff#14", @@ -1254,8 +1260,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#1", + "pinName": "O3" }, "pin2": { "compName": "dff#12", @@ -1279,8 +1285,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#1", + "pinName": "O2" }, "name": "unnamedWire#62", "path": [ @@ -1296,8 +1302,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#1", + "pinName": "O1" }, "pin2": { "compName": "dff#11", @@ -1321,8 +1327,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#1", + "pinName": "O0" }, "name": "unnamedWire#64", "path": [ @@ -1338,8 +1344,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#1", + "pinName": "I" }, "pin2": { "compName": "WireCrossPoint#7", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json index bbc264b6..3fc94f94 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff16_we.json @@ -43,22 +43,28 @@ "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", @@ -978,8 +984,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I15" + "compName": "Splitter#1", + "pinName": "O15" }, "pin2": { "compName": "dff#0", @@ -1024,8 +1030,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I14" + "compName": "Splitter#1", + "pinName": "O14" }, "name": "unnamedWire#50", "path": [ @@ -1041,8 +1047,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I13" + "compName": "Splitter#1", + "pinName": "O13" }, "pin2": { "compName": "dff#3", @@ -1062,8 +1068,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I12" + "compName": "Splitter#1", + "pinName": "O12" }, "pin2": { "compName": "dff#2", @@ -1083,8 +1089,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I11" + "compName": "Splitter#1", + "pinName": "O11" }, "pin2": { "compName": "dff#6", @@ -1108,8 +1114,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I10" + "compName": "Splitter#1", + "pinName": "O10" }, "name": "unnamedWire#54", "path": [ @@ -1125,8 +1131,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I9" + "compName": "Splitter#1", + "pinName": "O9" }, "pin2": { "compName": "dff#7", @@ -1141,16 +1147,16 @@ "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", @@ -1174,8 +1180,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I6" + "compName": "Splitter#1", + "pinName": "O6" }, "name": "unnamedWire#58", "path": [ @@ -1191,8 +1197,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#1", + "pinName": "O5" }, "pin2": { "compName": "dff#15", @@ -1233,8 +1239,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#1", + "pinName": "O4" }, "pin2": { "compName": "dff#14", @@ -1254,8 +1260,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#1", + "pinName": "O3" }, "pin2": { "compName": "dff#12", @@ -1279,8 +1285,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#1", + "pinName": "O2" }, "name": "unnamedWire#62", "path": [ @@ -1296,8 +1302,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#1", + "pinName": "O1" }, "pin2": { "compName": "dff#11", @@ -1321,8 +1327,8 @@ "pinName": "Q" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#1", + "pinName": "O0" }, "name": "unnamedWire#64", "path": [ @@ -1338,8 +1344,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#1", + "pinName": "I" }, "pin2": { "compName": "WireCrossPoint#7", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_12.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_12.json index faeaeb56..9f1da98e 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_12.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_12.json @@ -42,15 +42,6 @@ "innerScale": 0.2, "submodel": { "components": [ - { - "id": "Merger", - "name": "Merger#0", - "pos": { - "x": 235.0, - "y": 95.0 - }, - "params": 12 - }, { "id": "NandGate", "name": "NandGate#0", @@ -67,7 +58,10 @@ "x": 5.0, "y": 45.0 }, - "params": 12 + "params": { + "logicWidth": 12, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -76,7 +70,22 @@ "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", @@ -434,8 +443,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I11" + "compName": "Splitter#2", + "pinName": "O11" }, "name": "unnamedWire#103", "path": [ @@ -455,8 +464,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I10" + "compName": "Splitter#2", + "pinName": "O10" }, "name": "unnamedWire#104", "path": [ @@ -472,8 +481,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I9" + "compName": "Splitter#2", + "pinName": "O9" }, "pin2": { "compName": "sel1#1", @@ -497,8 +506,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I8" + "compName": "Splitter#2", + "pinName": "O8" }, "name": "unnamedWire#106", "path": [ @@ -514,8 +523,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I7" + "compName": "Splitter#2", + "pinName": "O7" }, "pin2": { "compName": "sel1#6", @@ -539,8 +548,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I6" + "compName": "Splitter#2", + "pinName": "O6" }, "name": "unnamedWire#108", "path": [ @@ -556,8 +565,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#2", + "pinName": "O5" }, "pin2": { "compName": "sel1#7", @@ -593,8 +602,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#2", + "pinName": "O4" }, "name": "unnamedWire#110", "path": [ @@ -610,8 +619,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#2", + "pinName": "O3" }, "pin2": { "compName": "sel1#10", @@ -635,8 +644,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#2", + "pinName": "O2" }, "name": "unnamedWire#112", "path": [ @@ -652,8 +661,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#2", + "pinName": "O1" }, "pin2": { "compName": "sel1#4", @@ -677,8 +686,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#2", + "pinName": "O0" }, "name": "unnamedWire#114", "path": [ @@ -694,8 +703,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#2", + "pinName": "I" }, "pin2": { "compName": "_submodelinterface", diff --git a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_16.json b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_16.json index c282fa50..e29bbbf0 100644 --- a/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_16.json +++ b/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/mux1_16.json @@ -42,15 +42,6 @@ "innerScale": 0.2, "submodel": { "components": [ - { - "id": "Merger", - "name": "Merger#0", - "pos": { - "x": 260.0, - "y": 175.0 - }, - "params": 16 - }, { "id": "NandGate", "name": "NandGate#0", @@ -67,7 +58,10 @@ "x": 5.0, "y": 50.0 }, - "params": 16 + "params": { + "logicWidth": 16, + "orientation": "RIGHT" + } }, { "id": "Splitter", @@ -76,7 +70,22 @@ "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", @@ -534,8 +543,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I14" + "compName": "Splitter#2", + "pinName": "O14" }, "pin2": { "compName": "sel1#1", @@ -559,8 +568,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I13" + "compName": "Splitter#2", + "pinName": "O13" }, "name": "unnamedWire#101", "path": [ @@ -576,8 +585,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I12" + "compName": "Splitter#2", + "pinName": "O12" }, "pin2": { "compName": "sel1#3", @@ -601,8 +610,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I11" + "compName": "Splitter#2", + "pinName": "O11" }, "name": "unnamedWire#103", "path": [ @@ -622,8 +631,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I10" + "compName": "Splitter#2", + "pinName": "O10" }, "name": "unnamedWire#104", "path": [ @@ -639,8 +648,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I9" + "compName": "Splitter#2", + "pinName": "O9" }, "pin2": { "compName": "sel1#5", @@ -664,8 +673,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I8" + "compName": "Splitter#2", + "pinName": "O8" }, "name": "unnamedWire#106", "path": [ @@ -681,8 +690,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I7" + "compName": "Splitter#2", + "pinName": "O7" }, "pin2": { "compName": "sel1#10", @@ -706,8 +715,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I6" + "compName": "Splitter#2", + "pinName": "O6" }, "name": "unnamedWire#108", "path": [ @@ -723,8 +732,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I5" + "compName": "Splitter#2", + "pinName": "O5" }, "pin2": { "compName": "sel1#11", @@ -760,8 +769,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I4" + "compName": "Splitter#2", + "pinName": "O4" }, "name": "unnamedWire#110", "path": [ @@ -777,8 +786,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I3" + "compName": "Splitter#2", + "pinName": "O3" }, "pin2": { "compName": "sel1#14", @@ -802,8 +811,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I2" + "compName": "Splitter#2", + "pinName": "O2" }, "name": "unnamedWire#112", "path": [ @@ -819,8 +828,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "I1" + "compName": "Splitter#2", + "pinName": "O1" }, "pin2": { "compName": "sel1#8", @@ -844,8 +853,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I0" + "compName": "Splitter#2", + "pinName": "O0" }, "name": "unnamedWire#114", "path": [ @@ -861,8 +870,8 @@ }, { "pin1": { - "compName": "Merger#0", - "pinName": "O" + "compName": "Splitter#2", + "pinName": "I" }, "pin2": { "compName": "_submodelinterface", @@ -2343,8 +2352,8 @@ "pinName": "Y" }, "pin2": { - "compName": "Merger#0", - "pinName": "I15" + "compName": "Splitter#2", + "pinName": "O15" }, "name": "unnamedWire#99", "path": [ diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java index 9171ee83..d543c543 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/ModelComponent.java @@ -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 null if there is no such pin. + * + * @see #getPin(String) + * + * @author Daniel Kirschten + */ + public Pin getPinOrNull(String name) + { + return pinsByName.get(name); + } + // high-level access /** diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelMerger.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelMerger.java index 71523921..6efc9ad3 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelMerger.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelMerger.java @@ -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) diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelSplitter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelSplitter.java index 708a4ad0..962f2acc 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelSplitter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/ModelSplitter.java @@ -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 -- 2.17.1