diff --git a/Config/Mappings.py b/Config/Mappings.py index fc55157..261ca10 100644 --- a/Config/Mappings.py +++ b/Config/Mappings.py @@ -7,19 +7,21 @@ "invoke": 1.0, "return": 0.0, } -interruptToNumberMapping = {"TX_RX_TIMER_TOP": "#7", - "TX_RX_TIMER_CENTER": "#8", +interruptToNumberMapping = {"TX_TIMER_INTERRUPT": "#7", + "LOCAL_TIME_TIMER_INTERRUPT": "#8", "TX_RX_TIMER_OVERVLOW": "#9", - #"TX_RX_TIMEOUT_INTERRUPT": "#20", + # "TX_RX_TIMEOUT_INTERRUPT": "#20", "NORTH_RECEPTION": "#19", "EAST_RECEPTION": "#3", "SOUTH_RECEPTION": "#2", } -interruptToNameMapping = {"TX_RX_TIMER_TOP": "counter1 comp. A (top)", - "TX_RX_TIMER_CENTER": "counter1 comp. B (center)", +interruptToNameMapping = {"TX_TIMER_INTERRUPT": "counter1 comp. A (top)", + "LOCAL_TIME_TIMER_INTERRUPT": "counter1 comp. B (center)", "TX_RX_TIMEOUT_INTERRUPT": "counter0 comp. A", "NORTH_RECEPTION": "north reception", + "EAST_RECEPTION": "east reception", + "SOUTH_RECEPTION": "south reception", } interruptDomainToNameMapping = {"post": "un-/posting", @@ -42,6 +44,7 @@ "'R'": "INITIATOR_STATE_TYPE_WAIT_FOR_RESPONSE", "'A'": "INITIATOR_STATE_TYPE_TRANSMIT_ACK", "'f'": "INITIATOR_STATE_TYPE_TRANSMIT_ACK_WAIT_FOR_TX_FINISHED", + "'d'": "RECEPTIONIST_STATE_TYPE_IDLE", "'r'": "RECEPTIONIST_STATE_TYPE_RECEIVE", "'a'": "RECEPTIONIST_STATE_TYPE_TRANSMIT_ACK", @@ -59,12 +62,25 @@ "'x'": "x", "'X'": "X", - "'b'" : "counter timeout", - "'u'" : "error: decode/interpreter", + "'b'": "counter timeout", + "'u'": "error: decode/interpreter", "'y'": "command executing", "'Y'": "command executing done", - "'z'" : "enter sleep mode", - "'Z'" : "exit sleep mode", -} \ No newline at end of file + "'z'": "enter sleep mode", + "'Z'": "exit sleep mode", + + "'o'" : "enable north rx", + "'q'" : "enable east rx", + "'m'" : "enable south rx", + "'O'": "enable north rx", + "'Q'": "enable east rx", + "'N'": "enable south rx", + + "'9'": "parity error", + "'8'": "buffer overfow", + + "'t'": "tx start", + "'U'": "tx end", +} diff --git a/Network2x1.py b/Network2x1.py index b9dbcc7..636b43f 100644 --- a/Network2x1.py +++ b/Network2x1.py @@ -53,6 +53,56 @@ xData, yData, annotations = dataFilter.getData(filter) dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + for id in range(0, nodesTotal): + interruptName = "NORTH_RECEPTION" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + + interruptName = "EAST_RECEPTION" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + + interruptName = "SOUTH_RECEPTION" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + + interruptName = "SOUTH_RECEPTION" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] enable %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="enable", + interruptName=interruptName) + + interruptName = "SOUTH_RECEPTION" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] post %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="post", + interruptName=interruptName) + + interruptName = "LOCAL_TIME_TIMER_INTERRUPT" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + + interruptName = "TX_TIMER_INTERRUPT" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke %s" % (id, interruptName)), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + dataPlotter.setWindowTitle("Network %sx%s Simulation" % (numRows, numColumns)) dataFilter.printValues() dataPlotter.plot() diff --git a/Network2x2-approximation-values.py b/Network2x2-approximation-values.py new file mode 100644 index 0000000..ac167ef --- /dev/null +++ b/Network2x2-approximation-values.py @@ -0,0 +1,85 @@ +from Config import Input as inputConfig +from Config import Mappings as mappingConfig +from Config.Mappings import charOutToHumanReadableAnnotation +from LogSamplePlot import Filter as fltr +from LogSamplePlot import Plotter as pltr + +if __name__ == "__main__": + dataFilter = fltr.Filter(inputConfig.logFile, mappingConfig.wireToFloatValueMapping) + dataPlotter = pltr.Plotter() + + numRows, numColumns = 2, 2 + nodesTotal = numRows * numColumns + + # wires plots + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="WIRE", name="tx-north", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-east", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-south", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # interrupt plots + for id in range(0, nodesTotal): + interruptName = "LOCAL_TIME_TIMER_INTERRUPT" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke" % id), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="invoke", + interruptName=interruptName) + + interruptName = "TX_RX_TIMER_OVERVLOW" + dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) + pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] post" % id), nodeId=id, + interruptToNumberMapping=mappingConfig.interruptToNumberMapping, + facet="post", + interruptName=interruptName) + + # char out plots + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="char-out", nodeId=id) + dataFilter.removeSamples(filter) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + annotations = pltr.reMapAnnotation(annotations, charOutToHumanReadableAnnotation) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # int16 out plots + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="int16-out", nodeId=id) + dataFilter.removeSamples(filter) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # node state plots + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="Particle.node.state", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # approximation values plots + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="Particle.timeSynchronization.progressiveMean[3]", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="SRAM", name="Particle.timeSynchronization.mean[3]", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + dataPlotter.setWindowTitle("Network %sx%s Simulation" % (numRows, numColumns)) + dataFilter.printValues() + dataPlotter.plot() diff --git a/Network2x2-pdu-length-vs-de-coding.py b/Network2x2-pdu-length-vs-de-coding.py index 7680af7..3df6c7c 100644 --- a/Network2x2-pdu-length-vs-de-coding.py +++ b/Network2x2-pdu-length-vs-de-coding.py @@ -82,7 +82,6 @@ interruptName = "TX_RX_TIMER_OVERVLOW" dataFilter.setValueMapping(mappingConfig.interruptToFloatValueMapping) - pltr.addInterruptPlot(dataFilter, dataPlotter, title=("[%s] invoke" % id), nodeId=id, interruptToNumberMapping=mappingConfig.interruptToNumberMapping, facet="invoke", diff --git a/Network2x3.py b/Network2x3.py new file mode 100644 index 0000000..70ebbd2 --- /dev/null +++ b/Network2x3.py @@ -0,0 +1,75 @@ +from collections import OrderedDict + +from Config.Mappings import charOutToHumanReadableAnnotation +from LogSamplePlot import Plotter as pltr +from LogSamplePlot import Filter as fltr +from Config import Mappings as mappingConfig +from Config import Input as inputConfig + +if __name__ == "__main__": + dataFilter = fltr.Filter(inputConfig.logFile, mappingConfig.wireToFloatValueMapping) + dataPlotter = pltr.Plotter() + + numRows, numColumns = 2, 3 + nodesTotal = numRows * numColumns + + filter = fltr.SampleFilter(domain="WIRE", name="tx-south", nodeId=0) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-north", nodeId=1) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-east", nodeId=0) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-north", nodeId=2) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-south", nodeId=2) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + filter = fltr.SampleFilter(domain="WIRE", name="tx-north", nodeId=3) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # char out plots + + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="char-out", nodeId=id) + dataFilter.removeSamples(filter) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + annotations = pltr.reMapAnnotation(annotations, charOutToHumanReadableAnnotation) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # int16 out plots + + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="int16-out", nodeId=id) + dataFilter.removeSamples(filter) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + # node state plots + + for id in range(0, nodesTotal): + filter = fltr.SampleFilter(domain="SRAM", name="Particle.node.state", nodeId=id) + dataFilter.filter(filter) + xData, yData, annotations = dataFilter.getData(filter) + dataPlotter.addPlot(xData, yData, annotations, "[%s] %s" % (filter.nodeId, filter.name)) + + dataPlotter.setWindowTitle("Network %sx%s Simulation" % (numRows, numColumns)) + dataFilter.printValues() + dataPlotter.plot() \ No newline at end of file