From 5c379c490d997b75e8a1403f210f82c9ab8d4f68 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Mon, 4 May 2020 02:00:45 +0200 Subject: [PATCH] Implemented Am2904RegCTInstrDecode in gates --- .../am2904/Am2904RegCTInstrDecode.json | 3996 +++++++++++++++++ .../am2904/ModelAm2904RegCTInstrDecode.java | 301 -- .../am2900/standardComponentIDMapping.json | 2 +- .../examples/ModelComponentTestbench.java | 5 +- 4 files changed, 4001 insertions(+), 303 deletions(-) create mode 100644 plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json delete mode 100644 plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java diff --git a/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json new file mode 100644 index 00000000..6af533b8 --- /dev/null +++ b/plugins/net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json @@ -0,0 +1,3996 @@ +{ + "width": 80.0, + "height": 80.0, + "interfacePins": [ + { + "location": { + "x": 70.0, + "y": 80.0 + }, + "name": "C0_MUX", + "logicWidth": 4, + "usage": "OUTPUT" + }, + { + "location": { + "x": 50.0, + "y": 80.0 + }, + "name": "CT_EXP", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 40.0, + "y": 80.0 + }, + "name": "CT_INV", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 30.0, + "y": 80.0 + }, + "name": "CT_MUX", + "logicWidth": 3, + "usage": "OUTPUT" + }, + { + "location": { + "x": 0.0, + "y": 50.0 + }, + "name": "I5-0", + "logicWidth": 6, + "usage": "INPUT" + }, + { + "location": { + "x": 0.0, + "y": 30.0 + }, + "name": "I12-11", + "logicWidth": 2, + "usage": "INPUT" + }, + { + "location": { + "x": 20.0, + "y": 0.0 + }, + "name": "MSR_MUX", + "logicWidth": 3, + "usage": "OUTPUT" + }, + { + "location": { + "x": 60.0, + "y": 0.0 + }, + "name": "OEN", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 10.0, + "y": 80.0 + }, + "name": "Y_MUX", + "logicWidth": 2, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 30.0 + }, + "name": "muSR_CINV", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 10.0 + }, + "name": "muSR_MUX", + "logicWidth": 2, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 20.0 + }, + "name": "muSR_OVRRET", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 50.0 + }, + "name": "muSR_WEC", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 60.0 + }, + "name": "muSR_WEN", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 70.0 + }, + "name": "muSR_WEOVR", + "logicWidth": 1, + "usage": "OUTPUT" + }, + { + "location": { + "x": 80.0, + "y": 40.0 + }, + "name": "muSR_WEZ", + "logicWidth": 1, + "usage": "OUTPUT" + } + ], + "innerScale": 0.2, + "submodel": { + "components": [ + { + "id": "NandGate", + "name": "NandGate#0", + "pos": { + "x": 65.0, + "y": 180.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#1", + "pos": { + "x": 65.0, + "y": 205.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#2", + "pos": { + "x": 65.0, + "y": 230.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#3", + "pos": { + "x": 65.0, + "y": 255.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#4", + "pos": { + "x": 65.0, + "y": 280.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#5", + "pos": { + "x": 65.0, + "y": 305.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#6", + "pos": { + "x": 65.0, + "y": 155.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#7", + "pos": { + "x": 120.0, + "y": 195.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#8", + "pos": { + "x": 120.0, + "y": 270.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#9", + "pos": { + "x": 120.0, + "y": 220.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#10", + "pos": { + "x": 210.0, + "y": 255.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#11", + "pos": { + "x": 175.0, + "y": 260.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#12", + "pos": { + "x": 175.0, + "y": 200.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#13", + "pos": { + "x": 270.0, + "y": 250.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#14", + "pos": { + "x": 225.0, + "y": 75.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#15", + "pos": { + "x": 215.0, + "y": 35.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#16", + "pos": { + "x": 245.0, + "y": 10.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#17", + "pos": { + "x": 170.0, + "y": 55.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#18", + "pos": { + "x": 140.0, + "y": 50.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#19", + "pos": { + "x": 100.0, + "y": 45.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#20", + "pos": { + "x": 50.0, + "y": 55.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#21", + "pos": { + "x": 20.0, + "y": 50.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#22", + "pos": { + "x": 120.0, + "y": 170.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#23", + "pos": { + "x": 355.0, + "y": 50.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#24", + "pos": { + "x": 280.0, + "y": 85.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#25", + "pos": { + "x": 315.0, + "y": 60.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#26", + "pos": { + "x": 285.0, + "y": 55.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#27", + "pos": { + "x": 355.0, + "y": 25.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#28", + "pos": { + "x": 325.0, + "y": 25.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#29", + "pos": { + "x": 290.0, + "y": 25.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#30", + "pos": { + "x": 370.0, + "y": 190.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#31", + "pos": { + "x": 370.0, + "y": 240.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#32", + "pos": { + "x": 370.0, + "y": 290.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#33", + "pos": { + "x": 370.0, + "y": 340.0 + }, + "params": 1 + }, + { + "id": "NandGate", + "name": "NandGate#34", + "pos": { + "x": 335.0, + "y": 240.0 + }, + "params": 1 + }, + { + "id": "Splitter", + "name": "Splitter#0", + "pos": { + "x": 5.0, + "y": 145.0 + }, + "params": { + "logicWidth": 2, + "orientation": "RIGHT" + } + }, + { + "id": "Splitter", + "name": "Splitter#1", + "pos": { + "x": 5.0, + "y": 225.0 + }, + "params": { + "logicWidth": 6, + "orientation": "RIGHT" + } + }, + { + "id": "Splitter", + "name": "Splitter#2", + "pos": { + "x": 45.0, + "y": 385.0 + }, + "params": { + "logicWidth": 2, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#3", + "pos": { + "x": 140.0, + "y": 385.0 + }, + "params": { + "logicWidth": 3, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#4", + "pos": { + "x": 335.0, + "y": 385.0 + }, + "params": { + "logicWidth": 4, + "orientation": "UP" + } + }, + { + "id": "Splitter", + "name": "Splitter#5", + "pos": { + "x": 90.0, + "y": 5.0 + }, + "params": { + "logicWidth": 3, + "orientation": "DOWN" + } + }, + { + "id": "Splitter", + "name": "Splitter#6", + "pos": { + "x": 385.0, + "y": 45.0 + }, + "params": { + "logicWidth": 2, + "orientation": "LEFT" + } + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#0", + "pos": { + "x": 44.0, + "y": 369.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#1", + "pos": { + "x": 209.0, + "y": 49.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#2", + "pos": { + "x": 29.0, + "y": 194.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#3", + "pos": { + "x": 34.0, + "y": 219.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#4", + "pos": { + "x": 39.0, + "y": 244.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#5", + "pos": { + "x": 44.0, + "y": 254.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#6", + "pos": { + "x": 49.0, + "y": 264.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#7", + "pos": { + "x": 54.0, + "y": 274.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#8", + "pos": { + "x": 89.0, + "y": 164.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#9", + "pos": { + "x": 254.0, + "y": 144.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#10", + "pos": { + "x": 44.0, + "y": 259.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#11", + "pos": { + "x": 49.0, + "y": 284.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#12", + "pos": { + "x": 54.0, + "y": 309.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#13", + "pos": { + "x": 49.0, + "y": 169.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#14", + "pos": { + "x": 39.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#15", + "pos": { + "x": 104.0, + "y": 104.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#16", + "pos": { + "x": 209.0, + "y": 159.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#17", + "pos": { + "x": 279.0, + "y": 79.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#18", + "pos": { + "x": 274.0, + "y": 89.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#19", + "pos": { + "x": 114.0, + "y": 139.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#20", + "pos": { + "x": 44.0, + "y": 159.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#21", + "pos": { + "x": 204.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#22", + "pos": { + "x": 219.0, + "y": 184.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#23", + "pos": { + "x": 99.0, + "y": 164.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#24", + "pos": { + "x": 209.0, + "y": 39.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#25", + "pos": { + "x": 274.0, + "y": 59.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#26", + "pos": { + "x": 199.0, + "y": 209.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#27", + "pos": { + "x": 269.0, + "y": 164.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#28", + "pos": { + "x": 199.0, + "y": 244.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#29", + "pos": { + "x": 109.0, + "y": 109.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#30", + "pos": { + "x": 249.0, + "y": 264.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#31", + "pos": { + "x": 104.0, + "y": 284.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#32", + "pos": { + "x": 99.0, + "y": 264.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#33", + "pos": { + "x": 94.0, + "y": 239.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#34", + "pos": { + "x": 104.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#35", + "pos": { + "x": 89.0, + "y": 139.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#36", + "pos": { + "x": 99.0, + "y": 259.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#37", + "pos": { + "x": 84.0, + "y": 109.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#38", + "pos": { + "x": 244.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#39", + "pos": { + "x": 159.0, + "y": 274.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#40", + "pos": { + "x": 114.0, + "y": 119.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#41", + "pos": { + "x": 149.0, + "y": 174.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#42", + "pos": { + "x": 364.0, + "y": 304.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#43", + "pos": { + "x": 364.0, + "y": 254.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#44", + "pos": { + "x": 159.0, + "y": 264.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#45", + "pos": { + "x": 154.0, + "y": 204.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#46", + "pos": { + "x": 29.0, + "y": 224.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#47", + "pos": { + "x": 34.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#48", + "pos": { + "x": 44.0, + "y": 269.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#49", + "pos": { + "x": 49.0, + "y": 294.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#50", + "pos": { + "x": 54.0, + "y": 319.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#51", + "pos": { + "x": 249.0, + "y": 254.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#52", + "pos": { + "x": 319.0, + "y": 259.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#53", + "pos": { + "x": 309.0, + "y": 109.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#54", + "pos": { + "x": 89.0, + "y": 174.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#55", + "pos": { + "x": 254.0, + "y": 169.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#56", + "pos": { + "x": 244.0, + "y": 119.0 + }, + "params": 1 + }, + { + "id": "WireCrossPoint", + "name": "WireCrossPoint#57", + "pos": { + "x": 364.0, + "y": 234.0 + }, + "params": 1 + }, + { + "id": "and", + "name": "and#0", + "pos": { + "x": 210.0, + "y": 10.0 + } + }, + { + "id": "and", + "name": "and#1", + "pos": { + "x": 120.0, + "y": 245.0 + } + }, + { + "id": "and", + "name": "and#2", + "pos": { + "x": 365.0, + "y": 145.0 + } + }, + { + "id": "and", + "name": "and#3", + "pos": { + "x": 120.0, + "y": 80.0 + } + }, + { + "id": "and", + "name": "and#4", + "pos": { + "x": 215.0, + "y": 205.0 + } + }, + { + "id": "and", + "name": "and#5", + "pos": { + "x": 60.0, + "y": 20.0 + } + }, + { + "id": "and", + "name": "and#6", + "pos": { + "x": 220.0, + "y": 345.0 + } + }, + { + "id": "and", + "name": "and#7", + "pos": { + "x": 215.0, + "y": 230.0 + } + }, + { + "id": "and", + "name": "and#8", + "pos": { + "x": 315.0, + "y": 85.0 + } + }, + { + "id": "and", + "name": "and#9", + "pos": { + "x": 360.0, + "y": 115.0 + } + } + ], + "wires": [ + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I5-0" + }, + "pin2": { + "compName": "Splitter#1", + "pinName": "I" + }, + "name": "unnamedWire#0", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "I12-11" + }, + "pin2": { + "compName": "Splitter#0", + "pinName": "I" + }, + "name": "unnamedWire#1", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O1" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O3" + }, + "name": "unnamedWire#2", + "path": [ + { + "x": 20.0, + "y": 145.0 + }, + { + "x": 20.0, + "y": 380.0 + }, + { + "x": 335.0, + "y": 380.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#0", + "pinName": "O0" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O2" + }, + "name": "unnamedWire#3", + "path": [ + { + "x": 25.0, + "y": 155.0 + }, + { + "x": 25.0, + "y": 375.0 + }, + { + "x": 345.0, + "y": 375.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O5" + }, + "pin2": { + "compName": "WireCrossPoint#46", + "pinName": "" + }, + "name": "unnamedWire#4", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O4" + }, + "pin2": { + "compName": "WireCrossPoint#47", + "pinName": "" + }, + "name": "unnamedWire#5", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O3" + }, + "pin2": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "name": "unnamedWire#6", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O2" + }, + "pin2": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "name": "unnamedWire#7", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O1" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#8", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#1", + "pinName": "O0" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#9", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#0", + "pinName": "A" + }, + "name": "unnamedWire#10", + "path": [ + { + "x": 30.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#0", + "pinName": "B" + }, + "name": "unnamedWire#11", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#6", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "name": "unnamedWire#12", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#1", + "pinName": "A" + }, + "name": "unnamedWire#13", + "path": [ + { + "x": 35.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#1", + "pinName": "B" + }, + "name": "unnamedWire#14", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#26", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "name": "unnamedWire#15", + "path": [ + { + "x": 255.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "name": "unnamedWire#16", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#2", + "pinName": "B" + }, + "name": "unnamedWire#17", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "name": "unnamedWire#18", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#3", + "pinName": "A" + }, + "name": "unnamedWire#19", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#10", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#48", + "pinName": "" + }, + "name": "unnamedWire#20", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "name": "unnamedWire#21", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#5", + "pinName": "A" + }, + "name": "unnamedWire#22", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#12", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#50", + "pinName": "" + }, + "name": "unnamedWire#23", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "name": "unnamedWire#24", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#4", + "pinName": "A" + }, + "name": "unnamedWire#25", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#11", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#49", + "pinName": "" + }, + "name": "unnamedWire#26", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#5", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "name": "unnamedWire#27", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#6", + "pinName": "" + }, + "name": "unnamedWire#28", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#6", + "pinName": "B" + }, + "name": "unnamedWire#29", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#54", + "pinName": "" + }, + "name": "unnamedWire#30", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#2", + "pinName": "A" + }, + "name": "unnamedWire#31", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#13", + "pinName": "" + }, + "name": "unnamedWire#32", + "path": [ + { + "x": 50.0, + "y": 145.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#7", + "pinName": "" + }, + "name": "unnamedWire#33", + "path": [ + { + "x": 260.0, + "y": 80.0 + }, + { + "x": 260.0, + "y": 150.0 + }, + { + "x": 55.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#9", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#34", + "pinName": "B" + }, + "name": "unnamedWire#34", + "path": [ + { + "x": 330.0, + "y": 145.0 + }, + { + "x": 330.0, + "y": 255.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#6", + "pinName": "A" + }, + "name": "unnamedWire#35", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#20", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "name": "unnamedWire#36", + "path": [ + { + "x": 45.0, + "y": 140.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#14", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "name": "unnamedWire#37", + "path": [ + { + "x": 40.0, + "y": 135.0 + }, + { + "x": 205.0, + "y": 135.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#5", + "pinName": "Y" + }, + "name": "unnamedWire#38", + "path": [ + { + "x": 110.0, + "y": 315.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#8", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#33", + "pinName": "A" + }, + "name": "unnamedWire#39", + "path": [ + { + "x": 90.0, + "y": 155.0 + }, + { + "x": 325.0, + "y": 155.0 + }, + { + "x": 325.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#0", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#7", + "pinName": "A" + }, + "name": "unnamedWire#40", + "path": [ + { + "x": 90.0, + "y": 190.0 + }, + { + "x": 90.0, + "y": 200.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#1", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#7", + "pinName": "B" + }, + "name": "unnamedWire#41", + "path": [ + { + "x": 90.0, + "y": 215.0 + }, + { + "x": 90.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#2", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "name": "unnamedWire#42", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#3", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "name": "unnamedWire#43", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "and#3", + "pinName": "B" + }, + "name": "unnamedWire#44", + "path": [ + { + "x": 105.0, + "y": 95.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#7", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#45", + "pinName": "" + }, + "name": "unnamedWire#45", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#45", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#12", + "pinName": "B" + }, + "name": "unnamedWire#46", + "path": [ + { + "x": 155.0, + "y": 215.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "pin2": { + "compName": "and#1", + "pinName": "B" + }, + "name": "unnamedWire#47", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#8", + "pinName": "B" + }, + "name": "unnamedWire#48", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "name": "unnamedWire#49", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#8", + "pinName": "A" + }, + "name": "unnamedWire#50", + "path": [ + { + "x": 100.0, + "y": 275.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#32", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "name": "unnamedWire#51", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#16", + "pinName": "A" + }, + "pin2": { + "compName": "and#0", + "pinName": "Y" + }, + "name": "unnamedWire#52", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "name": "unnamedWire#53", + "path": [ + { + "x": 95.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#9", + "pinName": "B" + }, + "name": "unnamedWire#54", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "name": "unnamedWire#55", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#9", + "pinName": "A" + }, + "name": "unnamedWire#56", + "path": [ + { + "x": 115.0, + "y": 225.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#33", + "pinName": "" + }, + "pin2": { + "compName": "and#1", + "pinName": "A" + }, + "name": "unnamedWire#57", + "path": [ + { + "x": 95.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#34", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "name": "unnamedWire#58", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#36", + "pinName": "" + }, + "name": "unnamedWire#59", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#31", + "pinName": "" + }, + "name": "unnamedWire#60", + "path": [ + { + "x": 105.0, + "y": 290.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#15", + "pinName": "" + }, + "pin2": { + "compName": "and#0", + "pinName": "A" + }, + "name": "unnamedWire#61", + "path": [ + { + "x": 200.0, + "y": 105.0 + }, + { + "x": 200.0, + "y": 15.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#44", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#30", + "pinName": "A" + }, + "name": "unnamedWire#62", + "path": [ + { + "x": 160.0, + "y": 195.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#14", + "pinName": "A" + }, + "pin2": { + "compName": "and#1", + "pinName": "Y" + }, + "name": "unnamedWire#63", + "path": [ + { + "x": 170.0, + "y": 80.0 + }, + { + "x": 170.0, + "y": 250.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#8", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "name": "unnamedWire#64", + "path": [ + { + "x": 160.0, + "y": 280.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#44", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#11", + "pinName": "A" + }, + "name": "unnamedWire#65", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#11", + "pinName": "B" + }, + "name": "unnamedWire#66", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "and#0", + "pinName": "B" + }, + "name": "unnamedWire#67", + "path": [ + { + "x": 205.0, + "y": 110.0 + }, + { + "x": 205.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#41", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#9", + "pinName": "Y" + }, + "name": "unnamedWire#68", + "path": [ + { + "x": 150.0, + "y": 230.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#45", + "pinName": "" + }, + "pin2": { + "compName": "and#2", + "pinName": "A" + }, + "name": "unnamedWire#69", + "path": [ + { + "x": 155.0, + "y": 180.0 + }, + { + "x": 285.0, + "y": 180.0 + }, + { + "x": 285.0, + "y": 150.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#39", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#44", + "pinName": "" + }, + "name": "unnamedWire#70", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "name": "unnamedWire#71", + "path": [ + { + "x": 275.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#16", + "pinName": "" + }, + "pin2": { + "compName": "and#4", + "pinName": "B" + }, + "name": "unnamedWire#72", + "path": [ + { + "x": 210.0, + "y": 220.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "name": "unnamedWire#73", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#18", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#24", + "pinName": "A" + }, + "name": "unnamedWire#74", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#45", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#12", + "pinName": "A" + }, + "name": "unnamedWire#75", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#53", + "pinName": "" + }, + "name": "unnamedWire#76", + "path": [ + { + "x": 310.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#46", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#2", + "pinName": "" + }, + "name": "unnamedWire#77", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#2", + "pinName": "O1" + }, + "pin2": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "name": "unnamedWire#78", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#47", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#3", + "pinName": "" + }, + "name": "unnamedWire#79", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#47", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "O0" + }, + "name": "unnamedWire#80", + "path": [ + { + "x": 35.0, + "y": 365.0 + }, + { + "x": 55.0, + "y": 365.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "Y_MUX" + }, + "pin2": { + "compName": "Splitter#2", + "pinName": "I" + }, + "name": "unnamedWire#81", + "path": [] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "CT_MUX" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "I" + }, + "name": "unnamedWire#82", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#4", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O2" + }, + "name": "unnamedWire#83", + "path": [ + { + "x": 40.0, + "y": 360.0 + }, + { + "x": 140.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#48", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#3", + "pinName": "B" + }, + "name": "unnamedWire#84", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#48", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O1" + }, + "name": "unnamedWire#85", + "path": [ + { + "x": 45.0, + "y": 355.0 + }, + { + "x": 150.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#49", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#4", + "pinName": "B" + }, + "name": "unnamedWire#86", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#49", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#3", + "pinName": "O0" + }, + "name": "unnamedWire#87", + "path": [ + { + "x": 50.0, + "y": 350.0 + }, + { + "x": 160.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#50", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#5", + "pinName": "B" + }, + "name": "unnamedWire#88", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#50", + "pinName": "" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "CT_INV" + }, + "name": "unnamedWire#89", + "path": [ + { + "x": 55.0, + "y": 345.0 + }, + { + "x": 200.0, + "y": 345.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "C0_MUX" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "I" + }, + "name": "unnamedWire#90", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#46", + "pinName": "" + }, + "name": "unnamedWire#91", + "path": [ + { + "x": 30.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#0", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O1" + }, + "name": "unnamedWire#92", + "path": [ + { + "x": 355.0, + "y": 370.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#11", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#10", + "pinName": "B" + }, + "name": "unnamedWire#93", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#10", + "pinName": "A" + }, + "name": "unnamedWire#94", + "path": [ + { + "x": 205.0, + "y": 260.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#10", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "name": "unnamedWire#95", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#51", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#13", + "pinName": "A" + }, + "name": "unnamedWire#96", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#13", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#52", + "pinName": "" + }, + "name": "unnamedWire#97", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#12", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "name": "unnamedWire#98", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#14", + "pinName": "B" + }, + "name": "unnamedWire#99", + "path": [ + { + "x": 220.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "_submodelinterface", + "pinName": "MSR_MUX" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "I" + }, + "name": "unnamedWire#100", + "path": [] + }, + { + "pin1": { + "compName": "Splitter#6", + "pinName": "I" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_MUX" + }, + "name": "unnamedWire#101", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#14", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "name": "unnamedWire#102", + "path": [ + { + "x": 250.0, + "y": 85.0 + }, + { + "x": 250.0, + "y": 60.0 + }, + { + "x": 210.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "Splitter#5", + "pinName": "O2" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "name": "unnamedWire#103", + "path": [ + { + "x": 90.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#13", + "pinName": "B" + }, + "name": "unnamedWire#104", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#15", + "pinName": "B" + }, + "name": "unnamedWire#105", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#15", + "pinName": "A" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "name": "unnamedWire#106", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "pin2": { + "compName": "and#7", + "pinName": "B" + }, + "name": "unnamedWire#107", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#15", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#16", + "pinName": "B" + }, + "name": "unnamedWire#108", + "path": [ + { + "x": 240.0, + "y": 45.0 + }, + { + "x": 240.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#16", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "OEN" + }, + "name": "unnamedWire#109", + "path": [ + { + "x": 300.0, + "y": 20.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#51", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#17", + "pinName": "B" + }, + "name": "unnamedWire#110", + "path": [ + { + "x": 250.0, + "y": 115.0 + }, + { + "x": 165.0, + "y": 115.0 + }, + { + "x": 165.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "and#5", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O1" + }, + "name": "unnamedWire#111", + "path": [ + { + "x": 100.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#52", + "pinName": "" + }, + "pin2": { + "compName": "Splitter#4", + "pinName": "O0" + }, + "name": "unnamedWire#112", + "path": [ + { + "x": 320.0, + "y": 365.0 + }, + { + "x": 365.0, + "y": 365.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#52", + "pinName": "" + }, + "pin2": { + "compName": "and#2", + "pinName": "B" + }, + "name": "unnamedWire#113", + "path": [ + { + "x": 320.0, + "y": 160.0 + } + ] + }, + { + "pin1": { + "compName": "and#2", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_CINV" + }, + "name": "unnamedWire#114", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "and#4", + "pinName": "A" + }, + "name": "unnamedWire#115", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#18", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#17", + "pinName": "A" + }, + "name": "unnamedWire#116", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#35", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#19", + "pinName": "A" + }, + "name": "unnamedWire#117", + "path": [ + { + "x": 90.0, + "y": 50.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#19", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "name": "unnamedWire#118", + "path": [ + { + "x": 85.0, + "y": 60.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#19", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#18", + "pinName": "A" + }, + "name": "unnamedWire#119", + "path": [] + }, + { + "pin1": { + "compName": "and#3", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#18", + "pinName": "B" + }, + "name": "unnamedWire#120", + "path": [ + { + "x": 150.0, + "y": 85.0 + }, + { + "x": 150.0, + "y": 75.0 + }, + { + "x": 135.0, + "y": 75.0 + }, + { + "x": 135.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "name": "unnamedWire#121", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "and#5", + "pinName": "B" + }, + "name": "unnamedWire#122", + "path": [ + { + "x": 80.0, + "y": 120.0 + }, + { + "x": 80.0, + "y": 45.0 + }, + { + "x": 55.0, + "y": 45.0 + }, + { + "x": 55.0, + "y": 35.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#56", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "name": "unnamedWire#123", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#23", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#21", + "pinName": "A" + }, + "name": "unnamedWire#124", + "path": [ + { + "x": 100.0, + "y": 100.0 + }, + { + "x": 10.0, + "y": 100.0 + }, + { + "x": 10.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#1", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#24", + "pinName": "" + }, + "name": "unnamedWire#125", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#17", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#5", + "pinName": "O0" + }, + "name": "unnamedWire#126", + "path": [ + { + "x": 195.0, + "y": 65.0 + }, + { + "x": 195.0, + "y": 25.0 + }, + { + "x": 110.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#22", + "pinName": "" + }, + "name": "unnamedWire#127", + "path": [ + { + "x": 200.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#20", + "pinName": "Y" + }, + "pin2": { + "compName": "and#5", + "pinName": "A" + }, + "name": "unnamedWire#128", + "path": [ + { + "x": 75.0, + "y": 65.0 + }, + { + "x": 75.0, + "y": 50.0 + }, + { + "x": 50.0, + "y": 50.0 + }, + { + "x": 50.0, + "y": 25.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#21", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#20", + "pinName": "A" + }, + "name": "unnamedWire#129", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#26", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#28", + "pinName": "" + }, + "name": "unnamedWire#130", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#29", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "name": "unnamedWire#131", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#41", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#20", + "pinName": "B" + }, + "name": "unnamedWire#132", + "path": [ + { + "x": 150.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 115.0 + }, + { + "x": 45.0, + "y": 70.0 + } + ] + }, + { + "pin1": { + "compName": "and#6", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "CT_EXP" + }, + "name": "unnamedWire#133", + "path": [ + { + "x": 250.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#30", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#51", + "pinName": "" + }, + "name": "unnamedWire#134", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#21", + "pinName": "" + }, + "pin2": { + "compName": "and#7", + "pinName": "A" + }, + "name": "unnamedWire#135", + "path": [] + }, + { + "pin1": { + "compName": "and#7", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "name": "unnamedWire#136", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#37", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#21", + "pinName": "B" + }, + "name": "unnamedWire#137", + "path": [ + { + "x": 15.0, + "y": 110.0 + }, + { + "x": 15.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#57", + "pinName": "" + }, + "name": "unnamedWire#138", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#54", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#22", + "pinName": "A" + }, + "name": "unnamedWire#139", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#22", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#54", + "pinName": "" + }, + "name": "unnamedWire#140", + "path": [ + { + "x": 90.0, + "y": 185.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#22", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#55", + "pinName": "" + }, + "name": "unnamedWire#141", + "path": [ + { + "x": 145.0, + "y": 180.0 + }, + { + "x": 145.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#55", + "pinName": "" + }, + "pin2": { + "compName": "and#6", + "pinName": "B" + }, + "name": "unnamedWire#142", + "path": [ + { + "x": 255.0, + "y": 335.0 + }, + { + "x": 210.0, + "y": 335.0 + }, + { + "x": 210.0, + "y": 360.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#23", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O0" + }, + "name": "unnamedWire#143", + "path": [ + { + "x": 380.0, + "y": 60.0 + }, + { + "x": 380.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "and#8", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#23", + "pinName": "B" + }, + "name": "unnamedWire#144", + "path": [ + { + "x": 345.0, + "y": 90.0 + }, + { + "x": 345.0, + "y": 65.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#53", + "pinName": "" + }, + "pin2": { + "compName": "and#8", + "pinName": "B" + }, + "name": "unnamedWire#145", + "path": [ + { + "x": 310.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#24", + "pinName": "Y" + }, + "pin2": { + "compName": "and#8", + "pinName": "A" + }, + "name": "unnamedWire#146", + "path": [ + { + "x": 305.0, + "y": 95.0 + }, + { + "x": 305.0, + "y": 90.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#38", + "pinName": "" + }, + "pin2": { + "compName": "and#6", + "pinName": "A" + }, + "name": "unnamedWire#147", + "path": [ + { + "x": 245.0, + "y": 340.0 + }, + { + "x": 215.0, + "y": 340.0 + }, + { + "x": 215.0, + "y": 350.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#19", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#24", + "pinName": "B" + }, + "name": "unnamedWire#148", + "path": [ + { + "x": 265.0, + "y": 140.0 + }, + { + "x": 265.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#25", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#23", + "pinName": "A" + }, + "name": "unnamedWire#149", + "path": [ + { + "x": 340.0, + "y": 70.0 + }, + { + "x": 340.0, + "y": 55.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#25", + "pinName": "B" + }, + "name": "unnamedWire#150", + "path": [ + { + "x": 310.0, + "y": 80.0 + }, + { + "x": 310.0, + "y": 75.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#26", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#25", + "pinName": "A" + }, + "name": "unnamedWire#151", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#40", + "pinName": "" + }, + "pin2": { + "compName": "and#3", + "pinName": "A" + }, + "name": "unnamedWire#152", + "path": [ + { + "x": 115.0, + "y": 85.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#26", + "pinName": "A" + }, + "name": "unnamedWire#153", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#27", + "pinName": "Y" + }, + "pin2": { + "compName": "Splitter#6", + "pinName": "O1" + }, + "name": "unnamedWire#154", + "path": [ + { + "x": 380.0, + "y": 35.0 + }, + { + "x": 380.0, + "y": 45.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#27", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#53", + "pinName": "" + }, + "name": "unnamedWire#155", + "path": [ + { + "x": 350.0, + "y": 40.0 + }, + { + "x": 350.0, + "y": 110.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#28", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#27", + "pinName": "A" + }, + "name": "unnamedWire#156", + "path": [ + { + "x": 350.0, + "y": 35.0 + }, + { + "x": 350.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#25", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#28", + "pinName": "B" + }, + "name": "unnamedWire#157", + "path": [ + { + "x": 275.0, + "y": 50.0 + }, + { + "x": 315.0, + "y": 50.0 + }, + { + "x": 315.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#29", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#28", + "pinName": "A" + }, + "name": "unnamedWire#158", + "path": [ + { + "x": 320.0, + "y": 35.0 + }, + { + "x": 320.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#29", + "pinName": "A" + }, + "name": "unnamedWire#159", + "path": [ + { + "x": 270.0, + "y": 30.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#17", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#29", + "pinName": "B" + }, + "name": "unnamedWire#160", + "path": [ + { + "x": 280.0, + "y": 40.0 + } + ] + }, + { + "pin1": { + "compName": "and#9", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_OVRRET" + }, + "name": "unnamedWire#161", + "path": [ + { + "x": 390.0, + "y": 120.0 + }, + { + "x": 390.0, + "y": 100.0 + } + ] + }, + { + "pin1": { + "compName": "and#9", + "pinName": "B" + }, + "pin2": { + "compName": "WireCrossPoint#55", + "pinName": "" + }, + "name": "unnamedWire#162", + "path": [ + { + "x": 280.0, + "y": 130.0 + }, + { + "x": 280.0, + "y": 170.0 + } + ] + }, + { + "pin1": { + "compName": "and#4", + "pinName": "Y" + }, + "pin2": { + "compName": "WireCrossPoint#56", + "pinName": "" + }, + "name": "unnamedWire#163", + "path": [ + { + "x": 245.0, + "y": 210.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#56", + "pinName": "" + }, + "pin2": { + "compName": "and#9", + "pinName": "A" + }, + "name": "unnamedWire#164", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#30", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_WEZ" + }, + "name": "unnamedWire#165", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#31", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_WEC" + }, + "name": "unnamedWire#166", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#32", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_WEN" + }, + "name": "unnamedWire#167", + "path": [] + }, + { + "pin1": { + "compName": "NandGate#33", + "pinName": "Y" + }, + "pin2": { + "compName": "_submodelinterface", + "pinName": "muSR_WEOVR" + }, + "name": "unnamedWire#168", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#57", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#43", + "pinName": "" + }, + "name": "unnamedWire#169", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#57", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#30", + "pinName": "B" + }, + "name": "unnamedWire#170", + "path": [ + { + "x": 365.0, + "y": 205.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#43", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#31", + "pinName": "B" + }, + "name": "unnamedWire#171", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#42", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#32", + "pinName": "B" + }, + "name": "unnamedWire#172", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#42", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#33", + "pinName": "B" + }, + "name": "unnamedWire#173", + "path": [ + { + "x": 365.0, + "y": 355.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#43", + "pinName": "" + }, + "pin2": { + "compName": "WireCrossPoint#42", + "pinName": "" + }, + "name": "unnamedWire#174", + "path": [] + }, + { + "pin1": { + "compName": "WireCrossPoint#41", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#32", + "pinName": "A" + }, + "name": "unnamedWire#175", + "path": [ + { + "x": 315.0, + "y": 175.0 + }, + { + "x": 315.0, + "y": 295.0 + } + ] + }, + { + "pin1": { + "compName": "NandGate#34", + "pinName": "Y" + }, + "pin2": { + "compName": "NandGate#31", + "pinName": "A" + }, + "name": "unnamedWire#176", + "path": [ + { + "x": 360.0, + "y": 250.0 + }, + { + "x": 360.0, + "y": 245.0 + } + ] + }, + { + "pin1": { + "compName": "WireCrossPoint#27", + "pinName": "" + }, + "pin2": { + "compName": "NandGate#34", + "pinName": "A" + }, + "name": "unnamedWire#177", + "path": [ + { + "x": 270.0, + "y": 245.0 + } + ] + } + ], + "version": "0.1.1" + }, + "symbolRendererSnippetID": "simpleRectangularLike", + "symbolRendererParams": { + "centerText": "Instruction\ndecode", + "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/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java deleted file mode 100644 index db294b31..00000000 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/components/am2904/ModelAm2904RegCTInstrDecode.java +++ /dev/null @@ -1,301 +0,0 @@ -package net.mograsim.logic.model.am2900.components.am2904; - -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.ZERO; - -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.IndirectModelComponentCreator; -import net.mograsim.logic.model.snippets.symbolrenderers.PinNamesSymbolRenderer.PinNamesParams.Position; - -public class ModelAm2904RegCTInstrDecode extends SimpleRectangularHardcodedModelComponent -{ - public ModelAm2904RegCTInstrDecode(LogicModelModifiable model, String name) - { - super(model, "Am2904RegCTInstrDecode", name, "Instruction\ndecode", false); - setSize(80, 80); - addPin(new Pin(model, this, "I12-11", 2, PinUsage.INPUT, 0, 30), Position.RIGHT); - addPin(new Pin(model, this, "I5-0", 6, PinUsage.INPUT, 0, 50), Position.RIGHT); - // muSR MUX: - // 00: 0 - // 01: 1 - // 10: M - // 11: I - addPin(new Pin(model, this, "muSR_MUX", 2, PinUsage.OUTPUT, 80, 10), Position.LEFT); - addPin(new Pin(model, this, "muSR_OVRRET", 1, PinUsage.OUTPUT, 80, 20), Position.LEFT); - addPin(new Pin(model, this, "muSR_CINV", 1, PinUsage.OUTPUT, 80, 30), Position.LEFT); - addPin(new Pin(model, this, "muSR_WEZ", 1, PinUsage.OUTPUT, 80, 40), Position.LEFT); - addPin(new Pin(model, this, "muSR_WEC", 1, PinUsage.OUTPUT, 80, 50), Position.LEFT); - addPin(new Pin(model, this, "muSR_WEN", 1, PinUsage.OUTPUT, 80, 60), Position.LEFT); - addPin(new Pin(model, this, "muSR_WEOVR", 1, PinUsage.OUTPUT, 80, 70), Position.LEFT); - // MSR MUX: - // 000: 0 - // 001: 1 - // 010: mu - // 011: Y - // 100: I - // 101: I, invert C - // 110: Swap OVR and C - // 111: _M - addPin(new Pin(model, this, "MSR_MUX", 3, PinUsage.OUTPUT, 20, 0), Position.BOTTOM); - addPin(new Pin(model, this, "OEN", 1, PinUsage.OUTPUT, 60, 0), Position.BOTTOM); - // Y MUX: - // 00: mu - // 01: mu - // 10: M - // 11: I - addPin(new Pin(model, this, "Y_MUX", 2, PinUsage.OUTPUT, 10, 80), Position.TOP); - // CT MUX: - // see Am2900 Family Data Book, Am2904, Table 4 (CT_MUX2-0 = I3-1) - addPin(new Pin(model, this, "CT_MUX", 3, PinUsage.OUTPUT, 30, 80), Position.TOP); - addPin(new Pin(model, this, "CT_INV", 1, PinUsage.OUTPUT, 40, 80), Position.TOP); - addPin(new Pin(model, this, "CT_EXP", 1, PinUsage.OUTPUT, 50, 80), Position.TOP); - // C0 MUX: - // 00xx: 0 - // 01xx: 1 - // 10xx: CX - // 1100: muC - // 1101: _muC - // 1110: MC - // 1111: _MC - addPin(new Pin(model, this, "C0_MUX", 4, PinUsage.OUTPUT, 70, 80), Position.TOP); - - init(); - } - - @Override - public Object recalculate(Object lastState, Map readEnds, Map readWriteEnds) - { - Bit[] I5_0Bits = readEnds.get("I5-0").getValues().getBits(); - Bit[] I12_11Bits = readEnds.get("I12-11").getValues().getBits(); - - readWriteEnds.get("OEN").feedSignals(I5_0Bits[0].or(I5_0Bits[1]).or(I5_0Bits[2]).or(I5_0Bits[3]).or(I5_0Bits[4]).or(I5_0Bits[5])); - readWriteEnds.get("Y_MUX").feedSignals(I5_0Bits[0], I5_0Bits[1]); - readWriteEnds.get("CT_INV").feedSignals(I5_0Bits[5]); - readWriteEnds.get("CT_MUX").feedSignals(I5_0Bits[2], I5_0Bits[3], I5_0Bits[4]); - readWriteEnds.get("C0_MUX").feedSignals(I12_11Bits[0], I12_11Bits[1], I5_0Bits[0], - I5_0Bits[2].and(I5_0Bits[3].not()).and(I5_0Bits[4].not())); - - int IAsInt = 0; - for (int i = 0; i < 6; i++) - switch (I5_0Bits[5 - i]) - { - case ONE: - IAsInt |= 1 << i; - break; - case U: - readWriteEnds.get("muSR_MUX").feedSignals(U, U); - readWriteEnds.get("muSR_OVRRET").feedSignals(U); - readWriteEnds.get("muSR_CINV").feedSignals(U); - readWriteEnds.get("muSR_WEZ").feedSignals(U); - readWriteEnds.get("muSR_WEC").feedSignals(U); - readWriteEnds.get("muSR_WEN").feedSignals(U); - readWriteEnds.get("muSR_WEOVR").feedSignals(U); - readWriteEnds.get("MSR_MUX").feedSignals(U, U, U); - return null; - case X: - case Z: - readWriteEnds.get("muSR_MUX").feedSignals(X, X); - readWriteEnds.get("muSR_OVRRET").feedSignals(X); - readWriteEnds.get("muSR_CINV").feedSignals(X); - readWriteEnds.get("muSR_WEZ").feedSignals(X); - readWriteEnds.get("muSR_WEC").feedSignals(X); - readWriteEnds.get("muSR_WEN").feedSignals(X); - readWriteEnds.get("muSR_WEOVR").feedSignals(X); - readWriteEnds.get("MSR_MUX").feedSignals(X, X, X); - return null; - case ZERO: - break; - default: - throw new IllegalArgumentException("Unknown enum constant: " + I5_0Bits[i]); - } - - readWriteEnds.get("CT_EXP").feedSignals((IAsInt & 0b111110) == 0b001110 ? ONE : ZERO); - - switch (IAsInt) - { - case 0: - case 2: - readWriteEnds.get("muSR_MUX").feedSignals(ONE, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 1: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 3: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 6: - case 7: - readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ONE); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 8: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 9: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 10: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 11: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 12: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 13: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ZERO); - break; - case 14: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ZERO); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 15: - readWriteEnds.get("muSR_MUX").feedSignals(ZERO, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ZERO); - readWriteEnds.get("muSR_WEC").feedSignals(ZERO); - readWriteEnds.get("muSR_WEN").feedSignals(ZERO); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - case 24: - case 25: - case 40: - case 41: - case 56: - case 57: - readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ONE); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - break; - default: - readWriteEnds.get("muSR_MUX").feedSignals(ONE, ONE); - readWriteEnds.get("muSR_OVRRET").feedSignals(ZERO); - readWriteEnds.get("muSR_CINV").feedSignals(ZERO); - readWriteEnds.get("muSR_WEZ").feedSignals(ONE); - readWriteEnds.get("muSR_WEC").feedSignals(ONE); - readWriteEnds.get("muSR_WEN").feedSignals(ONE); - readWriteEnds.get("muSR_WEOVR").feedSignals(ONE); - } - switch (IAsInt) - { - case 0: - readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ONE); - break; - case 1: - readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ONE); - break; - case 2: - readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ONE, ZERO); - break; - case 3: - readWriteEnds.get("MSR_MUX").feedSignals(ZERO, ZERO, ZERO); - break; - case 4: - readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ZERO); - break; - case 5: - readWriteEnds.get("MSR_MUX").feedSignals(ONE, ONE, ONE); - break; - case 8: - case 9: - case 24: - case 25: - case 40: - case 41: - case 56: - case 57: - readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ONE); - break; - default: - readWriteEnds.get("MSR_MUX").feedSignals(ONE, ZERO, ZERO); - break; - } - return null; - } - - static - { - IndirectModelComponentCreator.setComponentSupplier(ModelAm2904RegCTInstrDecode.class.getCanonicalName(), - (m, p, n) -> new ModelAm2904RegCTInstrDecode(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 d4fe5b5c..3b94540b 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 @@ -1,7 +1,6 @@ { "Am2900MainMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MainMemory", "Am2900MicroInstructionMemory": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.ModelAm2900MicroInstructionMemory", - "Am2904RegCTInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904RegCTInstrDecode", "Am2904ShiftInstrDecode": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.am2904.ModelAm2904ShiftInstrDecode", "ram5_12": "resloader:Am2900Loader:class:net.mograsim.logic.model.am2900.components.Modelram5_12", @@ -17,6 +16,7 @@ "Am2904": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904.json", "Am2904MSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904MSR.json", "Am2904muSR": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904muSR.json", + "Am2904RegCTInstrDecode": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904RegCTInstrDecode.json", "Am2904TestLogic": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2904/Am2904TestLogic.json", "Am2910": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910.json", "Am2910InstrPLA": "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/am2910/Am2910InstrPLA.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 d82e41db..658f056b 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 @@ -10,6 +10,7 @@ import net.mograsim.logic.model.model.LogicModelModifiable; import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay; import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch; +import net.mograsim.logic.model.model.components.atomic.ModelTextComponent; import net.mograsim.logic.model.model.wires.ModelWire; import net.mograsim.logic.model.model.wires.Pin; import net.mograsim.logic.model.model.wires.PinUsage; @@ -27,7 +28,7 @@ public class ModelComponentTestbench { Am2900Loader.setup(); // ModelComponent comp = new StrictAm2900MachineDefinition().createNew(model).getAm2900(); - ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2910"); + ModelComponent comp = IndirectModelComponentCreator.createComponent(model, "Am2904"); List inputPinNames = new ArrayList<>(); List outputPinNames = new ArrayList<>(); @@ -47,6 +48,7 @@ public class ModelComponentTestbench String pinName = inputPinNames.get(i); ModelManualSwitch sw = new ModelManualSwitch(model, comp.getPin(pinName).logicWidth, pinName); sw.moveTo(0, 20 * i); + new ModelTextComponent(model, pinName).moveTo(20, 20 * i); new ModelWire(model, comp.getPin(pinName), sw.getOutputPin()); } for (int i = 0; i < outputPinNames.size(); i++) @@ -54,6 +56,7 @@ public class ModelComponentTestbench String pinName = outputPinNames.get(i); ModelBitDisplay bd = new ModelBitDisplay(model, comp.getPin(pinName).logicWidth, pinName); bd.moveTo(200, 20 * i); + new ModelTextComponent(model, pinName).moveTo(220, 20 * i); new ModelWire(model, comp.getPin(pinName), bd.getInputPin()); } } -- 2.17.1