From ba036f231e1b5e9221de72eda1d706c7c57a3e50 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Tue, 31 Mar 2020 18:22:06 +0200 Subject: [PATCH] Created gate-based implementations of an incrementer for 4, 12, 16 bit --- .../logic/model/am2900/components/Am2900.json | 13 +- .../am2900/components/am2910/Am2910.json | 13 +- .../model/am2900/components/fulladder.json | 24 +- .../model/am2900/components/halfadder.json | 238 ++--- .../am2900/components/halfadder_invz.json | 337 ++++++++ .../logic/model/am2900/components/inc12.json | 645 ++++++++++++++ .../logic/model/am2900/components/inc16.json | 818 ++++++++++++++++++ .../logic/model/am2900/components/inc4.json | 405 +++++++++ .../model/am2900/components/Modelinc.java | 78 -- .../am2900/standardComponentIDMapping.json | 5 +- .../examples/ModelComponentTestbench.java | 6 +- 11 files changed, 2294 insertions(+), 288 deletions(-) create mode 100755 plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder_invz.json create mode 100755 plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc12.json create mode 100755 plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc16.json create mode 100755 plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc4.json delete mode 100644 plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json index ae825b13..78623e12 100644 --- a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json @@ -1348,13 +1348,12 @@ } }, { - "id": "inc", - "name": "inc#0", + "id": "inc16", + "name": "inc16#0", "pos": { "x": 315.0, "y": 135.0 - }, - "params": 16 + } }, { "id": "mux1_4", @@ -3610,7 +3609,7 @@ }, { "pin1": { - "compName": "inc#0", + "compName": "inc16#0", "pinName": "Y" }, "pin2": { @@ -3627,7 +3626,7 @@ }, { "pin1": { - "compName": "inc#0", + "compName": "inc16#0", "pinName": "A" }, "pin2": { @@ -3644,7 +3643,7 @@ }, { "pin1": { - "compName": "inc#0", + "compName": "inc16#0", "pinName": "CI" }, "pin2": { diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json index 9cb5b30c..91b1732c 100644 --- a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2910/Am2910.json @@ -285,13 +285,12 @@ } }, { - "id": "inc", - "name": "inc#0", + "id": "inc12", + "name": "inc12#0", "pos": { "x": 245.0, "y": 155.0 - }, - "params": 12 + } }, { "id": "nor12", @@ -369,7 +368,7 @@ }, { "pin1": { - "compName": "inc#0", + "compName": "inc12#0", "pinName": "Y" }, "pin2": { @@ -618,7 +617,7 @@ "pinName": "" }, "pin2": { - "compName": "inc#0", + "compName": "inc12#0", "pinName": "A" }, "name": "unnamedWire#18", @@ -963,7 +962,7 @@ }, { "pin1": { - "compName": "inc#0", + "compName": "inc12#0", "pinName": "CI" }, "pin2": { diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/fulladder.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/fulladder.json index 4ba4b195..37688b39 100644 --- a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/fulladder.json +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/fulladder.json @@ -61,16 +61,16 @@ "params": 1 }, { - "id": "halfadder", - "name": "halfadder#0", + "id": "halfadder_invz", + "name": "halfadder_invz#0", "pos": { "x": 5.0, "y": 40.0 } }, { - "id": "halfadder", - "name": "halfadder#1", + "id": "halfadder_invz", + "name": "halfadder_invz#1", "pos": { "x": 45.0, "y": 7.5 @@ -84,7 +84,7 @@ "pinName": "A" }, "pin2": { - "compName": "halfadder#1", + "compName": "halfadder_invz#1", "pinName": "A" }, "name": "unnamedWire#0", @@ -96,7 +96,7 @@ "pinName": "B" }, "pin2": { - "compName": "halfadder#0", + "compName": "halfadder_invz#0", "pinName": "A" }, "name": "unnamedWire#1" @@ -107,25 +107,25 @@ "pinName": "C" }, "pin2": { - "compName": "halfadder#0", + "compName": "halfadder_invz#0", "pinName": "B" }, "name": "unnamedWire#2" }, { "pin1": { - "compName": "halfadder#0", + "compName": "halfadder_invz#0", "pinName": "Y" }, "pin2": { - "compName": "halfadder#1", + "compName": "halfadder_invz#1", "pinName": "B" }, "name": "unnamedWire#3" }, { "pin1": { - "compName": "halfadder#0", + "compName": "halfadder_invz#0", "pinName": "_Z" }, "pin2": { @@ -137,7 +137,7 @@ }, { "pin1": { - "compName": "halfadder#1", + "compName": "halfadder_invz#1", "pinName": "Y" }, "pin2": { @@ -149,7 +149,7 @@ }, { "pin1": { - "compName": "halfadder#1", + "compName": "halfadder_invz#1", "pinName": "_Z" }, "pin2": { diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder.json index f3970fcb..63eb1ca8 100644 --- a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder.json +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder.json @@ -1,6 +1,6 @@ { - "width": 35.0, - "height": 20.0, + "width": 30.0, + "height": 30.0, "interfacePins": [ { "location": { @@ -22,7 +22,7 @@ }, { "location": { - "x": 35.0, + "x": 30.0, "y": 5.0 }, "name": "Y", @@ -31,50 +31,23 @@ }, { "location": { - "x": 35.0, - "y": 15.0 + "x": 0.0, + "y": 25.0 }, - "name": "_Z", + "name": "Z", "logicWidth": 1, "usage": "OUTPUT" } ], - "innerScale": 0.4, + "innerScale": 0.5, "submodel": { "components": [ { "id": "NandGate", "name": "NandGate#0", "pos": { - "x": 10.0, - "y": 15.0 - }, - "params": 1 - }, - { - "id": "NandGate", - "name": "NandGate#1", - "pos": { - "x": 40.0, - "y": 2.5 - }, - "params": 1 - }, - { - "id": "NandGate", - "name": "NandGate#2", - "pos": { - "x": 40.0, - "y": 27.5 - }, - "params": 1 - }, - { - "id": "NandGate", - "name": "NandGate#3", - "pos": { - "x": 65.0, - "y": 2.5 + "x": 25.0, + "y": 32.5 }, "params": 1 }, @@ -82,42 +55,45 @@ "id": "WireCrossPoint", "name": "WireCrossPoint#0", "pos": { - "x": 4.0, - "y": 11.5 - }, - "params": 1 - }, - { - "id": "WireCrossPoint", - "name": "WireCrossPoint#1", - "pos": { - "x": 4.0, + "x": 19.0, "y": 36.5 }, "params": 1 }, { - "id": "WireCrossPoint", - "name": "WireCrossPoint#2", + "id": "halfadder_invz", + "name": "halfadder_invz#0", "pos": { - "x": 34.0, - "y": 24.0 - }, - "params": 1 + "x": 10.0, + "y": 5.0 + } } ], "wires": [ { "pin1": { - "compName": "_submodelinterface", - "pinName": "A" + "compName": "halfadder_invz#0", + "pinName": "_Z" }, "pin2": { "compName": "WireCrossPoint#0", "pinName": "" }, "name": "unnamedWire#0", - "path": [] + "path": [ + { + "x": 50.0, + "y": 20.0 + }, + { + "x": 50.0, + "y": 27.5 + }, + { + "x": 20.0, + "y": 27.5 + } + ] }, { "pin1": { @@ -125,16 +101,11 @@ "pinName": "" }, "pin2": { - "compName": "NandGate#1", + "compName": "NandGate#0", "pinName": "A" }, "name": "unnamedWire#1", - "path": [ - { - "x": 5.0, - "y": 7.5 - } - ] + "path": [] }, { "pin1": { @@ -143,59 +114,46 @@ }, "pin2": { "compName": "NandGate#0", - "pinName": "A" + "pinName": "B" }, "name": "unnamedWire#2", "path": [ { - "x": 5.0, - "y": 20.0 + "x": 20.0, + "y": 47.5 } ] }, { "pin1": { "compName": "_submodelinterface", - "pinName": "B" + "pinName": "A" }, "pin2": { - "compName": "WireCrossPoint#1", - "pinName": "" + "compName": "halfadder_invz#0", + "pinName": "A" }, "name": "unnamedWire#3", "path": [] }, { "pin1": { - "compName": "WireCrossPoint#1", - "pinName": "" + "compName": "_submodelinterface", + "pinName": "B" }, "pin2": { - "compName": "NandGate#2", + "compName": "halfadder_invz#0", "pinName": "B" }, "name": "unnamedWire#4", "path": [ { "x": 5.0, - "y": 42.5 - } - ] - }, - { - "pin1": { - "compName": "WireCrossPoint#1", - "pinName": "" - }, - "pin2": { - "compName": "NandGate#0", - "pinName": "B" - }, - "name": "unnamedWire#5", - "path": [ + "y": 30.0 + }, { "x": 5.0, - "y": 30.0 + "y": 20.0 } ] }, @@ -204,120 +162,40 @@ "compName": "NandGate#0", "pinName": "Y" }, - "pin2": { - "compName": "WireCrossPoint#2", - "pinName": "" - }, - "name": "unnamedWire#6", - "path": [] - }, - { - "pin1": { - "compName": "WireCrossPoint#2", - "pinName": "" - }, "pin2": { "compName": "_submodelinterface", - "pinName": "_Z" + "pinName": "Z" }, - "name": "unnamedWire#7", + "name": "unnamedWire#5", "path": [ { - "x": 80.0, - "y": 25.0 + "x": 50.0, + "y": 42.5 }, { - "x": 80.0, - "y": 37.5 - } - ] - }, - { - "pin1": { - "compName": "WireCrossPoint#2", - "pinName": "" - }, - "pin2": { - "compName": "NandGate#1", - "pinName": "B" - }, - "name": "unnamedWire#8", - "path": [ - { - "x": 35.0, - "y": 17.5 - } - ] - }, - { - "pin1": { - "compName": "WireCrossPoint#2", - "pinName": "" - }, - "pin2": { - "compName": "NandGate#2", - "pinName": "A" - }, - "name": "unnamedWire#9", - "path": [ - { - "x": 35.0, - "y": 32.5 - } - ] - }, - { - "pin1": { - "compName": "NandGate#1", - "pinName": "Y" - }, - "pin2": { - "compName": "NandGate#3", - "pinName": "A" - }, - "name": "unnamedWire#10", - "path": [ - { - "x": 62.5, - "y": 12.5 + "x": 50.0, + "y": 55.0 }, { - "x": 62.5, - "y": 7.5 - } - ] - }, - { - "pin1": { - "compName": "NandGate#2", - "pinName": "Y" - }, - "pin2": { - "compName": "NandGate#3", - "pinName": "B" - }, - "name": "unnamedWire#11", - "path": [ - { - "x": 62.5, - "y": 37.5 + "x": 15.0, + "y": 55.0 }, { - "x": 62.5, - "y": 17.5 + "x": 15.0, + "y": 50.0 } ] }, { "pin1": { - "compName": "NandGate#3", + "compName": "halfadder_invz#0", "pinName": "Y" }, "pin2": { "compName": "_submodelinterface", "pinName": "Y" }, - "name": "unnamedWire#12", + "name": "unnamedWire#6", "path": [] } ], @@ -327,7 +205,7 @@ "symbolRendererParams": { "centerText": "halfadder", "centerTextHeight": 5.0, - "horizontalComponentCenter": 17.5, + "horizontalComponentCenter": 15.0, "pinLabelHeight": 3.5, "pinLabelMargin": 0.5 }, diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder_invz.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder_invz.json new file mode 100755 index 00000000..f3970fcb --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/halfadder_invz.json @@ -0,0 +1,337 @@ +{ + "width": 35.0, + "height": 20.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "A", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "B", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 35.0, + "y": 5.0 + }, + "name": "Y", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 35.0, + "y": 15.0 + }, + "name": "_Z", + "logicWidth": 1, + "usage": "OUTPUT" + } + ], + "innerScale": 0.4, + "submodel": { + "components": [ + { + "id": "NandGate", + "name": "NandGate#0", + "pos": { + "x": 10.0, + "y": 15.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#1", + "pos": { + "x": 40.0, + "y": 2.5 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#2", + "pos": { + "x": 40.0, + "y": 27.5 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#3", + "pos": { + "x": 65.0, + "y": 2.5 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 4.0, + "y": 11.5 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 4.0, + "y": 36.5 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 34.0, + "y": 24.0 + }, + "params": 1 + } + ], + "wires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#0", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#1", + "pinName": "A" + }, + "name": "unnamedWire#1", + "path": [ + { + "x": 5.0, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#0", + "pinName": "A" + }, + "name": "unnamedWire#2", + "path": [ + { + "x": 5.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#3", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#2", + "pinName": "B" + }, + "name": "unnamedWire#4", + "path": [ + { + "x": 5.0, + "y": 42.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#0", + "pinName": "B" + }, + "name": "unnamedWire#5", + "path": [ + { + "x": 5.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "_Z" + }, + "name": "unnamedWire#7", + "path": [ + { + "x": 80.0, + "y": 25.0 + }, + { + "x": 80.0, + "y": 37.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#1", + "pinName": "B" + }, + "name": "unnamedWire#8", + "path": [ + { + "x": 35.0, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#2", + "pinName": "A" + }, + "name": "unnamedWire#9", + "path": [ + { + "x": 35.0, + "y": 32.5 + } + ] + }, + { + "pin1": { + "compName": "NandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#3", + "pinName": "A" + }, + "name": "unnamedWire#10", + "path": [ + { + "x": 62.5, + "y": 12.5 + }, + { + "x": 62.5, + "y": 7.5 + } + ] + }, + { + "pin1": { + "compName": "NandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#3", + "pinName": "B" + }, + "name": "unnamedWire#11", + "path": [ + { + "x": 62.5, + "y": 37.5 + }, + { + "x": 62.5, + "y": 17.5 + } + ] + }, + { + "pin1": { + "compName": "NandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "name": "unnamedWire#12", + "path": [] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "halfadder", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 17.5, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "default", + "version": "0.1.5" +} \ No newline at end of file diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc12.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc12.json new file mode 100755 index 00000000..bcb0ff46 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc12.json @@ -0,0 +1,645 @@ +{ + "width": 20.0, + "height": 25.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A", + "logicWidth": 12, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "CI", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 20.0, + "y": 15.0 + }, + "name": "Y", + "logicWidth": 12, + "usage": "OUTPUT" + } + ], + "innerScale": 0.2, + "submodel": { + "components": [ + { + "id": "Splitter", + "name": "Splitter#0", + "pos": { + "x": 7.5, + "y": 10.0 + }, + "params": { + "logicWidth": 12, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#1", + "pos": { + "x": 82.5, + "y": 10.0 + }, + "params": { + "logicWidth": 12, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#2", + "pos": { + "x": 22.5, + "y": 10.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#3", + "pos": { + "x": 22.5, + "y": 50.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#4", + "pos": { + "x": 22.5, + "y": 90.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#5", + "pos": { + "x": 67.5, + "y": 10.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#6", + "pos": { + "x": 67.5, + "y": 50.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#7", + "pos": { + "x": 67.5, + "y": 90.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "inc4", + "name": "inc4#0", + "pos": { + "x": 42.5, + "y": 10.0 + } + }, + { + "id": "inc4", + "name": "inc4#1", + "pos": { + "x": 42.5, + "y": 50.0 + } + }, + { + "id": "inc4", + "name": "inc4#2", + "pos": { + "x": 42.5, + "y": 90.0 + } + } + ], + "wires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CI" + }, + "pin2": { + "compName": "inc4#0", + "pinName": "CI" + }, + "name": "unnamedWire#0", + "path": [ + { + "x": 5.0, + "y": 25.0 + }, + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 37.5, + "y": 5.0 + }, + { + "x": 37.5, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#0", + "pinName": "A" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#1", + "pinName": "A" + }, + "name": "unnamedWire#2", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#2", + "pinName": "A" + }, + "name": "unnamedWire#3", + "path": [] + }, + { + "pin1": { + "compName": "inc4#0", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "I" + }, + "name": "unnamedWire#4", + "path": [] + }, + { + "pin1": { + "compName": "inc4#1", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "I" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "inc4#2", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "I" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "I" + }, + "name": "unnamedWire#7", + "path": [ + { + "x": 5.0, + "y": 75.0 + }, + { + "x": 5.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O0" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O1" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O2" + }, + "name": "unnamedWire#10", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O3" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O4" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O0" + }, + "name": "unnamedWire#12", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O1" + }, + "name": "unnamedWire#13", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O6" + }, + "name": "unnamedWire#14", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O3" + }, + "name": "unnamedWire#15", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O8" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O1" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O10" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O3" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "inc4#0", + "pinName": "Z" + }, + "pin2": { + "compName": "inc4#1", + "pinName": "CI" + }, + "name": "unnamedWire#20", + "path": [ + { + "x": 37.5, + "y": 35.0 + }, + { + "x": 37.5, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "inc4#1", + "pinName": "Z" + }, + "pin2": { + "compName": "inc4#2", + "pinName": "CI" + }, + "name": "unnamedWire#21", + "path": [ + { + "x": 37.5, + "y": 75.0 + }, + { + "x": 37.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O0" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O1" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "I" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "name": "unnamedWire#24", + "path": [ + { + "x": 95.0, + "y": 65.0 + }, + { + "x": 95.0, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O2" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O3" + }, + "name": "unnamedWire#26", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O4" + }, + "name": "unnamedWire#27", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O1" + }, + "name": "unnamedWire#28", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O6" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O3" + }, + "name": "unnamedWire#30", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O8" + }, + "name": "unnamedWire#31", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O1" + }, + "name": "unnamedWire#32", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O10" + }, + "name": "unnamedWire#33", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O3" + }, + "name": "unnamedWire#34", + "path": [] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "Incrementer\n12 bit", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 10.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "default", + "version": "0.1.5" +} \ No newline at end of file diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc16.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc16.json new file mode 100755 index 00000000..07609bbd --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc16.json @@ -0,0 +1,818 @@ +{ + "width": 20.0, + "height": 35.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A", + "logicWidth": 16, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "CI", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 20.0, + "y": 15.0 + }, + "name": "Y", + "logicWidth": 16, + "usage": "OUTPUT" + } + ], + "innerScale": 0.2, + "submodel": { + "components": [ + { + "id": "Splitter", + "name": "Splitter#0", + "pos": { + "x": 7.5, + "y": 10.0 + }, + "params": { + "logicWidth": 16, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#1", + "pos": { + "x": 82.5, + "y": 10.0 + }, + "params": { + "logicWidth": 16, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#2", + "pos": { + "x": 22.5, + "y": 10.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#3", + "pos": { + "x": 22.5, + "y": 50.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#4", + "pos": { + "x": 22.5, + "y": 90.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#5", + "pos": { + "x": 22.5, + "y": 130.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#6", + "pos": { + "x": 67.5, + "y": 10.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#7", + "pos": { + "x": 67.5, + "y": 50.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#8", + "pos": { + "x": 67.5, + "y": 90.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#9", + "pos": { + "x": 67.5, + "y": 130.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "inc4", + "name": "inc4#0", + "pos": { + "x": 42.5, + "y": 10.0 + } + }, + { + "id": "inc4", + "name": "inc4#1", + "pos": { + "x": 42.5, + "y": 50.0 + } + }, + { + "id": "inc4", + "name": "inc4#2", + "pos": { + "x": 42.5, + "y": 90.0 + } + }, + { + "id": "inc4", + "name": "inc4#3", + "pos": { + "x": 42.5, + "y": 130.0 + } + } + ], + "wires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CI" + }, + "pin2": { + "compName": "inc4#0", + "pinName": "CI" + }, + "name": "unnamedWire#0", + "path": [ + { + "x": 5.0, + "y": 25.0 + }, + { + "x": 5.0, + "y": 5.0 + }, + { + "x": 37.5, + "y": 5.0 + }, + { + "x": 37.5, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#0", + "pinName": "A" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#1", + "pinName": "A" + }, + "name": "unnamedWire#2", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#2", + "pinName": "A" + }, + "name": "unnamedWire#3", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "I" + }, + "pin2": { + "compName": "inc4#3", + "pinName": "A" + }, + "name": "unnamedWire#4", + "path": [] + }, + { + "pin1": { + "compName": "inc4#0", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "I" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "inc4#1", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "I" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "inc4#2", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#8", + "pinName": "I" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "inc4#3", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "I" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "I" + }, + "name": "unnamedWire#9", + "path": [ + { + "x": 5.0, + "y": 75.0 + }, + { + "x": 5.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O0" + }, + "name": "unnamedWire#10", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O1" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O2" + }, + "name": "unnamedWire#12", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O3" + }, + "name": "unnamedWire#13", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O4" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O0" + }, + "name": "unnamedWire#14", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O1" + }, + "name": "unnamedWire#15", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O6" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O3" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O8" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O1" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O10" + }, + "name": "unnamedWire#20", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O3" + }, + "name": "unnamedWire#21", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O12" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O13" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O1" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O14" + }, + "name": "unnamedWire#24", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O15" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O3" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "inc4#0", + "pinName": "Z" + }, + "pin2": { + "compName": "inc4#1", + "pinName": "CI" + }, + "name": "unnamedWire#26", + "path": [ + { + "x": 37.5, + "y": 35.0 + }, + { + "x": 37.5, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "inc4#1", + "pinName": "Z" + }, + "pin2": { + "compName": "inc4#2", + "pinName": "CI" + }, + "name": "unnamedWire#27", + "path": [ + { + "x": 37.5, + "y": 75.0 + }, + { + "x": 37.5, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "inc4#2", + "pinName": "Z" + }, + "pin2": { + "compName": "inc4#3", + "pinName": "CI" + }, + "name": "unnamedWire#28", + "path": [ + { + "x": 37.5, + "y": 115.0 + }, + { + "x": 37.5, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O0" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O1" + }, + "name": "unnamedWire#30", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "I" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "name": "unnamedWire#31", + "path": [ + { + "x": 95.0, + "y": 85.0 + }, + { + "x": 95.0, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O2" + }, + "name": "unnamedWire#32", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O3" + }, + "name": "unnamedWire#33", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O4" + }, + "name": "unnamedWire#34", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O1" + }, + "name": "unnamedWire#35", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O6" + }, + "name": "unnamedWire#36", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O3" + }, + "name": "unnamedWire#37", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#8", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O8" + }, + "name": "unnamedWire#38", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#8", + "pinName": "O1" + }, + "name": "unnamedWire#39", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#8", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O10" + }, + "name": "unnamedWire#40", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#8", + "pinName": "O3" + }, + "name": "unnamedWire#41", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O12" + }, + "name": "unnamedWire#42", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O13" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O1" + }, + "name": "unnamedWire#43", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O14" + }, + "name": "unnamedWire#44", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O15" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O3" + }, + "name": "unnamedWire#45", + "path": [] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "Incrementer\n16 bit", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 10.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "default", + "version": "0.1.5" +} \ No newline at end of file diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc4.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc4.json new file mode 100755 index 00000000..9e1126b0 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/inc4.json @@ -0,0 +1,405 @@ +{ + "width": 20.0, + "height": 30.0, + "interfacePins": [ + { + "location": { + "x": 0.0, + "y": 15.0 + }, + "name": "A", + "logicWidth": 4, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 5.0 + }, + "name": "CI", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 20.0, + "y": 15.0 + }, + "name": "Y", + "logicWidth": 4, + "usage": "OUTPUT" + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "Z", + "logicWidth": 1, + "usage": "OUTPUT" + } + ], + "innerScale": 0.2, + "submodel": { + "components": [ + { + "id": "Splitter", + "name": "Splitter#0", + "pos": { + "x": 5.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT_ALT" + } + }, + { + "id": "Splitter", + "name": "Splitter#1", + "pos": { + "x": 85.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "LEFT_ALT" + } + }, + { + "id": "halfadder", + "name": "halfadder#0", + "pos": { + "x": 40.0, + "y": 5.0 + } + }, + { + "id": "halfadder", + "name": "halfadder#1", + "pos": { + "x": 40.0, + "y": 40.0 + } + }, + { + "id": "halfadder", + "name": "halfadder#2", + "pos": { + "x": 40.0, + "y": 75.0 + } + }, + { + "id": "halfadder", + "name": "halfadder#3", + "pos": { + "x": 40.0, + "y": 110.0 + } + } + ], + "wires": [ + { + "pin1": { + "compName": "halfadder#0", + "pinName": "Z" + }, + "pin2": { + "compName": "halfadder#1", + "pinName": "A" + }, + "name": "unnamedWire#0", + "path": [ + { + "x": 35.0, + "y": 30.0 + }, + { + "x": 35.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "halfadder#1", + "pinName": "Z" + }, + "pin2": { + "compName": "halfadder#2", + "pinName": "A" + }, + "name": "unnamedWire#1", + "path": [ + { + "x": 35.0, + "y": 65.0 + }, + { + "x": 35.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "halfadder#2", + "pinName": "Z" + }, + "pin2": { + "compName": "halfadder#3", + "pinName": "A" + }, + "name": "unnamedWire#2", + "path": [ + { + "x": 35.0, + "y": 100.0 + }, + { + "x": 35.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "halfadder#0", + "pinName": "B" + }, + "name": "unnamedWire#3", + "path": [ + { + "x": 20.0, + "y": 60.0 + }, + { + "x": 20.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O1" + }, + "pin2": { + "compName": "halfadder#1", + "pinName": "B" + }, + "name": "unnamedWire#4", + "path": [ + { + "x": 25.0, + "y": 70.0 + }, + { + "x": 25.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "halfadder#2", + "pinName": "B" + }, + "name": "unnamedWire#5", + "path": [ + { + "x": 25.0, + "y": 80.0 + }, + { + "x": 25.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O3" + }, + "pin2": { + "compName": "halfadder#3", + "pinName": "B" + }, + "name": "unnamedWire#6", + "path": [ + { + "x": 20.0, + "y": 90.0 + }, + { + "x": 20.0, + "y": 125.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O0" + }, + "pin2": { + "compName": "halfadder#0", + "pinName": "Y" + }, + "name": "unnamedWire#7", + "path": [ + { + "x": 80.0, + "y": 60.0 + }, + { + "x": 80.0, + "y": 10.0 + } + ] + }, + { + "pin1": { + "compName": "halfadder#1", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O1" + }, + "name": "unnamedWire#8", + "path": [ + { + "x": 75.0, + "y": 45.0 + }, + { + "x": 75.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "halfadder#2", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O2" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "halfadder#3", + "pinName": "Y" + }, + "name": "unnamedWire#10", + "path": [ + { + "x": 75.0, + "y": 90.0 + }, + { + "x": 75.0, + "y": 115.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "A" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "I" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CI" + }, + "pin2": { + "compName": "halfadder#0", + "pinName": "A" + }, + "name": "unnamedWire#12", + "path": [ + { + "x": 10.0, + "y": 25.0 + }, + { + "x": 10.0, + "y": 10.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "I" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "name": "unnamedWire#13", + "path": [] + }, + { + "pin1": { + "compName": "halfadder#3", + "pinName": "Z" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Z" + }, + "name": "unnamedWire#14", + "path": [ + { + "x": 10.0, + "y": 135.0 + }, + { + "x": 10.0, + "y": 125.0 + } + ] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "Incrementer\n4 bit", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 10.0, + "pinLabelHeight": 3.5, + "pinLabelMargin": 0.5 + }, + "outlineRendererSnippetID": "default", + "highLevelStateHandlerSnippetID": "default", + "version": "0.1.5" +} \ No newline at end of file diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java deleted file mode 100644 index 981c8488..00000000 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelinc.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.mograsim.logic.model.am2900.components; - -import static net.mograsim.logic.core.types.Bit.U; -import static net.mograsim.logic.core.types.Bit.X; -import static net.mograsim.logic.core.types.Bit.Z; -import static net.mograsim.logic.core.types.Bit.ZERO; - -import java.util.Arrays; -import java.util.Map; - -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.wires.CoreWire.ReadEnd; -import net.mograsim.logic.core.wires.CoreWire.ReadWriteEnd; -import net.mograsim.logic.model.model.LogicModelModifiable; -import net.mograsim.logic.model.model.components.atomic.SimpleRectangularHardcodedModelComponent; -import net.mograsim.logic.model.model.wires.Pin; -import net.mograsim.logic.model.model.wires.PinUsage; -import net.mograsim.logic.model.serializing.IdentifyParams; -import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; -import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position; - -public class Modelinc extends SimpleRectangularHardcodedModelComponent -{ - private final int logicWidth; - - public Modelinc(LogicModelModifiable model, String name, int logicWidth) - { - super(model, "inc", name, "Incrementer", false); - this.logicWidth = logicWidth; - setSize(40, 20); - addPin(new Pin(model, this, "A", logicWidth, PinUsage.INPUT, 20, 20), Position.TOP); - addPin(new Pin(model, this, "CI", 1, PinUsage.INPUT, 40, 10), Position.LEFT); - addPin(new Pin(model, this, "Y", logicWidth, PinUsage.OUTPUT, 20, 0), Position.BOTTOM); - - init(); - } - - @Override - public Object recalculate(Object lastState, Map readEnds, Map readWriteEnds) - { - Bit[] ABits = readEnds.get("A").getValues().getBits(); - Bit CIVal = readEnds.get("CI").getValue(); - Bit[] YBits = new Bit[logicWidth]; - if (CIVal == X) - Arrays.fill(YBits, X); - else if (CIVal == U) - Arrays.fill(YBits, U); - else if (CIVal == Z) - Arrays.fill(YBits, X); - else if (CIVal == ZERO) - YBits = ABits; - else - { - Bit carry = Bit.ONE; - // TODO extract to helper. This code almost also exists in ModelAm2910RegCntr. - for (int i = logicWidth - 1; i >= 0; i--) - { - Bit a = ABits[i]; - YBits[i] = a.xor(carry); - carry = a.and(carry); - } - } - readWriteEnds.get("Y").feedSignals(YBits); - return null; - } - - @Override - public Integer getParamsForSerializing(IdentifyParams idParams) - { - return logicWidth; - } - - static - { - IndirectModelComponentCreator.setComponentSupplier(Modelinc.class.getCanonicalName(), - (m, p, n) -> new Modelinc(m, n, p.getAsInt())); - } -} \ No newline at end of file diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json index 273c582b..851af05c 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/standardComponentIDMapping.json @@ -6,7 +6,6 @@ "Am2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904ShiftInstrDecode", "Am2910RegCntr": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910RegCntr", "Am2910SP": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910SP", - "inc": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelinc", "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12", "sel4_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelsel4_12", "Am2900": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json", @@ -46,6 +45,10 @@ "dlatch80": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/dlatch80.json", "fulladder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/fulladder.json", "halfadder": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/halfadder.json", + "halfadder_invz": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/halfadder_invz.json", + "inc4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/inc4.json", + "inc12": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/inc12.json", + "inc16": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/inc16.json", "mux1": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1.json", "mux1_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_4.json", "mux1_8": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/mux1_8.json", diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java index f694f1a0..4efc6f77 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ModelComponentTestbench.java @@ -6,6 +6,7 @@ import java.util.List; import net.mograsim.logic.model.SimpleLogicUIStandalone; import net.mograsim.logic.model.am2900.Am2900Loader; +import net.mograsim.logic.model.am2900.machine.StrictAm2900MachineDefinition; import net.mograsim.logic.model.model.LogicModelModifiable; import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay; @@ -13,7 +14,6 @@ import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch; import net.mograsim.logic.model.model.wires.ModelWire; import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.model.wires.PinUsage; -import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; public class ModelComponentTestbench { @@ -26,8 +26,8 @@ public class ModelComponentTestbench public static void createTestbench(LogicModelModifiable model) { Am2900Loader.setup(); -// ModelComponent comp = new StrictAm2900MachineDefinition().createNew(model).getAm2900(); - ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "dff4_finewe"); + ModelComponent comp = new StrictAm2900MachineDefinition().createNew(model).getAm2900(); +// ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "inc12"); List inputPinNames = new ArrayList<>(); List outputPinNames = new ArrayList<>(); -- 2.17.1