From: Daniel Kirschten Date: Sat, 11 Apr 2020 13:21:41 +0000 (+0200) Subject: Implemented sel4_12 gate-based X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=8770c9fadaa74f095f9742ec1883a2a01a6472f0 Implemented sel4_12 gate-based --- diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/sel4_12.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/sel4_12.json new file mode 100644 index 00000000..2e2ef5cf --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/sel4_12.json @@ -0,0 +1,1933 @@ +{ + "width": 65.0, + "height": 60.0, + "interfacePins": [ + { + "location": { + "x": 10.0, + "y": 0.0 + }, + "name": "I1", + "logicWidth": 12, + "usage": "INPUT" + }, + { + "location": { + "x": 20.0, + "y": 0.0 + }, + "name": "I2", + "logicWidth": 12, + "usage": "INPUT" + }, + { + "location": { + "x": 30.0, + "y": 0.0 + }, + "name": "I3", + "logicWidth": 12, + "usage": "INPUT" + }, + { + "location": { + "x": 40.0, + "y": 0.0 + }, + "name": "I4", + "logicWidth": 12, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 25.0 + }, + "name": "S1", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 35.0 + }, + "name": "S2", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 45.0 + }, + "name": "S3", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 55.0 + }, + "name": "S4", + "logicWidth": 1, + "usage": "INPUT" + }, + { + "location": { + "x": 65.0, + "y": 30.0 + }, + "name": "Y", + "logicWidth": 12, + "usage": "OUTPUT" + } + ], + "innerScale": 0.2, + "submodel": { + "components": [ + { + "id": "Splitter", + "name": "Splitter#0", + "pos": { + "x": 45.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#1", + "pos": { + "x": 85.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#2", + "pos": { + "x": 200.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#3", + "pos": { + "x": 240.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#4", + "pos": { + "x": 280.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#5", + "pos": { + "x": 200.0, + "y": 45.0 + }, + "params": { + "logicWidth": 12, + "orientation": "DOWN" + } + }, + { + "id": "Splitter", + "name": "Splitter#6", + "pos": { + "x": 110.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#7", + "pos": { + "x": 150.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#8", + "pos": { + "x": 70.0, + "y": 60.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#9", + "pos": { + "x": 70.0, + "y": 45.0 + }, + "params": { + "logicWidth": 12, + "orientation": "DOWN" + } + }, + { + "id": "Splitter", + "name": "Splitter#10", + "pos": { + "x": 260.0, + "y": 95.0 + }, + "params": { + "logicWidth": 12, + "orientation": "LEFT" + } + }, + { + "id": "Splitter", + "name": "Splitter#11", + "pos": { + "x": 245.0, + "y": 95.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } + }, + { + "id": "Splitter", + "name": "Splitter#12", + "pos": { + "x": 245.0, + "y": 135.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } + }, + { + "id": "Splitter", + "name": "Splitter#13", + "pos": { + "x": 245.0, + "y": 175.0 + }, + "params": { + "logicWidth": 4, + "orientation": "RIGHT" + } + }, + { + "id": "Splitter", + "name": "Splitter#14", + "pos": { + "x": 215.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#15", + "pos": { + "x": 135.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#16", + "pos": { + "x": 135.0, + "y": 10.0 + }, + "params": { + "logicWidth": 12, + "orientation": "DOWN" + } + }, + { + "id": "Splitter", + "name": "Splitter#17", + "pos": { + "x": 175.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#18", + "pos": { + "x": 5.0, + "y": 25.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#19", + "pos": { + "x": 5.0, + "y": 10.0 + }, + "params": { + "logicWidth": 12, + "orientation": "DOWN" + } + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 4.0, + "y": 124.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 9.0, + "y": 174.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 14.0, + "y": 224.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "pos": { + "x": 4.0, + "y": 179.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "pos": { + "x": 9.0, + "y": 189.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "pos": { + "x": 14.0, + "y": 199.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "pos": { + "x": 19.0, + "y": 274.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "pos": { + "x": 19.0, + "y": 209.0 + }, + "params": 1 + }, + { + "id": "sel4_4", + "name": "sel4_4#0", + "pos": { + "x": 115.0, + "y": 100.0 + } + }, + { + "id": "sel4_4", + "name": "sel4_4#1", + "pos": { + "x": 115.0, + "y": 170.0 + } + }, + { + "id": "sel4_4", + "name": "sel4_4#2", + "pos": { + "x": 115.0, + "y": 240.0 + } + } + ], + "wires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I1" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "I" + }, + "name": "unnamedWire#0", + "path": [ + { + "x": 50.0, + "y": 5.0 + }, + { + "x": 60.0, + "y": 5.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#18", + "pinName": "O3" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#18", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O10" + }, + "name": "unnamedWire#2", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#18", + "pinName": "O1" + }, + "name": "unnamedWire#3", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#18", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O8" + }, + "name": "unnamedWire#4", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O3" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O6" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "O1" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O4" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O3" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O2" + }, + "name": "unnamedWire#10", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#19", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "O1" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#19", + "pinName": "O0" + }, + "name": "unnamedWire#12", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I2" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "I" + }, + "name": "unnamedWire#13", + "path": [ + { + "x": 100.0, + "y": 5.0 + }, + { + "x": 125.0, + "y": 5.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#8", + "pinName": "O3" + }, + "name": "unnamedWire#14", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#8", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O10" + }, + "name": "unnamedWire#15", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#8", + "pinName": "O1" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#8", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O8" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O3" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O6" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O1" + }, + "name": "unnamedWire#20", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O4" + }, + "name": "unnamedWire#21", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O3" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O2" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#9", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#7", + "pinName": "O1" + }, + "name": "unnamedWire#24", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#9", + "pinName": "O0" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I3" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "I" + }, + "name": "unnamedWire#26", + "path": [ + { + "x": 150.0, + "y": 5.0 + }, + { + "x": 190.0, + "y": 5.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#15", + "pinName": "O3" + }, + "name": "unnamedWire#27", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#15", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O10" + }, + "name": "unnamedWire#28", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O9" + }, + "pin2": { + "compName": "Splitter#15", + "pinName": "O1" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#15", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O8" + }, + "name": "unnamedWire#30", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O7" + }, + "pin2": { + "compName": "Splitter#17", + "pinName": "O3" + }, + "name": "unnamedWire#31", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#17", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O6" + }, + "name": "unnamedWire#32", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O5" + }, + "pin2": { + "compName": "Splitter#17", + "pinName": "O1" + }, + "name": "unnamedWire#33", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#17", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O4" + }, + "name": "unnamedWire#34", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#14", + "pinName": "O3" + }, + "name": "unnamedWire#35", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#14", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O2" + }, + "name": "unnamedWire#36", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#16", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#14", + "pinName": "O1" + }, + "name": "unnamedWire#37", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#14", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#16", + "pinName": "O0" + }, + "name": "unnamedWire#38", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I4" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "I" + }, + "name": "unnamedWire#39", + "path": [ + { + "x": 200.0, + "y": 5.0 + }, + { + "x": 255.0, + "y": 5.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#18", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "I1" + }, + "name": "unnamedWire#40", + "path": [ + { + "x": 20.0, + "y": 40.0 + }, + { + "x": 55.0, + "y": 40.0 + }, + { + "x": 55.0, + "y": 95.0 + }, + { + "x": 125.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#8", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "I2" + }, + "name": "unnamedWire#41", + "path": [ + { + "x": 85.0, + "y": 75.0 + }, + { + "x": 75.0, + "y": 75.0 + }, + { + "x": 75.0, + "y": 90.0 + }, + { + "x": 135.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#15", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "I3" + }, + "name": "unnamedWire#42", + "path": [ + { + "x": 150.0, + "y": 40.0 + }, + { + "x": 185.0, + "y": 40.0 + }, + { + "x": 185.0, + "y": 90.0 + }, + { + "x": 145.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "I2" + }, + "name": "unnamedWire#43", + "path": [ + { + "x": 125.0, + "y": 80.0 + }, + { + "x": 80.0, + "y": 80.0 + }, + { + "x": 80.0, + "y": 160.0 + }, + { + "x": 135.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#7", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "I2" + }, + "name": "unnamedWire#44", + "path": [ + { + "x": 165.0, + "y": 85.0 + }, + { + "x": 85.0, + "y": 85.0 + }, + { + "x": 85.0, + "y": 230.0 + }, + { + "x": 135.0, + "y": 230.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "I1" + }, + "name": "unnamedWire#45", + "path": [ + { + "x": 60.0, + "y": 165.0 + }, + { + "x": 125.0, + "y": 165.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "I1" + }, + "name": "unnamedWire#46", + "path": [ + { + "x": 100.0, + "y": 40.0 + }, + { + "x": 65.0, + "y": 40.0 + }, + { + "x": 65.0, + "y": 235.0 + }, + { + "x": 125.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#17", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "I3" + }, + "name": "unnamedWire#47", + "path": [ + { + "x": 190.0, + "y": 160.0 + }, + { + "x": 145.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "sel4_4#2", + "pinName": "I3" + }, + "pin2": { + "compName": "Splitter#14", + "pinName": "I" + }, + "name": "unnamedWire#48", + "path": [ + { + "x": 145.0, + "y": 230.0 + }, + { + "x": 195.0, + "y": 230.0 + }, + { + "x": 195.0, + "y": 40.0 + }, + { + "x": 230.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O11" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O3" + }, + "name": "unnamedWire#49", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O10" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O2" + }, + "name": "unnamedWire#50", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O9" + }, + "name": "unnamedWire#51", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O8" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O0" + }, + "name": "unnamedWire#52", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O7" + }, + "name": "unnamedWire#53", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O6" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O2" + }, + "name": "unnamedWire#54", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#3", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O5" + }, + "name": "unnamedWire#55", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O4" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O0" + }, + "name": "unnamedWire#56", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O3" + }, + "name": "unnamedWire#57", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O2" + }, + "name": "unnamedWire#58", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O1" + }, + "name": "unnamedWire#59", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O0" + }, + "name": "unnamedWire#60", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "I4" + }, + "name": "unnamedWire#61", + "path": [ + { + "x": 215.0, + "y": 75.0 + }, + { + "x": 205.0, + "y": 75.0 + }, + { + "x": 205.0, + "y": 95.0 + }, + { + "x": 155.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "sel4_4#1", + "pinName": "I4" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "I" + }, + "name": "unnamedWire#62", + "path": [ + { + "x": 155.0, + "y": 165.0 + }, + { + "x": 210.0, + "y": 165.0 + }, + { + "x": 210.0, + "y": 80.0 + }, + { + "x": 255.0, + "y": 80.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#4", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "I4" + }, + "name": "unnamedWire#63", + "path": [ + { + "x": 295.0, + "y": 85.0 + }, + { + "x": 215.0, + "y": 85.0 + }, + { + "x": 215.0, + "y": 235.0 + }, + { + "x": 155.0, + "y": 235.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#11", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O11" + }, + "name": "unnamedWire#64", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O10" + }, + "pin2": { + "compName": "Splitter#11", + "pinName": "O2" + }, + "name": "unnamedWire#65", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#11", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O9" + }, + "name": "unnamedWire#66", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O8" + }, + "pin2": { + "compName": "Splitter#11", + "pinName": "O0" + }, + "name": "unnamedWire#67", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#12", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O7" + }, + "name": "unnamedWire#68", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O6" + }, + "pin2": { + "compName": "Splitter#12", + "pinName": "O2" + }, + "name": "unnamedWire#69", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#12", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O5" + }, + "name": "unnamedWire#70", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O4" + }, + "pin2": { + "compName": "Splitter#12", + "pinName": "O0" + }, + "name": "unnamedWire#71", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#13", + "pinName": "O3" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O3" + }, + "name": "unnamedWire#72", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O2" + }, + "pin2": { + "compName": "Splitter#13", + "pinName": "O2" + }, + "name": "unnamedWire#73", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#13", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#10", + "pinName": "O1" + }, + "name": "unnamedWire#74", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#13", + "pinName": "O0" + }, + "name": "unnamedWire#75", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#10", + "pinName": "I" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "Y" + }, + "name": "unnamedWire#76", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#11", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "Y" + }, + "name": "unnamedWire#77", + "path": [ + { + "x": 230.0, + "y": 110.0 + }, + { + "x": 230.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "sel4_4#1", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#12", + "pinName": "I" + }, + "name": "unnamedWire#78", + "path": [ + { + "x": 230.0, + "y": 190.0 + }, + { + "x": 230.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#13", + "pinName": "I" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "Y" + }, + "name": "unnamedWire#79", + "path": [ + { + "x": 235.0, + "y": 190.0 + }, + { + "x": 235.0, + "y": 260.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "S4" + }, + "name": "unnamedWire#80", + "path": [ + { + "x": 20.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "S3" + }, + "name": "unnamedWire#81", + "path": [ + { + "x": 15.0, + "y": 130.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#0", + "pinName": "S1" + }, + "name": "unnamedWire#82", + "path": [ + { + "x": 5.0, + "y": 110.0 + } + ] + }, + { + "pin1": { + "compName": "sel4_4#0", + "pinName": "S2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#83", + "path": [ + { + "x": 10.0, + "y": 120.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#84", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S2" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#85", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S3" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#86", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "S3" + }, + "name": "unnamedWire#87", + "path": [ + { + "x": 15.0, + "y": 270.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#88", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "S1" + }, + "name": "unnamedWire#89", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "S2" + }, + "name": "unnamedWire#90", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "name": "unnamedWire#91", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#92", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "S3" + }, + "name": "unnamedWire#93", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#94", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "S1" + }, + "name": "unnamedWire#95", + "path": [ + { + "x": 5.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "sel4_4#2", + "pinName": "S2" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "name": "unnamedWire#96", + "path": [ + { + "x": 10.0, + "y": 260.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "S4" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#97", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#2", + "pinName": "S4" + }, + "name": "unnamedWire#98", + "path": [ + { + "x": 20.0, + "y": 280.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "sel4_4#1", + "pinName": "S4" + }, + "name": "unnamedWire#99", + "path": [] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "4-way SEL\n12 bit", + "centerTextHeight": 5.0, + "horizontalComponentCenter": 32.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/src/net/mograsim/logic/model/am2900/components/Modelsel4_12.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelsel4_12.java deleted file mode 100644 index 7cce14a3..00000000 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/Modelsel4_12.java +++ /dev/null @@ -1,87 +0,0 @@ -package net.mograsim.logic.model.am2900.components; - -import static net.mograsim.logic.core.types.Bit.ONE; -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.Map; - -import net.mograsim.logic.core.types.Bit; -import net.mograsim.logic.core.types.BitVector; -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.IndirectModelComponentCreator; -import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position; - -public class Modelsel4_12 extends SimpleRectangularHardcodedModelComponent -{ - public Modelsel4_12(LogicModelModifiable model, String name) - { - super(model, "sel4_12", name, "4-way SEL\n12 bit", false); - setSize(80, 40); - addPin(new Pin(model, this, "SA", 1, PinUsage.INPUT, 0, 5), Position.RIGHT); - addPin(new Pin(model, this, "SB", 1, PinUsage.INPUT, 0, 15), Position.RIGHT); - addPin(new Pin(model, this, "SC", 1, PinUsage.INPUT, 0, 25), Position.RIGHT); - addPin(new Pin(model, this, "SD", 1, PinUsage.INPUT, 0, 35), Position.RIGHT); - addPin(new Pin(model, this, "A", 12, PinUsage.INPUT, 10, 0), Position.BOTTOM); - addPin(new Pin(model, this, "B", 12, PinUsage.INPUT, 30, 0), Position.BOTTOM); - addPin(new Pin(model, this, "C", 12, PinUsage.INPUT, 50, 0), Position.BOTTOM); - addPin(new Pin(model, this, "D", 12, PinUsage.INPUT, 70, 0), Position.BOTTOM); - addPin(new Pin(model, this, "Y", 12, PinUsage.OUTPUT, 40, 40), Position.TOP); - - init(); - } - - @Override - public Object recalculate(Object lastState, Map readEnds, Map readWriteEnds) - { - Bit SAVal = readEnds.get("SA").getValue(); - Bit SBVal = readEnds.get("SB").getValue(); - Bit SCVal = readEnds.get("SC").getValue(); - Bit SDVal = readEnds.get("SD").getValue(); - BitVector YVal; - if (SAVal == X || SBVal == X || SCVal == X || SDVal == X) - YVal = BitVector.of(X, 12); - else if (SAVal == U || SBVal == U || SCVal == U || SDVal == U) - YVal = BitVector.of(U, 12); - else if (SAVal == Z || SBVal == Z || SCVal == Z || SDVal == Z) - YVal = BitVector.of(X, 12); - else - { - YVal = null; - if (SAVal == ONE) - YVal = readEnds.get("A").getValues(); - if (SBVal == ONE) - if (YVal != null) - YVal = BitVector.of(X, 12); - else - YVal = readEnds.get("B").getValues(); - if (SCVal == ONE) - if (YVal != null) - YVal = BitVector.of(X, 12); - else - YVal = readEnds.get("C").getValues(); - if (SDVal == ONE) - if (YVal != null) - YVal = BitVector.of(X, 12); - else - YVal = readEnds.get("D").getValues(); - if (YVal == null) - YVal = BitVector.of(ZERO, 12); - } - - readWriteEnds.get("Y").feedSignals(YVal); - return null; - } - - static - { - IndirectModelComponentCreator.setComponentSupplier(Modelsel4_12.class.getCanonicalName(), (m, p, n) -> new Modelsel4_12(m, n)); - } -} \ 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 4445fe24..679887ab 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 @@ -7,7 +7,6 @@ "Am2910RegCntr": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910RegCntr", "Am2910SP": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2910.ModelAm2910SP", "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", "Am2901": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901.json", "Am2901ALUFuncDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2901/Am2901ALUFuncDecode.json", @@ -68,6 +67,7 @@ "sel3_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel3_4.json", "sel4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel4.json", "sel4_4": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel4_4.json", + "sel4_12": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/sel4_12.json", "xnor": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/xnor.json", "xor": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/xor.json" } \ No newline at end of file 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 6a1a9b74..160d5890 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 @@ -27,7 +27,7 @@ public class ModelComponentTestbench { Am2900Loader.setup(); // ModelComponent comp = new StrictAm2900MachineDefinition().createNew(model).getAm2900(); - ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "sel4_4"); + ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "sel4_12"); List inputPinNames = new ArrayList<>(); List outputPinNames = new ArrayList<>();