From 5409a6e27afdeb1c318bd185e43b476a360625c7 Mon Sep 17 00:00:00 2001 From: Fabian Stemmler Date: Mon, 24 Jun 2019 16:22:20 +0200 Subject: [PATCH] Equivalent inner components now exchangeable. Fixed in/output pin order. 1. Previously, the creation of the inner components of a custom component was fixated in the file, even though the same inner component could either be described by a class, or a file. mapping.json now dictates, which one to use. 2. Added the .json versions of all currently available SubmodelComponents 3. Since pins are no longer addressed by index, but rather by name, rectangular custom components were created with a more or less random pin order, were inputs and outputs were mixed. This issue was fixed. --- .../components/GUI_rsLatch.json | 232 ++ net.mograsim.logic.ui/components/GUIand.json | 154 + .../components/GUIand41.json | 342 ++ .../components/GUIandor414.json | 502 +++ .../components/GUIdemux2.json | 529 +++ net.mograsim.logic.ui/components/GUIdff.json | 339 ++ .../components/GUIdlatch.json | 248 ++ .../components/GUIdlatch4.json | 342 ++ .../components/GUIfulladder.json | 196 + .../components/GUIhalfadder.json | 330 ++ net.mograsim.logic.ui/components/GUImux1.json | 242 ++ .../components/GUImux1_4.json | 486 +++ .../components/GUInand3.json | 214 ++ net.mograsim.logic.ui/components/GUInot4.json | 392 ++ net.mograsim.logic.ui/components/GUIor4.json | 547 +++ net.mograsim.logic.ui/components/GUIor_4.json | 880 +++++ net.mograsim.logic.ui/components/GUIram2.json | 2880 ++++++++++++++ net.mograsim.logic.ui/components/GUIram4.json | 3248 ++++++++++++++++ .../components/GUIsel2_4.json | 846 +++++ .../components/GUIsel3_4.json | 910 +++++ net.mograsim.logic.ui/components/GUIxor.json | 279 ++ .../components/am2901/GUIAm2901.json | 3329 +++++++++++++++++ .../am2901/GUIAm2901ALUFuncDecode.json | 708 ++++ .../am2901/GUIAm2901ALUInclDecode.json | 1493 ++++++++ ...ALUInclSourceDecodeInclFunctionDecode.json | 1348 +++++++ .../components/am2901/GUIAm2901ALUOneBit.json | 537 +++ .../am2901/GUIAm2901DestDecode.json | 1075 ++++++ .../components/am2901/GUIAm2901QReg.json | 423 +++ .../am2901/GUIAm2901SourceDecode.json | 1117 ++++++ net.mograsim.logic.ui/components/mapping.json | 36 + .../ui/model/components/GUIComponent.java | 2 +- .../model/components/GUIComponentCreator.java | 76 + .../components/GUICustomComponentCreator.java | 87 +- .../SimpleRectangularSubmodelComponent.java | 4 +- .../model/components/SubmodelComponent.java | 5 +- .../components/SubmodelComponentParams.java | 4 +- 36 files changed, 24310 insertions(+), 72 deletions(-) create mode 100644 net.mograsim.logic.ui/components/GUI_rsLatch.json create mode 100644 net.mograsim.logic.ui/components/GUIand.json create mode 100644 net.mograsim.logic.ui/components/GUIand41.json create mode 100644 net.mograsim.logic.ui/components/GUIandor414.json create mode 100644 net.mograsim.logic.ui/components/GUIdemux2.json create mode 100644 net.mograsim.logic.ui/components/GUIdff.json create mode 100644 net.mograsim.logic.ui/components/GUIdlatch.json create mode 100644 net.mograsim.logic.ui/components/GUIdlatch4.json create mode 100644 net.mograsim.logic.ui/components/GUIfulladder.json create mode 100644 net.mograsim.logic.ui/components/GUIhalfadder.json create mode 100644 net.mograsim.logic.ui/components/GUImux1.json create mode 100644 net.mograsim.logic.ui/components/GUImux1_4.json create mode 100644 net.mograsim.logic.ui/components/GUInand3.json create mode 100644 net.mograsim.logic.ui/components/GUInot4.json create mode 100644 net.mograsim.logic.ui/components/GUIor4.json create mode 100644 net.mograsim.logic.ui/components/GUIor_4.json create mode 100644 net.mograsim.logic.ui/components/GUIram2.json create mode 100644 net.mograsim.logic.ui/components/GUIram4.json create mode 100644 net.mograsim.logic.ui/components/GUIsel2_4.json create mode 100644 net.mograsim.logic.ui/components/GUIsel3_4.json create mode 100644 net.mograsim.logic.ui/components/GUIxor.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901ALUFuncDecode.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclDecode.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901ALUOneBit.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901DestDecode.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901QReg.json create mode 100644 net.mograsim.logic.ui/components/am2901/GUIAm2901SourceDecode.json create mode 100644 net.mograsim.logic.ui/components/mapping.json create mode 100644 net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponentCreator.java diff --git a/net.mograsim.logic.ui/components/GUI_rsLatch.json b/net.mograsim.logic.ui/components/GUI_rsLatch.json new file mode 100644 index 00000000..9195303f --- /dev/null +++ b/net.mograsim.logic.ui/components/GUI_rsLatch.json @@ -0,0 +1,232 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUI_rsLatch", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "_R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "_S", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 12.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 16.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "_S" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "_R" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 37.5 + }, + { + "x": 35.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 3, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 42.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "Q" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + }, + { + "x": 35.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 7.5 + }, + { + "x": 65.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "_Q" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "_S", + "_R" + ], + "label": "_rsLatch", + "logic_width": 1, + "output_count": [ + "Q", + "_Q" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIand.json b/net.mograsim.logic.ui/components/GUIand.json new file mode 100644 index 00000000..6581c533 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIand.json @@ -0,0 +1,154 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIand", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 3, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + } + } + ] + }, + "specialized": { + "input_count": [ + "A", + "B" + ], + "label": "GUIand", + "logic_width": 1, + "output_count": [ + "Y" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIand41.json b/net.mograsim.logic.ui/components/GUIand41.json new file mode 100644 index 00000000..6c88a16a --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIand41.json @@ -0,0 +1,342 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIand41", + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 71.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 96.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 25.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "A1", + "A2", + "A3", + "A4", + "B" + ], + "label": "GUIand41", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIandor414.json b/net.mograsim.logic.ui/components/GUIandor414.json new file mode 100644 index 00000000..19858349 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIandor414.json @@ -0,0 +1,502 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIandor414", + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 137.5 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 35.0, + "y": 37.5 + }, + "name": "GUIor_4", + "params": {} + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 112.5 + }, + { + "x": 10.0, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 1, + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 137.5 + }, + { + "x": 5.0, + "y": 152.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 1, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 1, + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 187.5 + }, + { + "x": 5.0, + "y": 172.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 212.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C1" + }, + "pin2": { + "compId": 2, + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 12.5 + }, + { + "x": 10.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C2" + }, + "pin2": { + "compId": 2, + "pinName": "A2" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C3" + }, + "pin2": { + "compId": 2, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "C4" + }, + "pin2": { + "compId": 2, + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y1" + }, + "pin2": { + "compId": 2, + "pinName": "B1" + }, + "path": [ + { + "x": 70.0, + "y": 142.5 + }, + { + "x": 70.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 120.0 + }, + { + "x": 30.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y2" + }, + "pin2": { + "compId": 2, + "pinName": "B2" + }, + "path": [ + { + "x": 65.0, + "y": 152.5 + }, + { + "x": 65.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 125.0 + }, + { + "x": 25.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y3" + }, + "pin2": { + "compId": 2, + "pinName": "B3" + }, + "path": [ + { + "x": 60.0, + "y": 162.5 + }, + { + "x": 60.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 130.0 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y4" + }, + "pin2": { + "compId": 2, + "pinName": "B4" + }, + "path": [ + { + "x": 55.0, + "y": 172.5 + }, + { + "x": 55.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 135.0 + }, + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [ + { + "x": 75.0, + "y": 42.5 + }, + { + "x": 75.0, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [ + { + "x": 80.0, + "y": 52.5 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [ + { + "x": 80.0, + "y": 72.5 + }, + { + "x": 80.0, + "y": 87.5 + } + ] + } + ] + }, + "specialized": { + "input_count": [ + "C1", + "C2", + "C3", + "C4", + "A1", + "A2", + "A3", + "A4", + "B" + ], + "label": "GUIandor414", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIdemux2.json b/net.mograsim.logic.ui/components/GUIdemux2.json new file mode 100644 index 00000000..44aaa4ad --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIdemux2.json @@ -0,0 +1,529 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIdemux2", + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y00", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y11", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y10", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y01", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "S1", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 10.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 40.0, + "y": 52.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 40.0, + "y": 77.5 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 36.5, + "y": 61.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 66.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "S0" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "S1" + }, + "pin2": { + "compId": 10, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "" + }, + "path": [ + { + "x": 7.5, + "y": 62.5 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 67.5 + }, + { + "x": 32.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 37.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y00" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y01" + } + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y10" + } + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y11" + } + } + ] + }, + "specialized": { + "input_count": [ + "S0", + "S1" + ], + "label": "GUIdemux2", + "logic_width": 1, + "output_count": [ + "Y00", + "Y01", + "Y10", + "Y11" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIdff.json b/net.mograsim.logic.ui/components/GUIdff.json new file mode 100644 index 00000000..712733d5 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIdff.json @@ -0,0 +1,339 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIdff", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "name": "GUI_rsLatch", + "params": {} + }, + { + "pos": { + "x": 40.0, + "y": 40.0 + }, + "name": "GUInand3", + "params": {} + }, + { + "pos": { + "x": 120.0, + "y": 60.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 120.0, + "y": 30.0 + }, + "name": "GUI_rsLatch", + "params": {} + }, + { + "pos": { + "x": 9.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 19.0, + "y": 64.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 99.0, + "y": 34.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 99.0, + "y": 44.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [ + { + "x": 145.0, + "y": 70.0 + }, + { + "x": 145.0, + "y": 85.0 + }, + { + "x": 20.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "_S" + }, + "path": [ + { + "x": 20.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "_Q" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 35.0 + }, + { + "x": 30.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "_R" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 100.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "_Q" + }, + "pin2": { + "compId": 0, + "pinName": "_Q" + } + } + ] + }, + "specialized": { + "input_count": [ + "C", + "D" + ], + "label": "GUIdff", + "logic_width": 1, + "output_count": [ + "Q", + "_Q" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIdlatch.json b/net.mograsim.logic.ui/components/GUIdlatch.json new file mode 100644 index 00000000..7d874980 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIdlatch.json @@ -0,0 +1,248 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIdlatch", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Q", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "E", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "name": "GUI_rsLatch", + "params": {} + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "D" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "E" + }, + "pin2": { + "compId": 4, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "_S" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 3, + "pinName": "_R" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "_Q" + }, + "pin2": { + "compId": 0, + "pinName": "_Q" + } + } + ] + }, + "specialized": { + "input_count": [ + "D", + "E" + ], + "label": "GUIdlatch", + "logic_width": 1, + "output_count": [ + "Q", + "_Q" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIdlatch4.json b/net.mograsim.logic.ui/components/GUIdlatch4.json new file mode 100644 index 00000000..0c7a9e65 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIdlatch4.json @@ -0,0 +1,342 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIdlatch4", + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "name": "GUIdlatch", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 32.5 + }, + "name": "GUIdlatch", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 57.5 + }, + "name": "GUIdlatch", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 82.5 + }, + "name": "GUIdlatch", + "params": {} + }, + { + "pos": { + "x": 14.0, + "y": 46.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 71.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 96.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 112.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "E" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "E" + }, + "path": [ + { + "x": 15.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 1, + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 2, + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 3, + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 4, + "pinName": "D" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "D1", + "D2", + "D3", + "D4", + "C" + ], + "label": "GUIdlatch4", + "logic_width": 1, + "output_count": [ + "Q1", + "Q2", + "Q3", + "Q4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIfulladder.json b/net.mograsim.logic.ui/components/GUIfulladder.json new file mode 100644 index 00000000..888df777 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIfulladder.json @@ -0,0 +1,196 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIfulladder", + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Z", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 5.0, + "y": 40.0 + }, + "name": "GUIhalfadder", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 7.5 + }, + "name": "GUIhalfadder", + "params": {} + }, + { + "pos": { + "x": 57.5, + "y": 40.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 2, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "_Z" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "_Z" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 82.5, + "y": 22.5 + }, + { + "x": 82.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 35.0 + }, + { + "x": 52.5, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Z" + } + } + ] + }, + "specialized": { + "input_count": [ + "A", + "B", + "C" + ], + "label": "GUIfulladder", + "logic_width": 1, + "output_count": [ + "Y", + "Z" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIhalfadder.json b/net.mograsim.logic.ui/components/GUIhalfadder.json new file mode 100644 index 00000000..a83a1e44 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIhalfadder.json @@ -0,0 +1,330 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIhalfadder", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Z", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "_Z" + }, + "path": [ + { + "x": 80.0, + "y": 25.0 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 62.5, + "y": 12.5 + }, + { + "x": 62.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "A", + "B" + ], + "label": "GUIhalfadder", + "logic_width": 1, + "output_count": [ + "Y", + "_Z" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUImux1.json b/net.mograsim.logic.ui/components/GUImux1.json new file mode 100644 index 00000000..f36fc7c1 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUImux1.json @@ -0,0 +1,242 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUImux1", + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 7.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 35.0, + "y": 22.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 35.0, + "y": 47.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 60.0, + "y": 30.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 21.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "S0" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 2, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "I0" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 52.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + } + } + ] + }, + "specialized": { + "input_count": [ + "S0", + "I0", + "I1" + ], + "label": "GUImux1", + "logic_width": 1, + "output_count": [ + "Y" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUImux1_4.json b/net.mograsim.logic.ui/components/GUImux1_4.json new file mode 100644 index 00000000..a652c167 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUImux1_4.json @@ -0,0 +1,486 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUImux1_4", + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I0_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I0_3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I1_2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0_2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I1_1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I1_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "S0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I0_4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1_3", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 7.5 + }, + "name": "GUImux1", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 42.5 + }, + "name": "GUImux1", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "name": "GUImux1", + "params": {} + }, + { + "pos": { + "x": 30.0, + "y": 112.5 + }, + "name": "GUImux1", + "params": {} + }, + { + "pos": { + "x": 24.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 46.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 81.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "S0" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0_1" + }, + "pin2": { + "compId": 1, + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 37.5 + }, + { + "x": 5.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1_1" + }, + "pin2": { + "compId": 1, + "pinName": "I1" + }, + "path": [ + { + "x": 10.0, + "y": 137.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0_2" + }, + "pin2": { + "compId": 2, + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 62.5 + }, + { + "x": 5.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1_2" + }, + "pin2": { + "compId": 2, + "pinName": "I1" + }, + "path": [ + { + "x": 15.0, + "y": 162.5 + }, + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + } + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0_3" + }, + "pin2": { + "compId": 3, + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 87.5 + }, + { + "x": 5.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1_3" + }, + "pin2": { + "compId": 3, + "pinName": "I1" + }, + "path": [ + { + "x": 20.0, + "y": 187.5 + }, + { + "x": 20.0, + "y": 102.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + } + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "S0" + }, + "path": [ + { + "x": 25.0, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0_4" + }, + "pin2": { + "compId": 4, + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 112.5 + }, + { + "x": 5.0, + "y": 127.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1_4" + }, + "pin2": { + "compId": 4, + "pinName": "I1" + }, + "path": [ + { + "x": 25.0, + "y": 212.5 + }, + { + "x": 25.0, + "y": 137.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + } + } + ] + }, + "specialized": { + "input_count": [ + "S0", + "I0_1", + "I0_2", + "I0_3", + "I0_4", + "I1_1", + "I1_2", + "I1_3", + "I1_4" + ], + "label": "GUImux1_4", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUInand3.json b/net.mograsim.logic.ui/components/GUInand3.json new file mode 100644 index 00000000..2db174fb --- /dev/null +++ b/net.mograsim.logic.ui/components/GUInand3.json @@ -0,0 +1,214 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUInand3", + "width": 35.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 35.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 62.5, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 32.5, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 25.0 + }, + { + "x": 57.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 62.5 + }, + { + "x": 60.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "A", + "B", + "C" + ], + "label": "GUInand3", + "logic_width": 1, + "output_count": [ + "Y" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUInot4.json b/net.mograsim.logic.ui/components/GUInot4.json new file mode 100644 index 00000000..1a4f9d1b --- /dev/null +++ b/net.mograsim.logic.ui/components/GUInot4.json @@ -0,0 +1,392 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUInot4", + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 30.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 30.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 30.0, + "y": 52.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 30.0, + "y": 77.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 61.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 86.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "A1", + "A2", + "A3", + "A4" + ], + "label": "GUInot4", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIor4.json b/net.mograsim.logic.ui/components/GUIor4.json new file mode 100644 index 00000000..4aba55a6 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIor4.json @@ -0,0 +1,547 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIor4", + "width": 35.0, + "height": 40.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 65.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 115.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 165.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 40.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 140.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 110.0, + "y": 40.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 110.0, + "y": 140.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 140.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 74.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 124.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 174.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 104.0, + "y": 49.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 104.0, + "y": 149.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 10, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 11, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 12, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 5, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 5, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [ + { + "x": 105.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + } + } + ] + }, + "specialized": { + "input_count": [ + "A1", + "A2", + "A3", + "A4" + ], + "label": "GUIor4", + "logic_width": 1, + "output_count": [ + "Y" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIor_4.json b/net.mograsim.logic.ui/components/GUIor_4.json new file mode 100644 index 00000000..69bacd22 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIor_4.json @@ -0,0 +1,880 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIor_4", + "width": 35.0, + "height": 80.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B1", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 52.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 77.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 102.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 127.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 152.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 177.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 61.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 86.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 111.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 136.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 161.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 186.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B4" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 117.5 + } + ] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 142.5 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 12.5 + }, + { + "x": 40.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 112.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 37.5 + }, + { + "x": 40.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 137.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 11, + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 62.5 + }, + { + "x": 40.0, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 162.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 12, + "pinName": "A" + }, + "path": [ + { + "x": 40.0, + "y": 87.5 + }, + { + "x": 40.0, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "A1", + "A2", + "A3", + "A4", + "B1", + "B2", + "B3", + "B4" + ], + "label": "GUIor_4", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIram2.json b/net.mograsim.logic.ui/components/GUIram2.json new file mode 100644 index 00000000..665d5a0c --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIram2.json @@ -0,0 +1,2880 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIram2", + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "name": "GUIdemux2", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "name": "GUIdemux2", + "params": {} + }, + { + "pos": { + "x": 130.0, + "y": 150.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 325.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 475.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 625.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 775.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 235.0, + "y": 375.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 235.0, + "y": 485.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 235.0, + "y": 635.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 235.0, + "y": 785.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 135.0, + "y": 325.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 135.0, + "y": 435.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 135.0, + "y": 585.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 135.0, + "y": 735.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 109.0, + "y": 154.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 104.0, + "y": 164.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 99.0, + "y": 174.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 94.0, + "y": 184.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 549.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 649.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 749.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 809.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 479.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 489.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 499.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 509.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 629.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 639.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 649.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 659.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 129.0, + "y": 329.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 124.0, + "y": 339.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 119.0, + "y": 349.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 114.0, + "y": 359.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 129.0, + "y": 479.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 124.0, + "y": 489.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 119.0, + "y": 499.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 114.0, + "y": 509.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 129.0, + "y": 629.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 124.0, + "y": 639.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 119.0, + "y": 649.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 114.0, + "y": 659.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 129.0, + "y": 779.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 124.0, + "y": 789.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 119.0, + "y": 799.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 114.0, + "y": 809.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A0" + }, + "pin2": { + "compId": 1, + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B0" + }, + "pin2": { + "compId": 2, + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 250.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 2, + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 350.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y00" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y01" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y10" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y11" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "WE" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 300.0 + }, + { + "x": 125.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y1" + }, + "pin2": { + "compId": 4, + "pinName": "C" + }, + "path": [ + { + "x": 185.0, + "y": 155.0 + }, + { + "x": 185.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 250.0 + }, + { + "x": 30.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y2" + }, + "pin2": { + "compId": 5, + "pinName": "C" + }, + "path": [ + { + "x": 180.0, + "y": 165.0 + }, + { + "x": 180.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 245.0 + }, + { + "x": 25.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y3" + }, + "pin2": { + "compId": 6, + "pinName": "C" + }, + "path": [ + { + "x": 175.0, + "y": 175.0 + }, + { + "x": 175.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 240.0 + }, + { + "x": 20.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y4" + }, + "pin2": { + "compId": 7, + "pinName": "C" + }, + "path": [ + { + "x": 170.0, + "y": 185.0 + }, + { + "x": 170.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 235.0 + }, + { + "x": 15.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D4" + }, + "path": [ + { + "x": 50.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 30, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 31, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D1" + }, + "path": [ + { + "x": 35.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D2" + }, + "path": [ + { + "x": 40.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D3" + }, + "path": [ + { + "x": 45.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q1" + }, + "pin2": { + "compId": 32, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q2" + }, + "pin2": { + "compId": 33, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q3" + }, + "pin2": { + "compId": 34, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q4" + }, + "pin2": { + "compId": 35, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Q1" + }, + "pin2": { + "compId": 36, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Q2" + }, + "pin2": { + "compId": 37, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Q3" + }, + "pin2": { + "compId": 38, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Q4" + }, + "pin2": { + "compId": 39, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Q1" + }, + "pin2": { + "compId": 40, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Q2" + }, + "pin2": { + "compId": 41, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Q3" + }, + "pin2": { + "compId": 42, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Q4" + }, + "pin2": { + "compId": 43, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "Q1" + }, + "pin2": { + "compId": 44, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "Q2" + }, + "pin2": { + "compId": 45, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "Q3" + }, + "pin2": { + "compId": 46, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "Q4" + }, + "pin2": { + "compId": 47, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y00" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 210.0, + "y": 50.0 + }, + { + "x": 210.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y01" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 205.0, + "y": 60.0 + }, + { + "x": 205.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y10" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 200.0, + "y": 70.0 + }, + { + "x": 200.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y11" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [ + { + "x": 195.0, + "y": 80.0 + }, + { + "x": 195.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "B" + }, + "path": [ + { + "x": 105.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "B" + }, + "path": [ + { + "x": 100.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compId": 40, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compId": 41, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compId": 42, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compId": 43, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compId": 44, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A1" + }, + "path": [ + { + "x": 130.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compId": 45, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A2" + }, + "path": [ + { + "x": 125.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compId": 46, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A3" + }, + "path": [ + { + "x": 120.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compId": 47, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A4" + }, + "path": [ + { + "x": 115.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 40, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 41, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 42, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 43, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 44, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 45, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 46, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 47, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y1" + }, + "pin2": { + "compId": 9, + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 380.0 + }, + { + "x": 290.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 445.0 + }, + { + "x": 230.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y2" + }, + "pin2": { + "compId": 9, + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 390.0 + }, + { + "x": 285.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 440.0 + }, + { + "x": 225.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y3" + }, + "pin2": { + "compId": 9, + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 400.0 + }, + { + "x": 280.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 435.0 + }, + { + "x": 220.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y4" + }, + "pin2": { + "compId": 9, + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 410.0 + }, + { + "x": 275.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 430.0 + }, + { + "x": 215.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y1" + }, + "pin2": { + "compId": 10, + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 490.0 + }, + { + "x": 290.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 595.0 + }, + { + "x": 230.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y2" + }, + "pin2": { + "compId": 10, + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 500.0 + }, + { + "x": 285.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 590.0 + }, + { + "x": 225.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y3" + }, + "pin2": { + "compId": 10, + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 510.0 + }, + { + "x": 280.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 585.0 + }, + { + "x": 220.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y4" + }, + "pin2": { + "compId": 10, + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 520.0 + }, + { + "x": 275.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 580.0 + }, + { + "x": 215.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y1" + }, + "pin2": { + "compId": 11, + "pinName": "C1" + }, + "path": [ + { + "x": 290.0, + "y": 640.0 + }, + { + "x": 290.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 745.0 + }, + { + "x": 230.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y2" + }, + "pin2": { + "compId": 11, + "pinName": "C2" + }, + "path": [ + { + "x": 285.0, + "y": 650.0 + }, + { + "x": 285.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 740.0 + }, + { + "x": 225.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y3" + }, + "pin2": { + "compId": 11, + "pinName": "C3" + }, + "path": [ + { + "x": 280.0, + "y": 660.0 + }, + { + "x": 280.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 735.0 + }, + { + "x": 220.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y4" + }, + "pin2": { + "compId": 11, + "pinName": "C4" + }, + "path": [ + { + "x": 275.0, + "y": 670.0 + }, + { + "x": 275.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 730.0 + }, + { + "x": 215.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "QA1" + }, + "path": [ + { + "x": 300.0, + "y": 790.0 + }, + { + "x": 300.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "QA2" + }, + "path": [ + { + "x": 305.0, + "y": 800.0 + }, + { + "x": 305.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "QA3" + }, + "path": [ + { + "x": 310.0, + "y": 810.0 + }, + { + "x": 310.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "QA4" + }, + "path": [ + { + "x": 315.0, + "y": 820.0 + }, + { + "x": 315.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y1" + }, + "pin2": { + "compId": 13, + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 330.0 + }, + { + "x": 190.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 430.0 + }, + { + "x": 130.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y2" + }, + "pin2": { + "compId": 13, + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 340.0 + }, + { + "x": 185.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 425.0 + }, + { + "x": 125.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y3" + }, + "pin2": { + "compId": 13, + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 350.0 + }, + { + "x": 180.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 420.0 + }, + { + "x": 120.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y4" + }, + "pin2": { + "compId": 13, + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 360.0 + }, + { + "x": 175.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 415.0 + }, + { + "x": 115.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y1" + }, + "pin2": { + "compId": 14, + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 440.0 + }, + { + "x": 190.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 580.0 + }, + { + "x": 130.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y2" + }, + "pin2": { + "compId": 14, + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 450.0 + }, + { + "x": 185.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 575.0 + }, + { + "x": 125.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y3" + }, + "pin2": { + "compId": 14, + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 460.0 + }, + { + "x": 180.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 570.0 + }, + { + "x": 120.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y4" + }, + "pin2": { + "compId": 14, + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 470.0 + }, + { + "x": 175.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 565.0 + }, + { + "x": 115.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y1" + }, + "pin2": { + "compId": 15, + "pinName": "C1" + }, + "path": [ + { + "x": 190.0, + "y": 590.0 + }, + { + "x": 190.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 730.0 + }, + { + "x": 130.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y2" + }, + "pin2": { + "compId": 15, + "pinName": "C2" + }, + "path": [ + { + "x": 185.0, + "y": 600.0 + }, + { + "x": 185.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 725.0 + }, + { + "x": 125.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y3" + }, + "pin2": { + "compId": 15, + "pinName": "C3" + }, + "path": [ + { + "x": 180.0, + "y": 610.0 + }, + { + "x": 180.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 720.0 + }, + { + "x": 120.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y4" + }, + "pin2": { + "compId": 15, + "pinName": "C4" + }, + "path": [ + { + "x": 175.0, + "y": 620.0 + }, + { + "x": 175.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 715.0 + }, + { + "x": 115.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "QB1" + }, + "path": [ + { + "x": 190.0, + "y": 740.0 + }, + { + "x": 190.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 880.0 + }, + { + "x": 325.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "QB2" + }, + "path": [ + { + "x": 185.0, + "y": 750.0 + }, + { + "x": 185.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 885.0 + }, + { + "x": 330.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "QB3" + }, + "path": [ + { + "x": 180.0, + "y": 760.0 + }, + { + "x": 180.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 890.0 + }, + { + "x": 335.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "QB4" + }, + "path": [ + { + "x": 175.0, + "y": 770.0 + }, + { + "x": 175.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 895.0 + }, + { + "x": 340.0, + "y": 750.0 + } + ] + } + ] + }, + "specialized": { + "input_count": [ + "A0", + "A1", + "B0", + "B1", + "WE", + "D1", + "D2", + "D3", + "D4" + ], + "label": "GUIram2", + "logic_width": 1, + "output_count": [ + "QA1", + "QA2", + "QA3", + "QA4", + "QB1", + "QB2", + "QB3", + "QB4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIram4.json b/net.mograsim.logic.ui/components/GUIram4.json new file mode 100644 index 00000000..2965fd09 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIram4.json @@ -0,0 +1,3248 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIram4", + "width": 35.0, + "height": 130.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "QA1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QB2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "QB1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "QA3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "QB4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "QA2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "QB3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "QA4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A3", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "name": "GUIdemux2", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 150.0 + }, + "name": "GUIdemux2", + "params": {} + }, + { + "pos": { + "x": 235.0, + "y": 150.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 80.0, + "y": 330.0 + }, + "name": "GUIram2", + "params": {} + }, + { + "pos": { + "x": 80.0, + "y": 480.0 + }, + "name": "GUIram2", + "params": {} + }, + { + "pos": { + "x": 80.0, + "y": 630.0 + }, + "name": "GUIram2", + "params": {} + }, + { + "pos": { + "x": 80.0, + "y": 780.0 + }, + "name": "GUIram2", + "params": {} + }, + { + "pos": { + "x": 250.0, + "y": 375.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 250.0, + "y": 485.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 250.0, + "y": 635.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 250.0, + "y": 785.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 155.0, + "y": 325.0 + }, + "name": "GUIand41", + "params": {} + }, + { + "pos": { + "x": 155.0, + "y": 435.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 155.0, + "y": 585.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 155.0, + "y": 735.0 + }, + "name": "GUIandor414", + "params": {} + }, + { + "pos": { + "x": 229.0, + "y": 154.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 224.0, + "y": 164.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 219.0, + "y": 174.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 214.0, + "y": 184.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 59.0, + "y": 534.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 544.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 69.0, + "y": 554.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 564.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 59.0, + "y": 684.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 694.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 69.0, + "y": 704.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 714.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 59.0, + "y": 834.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 844.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 69.0, + "y": 854.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 864.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 484.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 494.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 504.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 54.0, + "y": 514.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 634.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 644.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 654.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 54.0, + "y": 664.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 334.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 349.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 649.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 54.0, + "y": 749.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A0" + }, + "pin2": { + "compId": 1, + "pinName": "S0" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 150.0 + }, + { + "x": 10.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B0" + }, + "pin2": { + "compId": 2, + "pinName": "S0" + }, + "path": [ + { + "x": 5.0, + "y": 450.0 + }, + { + "x": 5.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 2, + "pinName": "S1" + }, + "path": [ + { + "x": 10.0, + "y": 550.0 + }, + { + "x": 10.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y00" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y01" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y10" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y11" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "WE" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 15.0, + "y": 850.0 + }, + { + "x": 15.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y1" + }, + "pin2": { + "compId": 4, + "pinName": "WE" + }, + "path": [ + { + "x": 290.0, + "y": 155.0 + }, + { + "x": 290.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 375.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y2" + }, + "pin2": { + "compId": 5, + "pinName": "WE" + }, + "path": [ + { + "x": 285.0, + "y": 165.0 + }, + { + "x": 285.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 225.0 + }, + { + "x": 30.0, + "y": 525.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y3" + }, + "pin2": { + "compId": 6, + "pinName": "WE" + }, + "path": [ + { + "x": 280.0, + "y": 175.0 + }, + { + "x": 280.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 675.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y4" + }, + "pin2": { + "compId": 7, + "pinName": "WE" + }, + "path": [ + { + "x": 275.0, + "y": 185.0 + }, + { + "x": 275.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 215.0 + }, + { + "x": 20.0, + "y": 825.0 + } + ] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 40, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 40, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 41, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 41, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 365.0 + } + ] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 36, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 37, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 42, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 42, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 42, + "pinName": "" + }, + "pin2": { + "compId": 38, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 39, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A0" + }, + "path": [] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B0" + }, + "path": [] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A0" + }, + "path": [ + { + "x": 40.0, + "y": 785.0 + } + ] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A1" + }, + "path": [ + { + "x": 45.0, + "y": 795.0 + } + ] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B0" + }, + "path": [ + { + "x": 50.0, + "y": 805.0 + } + ] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 43, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 43, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 815.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 40, + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 41, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 43, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D1" + }, + "path": [ + { + "x": 60.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D2" + }, + "path": [ + { + "x": 65.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D3" + }, + "path": [ + { + "x": 70.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "D4" + }, + "path": [ + { + "x": 75.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 24, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 25, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 26, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 27, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 30, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 31, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 950.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 30, + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 31, + "pinName": "" + }, + "path": [ + { + "x": 75.0, + "y": 1250.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y00" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 50.0 + }, + { + "x": 135.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y01" + }, + "pin2": { + "compId": 13, + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 60.0 + }, + { + "x": 130.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y10" + }, + "pin2": { + "compId": 14, + "pinName": "B" + }, + "path": [ + { + "x": 125.0, + "y": 70.0 + }, + { + "x": 125.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y11" + }, + "pin2": { + "compId": 15, + "pinName": "B" + }, + "path": [ + { + "x": 120.0, + "y": 80.0 + }, + { + "x": 120.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 230.0, + "y": 420.0 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 225.0, + "y": 570.0 + } + ] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 220.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [ + { + "x": 215.0, + "y": 870.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QB1" + }, + "pin2": { + "compId": 8, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 375.0 + }, + { + "x": 140.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QB2" + }, + "pin2": { + "compId": 8, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 385.0 + }, + { + "x": 140.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QB3" + }, + "pin2": { + "compId": 8, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 395.0 + }, + { + "x": 140.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QB4" + }, + "pin2": { + "compId": 8, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 405.0 + }, + { + "x": 140.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QB1" + }, + "pin2": { + "compId": 9, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 525.0 + }, + { + "x": 140.0, + "y": 530.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QB2" + }, + "pin2": { + "compId": 9, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 535.0 + }, + { + "x": 140.0, + "y": 540.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QB3" + }, + "pin2": { + "compId": 9, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 545.0 + }, + { + "x": 140.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QB4" + }, + "pin2": { + "compId": 9, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 555.0 + }, + { + "x": 140.0, + "y": 560.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QB1" + }, + "pin2": { + "compId": 10, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 675.0 + }, + { + "x": 140.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QB2" + }, + "pin2": { + "compId": 10, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 685.0 + }, + { + "x": 140.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QB3" + }, + "pin2": { + "compId": 10, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 695.0 + }, + { + "x": 140.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QB4" + }, + "pin2": { + "compId": 10, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 705.0 + }, + { + "x": 140.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QB1" + }, + "pin2": { + "compId": 11, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 825.0 + }, + { + "x": 140.0, + "y": 830.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QB2" + }, + "pin2": { + "compId": 11, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 835.0 + }, + { + "x": 140.0, + "y": 840.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QB3" + }, + "pin2": { + "compId": 11, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 845.0 + }, + { + "x": 140.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QB4" + }, + "pin2": { + "compId": 11, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 855.0 + }, + { + "x": 140.0, + "y": 860.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QA1" + }, + "pin2": { + "compId": 12, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 335.0 + }, + { + "x": 140.0, + "y": 330.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QA2" + }, + "pin2": { + "compId": 12, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 345.0 + }, + { + "x": 140.0, + "y": 340.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QA3" + }, + "pin2": { + "compId": 12, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 355.0 + }, + { + "x": 140.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "QA4" + }, + "pin2": { + "compId": 12, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 365.0 + }, + { + "x": 140.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QA1" + }, + "pin2": { + "compId": 13, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 485.0 + }, + { + "x": 140.0, + "y": 480.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QA2" + }, + "pin2": { + "compId": 13, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 495.0 + }, + { + "x": 140.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QA3" + }, + "pin2": { + "compId": 13, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 505.0 + }, + { + "x": 140.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "QA4" + }, + "pin2": { + "compId": 13, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 515.0 + }, + { + "x": 140.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QA1" + }, + "pin2": { + "compId": 14, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 635.0 + }, + { + "x": 140.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QA2" + }, + "pin2": { + "compId": 14, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 645.0 + }, + { + "x": 140.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QA3" + }, + "pin2": { + "compId": 14, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 655.0 + }, + { + "x": 140.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "QA4" + }, + "pin2": { + "compId": 14, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 665.0 + }, + { + "x": 140.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QA1" + }, + "pin2": { + "compId": 15, + "pinName": "A1" + }, + "path": [ + { + "x": 140.0, + "y": 785.0 + }, + { + "x": 140.0, + "y": 780.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QA2" + }, + "pin2": { + "compId": 15, + "pinName": "A2" + }, + "path": [ + { + "x": 140.0, + "y": 795.0 + }, + { + "x": 140.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QA3" + }, + "pin2": { + "compId": 15, + "pinName": "A3" + }, + "path": [ + { + "x": 140.0, + "y": 805.0 + }, + { + "x": 140.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "QA4" + }, + "pin2": { + "compId": 15, + "pinName": "A4" + }, + "path": [ + { + "x": 140.0, + "y": 815.0 + }, + { + "x": 140.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y1" + }, + "pin2": { + "compId": 9, + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 380.0 + }, + { + "x": 305.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 445.0 + }, + { + "x": 245.0, + "y": 490.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y2" + }, + "pin2": { + "compId": 9, + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 390.0 + }, + { + "x": 300.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 440.0 + }, + { + "x": 240.0, + "y": 500.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y3" + }, + "pin2": { + "compId": 9, + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 400.0 + }, + { + "x": 295.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 435.0 + }, + { + "x": 235.0, + "y": 510.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y4" + }, + "pin2": { + "compId": 9, + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 410.0 + }, + { + "x": 290.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 430.0 + }, + { + "x": 230.0, + "y": 520.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y1" + }, + "pin2": { + "compId": 10, + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 490.0 + }, + { + "x": 305.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 595.0 + }, + { + "x": 245.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y2" + }, + "pin2": { + "compId": 10, + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 500.0 + }, + { + "x": 300.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 590.0 + }, + { + "x": 240.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y3" + }, + "pin2": { + "compId": 10, + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 510.0 + }, + { + "x": 295.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 585.0 + }, + { + "x": 235.0, + "y": 660.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y4" + }, + "pin2": { + "compId": 10, + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 520.0 + }, + { + "x": 290.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 580.0 + }, + { + "x": 230.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y1" + }, + "pin2": { + "compId": 11, + "pinName": "C1" + }, + "path": [ + { + "x": 305.0, + "y": 640.0 + }, + { + "x": 305.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 745.0 + }, + { + "x": 245.0, + "y": 790.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y2" + }, + "pin2": { + "compId": 11, + "pinName": "C2" + }, + "path": [ + { + "x": 300.0, + "y": 650.0 + }, + { + "x": 300.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 740.0 + }, + { + "x": 240.0, + "y": 800.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y3" + }, + "pin2": { + "compId": 11, + "pinName": "C3" + }, + "path": [ + { + "x": 295.0, + "y": 660.0 + }, + { + "x": 295.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 735.0 + }, + { + "x": 235.0, + "y": 810.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y4" + }, + "pin2": { + "compId": 11, + "pinName": "C4" + }, + "path": [ + { + "x": 290.0, + "y": 670.0 + }, + { + "x": 290.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 730.0 + }, + { + "x": 230.0, + "y": 820.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "QB1" + }, + "path": [ + { + "x": 330.0, + "y": 790.0 + }, + { + "x": 330.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "QB2" + }, + "path": [ + { + "x": 335.0, + "y": 800.0 + }, + { + "x": 335.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "QB3" + }, + "path": [ + { + "x": 340.0, + "y": 810.0 + }, + { + "x": 340.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "QB4" + }, + "path": [ + { + "x": 345.0, + "y": 820.0 + }, + { + "x": 345.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y1" + }, + "pin2": { + "compId": 13, + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 330.0 + }, + { + "x": 210.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 430.0 + }, + { + "x": 150.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y2" + }, + "pin2": { + "compId": 13, + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 340.0 + }, + { + "x": 205.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 425.0 + }, + { + "x": 145.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y3" + }, + "pin2": { + "compId": 13, + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 350.0 + }, + { + "x": 200.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 420.0 + }, + { + "x": 140.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y4" + }, + "pin2": { + "compId": 13, + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 360.0 + }, + { + "x": 195.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 415.0 + }, + { + "x": 135.0, + "y": 470.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y1" + }, + "pin2": { + "compId": 14, + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 440.0 + }, + { + "x": 210.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 580.0 + }, + { + "x": 150.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y2" + }, + "pin2": { + "compId": 14, + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 450.0 + }, + { + "x": 205.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 575.0 + }, + { + "x": 145.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y3" + }, + "pin2": { + "compId": 14, + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 460.0 + }, + { + "x": 200.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 570.0 + }, + { + "x": 140.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y4" + }, + "pin2": { + "compId": 14, + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 470.0 + }, + { + "x": 195.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 565.0 + }, + { + "x": 135.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y1" + }, + "pin2": { + "compId": 15, + "pinName": "C1" + }, + "path": [ + { + "x": 210.0, + "y": 590.0 + }, + { + "x": 210.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 740.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y2" + }, + "pin2": { + "compId": 15, + "pinName": "C2" + }, + "path": [ + { + "x": 205.0, + "y": 600.0 + }, + { + "x": 205.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 725.0 + }, + { + "x": 145.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y3" + }, + "pin2": { + "compId": 15, + "pinName": "C3" + }, + "path": [ + { + "x": 200.0, + "y": 610.0 + }, + { + "x": 200.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 720.0 + }, + { + "x": 140.0, + "y": 760.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y4" + }, + "pin2": { + "compId": 15, + "pinName": "C4" + }, + "path": [ + { + "x": 195.0, + "y": 620.0 + }, + { + "x": 195.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 715.0 + }, + { + "x": 135.0, + "y": 770.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "QA1" + }, + "path": [ + { + "x": 210.0, + "y": 740.0 + }, + { + "x": 210.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 880.0 + }, + { + "x": 310.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "QA2" + }, + "path": [ + { + "x": 205.0, + "y": 750.0 + }, + { + "x": 205.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 885.0 + }, + { + "x": 315.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "QA3" + }, + "path": [ + { + "x": 200.0, + "y": 760.0 + }, + { + "x": 200.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 890.0 + }, + { + "x": 320.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "QA4" + }, + "path": [ + { + "x": 195.0, + "y": 770.0 + }, + { + "x": 195.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 895.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + } + ] + }, + "specialized": { + "input_count": [ + "A0", + "A1", + "A2", + "A3", + "B0", + "B1", + "B2", + "B3", + "WE", + "D1", + "D2", + "D3", + "D4" + ], + "label": "GUIram4", + "logic_width": 1, + "output_count": [ + "QA1", + "QA2", + "QA3", + "QA4", + "QB1", + "QB2", + "QB3", + "QB4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIsel2_4.json b/net.mograsim.logic.ui/components/GUIsel2_4.json new file mode 100644 index 00000000..d0e4289c --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIsel2_4.json @@ -0,0 +1,846 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIsel2_4", + "width": 35.0, + "height": 100.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 52.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 102.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 152.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 77.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 127.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 20.0, + "y": 177.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 52.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 65.0, + "y": 77.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 16.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 66.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 116.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 41.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 91.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 141.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 62.5 + }, + { + "x": 15.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 87.5 + }, + { + "x": 17.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 112.5 + }, + { + "x": 17.5, + "y": 107.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 17.5, + "y": 137.5 + }, + { + "x": 17.5, + "y": 157.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 162.5 + }, + { + "x": 10.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 12.5, + "y": 187.5 + }, + { + "x": 12.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 15.0, + "y": 212.5 + }, + { + "x": 15.0, + "y": 132.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B4" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 237.5 + }, + { + "x": 10.0, + "y": 182.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "SA" + }, + "pin2": { + "compId": 13, + "pinName": "" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "SB" + }, + "pin2": { + "compId": 16, + "pinName": "" + } + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "" + } + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "" + } + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 167.5 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 17, + "pinName": "" + } + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 18, + "pinName": "" + } + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 192.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "A" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + }, + { + "x": 42.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 45.0, + "y": 37.5 + }, + { + "x": 45.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "A" + }, + "path": [ + { + "x": 47.5, + "y": 62.5 + }, + { + "x": 47.5, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 87.5 + }, + { + "x": 50.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 11, + "pinName": "A" + }, + "path": [ + { + "x": 52.5, + "y": 112.5 + }, + { + "x": 52.5, + "y": 57.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [ + { + "x": 55.0, + "y": 137.5 + }, + { + "x": 55.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 12, + "pinName": "A" + }, + "path": [ + { + "x": 57.5, + "y": 162.5 + }, + { + "x": 57.5, + "y": 82.5 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 60.0, + "y": 187.5 + }, + { + "x": 60.0, + "y": 92.5 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "SA", + "SB", + "A1", + "A2", + "A3", + "A4", + "B1", + "B2", + "B3", + "B4" + ], + "label": "GUIsel2_4", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIsel3_4.json b/net.mograsim.logic.ui/components/GUIsel3_4.json new file mode 100644 index 00000000..cf4ad9d4 --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIsel3_4.json @@ -0,0 +1,910 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIsel3_4", + "width": 35.0, + "height": 150.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "C1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "SB", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "C2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "SC", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "C3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "C4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "B4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 35.0, + "y": 250.0 + }, + "name": "GUIsel2_4", + "params": {} + }, + { + "pos": { + "x": 75.0, + "y": 250.0 + }, + "name": "GUInot4", + "params": {} + }, + { + "pos": { + "x": 50.0, + "y": 570.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 620.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 670.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 720.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 152.5, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 152.5, + "y": 65.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 152.5, + "y": 115.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 152.5, + "y": 165.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 584.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 634.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 684.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "SA" + }, + "pin2": { + "compId": 1, + "pinName": "SA" + }, + "path": [ + { + "x": 25.0, + "y": 25.0 + }, + { + "x": 25.0, + "y": 255.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "SB" + }, + "pin2": { + "compId": 1, + "pinName": "SB" + }, + "path": [ + { + "x": 20.0, + "y": 75.0 + }, + { + "x": 20.0, + "y": 265.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 1, + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 175.0 + }, + { + "x": 15.0, + "y": 275.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 1, + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 225.0 + }, + { + "x": 10.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 1, + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 275.0 + }, + { + "x": 5.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 1, + "pinName": "A4" + }, + "path": [ + { + "x": 5.0, + "y": 325.0 + }, + { + "x": 5.0, + "y": 305.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 1, + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 375.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 1, + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 425.0 + }, + { + "x": 15.0, + "y": 325.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 1, + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 475.0 + }, + { + "x": 20.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B4" + }, + "pin2": { + "compId": 1, + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 525.0 + }, + { + "x": 25.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y1" + }, + "pin2": { + "compId": 2, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y2" + }, + "pin2": { + "compId": 2, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y3" + }, + "pin2": { + "compId": 2, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y4" + }, + "pin2": { + "compId": 2, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "SC" + }, + "pin2": { + "compId": 11, + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [ + { + "x": 30.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 735.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C1" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "C2" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "C3" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "C4" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y1" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 115.0, + "y": 255.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y2" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [ + { + "x": 120.0, + "y": 265.0 + }, + { + "x": 120.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y3" + }, + "pin2": { + "compId": 9, + "pinName": "A" + }, + "path": [ + { + "x": 125.0, + "y": 275.0 + }, + { + "x": 125.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y4" + }, + "pin2": { + "compId": 10, + "pinName": "A" + }, + "path": [ + { + "x": 130.0, + "y": 285.0 + }, + { + "x": 130.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 135.0, + "y": 580.0 + }, + { + "x": 135.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 140.0, + "y": 630.0 + }, + { + "x": 140.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 145.0, + "y": 680.0 + }, + { + "x": 145.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 150.0, + "y": 730.0 + }, + { + "x": 150.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "SA", + "SB", + "SC", + "A1", + "A2", + "A3", + "A4", + "B1", + "B2", + "B3", + "B4", + "C1", + "C2", + "C3", + "C4" + ], + "label": "GUIsel3_4", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/GUIxor.json b/net.mograsim.logic.ui/components/GUIxor.json new file mode 100644 index 00000000..42029dbc --- /dev/null +++ b/net.mograsim.logic.ui/components/GUIxor.json @@ -0,0 +1,279 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIxor", + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 7.5, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 35.0, + "y": 2.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 35.0, + "y": 27.5 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 62.5, + "y": 15.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 11.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "A" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "" + } + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 30.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 30.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Y" + } + } + ] + }, + "specialized": { + "input_count": [ + "A", + "B" + ], + "label": "GUIxor", + "logic_width": 1, + "output_count": [ + "Y" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901.json new file mode 100644 index 00000000..fa1d68e7 --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901.json @@ -0,0 +1,3329 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901", + "width": 35.0, + "height": 270.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 85.0 + }, + "name": "ORAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 265.0 + }, + "name": "IQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 255.0 + }, + "name": "IQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 65.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 115.0 + }, + "name": "OQn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 105.0 + }, + "name": "OQn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "A0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 235.0 + }, + "name": "IRAMn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 95.0 + }, + "name": "ORAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "F\u003d0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 245.0 + }, + "name": "IRAMn+3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 75.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "B0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Y2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Y3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Y4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.1, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 45.0 + }, + "name": "GUIAm2901DestDecode", + "params": {} + }, + { + "pos": { + "x": 275.0, + "y": 135.0 + }, + "name": "GUImux1_4", + "params": {} + }, + { + "pos": { + "x": 190.0, + "y": 65.0 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 160.0, + "y": 75.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 240.0, + "y": 2110.0 + }, + "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "params": {} + }, + { + "pos": { + "x": 275.0, + "y": 445.0 + }, + "name": "GUIor4", + "params": {} + }, + { + "pos": { + "x": 320.0, + "y": 440.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 95.0, + "y": 2220.0 + }, + "name": "GUIram4", + "params": {} + }, + { + "pos": { + "x": 160.0, + "y": 2220.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 160.0, + "y": 2275.0 + }, + "name": "GUIdlatch4", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 2310.0 + }, + "name": "GUIsel3_4", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 2510.0 + }, + "name": "GUIsel3_4", + "params": {} + }, + { + "pos": { + "x": 90.0, + "y": 2490.0 + }, + "name": "GUIAm2901QReg", + "params": {} + }, + { + "pos": { + "x": 154.0, + "y": 949.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 154.0, + "y": 89.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 154.0, + "y": 2264.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 154.0, + "y": 2319.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 2314.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 2324.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 2334.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 219.0, + "y": 2224.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 224.0, + "y": 2234.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 229.0, + "y": 2244.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 234.0, + "y": 2254.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 129.0, + "y": 2494.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 134.0, + "y": 2504.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 139.0, + "y": 2514.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 144.0, + "y": 2524.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 219.0, + "y": 2494.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 234.0, + "y": 2524.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 2624.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 2634.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 279.0, + "y": 2114.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 294.0, + "y": 2144.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 329.0, + "y": 949.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 254.0, + "y": 2089.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 259.0, + "y": 2094.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 264.0, + "y": 2099.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 269.0, + "y": 2104.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 254.0, + "y": 449.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 259.0, + "y": 459.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 264.0, + "y": 469.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 269.0, + "y": 479.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 2354.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 2364.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 19.0, + "y": 2374.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 2394.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 19.0, + "y": 2404.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 2414.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 2384.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 2424.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 19.0, + "y": 2434.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 2444.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 314.0, + "y": 449.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I8" + }, + "pin2": { + "compId": 1, + "pinName": "I8" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I7" + }, + "pin2": { + "compId": 1, + "pinName": "I7" + }, + "path": [ + { + "x": 5.0, + "y": 150.0 + }, + { + "x": 5.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I6" + }, + "pin2": { + "compId": 1, + "pinName": "I6" + }, + "path": [ + { + "x": 10.0, + "y": 250.0 + }, + { + "x": 10.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I5" + }, + "pin2": { + "compId": 5, + "pinName": "I5" + }, + "path": [ + { + "x": 130.0, + "y": 350.0 + }, + { + "x": 130.0, + "y": 2115.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I4" + }, + "pin2": { + "compId": 5, + "pinName": "I4" + }, + "path": [ + { + "x": 125.0, + "y": 450.0 + }, + { + "x": 125.0, + "y": 2125.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I3" + }, + "pin2": { + "compId": 5, + "pinName": "I3" + }, + "path": [ + { + "x": 120.0, + "y": 550.0 + }, + { + "x": 120.0, + "y": 2135.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I2" + }, + "pin2": { + "compId": 5, + "pinName": "I2" + }, + "path": [ + { + "x": 115.0, + "y": 650.0 + }, + { + "x": 115.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1" + }, + "pin2": { + "compId": 5, + "pinName": "I1" + }, + "path": [ + { + "x": 110.0, + "y": 750.0 + }, + { + "x": 110.0, + "y": 2155.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0" + }, + "pin2": { + "compId": 5, + "pinName": "I0" + }, + "path": [ + { + "x": 105.0, + "y": 850.0 + }, + { + "x": 105.0, + "y": 2165.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 155.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "C" + }, + "path": [ + { + "x": 155.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2485.0 + }, + { + "x": 80.0, + "y": 2495.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "LSH" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 90.0 + }, + { + "x": 55.0, + "y": 125.0 + }, + { + "x": 40.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "NSH" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 50.0 + }, + { + "x": 60.0, + "y": 120.0 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "RSH" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 60.0 + }, + { + "x": 65.0, + "y": 115.0 + }, + { + "x": 30.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "SC" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "SA" + }, + "path": [ + { + "x": 40.0, + "y": 2515.0 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "SB" + }, + "path": [ + { + "x": 35.0, + "y": 2525.0 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "SC" + }, + "path": [ + { + "x": 30.0, + "y": 2535.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A0" + }, + "pin2": { + "compId": 8, + "pinName": "A0" + }, + "path": [ + { + "x": 80.0, + "y": 1550.0 + }, + { + "x": 80.0, + "y": 2225.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 8, + "pinName": "A1" + }, + "path": [ + { + "x": 75.0, + "y": 1650.0 + }, + { + "x": 75.0, + "y": 2235.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 8, + "pinName": "A2" + }, + "path": [ + { + "x": 70.0, + "y": 1750.0 + }, + { + "x": 70.0, + "y": 2245.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 8, + "pinName": "A3" + }, + "path": [ + { + "x": 65.0, + "y": 1850.0 + }, + { + "x": 65.0, + "y": 2255.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B0" + }, + "pin2": { + "compId": 8, + "pinName": "B0" + }, + "path": [ + { + "x": 60.0, + "y": 1950.0 + }, + { + "x": 60.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 8, + "pinName": "B1" + }, + "path": [ + { + "x": 55.0, + "y": 2050.0 + }, + { + "x": 55.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 8, + "pinName": "B2" + }, + "path": [ + { + "x": 50.0, + "y": 2150.0 + }, + { + "x": 50.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 8, + "pinName": "B3" + }, + "path": [ + { + "x": 45.0, + "y": 2250.0 + }, + { + "x": 45.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "QA1" + }, + "pin2": { + "compId": 9, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "QA2" + }, + "pin2": { + "compId": 9, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "QA3" + }, + "pin2": { + "compId": 9, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "QA4" + }, + "pin2": { + "compId": 9, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "QB1" + }, + "pin2": { + "compId": 10, + "pinName": "D1" + }, + "path": [ + { + "x": 150.0, + "y": 2265.0 + }, + { + "x": 150.0, + "y": 2280.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "QB2" + }, + "pin2": { + "compId": 10, + "pinName": "D2" + }, + "path": [ + { + "x": 145.0, + "y": 2275.0 + }, + { + "x": 145.0, + "y": 2290.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "QB3" + }, + "pin2": { + "compId": 10, + "pinName": "D3" + }, + "path": [ + { + "x": 140.0, + "y": 2285.0 + }, + { + "x": 140.0, + "y": 2300.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "QB4" + }, + "pin2": { + "compId": 10, + "pinName": "D4" + }, + "path": [ + { + "x": 135.0, + "y": 2295.0 + }, + { + "x": 135.0, + "y": 2310.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Cn" + }, + "pin2": { + "compId": 5, + "pinName": "Cn" + }, + "path": [ + { + "x": 100.0, + "y": 1050.0 + }, + { + "x": 100.0, + "y": 2175.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 5, + "pinName": "D1" + }, + "path": [ + { + "x": 180.0, + "y": 1150.0 + }, + { + "x": 180.0, + "y": 2185.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 5, + "pinName": "D2" + }, + "path": [ + { + "x": 175.0, + "y": 1250.0 + }, + { + "x": 175.0, + "y": 2195.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 5, + "pinName": "D3" + }, + "path": [ + { + "x": 170.0, + "y": 1350.0 + }, + { + "x": 170.0, + "y": 2205.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 5, + "pinName": "D4" + }, + "path": [ + { + "x": 165.0, + "y": 1450.0 + }, + { + "x": 165.0, + "y": 2215.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "Q1" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "Q2" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "Q3" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "Q4" + }, + "pin2": { + "compId": 24, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I0_1" + }, + "path": [ + { + "x": 220.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I0_2" + }, + "path": [ + { + "x": 225.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I0_3" + }, + "path": [ + { + "x": 230.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I0_4" + }, + "path": [ + { + "x": 235.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "Q1" + }, + "pin2": { + "compId": 5, + "pinName": "B1" + }, + "path": [ + { + "x": 200.0, + "y": 2280.0 + }, + { + "x": 200.0, + "y": 2265.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Q2" + }, + "pin2": { + "compId": 5, + "pinName": "B2" + }, + "path": [ + { + "x": 205.0, + "y": 2290.0 + }, + { + "x": 205.0, + "y": 2275.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Q3" + }, + "pin2": { + "compId": 5, + "pinName": "B3" + }, + "path": [ + { + "x": 210.0, + "y": 2300.0 + }, + { + "x": 210.0, + "y": 2285.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Q4" + }, + "pin2": { + "compId": 5, + "pinName": "B4" + }, + "path": [ + { + "x": 215.0, + "y": 2310.0 + }, + { + "x": 215.0, + "y": 2295.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "Q1" + }, + "pin2": { + "compId": 25, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "Q2" + }, + "pin2": { + "compId": 26, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "Q3" + }, + "pin2": { + "compId": 27, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "Q4" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "OQn" + }, + "path": [ + { + "x": 335.0, + "y": 2495.0 + }, + { + "x": 335.0, + "y": 1050.0 + } + ] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 30, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "OQn+3" + }, + "path": [ + { + "x": 340.0, + "y": 2525.0 + }, + { + "x": 340.0, + "y": 1150.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 31, + "pinName": "" + }, + "path": [ + { + "x": 135.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2670.0 + }, + { + "x": 30.0, + "y": 2635.0 + }, + { + "x": 35.0, + "y": 2635.0 + } + ] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 32, + "pinName": "" + }, + "path": [ + { + "x": 140.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2675.0 + }, + { + "x": 35.0, + "y": 2640.0 + }, + { + "x": 40.0, + "y": 2640.0 + } + ] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "C3" + }, + "path": [ + { + "x": 145.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2680.0 + }, + { + "x": 40.0, + "y": 2645.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "IQn+3" + }, + "pin2": { + "compId": 12, + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2650.0 + }, + { + "x": 5.0, + "y": 2655.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "IQn" + }, + "pin2": { + "compId": 12, + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2550.0 + }, + { + "x": 5.0, + "y": 2545.0 + } + ] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A2" + }, + "path": [ + { + "x": 130.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2665.0 + }, + { + "x": 25.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2630.0 + }, + { + "x": 30.0, + "y": 2555.0 + } + ] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "Q1" + }, + "path": [ + { + "x": 220.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "Q2" + }, + "path": [ + { + "x": 225.0, + "y": 2505.0 + }, + { + "x": 225.0, + "y": 2315.0 + } + ] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "Q3" + }, + "path": [ + { + "x": 230.0, + "y": 2515.0 + }, + { + "x": 230.0, + "y": 2325.0 + } + ] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "Q4" + }, + "path": [ + { + "x": 235.0, + "y": 2335.0 + } + ] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A3" + }, + "path": [ + { + "x": 35.0, + "y": 2565.0 + } + ] + }, + { + "pin1": { + "compId": 32, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A4" + }, + "path": [ + { + "x": 40.0, + "y": 2575.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y1" + }, + "pin2": { + "compId": 13, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y2" + }, + "pin2": { + "compId": 13, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y3" + }, + "pin2": { + "compId": 13, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y4" + }, + "pin2": { + "compId": 13, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Cn+4" + }, + "pin2": { + "compId": 0, + "pinName": "Cn+4" + }, + "path": [ + { + "x": 315.0, + "y": 2155.0 + }, + { + "x": 315.0, + "y": 550.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "OVR" + }, + "pin2": { + "compId": 0, + "pinName": "OVR" + }, + "path": [ + { + "x": 320.0, + "y": 2165.0 + }, + { + "x": 320.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "F1" + }, + "pin2": { + "compId": 33, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "F4" + }, + "pin2": { + "compId": 34, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "ORAMn" + }, + "path": [ + { + "x": 325.0, + "y": 2115.0 + }, + { + "x": 325.0, + "y": 850.0 + } + ] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 35, + "pinName": "" + }, + "path": [ + { + "x": 330.0, + "y": 2145.0 + } + ] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "ORAMn+3" + }, + "path": [] + }, + { + "pin1": { + "compId": 35, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "F3" + }, + "path": [ + { + "x": 330.0, + "y": 750.0 + } + ] + }, + { + "pin1": { + "compId": 33, + "pinName": "" + }, + "pin2": { + "compId": 36, + "pinName": "" + }, + "path": [ + { + "x": 280.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "F2" + }, + "pin2": { + "compId": 37, + "pinName": "" + }, + "path": [ + { + "x": 285.0, + "y": 2125.0 + }, + { + "x": 285.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "F3" + }, + "pin2": { + "compId": 38, + "pinName": "" + }, + "path": [ + { + "x": 290.0, + "y": 2135.0 + }, + { + "x": 290.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compId": 34, + "pinName": "" + }, + "pin2": { + "compId": 39, + "pinName": "" + }, + "path": [ + { + "x": 295.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 40, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 41, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 42, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 43, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 40, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A1" + }, + "path": [] + }, + { + "pin1": { + "compId": 41, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 42, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 43, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 40, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I1_1" + }, + "path": [ + { + "x": 255.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compId": 41, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I1_2" + }, + "path": [ + { + "x": 260.0, + "y": 200.0 + } + ] + }, + { + "pin1": { + "compId": 42, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I1_3" + }, + "path": [ + { + "x": 265.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compId": 43, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "I1_4" + }, + "path": [ + { + "x": 270.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compId": 36, + "pinName": "" + }, + "pin2": { + "compId": 44, + "pinName": "" + }, + "path": [ + { + "x": 10.0, + "y": 2090.0 + } + ] + }, + { + "pin1": { + "compId": 37, + "pinName": "" + }, + "pin2": { + "compId": 45, + "pinName": "" + }, + "path": [ + { + "x": 15.0, + "y": 2095.0 + } + ] + }, + { + "pin1": { + "compId": 38, + "pinName": "" + }, + "pin2": { + "compId": 46, + "pinName": "" + }, + "path": [ + { + "x": 20.0, + "y": 2100.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "IRAMn" + }, + "pin2": { + "compId": 11, + "pinName": "A1" + }, + "path": [ + { + "x": 5.0, + "y": 2350.0 + }, + { + "x": 5.0, + "y": 2345.0 + } + ] + }, + { + "pin1": { + "compId": 44, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A2" + }, + "path": [] + }, + { + "pin1": { + "compId": 45, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A3" + }, + "path": [] + }, + { + "pin1": { + "compId": 46, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 45, + "pinName": "" + }, + "pin2": { + "compId": 47, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 46, + "pinName": "" + }, + "pin2": { + "compId": 48, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 39, + "pinName": "" + }, + "pin2": { + "compId": 49, + "pinName": "" + }, + "path": [ + { + "x": 25.0, + "y": 2105.0 + } + ] + }, + { + "pin1": { + "compId": 44, + "pinName": "" + }, + "pin2": { + "compId": 50, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 50, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B1" + }, + "path": [] + }, + { + "pin1": { + "compId": 47, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compId": 48, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B3" + }, + "path": [] + }, + { + "pin1": { + "compId": 49, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B4" + }, + "path": [] + }, + { + "pin1": { + "compId": 47, + "pinName": "" + }, + "pin2": { + "compId": 51, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 48, + "pinName": "" + }, + "pin2": { + "compId": 52, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 49, + "pinName": "" + }, + "pin2": { + "compId": 53, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 51, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "C1" + }, + "path": [] + }, + { + "pin1": { + "compId": 52, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "C2" + }, + "path": [] + }, + { + "pin1": { + "compId": 53, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "C3" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "IRAMn+3" + }, + "pin2": { + "compId": 11, + "pinName": "C4" + }, + "path": [ + { + "x": 5.0, + "y": 2450.0 + }, + { + "x": 5.0, + "y": 2455.0 + } + ] + }, + { + "pin1": { + "compId": 50, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 2585.0 + } + ] + }, + { + "pin1": { + "compId": 51, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 2595.0 + } + ] + }, + { + "pin1": { + "compId": 52, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 2605.0 + } + ] + }, + { + "pin1": { + "compId": 53, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 2615.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y1" + }, + "pin2": { + "compId": 8, + "pinName": "D1" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y2" + }, + "pin2": { + "compId": 8, + "pinName": "D2" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y3" + }, + "pin2": { + "compId": 8, + "pinName": "D3" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y4" + }, + "pin2": { + "compId": 8, + "pinName": "D4" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "RAMWE" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 3, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 8, + "pinName": "WE" + }, + "path": [ + { + "x": 230.0, + "y": 70.0 + }, + { + "x": 230.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 105.0 + }, + { + "x": 90.0, + "y": 2305.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "QWE" + }, + "pin2": { + "compId": 13, + "pinName": "WE" + }, + "path": [ + { + "x": 85.0, + "y": 100.0 + }, + { + "x": 85.0, + "y": 2505.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "YF" + }, + "pin2": { + "compId": 2, + "pinName": "S0" + }, + "path": [ + { + "x": 70.0, + "y": 80.0 + }, + { + "x": 70.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y1" + }, + "pin2": { + "compId": 0, + "pinName": "Y1" + }, + "path": [ + { + "x": 335.0, + "y": 140.0 + }, + { + "x": 335.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y2" + }, + "pin2": { + "compId": 0, + "pinName": "Y2" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y3" + }, + "pin2": { + "compId": 0, + "pinName": "Y3" + }, + "path": [ + { + "x": 335.0, + "y": 160.0 + }, + { + "x": 335.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y4" + }, + "pin2": { + "compId": 0, + "pinName": "Y4" + }, + "path": [ + { + "x": 325.0, + "y": 170.0 + }, + { + "x": 325.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 54, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 54, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 315.0, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compId": 54, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 315.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "F\u003d0" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "I8", + "I7", + "I6", + "I5", + "I4", + "I3", + "I2", + "I1", + "I0", + "C", + "Cn", + "D1", + "D2", + "D3", + "D4", + "A0", + "A1", + "A2", + "A3", + "B0", + "B1", + "B2", + "B3", + "IRAMn", + "IRAMn+3", + "IQn", + "IQn+3" + ], + "label": "GUIAm2901", + "logic_width": 1, + "output_count": [ + "Y1", + "Y2", + "Y3", + "Y4", + "F\u003d0", + "Cn+4", + "OVR", + "F3", + "ORAMn", + "ORAMn+3", + "OQn", + "OQn+3" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUFuncDecode.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUFuncDecode.json new file mode 100644 index 00000000..16bc1b11 --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUFuncDecode.json @@ -0,0 +1,708 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901ALUFuncDecode", + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SBE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "CinE", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 55.0, + "y": 10.0 + }, + "name": "GUInand3", + "params": {} + }, + { + "pos": { + "x": 55.0, + "y": 45.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 55.0, + "y": 70.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 100.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 100.0, + "y": 135.0 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 44.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 54.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 84.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 99.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 49.0, + "y": 74.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 34.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I5" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 45.0 + }, + { + "x": 45.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "FN" + }, + "path": [ + { + "x": 5.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I4" + }, + "pin2": { + "compId": 11, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 40.0 + }, + { + "x": 45.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "SN" + }, + "path": [ + { + "x": 10.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 105.0 + }, + { + "x": 135.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I3" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "RN" + }, + "path": [ + { + "x": 50.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "CinE" + }, + "path": [ + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 5.0 + }, + { + "x": 115.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "SBE" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "I5", + "I4", + "I3" + ], + "label": "GUIAm2901ALUFuncDecode", + "logic_width": 1, + "output_count": [ + "CinE", + "L", + "SN", + "SBE", + "FN", + "RN" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclDecode.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclDecode.json new file mode 100644 index 00000000..09d738aa --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclDecode.json @@ -0,0 +1,1493 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901ALUInclDecode", + "width": 35.0, + "height": 120.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "R2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "S3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "R3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "S4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "R4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "S1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "R1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "S2", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 20.0, + "y": 2.5 + }, + "name": "GUIAm2901ALUFuncDecode", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 80.0 + }, + "name": "GUIAm2901ALUOneBit", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 180.0 + }, + "name": "GUIAm2901ALUOneBit", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 280.0 + }, + "name": "GUIAm2901ALUOneBit", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 380.0 + }, + "name": "GUIAm2901ALUOneBit", + "params": {} + }, + { + "pos": { + "x": 95.0, + "y": 400.0 + }, + "name": "GUIxor", + "params": {} + }, + { + "pos": { + "x": 24.0, + "y": 94.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 194.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 294.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 26.5, + "y": 104.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 26.5, + "y": 204.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 26.5, + "y": 304.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 124.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 224.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 29.0, + "y": 324.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 144.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 244.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 344.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 154.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 254.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 354.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 36.5, + "y": 164.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 36.5, + "y": 264.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 36.5, + "y": 364.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 84.0, + "y": 374.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 84.0, + "y": 384.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I5" + }, + "pin2": { + "compId": 1, + "pinName": "I5" + }, + "path": [ + { + "x": 5.0, + "y": 20.0 + }, + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I4" + }, + "pin2": { + "compId": 1, + "pinName": "I4" + }, + "path": [ + { + "x": 10.0, + "y": 60.0 + }, + { + "x": 10.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I3" + }, + "pin2": { + "compId": 1, + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 27.5 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "SBE" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 70.0 + }, + { + "x": 25.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "CoutE" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "CoutE" + }, + "path": [ + { + "x": 25.0, + "y": 395.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "CinE" + }, + "pin2": { + "compId": 10, + "pinName": "" + }, + "path": [ + { + "x": 70.0, + "y": 7.5 + }, + { + "x": 70.0, + "y": 77.5 + }, + { + "x": 27.5, + "y": 77.5 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "CinE" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "CinE" + }, + "path": [ + { + "x": 27.5, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "RN" + }, + "pin2": { + "compId": 13, + "pinName": "" + }, + "path": [ + { + "x": 57.5, + "y": 57.5 + }, + { + "x": 57.5, + "y": 65.0 + }, + { + "x": 30.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "RN" + }, + "path": [] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "RN" + }, + "path": [ + { + "x": 30.0, + "y": 425.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "SN" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [ + { + "x": 65.0, + "y": 27.5 + }, + { + "x": 65.0, + "y": 72.5 + }, + { + "x": 32.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "SN" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "SN" + }, + "path": [ + { + "x": 32.5, + "y": 445.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "FN" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [ + { + "x": 60.0, + "y": 47.5 + }, + { + "x": 60.0, + "y": 67.5 + }, + { + "x": 35.0, + "y": 67.5 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "FN" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "FN" + }, + "path": [ + { + "x": 35.0, + "y": 455.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "L" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [ + { + "x": 67.5, + "y": 17.5 + }, + { + "x": 67.5, + "y": 75.0 + }, + { + "x": 37.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 24, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "L" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "L" + }, + "path": [ + { + "x": 37.5, + "y": 465.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "R1" + }, + "pin2": { + "compId": 2, + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 180.0 + }, + { + "x": 10.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "R2" + }, + "pin2": { + "compId": 3, + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 220.0 + }, + { + "x": 10.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "R3" + }, + "pin2": { + "compId": 4, + "pinName": "R" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "R4" + }, + "pin2": { + "compId": 5, + "pinName": "R" + }, + "path": [ + { + "x": 20.0, + "y": 300.0 + }, + { + "x": 20.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "S1" + }, + "pin2": { + "compId": 2, + "pinName": "S" + }, + "path": [ + { + "x": 15.0, + "y": 340.0 + }, + { + "x": 15.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "S2" + }, + "pin2": { + "compId": 3, + "pinName": "S" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "S3" + }, + "pin2": { + "compId": 4, + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 420.0 + }, + { + "x": 10.0, + "y": 335.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "S4" + }, + "pin2": { + "compId": 5, + "pinName": "S" + }, + "path": [ + { + "x": 10.0, + "y": 460.0 + }, + { + "x": 10.0, + "y": 435.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Cn" + }, + "pin2": { + "compId": 2, + "pinName": "Cin" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Cout" + }, + "pin2": { + "compId": 3, + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 85.0 + }, + { + "x": 85.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 175.0 + }, + { + "x": 40.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Cout" + }, + "pin2": { + "compId": 4, + "pinName": "Cin" + }, + "path": [ + { + "x": 85.0, + "y": 185.0 + }, + { + "x": 85.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 275.0 + }, + { + "x": 40.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Cout" + }, + "pin2": { + "compId": 25, + "pinName": "" + }, + "path": [ + { + "x": 85.0, + "y": 285.0 + } + ] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "Cin" + }, + "path": [ + { + "x": 40.0, + "y": 375.0 + }, + { + "x": 40.0, + "y": 385.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "Cout" + }, + "pin2": { + "compId": 26, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "F" + }, + "pin2": { + "compId": 0, + "pinName": "F1" + }, + "path": [ + { + "x": 90.0, + "y": 95.0 + }, + { + "x": 90.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "F" + }, + "pin2": { + "compId": 0, + "pinName": "F2" + }, + "path": [ + { + "x": 95.0, + "y": 195.0 + }, + { + "x": 95.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "F" + }, + "pin2": { + "compId": 0, + "pinName": "F3" + }, + "path": [ + { + "x": 100.0, + "y": 295.0 + }, + { + "x": 100.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "F" + }, + "pin2": { + "compId": 0, + "pinName": "F4" + }, + "path": [ + { + "x": 105.0, + "y": 395.0 + }, + { + "x": 105.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 90.0, + "y": 375.0 + }, + { + "x": 90.0, + "y": 405.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 85.0, + "y": 415.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "Cn+4" + }, + "path": [ + { + "x": 130.0, + "y": 385.0 + }, + { + "x": 130.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "OVR" + } + } + ] + }, + "specialized": { + "input_count": [ + "I5", + "I4", + "I3", + "Cn", + "R1", + "R2", + "R3", + "R4", + "S1", + "S2", + "S3", + "S4" + ], + "label": "GUIAm2901ALUInclDecode", + "logic_width": 1, + "output_count": [ + "F1", + "F2", + "F3", + "F4", + "Cn+4", + "OVR" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json new file mode 100644 index 00000000..0b15fc07 --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json @@ -0,0 +1,1348 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "width": 35.0, + "height": 230.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 195.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 205.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 215.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 225.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I3", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "OVR", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "Cn", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I5", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 115.0 + }, + "name": "A1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 125.0 + }, + "name": "A2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 135.0 + }, + "name": "A3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 145.0 + }, + "name": "A4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "Cn+4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "F1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "F3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "F4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 95.0 + }, + "name": "D3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 155.0 + }, + "name": "B1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 105.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 165.0 + }, + "name": "B2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 175.0 + }, + "name": "B3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 185.0 + }, + "name": "B4", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 165.0 + }, + "name": "GUIAm2901SourceDecode", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 365.0 + }, + "name": "GUIsel2_4", + "params": {} + }, + { + "pos": { + "x": 45.0, + "y": 575.0 + }, + "name": "GUIsel3_4", + "params": {} + }, + { + "pos": { + "x": 60.0, + "y": 15.0 + }, + "name": "GUIAm2901ALUInclDecode", + "params": {} + }, + { + "pos": { + "x": 9.0, + "y": 459.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 14.0, + "y": 499.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 19.0, + "y": 539.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 24.0, + "y": 579.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I5" + }, + "pin2": { + "compId": 4, + "pinName": "I5" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I4" + }, + "pin2": { + "compId": 4, + "pinName": "I4" + }, + "path": [ + { + "x": 5.0, + "y": 60.0 + }, + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I3" + }, + "pin2": { + "compId": 4, + "pinName": "I3" + }, + "path": [ + { + "x": 15.0, + "y": 100.0 + }, + { + "x": 15.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I2" + }, + "pin2": { + "compId": 1, + "pinName": "I2" + }, + "path": [ + { + "x": 5.0, + "y": 140.0 + }, + { + "x": 5.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1" + }, + "pin2": { + "compId": 1, + "pinName": "I1" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0" + }, + "pin2": { + "compId": 1, + "pinName": "I0" + }, + "path": [ + { + "x": 5.0, + "y": 220.0 + }, + { + "x": 5.0, + "y": 190.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Cn" + }, + "pin2": { + "compId": 4, + "pinName": "Cn" + }, + "path": [ + { + "x": 10.0, + "y": 260.0 + }, + { + "x": 10.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 2, + "pinName": "A1" + }, + "path": [ + { + "x": 15.0, + "y": 300.0 + }, + { + "x": 15.0, + "y": 390.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 2, + "pinName": "A2" + }, + "path": [ + { + "x": 10.0, + "y": 340.0 + }, + { + "x": 10.0, + "y": 400.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 2, + "pinName": "A3" + }, + "path": [ + { + "x": 5.0, + "y": 380.0 + }, + { + "x": 5.0, + "y": 410.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 2, + "pinName": "A4" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A1" + }, + "pin2": { + "compId": 5, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A2" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A3" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "A4" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B1" + }, + "path": [ + { + "x": 10.0, + "y": 430.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B2" + }, + "path": [ + { + "x": 15.0, + "y": 440.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B3" + }, + "path": [ + { + "x": 20.0, + "y": 450.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B4" + }, + "path": [ + { + "x": 25.0, + "y": 460.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A1" + }, + "path": [ + { + "x": 10.0, + "y": 610.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A2" + }, + "path": [ + { + "x": 15.0, + "y": 620.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A3" + }, + "path": [ + { + "x": 20.0, + "y": 630.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A4" + }, + "path": [ + { + "x": 25.0, + "y": 640.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B1" + }, + "pin2": { + "compId": 3, + "pinName": "B1" + }, + "path": [ + { + "x": 5.0, + "y": 620.0 + }, + { + "x": 5.0, + "y": 650.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B2" + }, + "pin2": { + "compId": 3, + "pinName": "B2" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "B3" + }, + "pin2": { + "compId": 3, + "pinName": "B3" + }, + "path": [ + { + "x": 5.0, + "y": 700.0 + }, + { + "x": 5.0, + "y": 670.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "B4" + }, + "pin2": { + "compId": 3, + "pinName": "B4" + }, + "path": [ + { + "x": 10.0, + "y": 740.0 + }, + { + "x": 10.0, + "y": 680.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Q1" + }, + "pin2": { + "compId": 3, + "pinName": "C1" + }, + "path": [ + { + "x": 15.0, + "y": 780.0 + }, + { + "x": 15.0, + "y": 690.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Q2" + }, + "pin2": { + "compId": 3, + "pinName": "C2" + }, + "path": [ + { + "x": 20.0, + "y": 820.0 + }, + { + "x": 20.0, + "y": 700.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Q3" + }, + "pin2": { + "compId": 3, + "pinName": "C3" + }, + "path": [ + { + "x": 25.0, + "y": 860.0 + }, + { + "x": 25.0, + "y": 710.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "Q4" + }, + "pin2": { + "compId": 3, + "pinName": "C4" + }, + "path": [ + { + "x": 30.0, + "y": 900.0 + }, + { + "x": 30.0, + "y": 720.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "SQ" + }, + "pin2": { + "compId": 3, + "pinName": "SC" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 75.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 240.0 + }, + { + "x": 30.0, + "y": 600.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "RA" + }, + "pin2": { + "compId": 2, + "pinName": "SB" + }, + "path": [ + { + "x": 70.0, + "y": 180.0 + }, + { + "x": 70.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 235.0 + }, + { + "x": 20.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "SB" + }, + "pin2": { + "compId": 3, + "pinName": "SB" + }, + "path": [ + { + "x": 65.0, + "y": 190.0 + }, + { + "x": 65.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 230.0 + }, + { + "x": 35.0, + "y": 590.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "SA" + }, + "pin2": { + "compId": 3, + "pinName": "SA" + }, + "path": [ + { + "x": 60.0, + "y": 200.0 + }, + { + "x": 60.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 225.0 + }, + { + "x": 40.0, + "y": 580.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "RD" + }, + "pin2": { + "compId": 2, + "pinName": "SA" + }, + "path": [ + { + "x": 55.0, + "y": 210.0 + }, + { + "x": 55.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 220.0 + }, + { + "x": 25.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y1" + }, + "pin2": { + "compId": 4, + "pinName": "R1" + }, + "path": [ + { + "x": 82.5, + "y": 370.0 + }, + { + "x": 82.5, + "y": 162.5 + }, + { + "x": 20.0, + "y": 162.5 + }, + { + "x": 20.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y2" + }, + "pin2": { + "compId": 4, + "pinName": "R2" + }, + "path": [ + { + "x": 85.0, + "y": 380.0 + }, + { + "x": 85.0, + "y": 160.0 + }, + { + "x": 22.5, + "y": 160.0 + }, + { + "x": 22.5, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y3" + }, + "pin2": { + "compId": 4, + "pinName": "R3" + }, + "path": [ + { + "x": 87.5, + "y": 390.0 + }, + { + "x": 87.5, + "y": 157.5 + }, + { + "x": 25.0, + "y": 157.5 + }, + { + "x": 25.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y4" + }, + "pin2": { + "compId": 4, + "pinName": "R4" + }, + "path": [ + { + "x": 90.0, + "y": 400.0 + }, + { + "x": 90.0, + "y": 155.0 + }, + { + "x": 27.5, + "y": 155.0 + }, + { + "x": 27.5, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y1" + }, + "pin2": { + "compId": 4, + "pinName": "S1" + }, + "path": [ + { + "x": 92.5, + "y": 580.0 + }, + { + "x": 92.5, + "y": 152.5 + }, + { + "x": 30.0, + "y": 152.5 + }, + { + "x": 30.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y2" + }, + "pin2": { + "compId": 4, + "pinName": "S2" + }, + "path": [ + { + "x": 95.0, + "y": 590.0 + }, + { + "x": 95.0, + "y": 150.0 + }, + { + "x": 32.5, + "y": 150.0 + }, + { + "x": 32.5, + "y": 110.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y3" + }, + "pin2": { + "compId": 4, + "pinName": "S3" + }, + "path": [ + { + "x": 97.5, + "y": 600.0 + }, + { + "x": 97.5, + "y": 147.5 + }, + { + "x": 35.0, + "y": 147.5 + }, + { + "x": 35.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y4" + }, + "pin2": { + "compId": 4, + "pinName": "S4" + }, + "path": [ + { + "x": 100.0, + "y": 610.0 + }, + { + "x": 100.0, + "y": 145.0 + }, + { + "x": 37.5, + "y": 145.0 + }, + { + "x": 37.5, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "F1" + }, + "pin2": { + "compId": 0, + "pinName": "F1" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "F2" + }, + "pin2": { + "compId": 0, + "pinName": "F2" + }, + "path": [ + { + "x": 135.0, + "y": 30.0 + }, + { + "x": 135.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "F3" + }, + "pin2": { + "compId": 0, + "pinName": "F3" + }, + "path": [ + { + "x": 130.0, + "y": 40.0 + }, + { + "x": 130.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "F4" + }, + "pin2": { + "compId": 0, + "pinName": "F4" + }, + "path": [ + { + "x": 125.0, + "y": 50.0 + }, + { + "x": 125.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Cn+4" + }, + "pin2": { + "compId": 0, + "pinName": "Cn+4" + }, + "path": [ + { + "x": 120.0, + "y": 60.0 + }, + { + "x": 120.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "OVR" + }, + "pin2": { + "compId": 0, + "pinName": "OVR" + }, + "path": [ + { + "x": 115.0, + "y": 70.0 + }, + { + "x": 115.0, + "y": 220.0 + } + ] + } + ] + }, + "specialized": { + "input_count": [ + "I5", + "I4", + "I3", + "I2", + "I1", + "I0", + "Cn", + "D1", + "D2", + "D3", + "D4", + "A1", + "A2", + "A3", + "A4", + "B1", + "B2", + "B3", + "B4", + "Q1", + "Q2", + "Q3", + "Q4" + ], + "label": "GUIAm2901ALUInclSourceDecodeInclFunctionDecode", + "logic_width": 1, + "output_count": [ + "F1", + "F2", + "F3", + "F4", + "Cn+4", + "OVR" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUOneBit.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUOneBit.json new file mode 100644 index 00000000..cd8e6c0f --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901ALUOneBit.json @@ -0,0 +1,537 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901ALUOneBit", + "width": 35.0, + "height": 90.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "R", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "S", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "F", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 75.0 + }, + "name": "FN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "Cin", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 65.0 + }, + "name": "SN", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Cout", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "RN", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 85.0 + }, + "name": "L", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "CinE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "CoutE", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.2, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 20.0 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 10.0, + "y": 190.0 + }, + "name": "GUIxor", + "params": {} + }, + { + "pos": { + "x": 10.0, + "y": 290.0 + }, + "name": "GUIxor", + "params": {} + }, + { + "pos": { + "x": 60.0, + "y": 20.0 + }, + "name": "GUIfulladder", + "params": {} + }, + { + "pos": { + "x": 60.0, + "y": 55.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 135.0, + "y": 20.0 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 90.0, + "y": 70.0 + }, + "name": "GUImux1", + "params": {} + }, + { + "pos": { + "x": 135.0, + "y": 70.0 + }, + "name": "GUIxor", + "params": {} + }, + { + "pos": { + "x": 49.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 54.0, + "y": 69.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "Cin" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "CoutE" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 75.0 + }, + { + "x": 5.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 10.0 + }, + { + "x": 130.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "CinE" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 125.0 + }, + { + "x": 7.5, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "R" + }, + "pin2": { + "compId": 2, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "RN" + }, + "pin2": { + "compId": 2, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "S" + }, + "pin2": { + "compId": 3, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "SN" + }, + "pin2": { + "compId": 3, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "FN" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 130.0, + "y": 375.0 + }, + { + "x": 130.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "L" + }, + "pin2": { + "compId": 7, + "pinName": "S0" + }, + "path": [ + { + "x": 87.5, + "y": 425.0 + }, + { + "x": 87.5, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "" + }, + "path": [ + { + "x": 50.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 50.0, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compId": 9, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 10, + "pinName": "" + }, + "path": [ + { + "x": 55.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "C" + }, + "path": [ + { + "x": 55.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "I0" + }, + "path": [ + { + "x": 100.0, + "y": 25.0 + }, + { + "x": 100.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 65.0 + }, + { + "x": 85.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Z" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 7, + "pinName": "I1" + }, + "path": [ + { + "x": 82.5, + "y": 65.0 + }, + { + "x": 82.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "Cout" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "F" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "Cin", + "CoutE", + "CinE", + "R", + "RN", + "S", + "SN", + "FN", + "L" + ], + "label": "GUIAm2901ALUOneBit", + "logic_width": 1, + "output_count": [ + "Cout", + "F" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901DestDecode.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901DestDecode.json new file mode 100644 index 00000000..51dae7bb --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901DestDecode.json @@ -0,0 +1,1075 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901DestDecode", + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "LSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "NSH", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RSH", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I6", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "YF", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I7", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "RAMWE", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 55.0 + }, + "name": "QWE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I8", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 15.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 15.0, + "y": 150.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 50.0, + "y": 130.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 80.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 80.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 80.0, + "y": 145.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 110.0, + "y": 105.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 115.0, + "y": 210.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 14.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 24.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 64.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 9.0, + "y": 104.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 154.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 44.0, + "y": 54.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 39.0, + "y": 134.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 99.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 104.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 74.0, + "y": 159.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 109.0, + "y": 214.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I8" + }, + "pin2": { + "compId": 14, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 14, + "pinName": "" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 0, + "pinName": "I7" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I6" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [ + { + "x": 5.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compId": 15, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 5.0 + }, + { + "x": 40.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 0, + "pinName": "NSH" + }, + "path": [ + { + "x": 45.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 5.0 + }, + { + "x": 135.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [ + { + "x": 45.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [ + { + "x": 10.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 24, + "pinName": "" + }, + "path": [ + { + "x": 40.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 40.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 25, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "RAMWE" + }, + "path": [ + { + "x": 125.0, + "y": 60.0 + }, + { + "x": 125.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 26, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 27, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "LSH" + }, + "path": [ + { + "x": 125.0, + "y": 140.0 + }, + { + "x": 125.0, + "y": 180.0 + } + ] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A" + }, + "path": [ + { + "x": 75.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "RSH" + }, + "path": [ + { + "x": 130.0, + "y": 20.0 + }, + { + "x": 130.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y" + }, + "pin2": { + "compId": 12, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 75.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 170.0 + }, + { + "x": 105.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [ + { + "x": 110.0, + "y": 155.0 + } + ] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "B" + }, + "path": [ + { + "x": 110.0, + "y": 225.0 + } + ] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "YF" + } + }, + { + "pin1": { + "compId": 13, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "QWE" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "I8", + "I7", + "I6" + ], + "label": "GUIAm2901DestDecode", + "logic_width": 1, + "output_count": [ + "NSH", + "RSH", + "RAMWE", + "YF", + "LSH", + "QWE" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901QReg.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901QReg.json new file mode 100644 index 00000000..27438688 --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901QReg.json @@ -0,0 +1,423 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901QReg", + "width": 35.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "D4", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Q1", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "Q2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "Q3", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "C", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "Q4", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "D1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "WE", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "D2", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "D3", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.4, + "subComps": [ + { + "pos": { + "x": 5.0, + "y": 15.0 + }, + "name": "GUIand", + "params": {} + }, + { + "pos": { + "x": 50.0, + "y": 7.5 + }, + "name": "GUIdff", + "params": {} + }, + { + "pos": { + "x": 50.0, + "y": 32.5 + }, + "name": "GUIdff", + "params": {} + }, + { + "pos": { + "x": 50.0, + "y": 57.5 + }, + "name": "GUIdff", + "params": {} + }, + { + "pos": { + "x": 50.0, + "y": 82.5 + }, + "name": "GUIdff", + "params": {} + }, + { + "pos": { + "x": 41.5, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 41.5, + "y": 36.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 41.5, + "y": 61.5 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "C" + }, + "pin2": { + "compId": 1, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 0, + "pinName": "WE" + }, + "pin2": { + "compId": 1, + "pinName": "B" + } + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 6, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 12.5 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 7, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "C" + }, + "path": [] + }, + { + "pin1": { + "compId": 8, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "C" + }, + "path": [ + { + "x": 42.5, + "y": 87.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D1" + }, + "pin2": { + "compId": 2, + "pinName": "D" + }, + "path": [ + { + "x": 17.5, + "y": 62.5 + }, + { + "x": 17.5, + "y": 42.5 + }, + { + "x": 45.0, + "y": 42.5 + }, + { + "x": 45.0, + "y": 22.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D2" + }, + "pin2": { + "compId": 3, + "pinName": "D" + }, + "path": [ + { + "x": 22.5, + "y": 87.5 + }, + { + "x": 22.5, + "y": 47.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D3" + }, + "pin2": { + "compId": 4, + "pinName": "D" + }, + "path": [ + { + "x": 27.5, + "y": 112.5 + }, + { + "x": 27.5, + "y": 72.5 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "D4" + }, + "pin2": { + "compId": 5, + "pinName": "D" + }, + "path": [ + { + "x": 32.5, + "y": 137.5 + }, + { + "x": 32.5, + "y": 97.5 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q1" + }, + "path": [] + }, + { + "pin1": { + "compId": 3, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q2" + }, + "path": [] + }, + { + "pin1": { + "compId": 4, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q3" + }, + "path": [] + }, + { + "pin1": { + "compId": 5, + "pinName": "Q" + }, + "pin2": { + "compId": 0, + "pinName": "Q4" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "C", + "WE", + "D1", + "D2", + "D3", + "D4" + ], + "label": "GUIAm2901QReg", + "logic_width": 1, + "output_count": [ + "Q1", + "Q2", + "Q3", + "Q4" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/am2901/GUIAm2901SourceDecode.json b/net.mograsim.logic.ui/components/am2901/GUIAm2901SourceDecode.json new file mode 100644 index 00000000..6bc92acf --- /dev/null +++ b/net.mograsim.logic.ui/components/am2901/GUIAm2901SourceDecode.json @@ -0,0 +1,1117 @@ +mograsim version: 0.1.1 +{ + "type": "SimpleRectangularSubmodelComponent", + "name": "GUIAm2901SourceDecode", + "width": 35.0, + "height": 50.0, + "interfacePins": [ + { + "location": { + "x": 35.0, + "y": 45.0 + }, + "name": "RD", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "I0", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "I1", + "logicWidth": 1 + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "I2", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "SQ", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 35.0 + }, + "name": "SA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "RA", + "logicWidth": 1 + }, + { + "location": { + "x": 35.0, + "y": 25.0 + }, + "name": "SB", + "logicWidth": 1 + } + ], + "composition": { + "innerScale": 0.25, + "subComps": [ + { + "pos": { + "x": 10.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 10.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 10.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 130.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 40.0, + "y": 170.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 70.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 70.0, + "y": 50.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 70.0, + "y": 90.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 70.0, + "y": 130.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 70.0, + "y": 170.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 100.0, + "y": 10.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 100.0, + "y": 170.0 + }, + "name": "GUINandGate", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 4.0, + "y": 144.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 99.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 6.5, + "y": 104.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 31.5, + "y": 54.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 64.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 34.0, + "y": 134.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 36.5, + "y": 99.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 59.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 99.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 64.0, + "y": 139.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 94.0, + "y": 19.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + }, + { + "pos": { + "x": 94.0, + "y": 179.0 + }, + "name": "WireCrossPoint", + "params": { + "logicWidth": 1 + } + } + ], + "innerWires": [ + { + "pin1": { + "compId": 0, + "pinName": "I2" + }, + "pin2": { + "compId": 16, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "A" + }, + "path": [ + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 5.0 + }, + { + "x": 35.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 17, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 17, + "pinName": "" + }, + "pin2": { + "compId": 1, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 16, + "pinName": "" + }, + "pin2": { + "compId": 18, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 18, + "pinName": "" + }, + "pin2": { + "compId": 13, + "pinName": "B" + }, + "path": [ + { + "x": 5.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 195.0 + }, + { + "x": 65.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I1" + }, + "pin2": { + "compId": 19, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compId": 19, + "pinName": "" + }, + "pin2": { + "compId": 2, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compId": 0, + "pinName": "I0" + }, + "pin2": { + "compId": 20, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "A" + }, + "path": [ + { + "x": 7.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 20, + "pinName": "" + }, + "pin2": { + "compId": 21, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 3, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 21, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "B" + }, + "path": [ + { + "x": 7.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 112.5 + }, + { + "x": 32.5, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compId": 1, + "pinName": "Y" + }, + "pin2": { + "compId": 22, + "pinName": "" + }, + "path": [ + { + "x": 32.5, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 22, + "pinName": "" + }, + "pin2": { + "compId": 6, + "pinName": "A" + }, + "path": [ + { + "x": 32.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 2, + "pinName": "Y" + }, + "pin2": { + "compId": 23, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 4, + "pinName": "B" + }, + "path": [ + { + "x": 35.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 23, + "pinName": "" + }, + "pin2": { + "compId": 24, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 5, + "pinName": "B" + }, + "path": [] + }, + { + "pin1": { + "compId": 24, + "pinName": "" + }, + "pin2": { + "compId": 25, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 7, + "pinName": "A" + }, + "path": [] + }, + { + "pin1": { + "compId": 25, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "A" + }, + "path": [ + { + "x": 35.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compId": 3, + "pinName": "Y" + }, + "pin2": { + "compId": 26, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 9, + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 35.0 + }, + { + "x": 65.0, + "y": 35.0 + }, + { + "x": 65.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 26, + "pinName": "" + }, + "pin2": { + "compId": 8, + "pinName": "B" + }, + "path": [ + { + "x": 37.5, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compId": 4, + "pinName": "Y" + }, + "pin2": { + "compId": 9, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 5, + "pinName": "Y" + }, + "pin2": { + "compId": 27, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compId": 27, + "pinName": "" + }, + "pin2": { + "compId": 10, + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compId": 6, + "pinName": "Y" + }, + "pin2": { + "compId": 28, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compId": 28, + "pinName": "" + }, + "pin2": { + "compId": 11, + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 105.0 + } + ] + }, + { + "pin1": { + "compId": 7, + "pinName": "Y" + }, + "pin2": { + "compId": 29, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "A" + }, + "path": [ + { + "x": 65.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compId": 29, + "pinName": "" + }, + "pin2": { + "compId": 12, + "pinName": "B" + }, + "path": [ + { + "x": 65.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compId": 8, + "pinName": "Y" + }, + "pin2": { + "compId": 13, + "pinName": "A" + } + }, + { + "pin1": { + "compId": 9, + "pinName": "Y" + }, + "pin2": { + "compId": 30, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compId": 30, + "pinName": "" + }, + "pin2": { + "compId": 14, + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compId": 10, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "RA" + }, + "path": [] + }, + { + "pin1": { + "compId": 11, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "SB" + }, + "path": [] + }, + { + "pin1": { + "compId": 12, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "SA" + }, + "path": [] + }, + { + "pin1": { + "compId": 13, + "pinName": "Y" + }, + "pin2": { + "compId": 31, + "pinName": "" + }, + "path": [] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "A" + }, + "path": [ + { + "x": 95.0, + "y": 175.0 + } + ] + }, + { + "pin1": { + "compId": 31, + "pinName": "" + }, + "pin2": { + "compId": 15, + "pinName": "B" + }, + "path": [ + { + "x": 95.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compId": 14, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "SQ" + }, + "path": [] + }, + { + "pin1": { + "compId": 15, + "pinName": "Y" + }, + "pin2": { + "compId": 0, + "pinName": "RD" + }, + "path": [] + } + ] + }, + "specialized": { + "input_count": [ + "I2", + "I1", + "I0" + ], + "label": "Am2901SourceDecode", + "logic_width": 1, + "output_count": [ + "SQ", + "RA", + "SB", + "SA", + "RD" + ] + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/components/mapping.json b/net.mograsim.logic.ui/components/mapping.json new file mode 100644 index 00000000..02f39368 --- /dev/null +++ b/net.mograsim.logic.ui/components/mapping.json @@ -0,0 +1,36 @@ +mograsim version: 0.1.1 +{ + "GUIAm2901": "file:components/am2901/GUIAm2901.json", + "GUIAm2901ALUFuncDecode": "file:components/am2901/GUIAm2901ALUFuncDecode.json", + "GUIAm2901ALUInclDecode": "file:components/am2901/GUIAm2901ALUInclDecode.json", + "GUIAm2901ALUInclSourceDecodeInclFunctionDecode": "file:components/am2901/GUIAm2901ALUInclSourceDecodeInclFunctionDecode.json", + "GUIAm2901ALUOneBit": "file:components/am2901/GUIAm2901ALUOneBit.json", + "GUIAm2901DestDecode": "file:components/am2901/GUIAm2901DestDecode.json", + "GUIAm2901QReg": "file:components/am2901/GUIAm2901QReg.json", + "GUIAm2901SourceDecode": "file:components/am2901/GUIAm2901SourceDecode.json", + "GUIAndGate": "class:net.mograsim.logic.ui.model.components.GUIAndGate", + "GUINandGate": "class:net.mograsim.logic.ui.model.components.GUINandGate", + "GUIOrGate": "class:net.mograsim.logic.ui.model.components.GUIOrGate", + "GUI_rsLatch": "file:components/GUI_rsLatch.json", + "GUIand": "file:components/GUIand.json", + "GUIand41": "file:components/GUIand41.json", + "GUIandor414": "file:components/GUIandor414.json", + "GUIdemux2": "file:components/GUIdemux2.json", + "GUIdff": "file:components/GUIdff.json", + "GUIdlatch": "file:components/GUIdlatch.json", + "GUIdlatch4": "file:components/GUIdlatch4.json", + "GUIfulladder": "file:components/GUIfulladder.json", + "GUIhalfadder": "file:components/GUIhalfadder.json", + "GUImux1": "file:components/GUImux1.json", + "GUImux1_4": "file:components/GUImux1_4.json", + "GUInand3": "file:components/GUInand3.json", + "GUInot4": "file:components/GUInot4.json", + "GUIor4": "file:components/GUIor4.json", + "GUIor_4": "file:components/GUIor_4.json", + "GUIram2": "file:components/GUIram2.json", + "GUIram4": "file:components/GUIram4.json", + "GUIsel2_4": "file:components/GUIsel2_4.json", + "GUIsel3_4": "file:components/GUIsel3_4.json", + "GUIxor": "file:components/GUIxor.json", + "WireCrossPoint": "class:net.mograsim.logic.ui.model.wires.WireCrossPoint" +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java index a586616e..6e566c48 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponent.java @@ -43,7 +43,7 @@ public abstract class GUIComponent private final Runnable redrawListenerForSubcomponents; // Defines how the GUIComponent is referenced in SubmodelComponentParams - protected Supplier identifierDelegate = () -> "class:".concat(getClass().getCanonicalName()); + protected Supplier identifierDelegate = () -> getClass().getSimpleName(); // creation and destruction diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponentCreator.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponentCreator.java new file mode 100644 index 00000000..3a234280 --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIComponentCreator.java @@ -0,0 +1,76 @@ +package net.mograsim.logic.ui.model.components; + +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; + +import net.mograsim.logic.ui.model.ViewModelModifiable; +import net.mograsim.logic.ui.model.wires.WireCrossPoint; +import net.mograsim.logic.ui.util.JsonHandler; + +public class GUIComponentCreator +{ + private final static Map componentMapping; + private final static String componentMappingPath = "components/mapping.json"; // TODO: manage this somewhere else + + static + { + Map tmp; + try + { + tmp = JsonHandler.readJson(componentMappingPath, Map.class); + } + catch (IOException e) + { + System.err.println("Failed to initialize component mapping; Components cannot be created from file."); + e.printStackTrace(); + tmp = new HashMap<>(); + } + componentMapping = tmp; + } + + public static GUIComponent create(ViewModelModifiable model, String name, Map params) + { + try + { + String path = componentMapping.get(name); + if (path.startsWith("class:")) + { + path = path.substring(6); + return createComponentFromClass(model, path, params); + } else if (path.startsWith("file:")) + { + path = path.substring(5); + return GUICustomComponentCreator.create(model, path); + } else + throw new IllegalArgumentException("Invalid submodel type! Type was neither prefixed by 'class:' nor by 'file:'"); + } + catch (NullPointerException | InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException + | SecurityException | ClassNotFoundException | IllegalArgumentException e) + { + System.err.println("Failed to create requested component!"); + e.printStackTrace(); + return new SimpleRectangularSubmodelComponent(model, 1, "ERROR"); + } + } + + private static GUIComponent createComponentFromClass(ViewModelModifiable model, String classname, Map params) + throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, SecurityException, + ClassNotFoundException + { + Class c = Class.forName(classname); + Object comp; + if (SimpleRectangularGUIGate.class.isAssignableFrom(c) || WireCrossPoint.class.equals(c)) + { + Constructor constructor = c.getConstructor(ViewModelModifiable.class, int.class); + comp = constructor.newInstance(model, ((Number) params.get(SimpleRectangularGUIGate.kLogicWidth)).intValue()); + } else + { + Constructor constructor = c.getConstructor(ViewModelModifiable.class); + comp = constructor.newInstance(model); + } + return (GUIComponent) comp; + } +} diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java index 0e23feba..c153956c 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java @@ -3,6 +3,8 @@ package net.mograsim.logic.ui.model.components; import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Map; import net.mograsim.logic.ui.model.ViewModelModifiable; @@ -34,7 +36,7 @@ public final class GUICustomComponentCreator try { SubmodelComponentParams params = SubmodelComponentParams.readJson(path); - SubmodelComponent ret = create(model, params, path); + SubmodelComponent ret = create(model, params); return ret; } catch (IOException e) @@ -50,11 +52,10 @@ public final class GUICustomComponentCreator * e.g. a {@link SimpleRectangularSubmodelComponent}, depending on what the {@link SubmodelComponentParams} describe. * * @param params The parameters describing the {@link SubmodelComponent} - * @param path This value is used when the new {@link SubmodelComponent} is an inner component to a different SubmodelComponent, which - * is being saved to a file; Then, the new {@link SubmodelComponent} is referenced by its given path within the file. + * * @return A new SubmodelComponent, as described by the {@link SubmodelComponentParams} */ - public static SubmodelComponent create(ViewModelModifiable model, SubmodelComponentParams params, String path) + public static SubmodelComponent create(ViewModelModifiable model, SubmodelComponentParams params) { SubmodelComponent comp = null; if (rectC.equals(params.type)) @@ -66,12 +67,13 @@ public final class GUICustomComponentCreator { comp = createSubmodelComponent(model, params); } - comp.identifierDelegate = () -> "file:".concat(path); + comp.identifierDelegate = () -> params.name; initInnerComponents(comp, params.composition); return comp; } // May return null + @SuppressWarnings("unchecked") private static SimpleRectangularSubmodelComponent createRectComponent(ViewModelModifiable model, SubmodelComponentParams params) { try @@ -81,19 +83,12 @@ public final class GUICustomComponentCreator ((Number) m.get(SimpleRectangularSubmodelComponent.kLogicWidth)).intValue(), (String) m.get(SimpleRectangularSubmodelComponent.kLabel)); rect.setSubmodelScale(params.composition.innerScale); - // rect.setSize(params.width, params.height); - int inputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kInCount)).intValue(); - String[] inputNames = new String[inputCount]; - for (int i = 0; i < inputCount; i++) - inputNames[i] = params.interfacePins[i].name; - rect.setInputPins(inputNames); + Object[] names = ((ArrayList) m.get(SimpleRectangularSubmodelComponent.kInCount)).toArray(); + rect.setInputPins(Arrays.copyOf(names, names.length, String[].class)); - int outputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kOutCount)).intValue(); - String[] outputPins = new String[outputCount]; - for (int i = 0; i < outputCount; i++) - outputPins[i] = params.interfacePins[inputCount + i].name; - rect.setOutputPins(outputPins); + names = ((ArrayList) m.get(SimpleRectangularSubmodelComponent.kOutCount)).toArray(); + rect.setOutputPins(Arrays.copyOf(names, names.length, String[].class)); return rect; } @@ -122,59 +117,21 @@ public final class GUICustomComponentCreator @SuppressWarnings("unused") private static void initInnerComponents(SubmodelComponent comp, ComponentCompositionParams params) { - try + GUIComponent[] components = new GUIComponent[params.subComps.length]; + for (int i = 0; i < components.length; i++) { - GUIComponent[] components = new GUIComponent[params.subComps.length]; - for (int i = 0; i < components.length; i++) - { - InnerComponentParams cParams = params.subComps[i]; - String path = cParams.type; - if (path.startsWith("class:")) - { - path = path.substring(6); - components[i] = createInnerComponentFromClass(comp, path, cParams.params); - components[i].moveTo(cParams.pos.x, cParams.pos.y); - } else if (path.startsWith("file:")) - { - path = path.substring(5); - components[i] = create(comp.submodelModifiable, path); - components[i].moveTo(cParams.pos.x, cParams.pos.y); - } else - throw new IllegalArgumentException("Invalid submodel type! Type was neither prefixed by 'class:' nor by 'file:'"); - } - - for (int i = 0; i < params.innerWires.length; i++) - { - InnerWireParams innerWire = params.innerWires[i]; - new GUIWire(comp.submodelModifiable, - comp.submodelModifiable.getComponents().get(innerWire.pin1.compId).getPin(innerWire.pin1.pinName), - comp.submodelModifiable.getComponents().get(innerWire.pin2.compId).getPin(innerWire.pin2.pinName), innerWire.path); - } + InnerComponentParams cParams = params.subComps[i]; + String path = cParams.name; + components[i] = GUIComponentCreator.create(comp.submodelModifiable, cParams.name, cParams.params); + components[i].moveTo(cParams.pos.x, cParams.pos.y); } - catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException | SecurityException - | ClassNotFoundException | IllegalArgumentException e) - { - System.err.println("Failed to initialize custom component!"); - e.printStackTrace(); - } - } - private static GUIComponent createInnerComponentFromClass(SubmodelComponent parent, String classname, Map params) - throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, SecurityException, - ClassNotFoundException - { - Class c = Class.forName(classname); - Object comp; - if (SimpleRectangularGUIGate.class.isAssignableFrom(c) || WireCrossPoint.class.equals(c)) - { - Constructor constructor = c.getConstructor(ViewModelModifiable.class, int.class); - comp = constructor.newInstance(parent.submodelModifiable, - ((Number) params.get(SimpleRectangularGUIGate.kLogicWidth)).intValue()); - } else + for (int i = 0; i < params.innerWires.length; i++) { - Constructor constructor = c.getConstructor(ViewModelModifiable.class); - comp = constructor.newInstance(parent.submodelModifiable); + InnerWireParams innerWire = params.innerWires[i]; + new GUIWire(comp.submodelModifiable, + comp.submodelModifiable.getComponents().get(innerWire.pin1.compId).getPin(innerWire.pin1.pinName), + comp.submodelModifiable.getComponents().get(innerWire.pin2.compId).getPin(innerWire.pin2.pinName), innerWire.path); } - return (GUIComponent) comp; } } diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java index 17fa8ab5..59d800a4 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SimpleRectangularSubmodelComponent.java @@ -128,8 +128,8 @@ public class SimpleRectangularSubmodelComponent extends SubmodelComponent ret.type = SimpleRectangularSubmodelComponent.class.getSimpleName(); Map m = new TreeMap<>(); m.put(kLabel, label); - m.put(kInCount, inputPinNames.size()); - m.put(kOutCount, outputPinNames.size()); + m.put(kInCount, inputPinNames.toArray()); + m.put(kOutCount, outputPinNames.toArray()); m.put(kLogicWidth, logicWidth); ret.specialized = m; return ret; diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java index 08e7d1af..6f34cd26 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java @@ -331,6 +331,7 @@ public abstract class SubmodelComponent extends GUIComponent public SubmodelComponentParams calculateParams() { SubmodelComponentParams params = new SubmodelComponentParams(); + params.name = getIdentifier(); params.type = SubmodelComponent.class.getSimpleName(); params.composition = calculateCompositionParams(); @@ -368,8 +369,8 @@ public abstract class SubmodelComponent extends GUIComponent InnerComponentParams inner = new InnerComponentParams(); comps[i] = inner; inner.params = component.getInstantiationParameters(); - inner.pos = new Point(getPosX(), getPosY()); - inner.type = component.getIdentifier(); + inner.pos = new Point(component.getPosX(), component.getPosY()); + inner.name = component.getIdentifier(); i++; } params.subComps = comps; diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java index 3eb06297..1276d130 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponentParams.java @@ -11,7 +11,7 @@ import net.mograsim.logic.ui.util.JsonHandler; */ public class SubmodelComponentParams { - String type; + String type, name; double width, height; InterfacePinParams[] interfacePins; ComponentCompositionParams composition; @@ -45,7 +45,7 @@ public class SubmodelComponentParams public static class InnerComponentParams { Point pos; - String type; + String name; Map params; } } -- 2.17.1