From: Fabian Stemmler Date: Wed, 21 Aug 2019 14:41:35 +0000 (+0200) Subject: Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim... X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=c75cfefebc26010d62e1dd4a6bb29bb81eb105d5;hp=b080b311c7a6bf612cd222af4b1d64f6b81d9c93;p=Mograsim.git Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim-2019 into development --- diff --git a/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904MSR.json b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904MSR.json new file mode 100644 index 00000000..3296f39c --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904MSR.json @@ -0,0 +1,1895 @@ +mograsim version: 0.1.3 +{ + "width": 45.0, + "height": 46.0, + "interfacePins": [ + { + "location": { + "x": 4.0, + "y": 46.0 + }, + "name": "MUX", + "logicWidth": 3 + }, + { + "location": { + "x": 45.0, + "y": 19.0 + }, + "name": "Q", + "logicWidth": 4 + }, + { + "location": { + "x": 27.5, + "y": 46.0 + }, + "name": "COVD_EN", + "logicWidth": 1 + }, + { + "location": { + "x": 14.0, + "y": 46.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 5.5, + "y": 0.0 + }, + "name": "_EZ", + "logicWidth": 1 + }, + { + "location": { + "x": 37.5, + "y": 46.0 + }, + "name": "COVD_V", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "mu", + "logicWidth": 4 + }, + { + "location": { + "x": 0.0, + "y": 18.0 + }, + "name": "Y", + "logicWidth": 4 + }, + { + "location": { + "x": 0.0, + "y": 31.0 + }, + "name": "I", + "logicWidth": 4 + }, + { + "location": { + "x": 25.5, + "y": 0.0 + }, + "name": "_EN", + "logicWidth": 1 + }, + { + "location": { + "x": 15.5, + "y": 0.0 + }, + "name": "_EC", + "logicWidth": 1 + }, + { + "location": { + "x": 35.5, + "y": 0.2 + }, + "name": "_EOVR", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "pos": { + "x": 89.0, + "y": 104.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "pos": { + "x": 194.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#0", + "pos": { + "x": 325.0, + "y": 90.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "pos": { + "x": 319.0, + "y": 104.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "pos": { + "x": 319.0, + "y": 294.0 + }, + "params": 1 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#3", + "pos": { + "x": 5.0, + "y": 295.0 + }, + "params": 4 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#2", + "pos": { + "x": 45.0, + "y": 425.0 + }, + "params": 3 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#1", + "pos": { + "x": 5.0, + "y": 165.0 + }, + "params": 4 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 414.0, + "y": 174.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 29.0, + "y": 284.0 + }, + "params": 1 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#0", + "pos": { + "x": 5.0, + "y": 35.0 + }, + "params": 4 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "pos": { + "x": 424.0, + "y": 194.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 419.0, + "y": 184.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "pos": { + "x": 84.0, + "y": 344.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "pos": { + "x": 429.0, + "y": 204.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "pos": { + "x": 29.0, + "y": 254.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "pos": { + "x": 94.0, + "y": 364.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "pos": { + "x": 49.0, + "y": 114.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "pos": { + "x": 74.0, + "y": 314.0 + }, + "params": 1 + }, + { + "id": "GUIdff4_finewe", + "name": "GUIdff4_finewe#0", + "pos": { + "x": 375.0, + "y": 170.0 + } + }, + { + "id": "GUIxor", + "name": "DeserializedSubmodelComponent#1", + "pos": { + "x": 35.0, + "y": 250.0 + } + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "pos": { + "x": 89.0, + "y": 84.0 + }, + "params": 1 + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#0", + "pos": { + "x": 55.0, + "y": 110.0 + } + }, + { + "id": "GUInot4", + "name": "DeserializedSubmodelComponent#3", + "pos": { + "x": 100.0, + "y": 330.0 + } + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "pos": { + "x": 19.0, + "y": 294.0 + }, + "params": 1 + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#2", + "pos": { + "x": 150.0, + "y": 280.0 + } + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "pos": { + "x": 89.0, + "y": 94.0 + }, + "params": 1 + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#5", + "pos": { + "x": 200.0, + "y": 230.0 + } + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#4", + "pos": { + "x": 110.0, + "y": 60.0 + } + }, + { + "id": "GUImux1", + "name": "DeserializedSubmodelComponent#7", + "pos": { + "x": 325.0, + "y": 290.0 + } + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#6", + "pos": { + "x": 250.0, + "y": 180.0 + } + }, + { + "id": "GUIMerger", + "name": "GUIMerger#0", + "pos": { + "x": 435.0, + "y": 175.0 + }, + "params": 4 + }, + { + "id": "GUIand", + "name": "DeserializedSubmodelComponent#8", + "pos": { + "x": 380.0, + "y": 85.0 + } + } + ], + "innerWires": [ + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "A3" + }, + "name": "unnamedWire#36", + "path": [ + { + "x": 425.0, + "y": 390.0 + }, + { + "x": 90.0, + "y": 390.0 + }, + { + "x": 90.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "name": "unnamedWire#35", + "path": [ + { + "x": 420.0, + "y": 385.0 + }, + { + "x": 85.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "Y3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I0_3" + }, + "name": "unnamedWire#79", + "path": [ + { + "x": 205.0, + "y": 85.0 + }, + { + "x": 205.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#3", + "pinName": "O0" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "name": "unnamedWire#38", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#37", + "path": [ + { + "x": 430.0, + "y": 395.0 + }, + { + "x": 95.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I0_4" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "name": "unnamedWire#39", + "path": [ + { + "x": 85.0, + "y": 325.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I0_1" + }, + "name": "unnamedWire#81", + "path": [ + { + "x": 215.0, + "y": 65.0 + }, + { + "x": 215.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I0_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "Y2" + }, + "name": "unnamedWire#80", + "path": [ + { + "x": 210.0, + "y": 205.0 + }, + { + "x": 210.0, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "name": "unnamedWire#83", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#2", + "pinName": "O2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "S0" + }, + "name": "unnamedWire#82", + "path": [ + { + "x": 245.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I0_3" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#41", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#7", + "pinName": "S0" + }, + "name": "unnamedWire#85", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I0_2" + }, + "name": "unnamedWire#40", + "path": [ + { + "x": 95.0, + "y": 305.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "COVD_EN" + }, + "name": "unnamedWire#84", + "path": [ + { + "x": 275.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "S0" + }, + "name": "unnamedWire#43", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "Y2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#7", + "pinName": "I0" + }, + "name": "unnamedWire#87", + "path": [ + { + "x": 305.0, + "y": 195.0 + }, + { + "x": 305.0, + "y": 305.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "name": "unnamedWire#42", + "path": [ + { + "x": 30.0, + "y": 230.0 + }, + { + "x": 50.0, + "y": 230.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "COVD_V" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#7", + "pinName": "I1" + }, + "name": "unnamedWire#86", + "path": [ + { + "x": 375.0, + "y": 325.0 + }, + { + "x": 320.0, + "y": 325.0 + }, + { + "x": 320.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "name": "unnamedWire#45", + "path": [ + { + "x": 50.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#8", + "pinName": "B" + }, + "name": "unnamedWire#89", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I1_1" + }, + "name": "unnamedWire#44", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#7", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "D2" + }, + "name": "unnamedWire#88", + "path": [ + { + "x": 365.0, + "y": 295.0 + }, + { + "x": 365.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I1_3" + }, + "name": "unnamedWire#47", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I1_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y2" + }, + "name": "unnamedWire#46", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I0_4" + }, + "name": "unnamedWire#49", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I1_4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y4" + }, + "name": "unnamedWire#48", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q2" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "GUIMerger#0", + "pinName": "I1" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUIMerger#0", + "pinName": "I0" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "name": "unnamedWire#90", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "name": "unnamedWire#92", + "path": [ + { + "x": 320.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "name": "unnamedWire#91", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EOVR" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE4" + }, + "name": "unnamedWire#1", + "path": [ + { + "x": 355.0, + "y": 30.0 + }, + { + "x": 355.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "name": "unnamedWire#50", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "C" + }, + "name": "unnamedWire#0", + "path": [ + { + "x": 140.0, + "y": 415.0 + }, + { + "x": 255.0, + "y": 415.0 + }, + { + "x": 255.0, + "y": 280.0 + }, + { + "x": 340.0, + "y": 280.0 + }, + { + "x": 340.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I0_3" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "name": "unnamedWire#52", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "name": "unnamedWire#51", + "path": [] + }, + { + "pin1": { + "compName": "GUIMerger#0", + "pinName": "O" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "mu" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "I" + }, + "name": "unnamedWire#10", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I0_1" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "name": "unnamedWire#54", + "path": [ + { + "x": 90.0, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EZ" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE1" + }, + "name": "unnamedWire#4", + "path": [ + { + "x": 55.0, + "y": 15.0 + }, + { + "x": 370.0, + "y": 15.0 + }, + { + "x": 370.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "I0_2" + }, + "name": "unnamedWire#53", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_1" + }, + "name": "unnamedWire#12", + "path": [ + { + "x": 35.0, + "y": 35.0 + }, + { + "x": 35.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "A2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "name": "unnamedWire#56", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EC" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#8", + "pinName": "A" + }, + "name": "unnamedWire#3", + "path": [ + { + "x": 155.0, + "y": 20.0 + }, + { + "x": 365.0, + "y": 20.0 + }, + { + "x": 365.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EN" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE3" + }, + "name": "unnamedWire#2", + "path": [ + { + "x": 255.0, + "y": 25.0 + }, + { + "x": 360.0, + "y": 25.0 + }, + { + "x": 360.0, + "y": 205.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "pin2": { + "compName": "GUISplitter#1", + "pinName": "I" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "A4" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#55", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_3" + }, + "name": "unnamedWire#14", + "path": [ + { + "x": 25.0, + "y": 55.0 + }, + { + "x": 25.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#3", + "pinName": "O2" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#58", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_2" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "O1" + }, + "name": "unnamedWire#13", + "path": [ + { + "x": 30.0, + "y": 135.0 + }, + { + "x": 30.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I0_1" + }, + "name": "unnamedWire#57", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#1", + "pinName": "O0" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_1" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_4" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "O3" + }, + "name": "unnamedWire#15", + "path": [ + { + "x": 20.0, + "y": 155.0 + }, + { + "x": 20.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I0_1" + }, + "name": "unnamedWire#59", + "path": [ + { + "x": 20.0, + "y": 245.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#1", + "pinName": "O2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_3" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_2" + }, + "pin2": { + "compName": "GUISplitter#1", + "pinName": "O1" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_4" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I0_3" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#61", + "path": [ + { + "x": 75.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I0_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "Y" + }, + "name": "unnamedWire#60", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I1_1" + }, + "name": "unnamedWire#63", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#3", + "pinName": "O3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I0_4" + }, + "name": "unnamedWire#62", + "path": [ + { + "x": 80.0, + "y": 325.0 + }, + { + "x": 80.0, + "y": 275.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#21", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "Y3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I1_3" + }, + "name": "unnamedWire#65", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "MUX" + }, + "pin2": { + "compName": "GUISplitter#2", + "pinName": "I" + }, + "name": "unnamedWire#20", + "path": [ + { + "x": 40.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I1_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "Y2" + }, + "name": "unnamedWire#64", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "name": "unnamedWire#67", + "path": [ + { + "x": 195.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#3", + "pinName": "O1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "B" + }, + "name": "unnamedWire#23", + "path": [ + { + "x": 25.0, + "y": 305.0 + }, + { + "x": 25.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I" + }, + "pin2": { + "compName": "GUISplitter#3", + "pinName": "I" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "I1_4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "Y4" + }, + "name": "unnamedWire#66", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "S0" + }, + "name": "unnamedWire#69", + "path": [ + { + "x": 105.0, + "y": 235.0 + }, + { + "x": 105.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#2", + "pinName": "O0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#24", + "path": [ + { + "x": 60.0, + "y": 425.0 + }, + { + "x": 60.0, + "y": 415.0 + }, + { + "x": 30.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "S0" + }, + "name": "unnamedWire#68", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIMerger#0", + "pinName": "I2" + }, + "name": "unnamedWire#27", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#26", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q4" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "GUIMerger#0", + "pinName": "I3" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "name": "unnamedWire#28", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "Y4" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "D4" + }, + "name": "unnamedWire#70", + "path": [ + { + "x": 295.0, + "y": 215.0 + }, + { + "x": 295.0, + "y": 255.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#8", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE2" + }, + "name": "unnamedWire#72", + "path": [ + { + "x": 420.0, + "y": 90.0 + }, + { + "x": 420.0, + "y": 110.0 + }, + { + "x": 365.0, + "y": 110.0 + }, + { + "x": 365.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "D3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "Y3" + }, + "name": "unnamedWire#71", + "path": [ + { + "x": 300.0, + "y": 245.0 + }, + { + "x": 300.0, + "y": 205.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I1_1" + }, + "name": "unnamedWire#30", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I1_4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "Y4" + }, + "name": "unnamedWire#74", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "D1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "Y1" + }, + "name": "unnamedWire#73", + "path": [ + { + "x": 310.0, + "y": 225.0 + }, + { + "x": 310.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "Y3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I1_3" + }, + "name": "unnamedWire#32", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I1_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "Y2" + }, + "name": "unnamedWire#76", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I1_2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "Y2" + }, + "name": "unnamedWire#31", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "Y3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I1_3" + }, + "name": "unnamedWire#75", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "A1" + }, + "name": "unnamedWire#34", + "path": [ + { + "x": 415.0, + "y": 380.0 + }, + { + "x": 80.0, + "y": 380.0 + }, + { + "x": 80.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I0_4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#4", + "pinName": "Y4" + }, + "name": "unnamedWire#78", + "path": [ + { + "x": 200.0, + "y": 225.0 + }, + { + "x": 200.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "I1_4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#3", + "pinName": "Y4" + }, + "name": "unnamedWire#33", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#5", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#6", + "pinName": "I1_1" + }, + "name": "unnamedWire#77", + "path": [] + } + ] + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "MSR", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 17.5, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "standard", + "highLevelStateHandlerParams": { + "subcomponentHighLevelStates": {}, + "atomicHighLevelStates": {} + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904TestLogic.json b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904TestLogic.json new file mode 100644 index 00000000..ff3abac9 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904TestLogic.json @@ -0,0 +1,769 @@ +mograsim version: 0.1.3 +{ + "width": 29.0, + "height": 45.0, + "interfacePins": [ + { + "location": { + "x": 29.0, + "y": 30.0 + }, + "name": "Y101", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 10.0 + }, + "name": "Y001", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 25.0 + }, + "name": "Y100", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 40.0 + }, + "name": "Y111", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 22.0 + }, + "name": "I", + "logicWidth": 4 + }, + { + "location": { + "x": 29.0, + "y": 20.0 + }, + "name": "Y011", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 5.0 + }, + "name": "Y000", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 35.0 + }, + "name": "Y110", + "logicWidth": 1 + }, + { + "location": { + "x": 29.0, + "y": 15.0 + }, + "name": "Y010", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.2, + "subComps": [ + { + "id": "GUINandGate", + "name": "GUINandGate#1", + "pos": { + "x": 40.0, + "y": 50.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#0", + "pos": { + "x": 80.0, + "y": 20.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#3", + "pos": { + "x": 40.0, + "y": 105.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#2", + "pos": { + "x": 115.0, + "y": 15.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 29.0, + "y": 99.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 24.0, + "y": 114.0 + }, + "params": 1 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#0", + "pos": { + "x": 5.0, + "y": 95.0 + }, + "params": 4 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "pos": { + "x": 74.0, + "y": 24.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 74.0, + "y": 34.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "pos": { + "x": 19.0, + "y": 109.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "pos": { + "x": 19.0, + "y": 74.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "pos": { + "x": 69.0, + "y": 59.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "pos": { + "x": 34.0, + "y": 64.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "pos": { + "x": 19.0, + "y": 149.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "pos": { + "x": 69.0, + "y": 119.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#5", + "pos": { + "x": 75.0, + "y": 165.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "pos": { + "x": 34.0, + "y": 109.0 + }, + "params": 1 + }, + { + "id": "GUIxor", + "name": "DeserializedSubmodelComponent#0", + "pos": { + "x": 35.0, + "y": 20.0 + } + }, + { + "id": "GUINandGate", + "name": "GUINandGate#4", + "pos": { + "x": 75.0, + "y": 115.0 + }, + "params": 1 + } + ], + "innerWires": [ + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "name": "unnamedWire#14", + "path": [ + { + "x": 70.0, + "y": 45.0 + }, + { + "x": 110.0, + "y": 45.0 + }, + { + "x": 110.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "name": "unnamedWire#13", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y000" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y001" + }, + "name": "unnamedWire#15", + "path": [ + { + "x": 75.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O1" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "name": "unnamedWire#19", + "path": [ + { + "x": 20.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "name": "unnamedWire#21", + "path": [ + { + "x": 20.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y011" + }, + "name": "unnamedWire#20", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y100" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y010" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "B" + }, + "name": "unnamedWire#24", + "path": [ + { + "x": 65.0, + "y": 115.0 + }, + { + "x": 65.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#3", + "pinName": "A" + }, + "name": "unnamedWire#27", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#4", + "pinName": "A" + }, + "name": "unnamedWire#26", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Y110" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "Y" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Y101" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "name": "unnamedWire#28", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "I" + }, + "name": "unnamedWire#0", + "path": [] + }, + { + "pin1": { + "compName": "GUINandGate#5", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#30", + "path": [ + { + "x": 70.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "name": "unnamedWire#10", + "path": [ + { + "x": 105.0, + "y": 20.0 + }, + { + "x": 105.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#5", + "pinName": "B" + }, + "name": "unnamedWire#32", + "path": [ + { + "x": 20.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "B" + }, + "name": "unnamedWire#4", + "path": [ + { + "x": 30.0, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#3", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "name": "unnamedWire#31", + "path": [ + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "A" + }, + "name": "unnamedWire#3", + "path": [ + { + "x": 25.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "name": "unnamedWire#12", + "path": [ + { + "x": 35.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "O3" + }, + "name": "unnamedWire#2", + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#11", + "path": [ + { + "x": 20.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Y111" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#33", + "path": [ + { + "x": 25.0, + "y": 200.0 + } + ] + } + ] + }, + "symbolRendererSnippetID": "class:net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer", + "symbolRendererParams": { + "centerText": "Test\nlogic", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 17.5, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "class:net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer", + "highLevelStateHandlerSnippetID": "class:net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler", + "highLevelStateHandlerParams": { + "subcomponentHighLevelStates": {}, + "atomicHighLevelStates": {} + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904muSR.json b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904muSR.json new file mode 100644 index 00000000..fa3ed355 --- /dev/null +++ b/net.mograsim.logic.model.am2900/components/am2904/GUIAm2904muSR.json @@ -0,0 +1,1081 @@ +mograsim version: 0.1.3 +{ + "width": 45.0, + "height": 46.0, + "interfacePins": [ + { + "location": { + "x": 4.0, + "y": 46.0 + }, + "name": "MUX", + "logicWidth": 2 + }, + { + "location": { + "x": 45.0, + "y": 19.0 + }, + "name": "Q", + "logicWidth": 4 + }, + { + "location": { + "x": 27.5, + "y": 46.0 + }, + "name": "CINV", + "logicWidth": 1 + }, + { + "location": { + "x": 14.0, + "y": 46.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 5.5, + "y": 0.0 + }, + "name": "_EZ", + "logicWidth": 1 + }, + { + "location": { + "x": 37.5, + "y": 46.0 + }, + "name": "OVRRET", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 31.0 + }, + "name": "I", + "logicWidth": 4 + }, + { + "location": { + "x": 25.5, + "y": 0.0 + }, + "name": "_EN", + "logicWidth": 1 + }, + { + "location": { + "x": 15.5, + "y": 0.0 + }, + "name": "_EC", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 13.5 + }, + "name": "M", + "logicWidth": 4 + }, + { + "location": { + "x": 35.5, + "y": 0.0 + }, + "name": "_EOVR", + "logicWidth": 1 + } + ], + "submodel": { + "innerScale": 0.1, + "subComps": [ + { + "id": "GUINandGate", + "name": "GUINandGate#1", + "pos": { + "x": 215.0, + "y": 255.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#0", + "pos": { + "x": 245.0, + "y": 245.0 + }, + "params": 1 + }, + { + "id": "GUINandGate", + "name": "GUINandGate#2", + "pos": { + "x": 215.0, + "y": 235.0 + }, + "params": 1 + }, + { + "id": "GUIMerger", + "name": "GUIMerger#0", + "pos": { + "x": 435.0, + "y": 175.0 + }, + "params": 4 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#2", + "pos": { + "x": 45.0, + "y": 430.0 + }, + "params": 2 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#1", + "pos": { + "x": 5.0, + "y": 295.0 + }, + "params": 4 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 89.0, + "y": 224.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 89.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "GUISplitter", + "name": "GUISplitter#0", + "pos": { + "x": 5.0, + "y": 120.0 + }, + "params": 4 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "pos": { + "x": 429.0, + "y": 204.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 89.0, + "y": 214.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "pos": { + "x": 209.0, + "y": 244.0 + }, + "params": 1 + }, + { + "id": "GUIdff4_finewe", + "name": "GUIdff4_finewe#0", + "pos": { + "x": 375.0, + "y": 170.0 + } + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#1", + "pos": { + "x": 100.0, + "y": 190.0 + } + }, + { + "id": "GUImux1_4", + "name": "DeserializedSubmodelComponent#0", + "pos": { + "x": 45.0, + "y": 240.0 + } + }, + { + "id": "GUIxor", + "name": "DeserializedSubmodelComponent#2", + "pos": { + "x": 215.0, + "y": 200.0 + } + } + ], + "innerWires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CINV" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "B" + }, + "name": "unnamedWire#36", + "path": [ + { + "x": 275.0, + "y": 390.0 + }, + { + "x": 190.0, + "y": 390.0 + }, + { + "x": 190.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "Y2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "A" + }, + "name": "unnamedWire#35", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "C" + }, + "name": "unnamedWire#38", + "path": [ + { + "x": 140.0, + "y": 325.0 + }, + { + "x": 345.0, + "y": 325.0 + }, + { + "x": 345.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE1" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_EZ" + }, + "name": "unnamedWire#37", + "path": [ + { + "x": 370.0, + "y": 185.0 + }, + { + "x": 370.0, + "y": 5.0 + }, + { + "x": 55.0, + "y": 5.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EOVR" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE4" + }, + "name": "unnamedWire#39", + "path": [ + { + "x": 355.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "_EC" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE2" + }, + "name": "unnamedWire#41", + "path": [ + { + "x": 155.0, + "y": 10.0 + }, + { + "x": 365.0, + "y": 10.0 + }, + { + "x": 365.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "_WE3" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_EN" + }, + "name": "unnamedWire#40", + "path": [ + { + "x": 360.0, + "y": 205.0 + }, + { + "x": 360.0, + "y": 15.0 + }, + { + "x": 255.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "D2" + }, + "name": "unnamedWire#43", + "path": [ + { + "x": 310.0, + "y": 205.0 + }, + { + "x": 310.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "D1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "Y1" + }, + "name": "unnamedWire#42", + "path": [ + { + "x": 315.0, + "y": 225.0 + }, + { + "x": 315.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "Y4" + }, + "name": "unnamedWire#45", + "path": [ + { + "x": 160.0, + "y": 245.0 + }, + { + "x": 160.0, + "y": 225.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "D3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "Y3" + }, + "name": "unnamedWire#44", + "path": [ + { + "x": 305.0, + "y": 245.0 + }, + { + "x": 305.0, + "y": 225.0 + }, + { + "x": 170.0, + "y": 225.0 + }, + { + "x": 170.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "A" + }, + "name": "unnamedWire#47", + "path": [ + { + "x": 210.0, + "y": 240.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "D4" + }, + "name": "unnamedWire#46", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#2", + "pinName": "B" + }, + "name": "unnamedWire#48", + "path": [ + { + "x": 210.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#1", + "pinName": "O1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_2" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_3" + }, + "pin2": { + "compName": "GUISplitter#1", + "pinName": "O2" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_4" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I" + }, + "pin2": { + "compName": "GUISplitter#1", + "pinName": "I" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "GUIMerger#0", + "pinName": "I1" + }, + "pin2": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q2" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q1" + }, + "pin2": { + "compName": "GUIMerger#0", + "pinName": "I0" + }, + "name": "unnamedWire#0", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "M" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "I" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I1_1" + }, + "pin2": { + "compName": "GUISplitter#1", + "pinName": "O0" + }, + "name": "unnamedWire#10", + "path": [] + }, + { + "pin1": { + "compName": "GUIMerger#0", + "pinName": "O" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Q" + }, + "name": "unnamedWire#4", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_3" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "O2" + }, + "name": "unnamedWire#12", + "path": [ + { + "x": 25.0, + "y": 275.0 + }, + { + "x": 25.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q4" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#3", + "path": [] + }, + { + "pin1": { + "compName": "GUIdff4_finewe#0", + "pinName": "Q3" + }, + "pin2": { + "compName": "GUIMerger#0", + "pinName": "I2" + }, + "name": "unnamedWire#2", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_4" + }, + "name": "unnamedWire#11", + "path": [ + { + "x": 20.0, + "y": 150.0 + }, + { + "x": 20.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_1" + }, + "pin2": { + "compName": "GUISplitter#0", + "pinName": "O0" + }, + "name": "unnamedWire#14", + "path": [ + { + "x": 35.0, + "y": 255.0 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#0", + "pinName": "O1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "I0_2" + }, + "name": "unnamedWire#13", + "path": [ + { + "x": 30.0, + "y": 130.0 + }, + { + "x": 30.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "GUISplitter#2", + "pinName": "O0" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#16", + "path": [ + { + "x": 90.0, + "y": 430.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "MUX" + }, + "pin2": { + "compName": "GUISplitter#2", + "pinName": "I" + }, + "name": "unnamedWire#15", + "path": [ + { + "x": 40.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I1_3" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y3" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y4" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I1_4" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y2" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I1_2" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I0_1" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#21", + "path": [ + { + "x": 90.0, + "y": 205.0 + } + ] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "Y1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I1_1" + }, + "name": "unnamedWire#20", + "path": [] + }, + { + "pin1": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I0_3" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I0_2" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#24", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#0", + "pinName": "S0" + }, + "name": "unnamedWire#27", + "path": [ + { + "x": 40.0, + "y": 235.0 + }, + { + "x": 40.0, + "y": 245.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "I0_4" + }, + "name": "unnamedWire#26", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUIMerger#0", + "pinName": "I3" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "GUISplitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "DeserializedSubmodelComponent#1", + "pinName": "S0" + }, + "name": "unnamedWire#28", + "path": [ + { + "x": 85.0, + "y": 440.0 + }, + { + "x": 85.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "GUINandGate#0", + "pinName": "A" + }, + "name": "unnamedWire#30", + "path": [ + { + "x": 240.0, + "y": 245.0 + }, + { + "x": 240.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "OVRRET" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "A" + }, + "name": "unnamedWire#32", + "path": [ + { + "x": 375.0, + "y": 360.0 + }, + { + "x": 205.0, + "y": 360.0 + }, + { + "x": 205.0, + "y": 260.0 + } + ] + }, + { + "pin1": { + "compName": "GUINandGate#0", + "pinName": "B" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "Y" + }, + "name": "unnamedWire#31", + "path": [ + { + "x": 240.0, + "y": 260.0 + }, + { + "x": 240.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "GUINandGate#1", + "pinName": "B" + }, + "name": "unnamedWire#34", + "path": [ + { + "x": 430.0, + "y": 280.0 + }, + { + "x": 210.0, + "y": 280.0 + }, + { + "x": 210.0, + "y": 270.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#33", + "path": [] + } + ] + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "muSR", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 17.5, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "standard", + "highLevelStateHandlerParams": { + "subcomponentHighLevelStates": {}, + "atomicHighLevelStates": {} + } +} \ No newline at end of file diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java index d010b302..b9e7b2b8 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904RegCTInstrDecode.java @@ -8,6 +8,7 @@ import static net.mograsim.logic.core.types.Bit.ZERO; import java.util.Map; import net.mograsim.logic.core.types.Bit; +import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.core.wires.Wire.ReadEnd; import net.mograsim.logic.core.wires.Wire.ReadWriteEnd; import net.mograsim.logic.model.model.ViewModelModifiable; @@ -71,12 +72,12 @@ public class GUIAm2904RegCTInstrDecode extends SimpleRectangularHardcodedGUIComp break; case U: for (ReadWriteEnd e : readWriteEnds.values()) - e.feedSignals(U); + e.feedSignals(BitVector.of(U, e.length())); return null; case X: case Z: for (ReadWriteEnd e : readWriteEnds.values()) - e.feedSignals(X); + e.feedSignals(BitVector.of(X, e.length())); return null; case ZERO: break; diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904ShiftInstrDecode.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904ShiftInstrDecode.java index 64935e86..dda3e925 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904ShiftInstrDecode.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/GUIAm2904ShiftInstrDecode.java @@ -77,20 +77,20 @@ public class GUIAm2904ShiftInstrDecode extends SimpleRectangularHardcodedGUIComp IAsInt |= 1 << i; break; case U: - readWriteEnds.get("SIO0_MUX").feedSignals(U); - readWriteEnds.get("SIOn_MUX").feedSignals(U); - readWriteEnds.get("QIO0_MUX").feedSignals(U); - readWriteEnds.get("QIOn_MUX").feedSignals(U); - readWriteEnds.get("MC_MUX").feedSignals(U); + readWriteEnds.get("SIO0_MUX").feedSignals(U, U, U); + readWriteEnds.get("SIOn_MUX").feedSignals(U, U, U); + readWriteEnds.get("QIO0_MUX").feedSignals(U, U, U); + readWriteEnds.get("QIOn_MUX").feedSignals(U, U, U); + readWriteEnds.get("MC_MUX").feedSignals(U, U); readWriteEnds.get("MC_EN").feedSignals(U); return null; case X: case Z: - readWriteEnds.get("SIO0_MUX").feedSignals(X); - readWriteEnds.get("SIOn_MUX").feedSignals(X); - readWriteEnds.get("QIO0_MUX").feedSignals(X); - readWriteEnds.get("QIOn_MUX").feedSignals(X); - readWriteEnds.get("MC_MUX").feedSignals(X); + readWriteEnds.get("SIO0_MUX").feedSignals(X, X, X); + readWriteEnds.get("SIOn_MUX").feedSignals(X, X, X); + readWriteEnds.get("QIO0_MUX").feedSignals(X, X, X); + readWriteEnds.get("QIOn_MUX").feedSignals(X, X, X); + readWriteEnds.get("MC_MUX").feedSignals(X, X); readWriteEnds.get("MC_EN").feedSignals(X); return null; case ZERO: diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GUIComponentTestbench.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GUIComponentTestbench.java index 7ea2278a..3bef1a07 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GUIComponentTestbench.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GUIComponentTestbench.java @@ -25,8 +25,7 @@ public class GUIComponentTestbench @SuppressWarnings("unused") // for GUIWires being created public static void createTestbench(ViewModelModifiable model) { - GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, - "class:net.mograsim.logic.model.am2900.components.am2904.ShiftInstrDecode"); + GUIComponent comp = IndirectGUIComponentCreator.createComponent(model, "file:components/am2904/GUIAm2904TestLogic.json"); // guess which pins are outputs and which are inputs // TODO this code exists four times... but it seems too "hacky" to put it in a helper class @@ -42,7 +41,7 @@ public class GUIComponentTestbench outputPinNames.add(p.name); } else for (Pin p : comp.getPins().values()) - if (p.getRelX() == 0) + if (p.getRelX() < comp.getWidth()) inputPinNames.add(p.name); else outputPinNames.add(p.name); diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java index 11e46345..51778c1d 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java @@ -2,6 +2,7 @@ package net.mograsim.logic.model; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; @@ -83,8 +84,14 @@ public class LogicUICanvas extends ZoomableCanvas Combo componentSelector = new Combo(debugShell, SWT.DROP_DOWN | SWT.READ_ONLY); componentSelector.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); List componentsByItemIndex = new ArrayList<>(); - model.addComponentAddedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); - model.addComponentRemovedListener(c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model)); + Consumer compsChanged = c -> recalculateComponentSelector(componentsByItemIndex, componentSelector, model); + model.addComponentAddedListener(compsChanged); + model.addComponentRemovedListener(compsChanged); + debugShell.addListener(SWT.Dispose, e -> + { + model.removeComponentAddedListener(compsChanged); + model.removeComponentRemovedListener(compsChanged); + }); recalculateComponentSelector(componentsByItemIndex, componentSelector, model); new Label(debugShell, SWT.NONE).setText("Target state ID: "); Text stateIDText = new Text(debugShell, SWT.SINGLE | SWT.LEAD | SWT.BORDER); diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java index ad1d51e0..5f0fe3a4 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUIMerger.java @@ -48,10 +48,15 @@ public class GUIMerger extends GUIComponent double posX = getPosX(); double posY = getPosY(); + ColorDefinition c = BitVectorFormatter.formatAsColor(outputEnd); + if (c != null) + gc.setForeground(ColorManager.current().toColor(c)); + double outLineY = posY + (logicWidth - 1) * heightPerPin / 2; + gc.drawLine(posX + width / 2, outLineY, posX + width, outLineY); double inputHeight = posY; for (int i = 0; i < logicWidth; i++, inputHeight += 10) { - ColorDefinition c = BitVectorFormatter.formatAsColor(inputEnds[i]); + c = BitVectorFormatter.formatAsColor(inputEnds[i]); if (c != null) gc.setForeground(ColorManager.current().toColor(c)); gc.drawLine(posX, inputHeight, posX + width / 2, inputHeight); @@ -63,11 +68,6 @@ public class GUIMerger extends GUIComponent 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.setLineCap(oldLineCap); - ColorDefinition c = BitVectorFormatter.formatAsColor(outputEnd); - if (c != null) - gc.setForeground(ColorManager.current().toColor(c)); - double outLineY = posY + (logicWidth - 1) * heightPerPin / 2; - gc.drawLine(posX + width / 2, outLineY, posX + width, outLineY); } @Override diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java index 08ce9518..b283f466 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/GUISplitter.java @@ -53,13 +53,6 @@ public class GUISplitter extends GUIComponent gc.setForeground(ColorManager.current().toColor(c)); double inLineY = posY + (logicWidth - 1) * heightPerPin / 2; gc.drawLine(posX, inLineY, posX + width / 2, inLineY); - gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground")); - int oldLineCap = gc.getLineCap(); - int lineJoin = gc.getLineJoin(); - // TODO find better "replacement" for JOIN_BEVEL - 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.setLineCap(oldLineCap); double outputHeight = posY; for (int i = 0; i < logicWidth; i++, outputHeight += 10) { @@ -68,6 +61,13 @@ public class GUISplitter extends GUIComponent gc.setForeground(ColorManager.current().toColor(c)); gc.drawLine(posX + width / 2, outputHeight, posX + width, outputHeight); } + gc.setForeground(Preferences.current().getColor("net.mograsim.logic.model.color.foreground")); + int oldLineCap = gc.getLineCap(); + int lineJoin = gc.getLineJoin(); + // TODO find better "replacement" for JOIN_BEVEL + 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.setLineCap(oldLineCap); } @Override diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java index b5d20bcc..7a1d0e9e 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/MergerAdapter.java @@ -26,7 +26,7 @@ public class MergerAdapter implements ComponentAdapter for (int i = 0; i < guiComponent.logicWidth; i++) { Wire input = logicWiresPerPin.get(guiComponent.getPin("I" + i)); - Wire.fuse(input, output, 0, i, 1); + Wire.fuse(input, output, 0, guiComponent.logicWidth - 1 - i, 1); inputEnds[i] = input.createReadOnlyEnd(); } guiComponent.setLogicModelBinding(inputEnds, output.createReadOnlyEnd()); diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SplitterAdapter.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SplitterAdapter.java index 232015fb..223d2b7d 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SplitterAdapter.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/modeladapter/componentadapters/SplitterAdapter.java @@ -26,7 +26,7 @@ public class SplitterAdapter implements ComponentAdapter for (int i = 0; i < guiComponent.logicWidth; i++) { Wire output = logicWiresPerPin.get(guiComponent.getPin("O" + i)); - Wire.fuse(input, output, i, 0, 1); + Wire.fuse(input, output, guiComponent.logicWidth - 1 - i, 0, 1); outputEnds[i] = output.createReadOnlyEnd(); } guiComponent.setLogicModelBinding(input.createReadOnlyEnd(), outputEnds); diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/standardSnippetIDMapping.json b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/standardSnippetIDMapping.json index 877b30b9..a14c49a3 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/standardSnippetIDMapping.json +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/standardSnippetIDMapping.json @@ -1,7 +1,10 @@ mograsim version: 0.1.3 { - "standardOutlineRendererSuppliers": {}, + "standardOutlineRendererSuppliers": { + "default": "net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer" + }, "standardSymbolRendererSuppliers": { + "default": "net.mograsim.logic.model.snippets.symbolrenderers.DefaultSymbolRenderer", "centeredText": "net.mograsim.logic.model.snippets.symbolrenderers.CenteredTextSymbolRenderer", "simpleRectangularLike": "net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer", "pinNames": "net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer"