Merge branch 'development' of https://gitlab.lrz.de/lrr-tum/students/eragp-misim...
authorFabian Stemmler <stemmler@in.tum.de>
Thu, 12 Sep 2019 12:10:48 +0000 (14:10 +0200)
committerFabian Stemmler <stemmler@in.tum.de>
Thu, 12 Sep 2019 12:10:48 +0000 (14:10 +0200)
13 files changed:
net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/Am2900.json
net.mograsim.logic.model.am2900/components/net/mograsim/logic/model/am2900/components/dff80.json
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java [new file with mode: 0644]
net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java [new file with mode: 0644]
net.mograsim.logic.model/src/net/mograsim/logic/model/model/components/atomic/SimpleRectangularHardcodedModelComponent.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java [deleted file]
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/StandardHighLevelStateHandlerSnippetSuppliers.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/BitVectorSplittingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/DelegatingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/atomic/WireForcingAtomicHighLevelStateHandler.java
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/subcomponent/DelegatingSubcomponentHighLevelStateHandler.java

index 63beee2..08b14e0 100644 (file)
@@ -5,6 +5,7 @@ Bundle-SymbolicName: net.mograsim.logic.model.am2900;singleton:=true
 Bundle-Version: 0.1.0.qualifier
 Export-Package: net.mograsim.logic.model.am2900,
  net.mograsim.logic.model.am2900.components,
+ net.mograsim.logic.model.am2900.components.am2901,
  net.mograsim.logic.model.am2900.components.am2904,
  net.mograsim.logic.model.am2900.components.am2910,
  net.mograsim.logic.model.am2900.machine,
index d007cc5..b713f6f 100644 (file)
@@ -17,7 +17,7 @@
         "id": "Am2901",
         "name": "Am2901#1",
         "pos": {
-          "x": 485.0,
+          "x": 535.0,
           "y": 240.0
         }
       },
@@ -25,7 +25,7 @@
         "id": "Am2901",
         "name": "Am2901#2",
         "pos": {
-          "x": 550.0,
+          "x": 650.0,
           "y": 240.0
         }
       },
@@ -33,7 +33,7 @@
         "id": "Am2901",
         "name": "Am2901#3",
         "pos": {
-          "x": 615.0,
+          "x": 765.0,
           "y": 240.0
         }
       },
@@ -41,8 +41,8 @@
         "id": "Am2904",
         "name": "Am2904#0",
         "pos": {
-          "x": 240.0,
-          "y": 241.0
+          "x": 245.0,
+          "y": 245.0
         }
       },
       {
@@ -82,8 +82,8 @@
         "id": "FixedOutput",
         "name": "FixedOutput#1",
         "pos": {
-          "x": 370.0,
-          "y": 301.0
+          "x": 325.0,
+          "y": 220.0
         },
         "params": {
           "bits": [
         "id": "FixedOutput",
         "name": "FixedOutput#6",
         "pos": {
-          "x": 210.0,
-          "y": 281.0
+          "x": 215.0,
+          "y": 235.0
         },
         "params": {
           "bits": [
         "id": "Splitter",
         "name": "Splitter#10",
         "pos": {
-          "x": 600.0,
-          "y": 395.0
+          "x": 860.0,
+          "y": 235.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         },
         "params": {
           "logicWidth": 80,
-          "orientation": "UP"
+          "orientation": "UP_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#17",
+        "pos": {
+          "x": 100.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 12,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#18",
+        "pos": {
+          "x": 220.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#19",
+        "pos": {
+          "x": 355.0,
+          "y": 570.0
+        },
+        "params": {
+          "logicWidth": 13,
+          "orientation": "DOWN"
         }
       },
       {
           "orientation": "RIGHT"
         }
       },
+      {
+        "id": "Splitter",
+        "name": "Splitter#20",
+        "pos": {
+          "x": 270.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 6,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#21",
+        "pos": {
+          "x": 390.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#22",
+        "pos": {
+          "x": 350.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#23",
+        "pos": {
+          "x": 425.0,
+          "y": 585.0
+        },
+        "params": {
+          "logicWidth": 6,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#24",
+        "pos": {
+          "x": 385.0,
+          "y": 585.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#25",
+        "pos": {
+          "x": 355.0,
+          "y": 585.0
+        },
+        "params": {
+          "logicWidth": 2,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#26",
+        "pos": {
+          "x": 620.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 16,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#27",
+        "pos": {
+          "x": 590.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#28",
+        "pos": {
+          "x": 560.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#29",
+        "pos": {
+          "x": 530.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "DOWN_ALT"
+        }
+      },
       {
         "id": "Splitter",
         "name": "Splitter#3",
         "pos": {
-          "x": 405.0,
-          "y": 395.0
+          "x": 515.0,
+          "y": 235.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#30",
+        "pos": {
+          "x": 490.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#31",
+        "pos": {
+          "x": 440.0,
+          "y": 655.0
+        },
+        "params": {
+          "logicWidth": 4,
+          "orientation": "DOWN_ALT"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#32",
+        "pos": {
+          "x": 590.0,
+          "y": 620.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#33",
+        "pos": {
+          "x": 530.0,
+          "y": 620.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#34",
+        "pos": {
+          "x": 560.0,
+          "y": 620.0
+        },
+        "params": {
+          "logicWidth": 3,
+          "orientation": "UP"
+        }
+      },
+      {
+        "id": "Splitter",
+        "name": "Splitter#35",
+        "pos": {
+          "x": 530.0,
+          "y": 600.0
+        },
+        "params": {
+          "logicWidth": 9,
+          "orientation": "DOWN"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#4",
         "pos": {
-          "x": 405.0,
-          "y": 435.0
+          "x": 515.0,
+          "y": 275.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#5",
         "pos": {
-          "x": 470.0,
-          "y": 395.0
+          "x": 630.0,
+          "y": 235.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#6",
         "pos": {
-          "x": 470.0,
-          "y": 435.0
+          "x": 630.0,
+          "y": 275.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#7",
         "pos": {
-          "x": 535.0,
-          "y": 435.0
+          "x": 745.0,
+          "y": 275.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#8",
         "pos": {
-          "x": 535.0,
-          "y": 395.0
+          "x": 745.0,
+          "y": 235.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "Splitter",
         "name": "Splitter#9",
         "pos": {
-          "x": 600.0,
-          "y": 435.0
+          "x": 860.0,
+          "y": 275.0
         },
         "params": {
           "logicWidth": 4,
-          "orientation": "RIGHT"
+          "orientation": "LEFT"
         }
       },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#10",
         "pos": {
-          "x": 414.0,
-          "y": 219.0
+          "x": 525.0,
+          "y": 220.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#11",
         "pos": {
-          "x": 409.0,
-          "y": 224.0
+          "x": 530.0,
+          "y": 225.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#12",
         "pos": {
-          "x": 266.0,
-          "y": 554.0
+          "x": 265.0,
+          "y": 555.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#13",
         "pos": {
-          "x": 244.0,
-          "y": 489.0
+          "x": 165.0,
+          "y": 500.0
         },
         "params": 1
       },
         },
         "params": 16
       },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#15",
+        "pos": {
+          "x": 50.0,
+          "y": 265.0
+        },
+        "params": 1
+      },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#16",
+        "pos": {
+          "x": 540.0,
+          "y": 615.0
+        },
+        "params": 1
+      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#5",
         "pos": {
-          "x": 234.0,
-          "y": 281.0
+          "x": 255.0,
+          "y": 235.0
         },
         "params": 1
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#6",
         "pos": {
-          "x": 524.0,
-          "y": 224.0
+          "x": 760.0,
+          "y": 225.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#7",
         "pos": {
-          "x": 529.0,
-          "y": 219.0
+          "x": 755.0,
+          "y": 220.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#8",
         "pos": {
-          "x": 464.0,
-          "y": 219.0
+          "x": 640.0,
+          "y": 220.0
         },
         "params": 4
       },
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#9",
         "pos": {
-          "x": 459.0,
-          "y": 224.0
+          "x": 645.0,
+          "y": 225.0
         },
         "params": 4
       },
         },
         "params": 16
       },
+      {
+        "id": "mux1_12",
+        "name": "mux1_12#0",
+        "pos": {
+          "x": 60.0,
+          "y": 260.0
+        }
+      },
       {
         "id": "mux1_16",
         "name": "mux1_16#0",
         "name": "unnamedWire#138",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O22"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "_CCEN"
+        },
+        "name": "unnamedWire#139",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "and#1",
       },
       {
         "pin1": {
-          "compName": "and#2",
-          "pinName": "A"
+          "compName": "Splitter#18",
+          "pinName": "O3"
         },
         "pin2": {
-          "compName": "and#0",
-          "pinName": "Y"
+          "compName": "Splitter#16",
+          "pinName": "O21"
         },
-        "name": "unnamedWire#15",
+        "name": "unnamedWire#140",
         "path": []
       },
       {
         "pin1": {
-          "compName": "and#0",
-          "pinName": "B"
+          "compName": "Splitter#16",
+          "pinName": "O20"
         },
         "pin2": {
-          "compName": "Am2901#2",
-          "pinName": "F\u003d0"
+          "compName": "Splitter#18",
+          "pinName": "O2"
         },
-        "name": "unnamedWire#16",
+        "name": "unnamedWire#141",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Am2901#3",
-          "pinName": "F\u003d0"
+          "compName": "Splitter#18",
+          "pinName": "O1"
         },
         "pin2": {
-          "compName": "and#0",
-          "pinName": "A"
+          "compName": "Splitter#16",
+          "pinName": "O19"
         },
-        "name": "unnamedWire#17",
+        "name": "unnamedWire#142",
         "path": []
       },
       {
         "pin1": {
-          "compName": "and#2",
-          "pinName": "Y"
+          "compName": "Splitter#16",
+          "pinName": "O18"
         },
         "pin2": {
-          "compName": "Am2904#0",
-          "pinName": "IZ"
+          "compName": "Splitter#18",
+          "pinName": "O0"
         },
-        "name": "unnamedWire#18",
+        "name": "unnamedWire#143",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Am2901#3",
-          "pinName": "OVR"
+          "compName": "Splitter#18",
+          "pinName": "I"
         },
         "pin2": {
-          "compName": "Am2904#0",
-          "pinName": "IOVR"
+          "compName": "Am2910#0",
+          "pinName": "I"
         },
-        "name": "unnamedWire#19",
+        "name": "unnamedWire#144",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Am2901#0",
-          "pinName": "RAMn+3"
+          "compName": "Splitter#17",
+          "pinName": "O11"
         },
         "pin2": {
-          "compName": "Am2901#1",
-          "pinName": "RAMn"
+          "compName": "Splitter#16",
+          "pinName": "O17"
         },
-        "name": "unnamedWire#2",
+        "name": "unnamedWire#145",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Am2901#3",
-          "pinName": "Cn+4"
+          "compName": "Splitter#16",
+          "pinName": "O16"
         },
         "pin2": {
-          "compName": "Am2904#0",
-          "pinName": "IC"
+          "compName": "Splitter#17",
+          "pinName": "O10"
         },
-        "name": "unnamedWire#20",
+        "name": "unnamedWire#146",
         "path": []
       },
       {
         "pin1": {
-          "compName": "Am2901#0",
-          "pinName": "Cn+4"
+          "compName": "Splitter#17",
+          "pinName": "O9"
         },
         "pin2": {
-          "compName": "Am2901#1",
-          "pinName": "Cn"
+          "compName": "Splitter#16",
+          "pinName": "O15"
+        },
+        "name": "unnamedWire#147",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O14"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#148",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O13"
+        },
+        "name": "unnamedWire#149",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "A"
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "Y"
+        },
+        "name": "unnamedWire#15",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#150",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O11"
+        },
+        "name": "unnamedWire#151",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O10"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#152",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O9"
+        },
+        "name": "unnamedWire#153",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#154",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#17",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#155",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#156",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "mux1_12#0",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Am2910#0",
+          "pinName": "D"
+        },
+        "name": "unnamedWire#157",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "mux1_12#0",
+          "pinName": "I1"
+        },
+        "pin2": {
+          "compName": "Splitter#17",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#158",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "mux1_12#0",
+          "pinName": "S"
+        },
+        "name": "unnamedWire#159",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#0",
+          "pinName": "B"
+        },
+        "pin2": {
+          "compName": "Am2901#2",
+          "pinName": "F\u003d0"
+        },
+        "name": "unnamedWire#16",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2910#0",
+          "pinName": "_MAP"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#15",
+          "pinName": ""
+        },
+        "name": "unnamedWire#160",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "dff16_invwe#0",
+          "pinName": "_WE"
+        },
+        "name": "unnamedWire#161",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#12",
+          "pinName": ""
+        },
+        "name": "unnamedWire#162",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#13",
+          "pinName": ""
+        },
+        "name": "unnamedWire#163",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O29"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_CEM"
+        },
+        "name": "unnamedWire#164",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O30"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "_CEmu"
+        },
+        "name": "unnamedWire#165",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O23"
+        },
+        "name": "unnamedWire#166",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O25"
+        },
+        "name": "unnamedWire#167",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O24"
+        },
+        "name": "unnamedWire#168",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O26"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#169",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "F\u003d0"
+        },
+        "pin2": {
+          "compName": "and#0",
+          "pinName": "A"
+        },
+        "name": "unnamedWire#17",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#20",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O27"
+        },
+        "name": "unnamedWire#170",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O28"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#171",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O31"
+        },
+        "name": "unnamedWire#172",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O32"
+        },
+        "pin2": {
+          "compName": "Splitter#22",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#173",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O33"
+        },
+        "name": "unnamedWire#174",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O34"
+        },
+        "pin2": {
+          "compName": "Splitter#22",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#175",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#21",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O35"
+        },
+        "name": "unnamedWire#176",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O36"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#177",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#20",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#178",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#22",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#179",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "and#2",
+          "pinName": "Y"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IZ"
+        },
+        "name": "unnamedWire#18",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#25",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#21",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#180",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#181",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#182",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#23",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#183",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#184",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#23",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#185",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#23",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O5"
+        },
+        "name": "unnamedWire#186",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#24",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#187",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#188",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#24",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#189",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "OVR"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IOVR"
+        },
+        "name": "unnamedWire#19",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#24",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#190",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#25",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O11"
+        },
+        "name": "unnamedWire#191",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "O12"
+        },
+        "pin2": {
+          "compName": "Splitter#25",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#192",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O15"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O73"
+        },
+        "name": "unnamedWire#193",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O72"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O14"
+        },
+        "name": "unnamedWire#194",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O13"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O71"
+        },
+        "name": "unnamedWire#195",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O70"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O12"
+        },
+        "name": "unnamedWire#196",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O11"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O69"
+        },
+        "name": "unnamedWire#197",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O68"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#198",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O9"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O67"
+        },
+        "name": "unnamedWire#199",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
+          "pinName": "RAMn+3"
+        },
+        "pin2": {
+          "compName": "Am2901#1",
+          "pinName": "RAMn"
+        },
+        "name": "unnamedWire#2",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#3",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "IC"
+        },
+        "name": "unnamedWire#20",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O66"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O8"
+        },
+        "name": "unnamedWire#200",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O7"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O65"
+        },
+        "name": "unnamedWire#201",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O64"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O6"
+        },
+        "name": "unnamedWire#202",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O63"
+        },
+        "name": "unnamedWire#203",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O62"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O4"
+        },
+        "name": "unnamedWire#204",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O61"
+        },
+        "name": "unnamedWire#205",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O60"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#206",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#26",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O59"
+        },
+        "name": "unnamedWire#207",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O58"
+        },
+        "pin2": {
+          "compName": "Splitter#26",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#208",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#27",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O57"
+        },
+        "name": "unnamedWire#209",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Am2901#0",
+          "pinName": "Cn+4"
+        },
+        "pin2": {
+          "compName": "Am2901#1",
+          "pinName": "Cn"
         },
         "name": "unnamedWire#21",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O56"
+        },
+        "pin2": {
+          "compName": "Splitter#27",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#210",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#27",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O55"
+        },
+        "name": "unnamedWire#211",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O54"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#212",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#28",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O53"
+        },
+        "name": "unnamedWire#213",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O52"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#214",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#29",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O51"
+        },
+        "name": "unnamedWire#215",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O50"
+        },
+        "pin2": {
+          "compName": "Splitter#29",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#216",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#29",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O49"
+        },
+        "name": "unnamedWire#217",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#30",
+          "pinName": "O3"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O48"
+        },
+        "name": "unnamedWire#218",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O47"
+        },
+        "pin2": {
+          "compName": "Splitter#30",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#219",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "Am2901#1",
         "name": "unnamedWire#22",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "Splitter#30",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O46"
+        },
+        "name": "unnamedWire#220",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O45"
+        },
+        "pin2": {
+          "compName": "Splitter#30",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#221",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#31",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O40"
+        },
+        "name": "unnamedWire#222",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O41"
+        },
+        "pin2": {
+          "compName": "Splitter#31",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#223",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#31",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#16",
+          "pinName": "O42"
+        },
+        "name": "unnamedWire#224",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#16",
+          "pinName": "O43"
+        },
+        "pin2": {
+          "compName": "Splitter#31",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#225",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#19",
+          "pinName": "O10"
+        },
+        "name": "unnamedWire#226",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#33",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#29",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#227",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#34",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#28",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#228",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#32",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Splitter#27",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#229",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "Am2901#2",
         "name": "unnamedWire#23",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#32",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#230",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#32",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#231",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O2"
+        },
+        "pin2": {
+          "compName": "Splitter#32",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#232",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#34",
+          "pinName": "O0"
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O3"
+        },
+        "name": "unnamedWire#233",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O4"
+        },
+        "pin2": {
+          "compName": "Splitter#34",
+          "pinName": "O1"
+        },
+        "name": "unnamedWire#234",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O5"
+        },
+        "pin2": {
+          "compName": "Splitter#34",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#235",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O6"
+        },
+        "pin2": {
+          "compName": "Splitter#33",
+          "pinName": "O0"
+        },
+        "name": "unnamedWire#236",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#33",
+          "pinName": "O1"
+        },
+        "pin2": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "name": "unnamedWire#237",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "Splitter#35",
+          "pinName": "O8"
+        },
+        "pin2": {
+          "compName": "Splitter#33",
+          "pinName": "O2"
+        },
+        "name": "unnamedWire#238",
+        "path": []
+      },
+      {
+        "pin1": {
+          "compName": "WireCrossPoint#16",
+          "pinName": ""
+        },
+        "pin2": {
+          "compName": "Splitter#35",
+          "pinName": "O7"
+        },
+        "name": "unnamedWire#239",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "Am2904#0",
         "name": "unnamedWire#24",
         "path": []
       },
+      {
+        "pin1": {
+          "compName": "Splitter#19",
+          "pinName": "I"
+        },
+        "pin2": {
+          "compName": "Am2904#0",
+          "pinName": "I"
+        },
+        "name": "unnamedWire#240",
+        "path": []
+      },
       {
         "pin1": {
           "compName": "WireCrossPoint#0",
index 3deaa21..e1f37bc 100644 (file)
@@ -27,7 +27,7 @@
       },
       "name": "Q",
       "logicWidth": 80,
-      "usage": "INPUT"
+      "usage": "OUTPUT"
     }
   ],
   "innerScale": 0.2,
         },
         "params": 1
       },
-      {
-        "id": "WireCrossPoint",
-        "name": "WireCrossPoint#10",
-        "pos": {
-          "x": 44.0,
-          "y": 694.0
-        },
-        "params": 1
-      },
       {
         "id": "WireCrossPoint",
         "name": "WireCrossPoint#2",
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#7",
+        "name": "WireCrossPoint#6",
         "pos": {
           "x": 44.0,
           "y": 614.0
       },
       {
         "id": "WireCrossPoint",
-        "name": "WireCrossPoint#9",
+        "name": "WireCrossPoint#7",
         "pos": {
           "x": 44.0,
           "y": 534.0
         },
         "params": 1
       },
+      {
+        "id": "WireCrossPoint",
+        "name": "WireCrossPoint#8",
+        "pos": {
+          "x": 44.0,
+          "y": 694.0
+        },
+        "params": 1
+      },
       {
         "id": "dff8",
         "name": "dff8#0",
         "pos": {
           "x": 50.0,
-          "y": 50.0
+          "y": 770.0
         }
       },
       {
         "name": "dff8#1",
         "pos": {
           "x": 50.0,
-          "y": 130.0
+          "y": 690.0
         }
       },
       {
         "name": "dff8#2",
         "pos": {
           "x": 50.0,
-          "y": 210.0
+          "y": 610.0
         }
       },
       {
         "name": "dff8#3",
         "pos": {
           "x": 50.0,
-          "y": 290.0
+          "y": 530.0
         }
       },
       {
         "name": "dff8#4",
         "pos": {
           "x": 50.0,
-          "y": 370.0
+          "y": 450.0
         }
       },
       {
         "name": "dff8#5",
         "pos": {
           "x": 50.0,
-          "y": 450.0
+          "y": 370.0
         }
       },
       {
         "name": "dff8#6",
         "pos": {
           "x": 50.0,
-          "y": 530.0
+          "y": 290.0
         }
       },
       {
         "name": "dff8#7",
         "pos": {
           "x": 50.0,
-          "y": 610.0
+          "y": 210.0
         }
       },
       {
         "name": "dff8#8",
         "pos": {
           "x": 50.0,
-          "y": 690.0
+          "y": 130.0
         }
       },
       {
         "name": "dff8#9",
         "pos": {
           "x": 50.0,
-          "y": 770.0
+          "y": 50.0
         }
       }
     ],
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#0",
+          "compName": "dff8#9",
           "pinName": "D"
         },
         "name": "unnamedWire#160",
       },
       {
         "pin1": {
-          "compName": "dff8#0",
+          "compName": "dff8#9",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#1",
+          "compName": "dff8#8",
           "pinName": "D"
         },
         "name": "unnamedWire#162",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#2",
+          "compName": "dff8#7",
           "pinName": "D"
         },
         "name": "unnamedWire#163",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#3",
+          "compName": "dff8#6",
           "pinName": "D"
         },
         "name": "unnamedWire#164",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#4",
+          "compName": "dff8#5",
           "pinName": "D"
         },
         "name": "unnamedWire#165",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#5",
+          "compName": "dff8#4",
           "pinName": "D"
         },
         "name": "unnamedWire#166",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#6",
+          "compName": "dff8#3",
           "pinName": "D"
         },
         "name": "unnamedWire#167",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#7",
+          "compName": "dff8#2",
           "pinName": "D"
         },
         "name": "unnamedWire#168",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#8",
+          "compName": "dff8#1",
           "pinName": "D"
         },
         "name": "unnamedWire#169",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#9",
+          "compName": "dff8#0",
           "pinName": "D"
         },
         "name": "unnamedWire#170",
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#9",
+          "compName": "dff8#0",
           "pinName": "Q"
         },
         "name": "unnamedWire#171",
       },
       {
         "pin1": {
-          "compName": "dff8#8",
+          "compName": "dff8#1",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#7",
+          "compName": "dff8#2",
           "pinName": "Q"
         },
         "name": "unnamedWire#173",
       },
       {
         "pin1": {
-          "compName": "dff8#6",
+          "compName": "dff8#3",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#5",
+          "compName": "dff8#4",
           "pinName": "Q"
         },
         "name": "unnamedWire#175",
       },
       {
         "pin1": {
-          "compName": "dff8#4",
+          "compName": "dff8#5",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#3",
+          "compName": "dff8#6",
           "pinName": "Q"
         },
         "name": "unnamedWire#177",
       },
       {
         "pin1": {
-          "compName": "dff8#2",
+          "compName": "dff8#7",
           "pinName": "Q"
         },
         "pin2": {
           "pinName": "I"
         },
         "pin2": {
-          "compName": "dff8#1",
+          "compName": "dff8#8",
           "pinName": "Q"
         },
         "name": "unnamedWire#179",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#0",
+          "compName": "dff8#9",
           "pinName": "C"
         },
         "name": "unnamedWire#183",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#1",
+          "compName": "dff8#8",
           "pinName": "C"
         },
         "name": "unnamedWire#184",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#2",
+          "compName": "dff8#7",
           "pinName": "C"
         },
         "name": "unnamedWire#187",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#3",
+          "compName": "dff8#6",
           "pinName": "C"
         },
         "name": "unnamedWire#189",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#4",
+          "compName": "dff8#5",
           "pinName": "C"
         },
         "name": "unnamedWire#191",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#5",
+          "compName": "dff8#4",
           "pinName": "C"
         },
         "name": "unnamedWire#193",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "name": "unnamedWire#194",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#6",
+          "compName": "dff8#3",
           "pinName": "C"
         },
         "name": "unnamedWire#195",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#9",
+          "compName": "WireCrossPoint#7",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "name": "unnamedWire#196",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#7",
+          "compName": "dff8#2",
           "pinName": "C"
         },
         "name": "unnamedWire#197",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#7",
+          "compName": "WireCrossPoint#6",
           "pinName": ""
         },
         "pin2": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "name": "unnamedWire#198",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#8",
+          "compName": "dff8#1",
           "pinName": "C"
         },
         "name": "unnamedWire#199",
       },
       {
         "pin1": {
-          "compName": "WireCrossPoint#10",
+          "compName": "WireCrossPoint#8",
           "pinName": ""
         },
         "pin2": {
-          "compName": "dff8#9",
+          "compName": "dff8#0",
           "pinName": "C"
         },
         "name": "unnamedWire#200",
     "pinLabelMargin": 0.5
   },
   "outlineRendererSnippetID": "default",
-  "highLevelStateHandlerSnippetID": "default",
+  "highLevelStateHandlerSnippetID": "standard",
+  "highLevelStateHandlerParams": {
+    "subcomponentHighLevelStates": {},
+    "atomicHighLevelStates": {
+      "q": {
+        "id": "bitVectorSplitting",
+        "params": {
+          "vectorPartTargets": [
+            "q80-73",
+            "q72-65",
+            "q64-57",
+            "q56-49",
+            "q48-41",
+            "q40-33",
+            "q32-25",
+            "q24-17",
+            "q16-9",
+            "q8-1"
+          ],
+          "vectorPartLengthes": [
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8,
+            8
+          ]
+        }
+      },
+      "q1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q1"
+        }
+      },
+      "q10": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q2"
+        }
+      },
+      "q11": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q3"
+        }
+      },
+      "q12": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q4"
+        }
+      },
+      "q13": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q5"
+        }
+      },
+      "q14": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q6"
+        }
+      },
+      "q15": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q7"
+        }
+      },
+      "q16": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q8"
+        }
+      },
+      "q16-9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q"
+        }
+      },
+      "q17": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q1"
+        }
+      },
+      "q18": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q2"
+        }
+      },
+      "q19": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q3"
+        }
+      },
+      "q2": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q2"
+        }
+      },
+      "q20": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q4"
+        }
+      },
+      "q21": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q5"
+        }
+      },
+      "q22": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q6"
+        }
+      },
+      "q23": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q7"
+        }
+      },
+      "q24": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q8"
+        }
+      },
+      "q24-17": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#2",
+          "subStateID": "q"
+        }
+      },
+      "q25": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q1"
+        }
+      },
+      "q26": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q2"
+        }
+      },
+      "q27": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q3"
+        }
+      },
+      "q28": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q4"
+        }
+      },
+      "q29": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q5"
+        }
+      },
+      "q3": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q3"
+        }
+      },
+      "q30": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q6"
+        }
+      },
+      "q31": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q7"
+        }
+      },
+      "q32": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q8"
+        }
+      },
+      "q32-25": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#3",
+          "subStateID": "q"
+        }
+      },
+      "q33": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q1"
+        }
+      },
+      "q34": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q2"
+        }
+      },
+      "q35": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q3"
+        }
+      },
+      "q36": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q4"
+        }
+      },
+      "q37": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q5"
+        }
+      },
+      "q38": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q6"
+        }
+      },
+      "q39": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q7"
+        }
+      },
+      "q4": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q4"
+        }
+      },
+      "q40": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q8"
+        }
+      },
+      "q40-33": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#4",
+          "subStateID": "q"
+        }
+      },
+      "q41": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q1"
+        }
+      },
+      "q42": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q2"
+        }
+      },
+      "q43": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q3"
+        }
+      },
+      "q44": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q4"
+        }
+      },
+      "q45": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q5"
+        }
+      },
+      "q46": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q6"
+        }
+      },
+      "q47": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q7"
+        }
+      },
+      "q48": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q8"
+        }
+      },
+      "q48-41": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#5",
+          "subStateID": "q"
+        }
+      },
+      "q49": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q1"
+        }
+      },
+      "q5": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q5"
+        }
+      },
+      "q50": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q2"
+        }
+      },
+      "q51": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q3"
+        }
+      },
+      "q52": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q4"
+        }
+      },
+      "q53": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q5"
+        }
+      },
+      "q54": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q6"
+        }
+      },
+      "q55": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q7"
+        }
+      },
+      "q56": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q8"
+        }
+      },
+      "q56-49": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#6",
+          "subStateID": "q"
+        }
+      },
+      "q57": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q1"
+        }
+      },
+      "q58": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q2"
+        }
+      },
+      "q59": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q3"
+        }
+      },
+      "q6": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q6"
+        }
+      },
+      "q60": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q4"
+        }
+      },
+      "q61": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q5"
+        }
+      },
+      "q62": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q6"
+        }
+      },
+      "q63": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q7"
+        }
+      },
+      "q64": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q8"
+        }
+      },
+      "q64-57": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#7",
+          "subStateID": "q"
+        }
+      },
+      "q65": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q1"
+        }
+      },
+      "q66": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q2"
+        }
+      },
+      "q67": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q3"
+        }
+      },
+      "q68": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q4"
+        }
+      },
+      "q69": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q5"
+        }
+      },
+      "q7": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q7"
+        }
+      },
+      "q70": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q6"
+        }
+      },
+      "q71": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q7"
+        }
+      },
+      "q72": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q8"
+        }
+      },
+      "q72-65": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#8",
+          "subStateID": "q"
+        }
+      },
+      "q73": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q1"
+        }
+      },
+      "q74": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q2"
+        }
+      },
+      "q75": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q3"
+        }
+      },
+      "q76": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q4"
+        }
+      },
+      "q77": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q5"
+        }
+      },
+      "q78": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q6"
+        }
+      },
+      "q79": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q7"
+        }
+      },
+      "q8": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q8"
+        }
+      },
+      "q8-1": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#0",
+          "subStateID": "q"
+        }
+      },
+      "q80": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q8"
+        }
+      },
+      "q80-73": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#9",
+          "subStateID": "q"
+        }
+      },
+      "q9": {
+        "id": "delegating",
+        "params": {
+          "delegateTarget": "dff8#1",
+          "subStateID": "q1"
+        }
+      }
+    }
+  },
   "version": "0.1.5"
 }
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/GenerateDff80HighLevelStateHandler.java
new file mode 100644 (file)
index 0000000..7a16134
--- /dev/null
@@ -0,0 +1,74 @@
+package net.mograsim.logic.model.examples;
+
+import java.util.ArrayList;
+
+import net.mograsim.logic.model.am2900.Am2900Loader;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
+import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
+import net.mograsim.logic.model.serializing.IdentifyParams;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.BitVectorSplittingAtomicHighLevelStateHandler.BitVectorSplittingAtomicHighLevelStateHandlerParams;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.DelegatingAtomicHighLevelStateHandler.DelegatingAtomicHighLevelStateHandlerParams;
+
+public class GenerateDff80HighLevelStateHandler
+{
+       public static void main(String[] args)
+       {
+               Am2900Loader.setup();
+               LogicModelModifiable model = new LogicModelModifiable();
+               DeserializedSubmodelComponent comp = new DeserializedSubmodelComponent(model, null, null, null);
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#0");// LSB
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#1");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#2");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#3");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#4");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#5");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#6");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#7");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#8");
+               IndirectModelComponentCreator.createComponent(comp.getSubmodelModifiable(), "dff8", "dff8#9");// MSB
+
+               StandardHighLevelStateHandler hlsh = new StandardHighLevelStateHandler(comp);
+               comp.setHighLevelStateHandler(hlsh);
+               BitVectorSplittingAtomicHighLevelStateHandlerParams p = new BitVectorSplittingAtomicHighLevelStateHandlerParams();
+               p.vectorPartLengthes = new ArrayList<>();
+               p.vectorPartTargets = new ArrayList<>();
+               for (int i = 0; i < 10; i++)
+               {
+                       addHandlersForByte(comp, hlsh, i, p);
+               }
+               hlsh.addAtomicHighLevelState("q", new BitVectorSplittingAtomicHighLevelStateHandler(comp, p));
+
+               System.out.println(comp.getHighLevelStateHandler().getParamsForSerializingJSON(new IdentifyParams()));
+       }
+
+       private static void addHandlersForByte(SubmodelComponent comp, StandardHighLevelStateHandler hlsh, int LSByteIndex,
+                       BitVectorSplittingAtomicHighLevelStateHandlerParams p2)
+       {
+               // TODO remove the "+ 1" as soon as HighLevelStates count from 0
+               // Also replace the 1 in "bitIndexInByte = 1" below with a 0
+               int LSBitIndex = LSByteIndex * 8 + 1;
+               int MSBitIndex = LSBitIndex + 7;
+               String dffThisByte = "dff8#" + LSByteIndex;
+               String thisByteHLSID = "q" + MSBitIndex + "-" + LSBitIndex;
+
+               p2.vectorPartLengthes.add(0, 8);
+               p2.vectorPartTargets.add(0, thisByteHLSID);
+
+               DelegatingAtomicHighLevelStateHandlerParams p = new DelegatingAtomicHighLevelStateHandlerParams();
+               p.delegateTarget = dffThisByte;
+               p.subStateID = "q";
+               hlsh.addAtomicHighLevelState(thisByteHLSID, new DelegatingAtomicHighLevelStateHandler(comp, p));
+               for (int bitIndexOuter = LSBitIndex, bitIndexInByte = 1; bitIndexOuter <= MSBitIndex; bitIndexOuter++, bitIndexInByte++)
+               {
+                       p = new DelegatingAtomicHighLevelStateHandlerParams();
+                       p.delegateTarget = dffThisByte;
+                       p.subStateID = "q" + bitIndexInByte;
+                       hlsh.addAtomicHighLevelState("q" + bitIndexOuter, new DelegatingAtomicHighLevelStateHandler(comp, p));
+               }
+       }
+}
\ No newline at end of file
diff --git a/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java b/net.mograsim.logic.model.am2900/test/net/mograsim/logic/model/JavaJsonLineCounter.java
new file mode 100644 (file)
index 0000000..2f6cd4e
--- /dev/null
@@ -0,0 +1,35 @@
+package net.mograsim.logic.model;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+public class JavaJsonLineCounter
+{
+       public static void main(String[] args) throws IOException
+       {
+               printLineCount("..", "java");
+               printLineCount("..", "json");
+       }
+
+       private static void printLineCount(String path, String filetype) throws IOException
+       {
+               long lineCount = Files.walk(Paths.get(path)).filter(Files::isRegularFile).filter(p -> p.toString().endsWith('.' + filetype))
+                               .flatMap((Function<Path, Stream<String>>) p ->
+                               {
+                                       try
+                                       {
+                                               return Files.lines(p);
+                                       }
+                                       catch (IOException e)
+                                       {
+                                               throw new UncheckedIOException(e);
+                                       }
+                               }).count();
+               System.out.println("Total lines in " + filetype + " files: " + lineCount);
+       }
+}
\ No newline at end of file
index d47b44d..8971285 100644 (file)
@@ -38,6 +38,11 @@ public abstract class SimpleRectangularHardcodedModelComponent extends ModelComp
 
        // creation and destruction
 
+       public SimpleRectangularHardcodedModelComponent(LogicModelModifiable model, String id, String name, String centerText)
+       {
+               this(model, id, name, centerText, true);
+       }
+
        public SimpleRectangularHardcodedModelComponent(LogicModelModifiable model, String id, String name, String centerText, boolean callInit)
        {
                super(model, name, false);
diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/highlevelstatehandlers/standard/HighLevelStateHandlerContext.java
deleted file mode 100644 (file)
index ba3ae19..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-package net.mograsim.logic.model.snippets.highlevelstatehandlers.standard;
-
-import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
-
-public class HighLevelStateHandlerContext
-{
-       public final SubmodelComponent component;
-       public final String stateID;
-
-       public HighLevelStateHandlerContext(SubmodelComponent component, String stateID)
-       {
-               this.component = component;
-               this.stateID = stateID;
-       }
-}
\ No newline at end of file
index c5eb6da..58e8e64 100644 (file)
@@ -54,16 +54,15 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        }
 
        public <P, H extends SubcomponentHighLevelStateHandler> H addSubcomponentHighLevelState(String subcomponentStateID,
-                       BiFunction<HighLevelStateHandlerContext, P, H> handlerConstructor, P handlerParams)
+                       BiFunction<SubmodelComponent, P, H> handlerConstructor, P handlerParams)
        {
                return addSubcomponentHighLevelState(subcomponentStateID, c -> handlerConstructor.apply(c, handlerParams));
        }
 
        public <H extends SubcomponentHighLevelStateHandler> H addSubcomponentHighLevelState(String subcomponentStateID,
-                       Function<HighLevelStateHandlerContext, H> handlerConstructor)
+                       Function<SubmodelComponent, H> handlerConstructor)
        {
-               HighLevelStateHandlerContext context = new HighLevelStateHandlerContext(component, subcomponentStateID);
-               H handler = handlerConstructor.apply(context);
+               H handler = handlerConstructor.apply(component);
                addSubcomponentHighLevelState(subcomponentStateID, handler);
                return handler;
        }
@@ -93,16 +92,15 @@ public class StandardHighLevelStateHandler implements HighLevelStateHandler
        }
 
        public <P, H extends AtomicHighLevelStateHandler> H addAtomicHighLevelState(String subcomponentStateID,
-                       BiFunction<HighLevelStateHandlerContext, P, H> handlerConstructor, P handlerParams)
+                       BiFunction<SubmodelComponent, P, H> handlerConstructor, P handlerParams)
        {
                return addAtomicHighLevelState(subcomponentStateID, c -> handlerConstructor.apply(c, handlerParams));
        }
 
        public <H extends AtomicHighLevelStateHandler> H addAtomicHighLevelState(String subcomponentStateID,
-                       Function<HighLevelStateHandlerContext, H> handlerConstructor)
+                       Function<SubmodelComponent, H> handlerConstructor)
        {
-               HighLevelStateHandlerContext context = new HighLevelStateHandlerContext(component, subcomponentStateID);
-               H handler = handlerConstructor.apply(context);
+               H handler = handlerConstructor.apply(component);
                addAtomicHighLevelState(subcomponentStateID, handler);
                return handler;
        }
index d052cb1..158adda 100644 (file)
@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
+import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.snippets.CodeSnippetSupplier;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.atomic.AtomicHighLevelStateHandler;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.subcomponent.SubcomponentHighLevelStateHandler;
@@ -11,8 +12,8 @@ import net.mograsim.logic.model.util.JsonHandler;
 
 public class StandardHighLevelStateHandlerSnippetSuppliers
 {
-       public static final CodeSnippetSupplier<HighLevelStateHandlerContext, AtomicHighLevelStateHandler> atomicHandlerSupplier;
-       public static final CodeSnippetSupplier<HighLevelStateHandlerContext, SubcomponentHighLevelStateHandler> subcomponentHandlerSupplier;
+       public static final CodeSnippetSupplier<SubmodelComponent, AtomicHighLevelStateHandler> atomicHandlerSupplier;
+       public static final CodeSnippetSupplier<SubmodelComponent, SubcomponentHighLevelStateHandler> subcomponentHandlerSupplier;
 
        static
        {
index 443f847..7ae2912 100644 (file)
@@ -9,7 +9,6 @@ import net.mograsim.logic.core.types.BitVector;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
@@ -21,15 +20,15 @@ public class BitVectorSplittingAtomicHighLevelStateHandler implements AtomicHigh
        private final List<Integer> vectorPartLengthesUnmodifiable;
        private int length;
 
-       public BitVectorSplittingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public BitVectorSplittingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public BitVectorSplittingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context,
+       public BitVectorSplittingAtomicHighLevelStateHandler(SubmodelComponent component,
                        BitVectorSplittingAtomicHighLevelStateHandlerParams params)
        {
-               this.component = context.component;
+               this.component = component;
                this.vectorPartTargets = new ArrayList<>();
                this.vectorPartTargetsUnmodifiable = Collections.unmodifiableList(vectorPartTargets);
                this.vectorPartLengthes = new ArrayList<>();
index e91c0c4..9d2645d 100644 (file)
@@ -4,7 +4,6 @@ import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
@@ -13,14 +12,14 @@ public class DelegatingAtomicHighLevelStateHandler implements AtomicHighLevelSta
        private ModelComponent delegateTarget;
        private String subStateID;
 
-       public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public DelegatingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public DelegatingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context, DelegatingAtomicHighLevelStateHandlerParams params)
+       public DelegatingAtomicHighLevelStateHandler(SubmodelComponent component, DelegatingAtomicHighLevelStateHandlerParams params)
        {
-               this.parentComponent = context.component;
+               this.parentComponent = component;
                if (params != null)
                {
                        // TODO document this
index ac0f8a4..276f541 100644 (file)
@@ -13,7 +13,6 @@ import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.model.wires.ModelWire;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelStateHandler
@@ -25,14 +24,14 @@ public class WireForcingAtomicHighLevelStateHandler implements AtomicHighLevelSt
        private final List<ModelWire> wiresToForceInverted;
        private final List<ModelWire> wiresToForceInvertedUnmodifiable;
 
-       public WireForcingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public WireForcingAtomicHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public WireForcingAtomicHighLevelStateHandler(HighLevelStateHandlerContext context, WireForcingAtomicHighLevelStateHandlerParams params)
+       public WireForcingAtomicHighLevelStateHandler(SubmodelComponent component, WireForcingAtomicHighLevelStateHandlerParams params)
        {
-               this.component = context.component;
+               this.component = component;
                this.wiresToForce = new ArrayList<>();
                this.wiresToForceUnmodifiable = Collections.unmodifiableList(wiresToForce);
                this.wiresToForceInverted = new ArrayList<>();
index 069a6cb..12a9888 100644 (file)
@@ -4,7 +4,6 @@ import net.mograsim.logic.model.model.components.ModelComponent;
 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
 import net.mograsim.logic.model.serializing.IdentifyParams;
 import net.mograsim.logic.model.snippets.SnippetDefinintion;
-import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.HighLevelStateHandlerContext;
 import net.mograsim.logic.model.snippets.highlevelstatehandlers.standard.StandardHighLevelStateHandlerSnippetSuppliers;
 
 public class DelegatingSubcomponentHighLevelStateHandler implements SubcomponentHighLevelStateHandler
@@ -13,15 +12,15 @@ public class DelegatingSubcomponentHighLevelStateHandler implements Subcomponent
        private ModelComponent delegateTarget;
        private String prefix;
 
-       public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context)
+       public DelegatingSubcomponentHighLevelStateHandler(SubmodelComponent component)
        {
-               this(context, null);
+               this(component, null);
        }
 
-       public DelegatingSubcomponentHighLevelStateHandler(HighLevelStateHandlerContext context,
+       public DelegatingSubcomponentHighLevelStateHandler(SubmodelComponent component,
                        DelegatingSubcomponentHighLevelStateHandlerParams params)
        {
-               this.parentComponent = context.component;
+               this.parentComponent = component;
                if (params != null)
                {
                        // TODO document this