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