1417 lines
31 KiB
Plaintext
1417 lines
31 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 263,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Using plotly\n",
|
|
"import plotly.graph_objects as go\n",
|
|
"import numpy as np"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Define data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 264,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"data = pd.read_csv('stack_and_functions.csv').to_dict(orient='records')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Create block diagram"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 266,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"application/vnd.plotly.v1+json": {
|
|
"config": {
|
|
"plotlyServerURL": "https://plot.ly"
|
|
},
|
|
"data": [
|
|
{
|
|
"marker": {
|
|
"color": "#768f95"
|
|
},
|
|
"mode": "text",
|
|
"name": "BootROM",
|
|
"text": "BootROM",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
2.1463414634146343
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#2564cb"
|
|
},
|
|
"mode": "text",
|
|
"name": "BL1 boot entry point",
|
|
"text": "BL1 boot entry point",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
4.628048780487806
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#9e0519"
|
|
},
|
|
"mode": "text",
|
|
"name": "Boot USB function",
|
|
"text": "Boot USB function",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
5.298780487804878
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#2f0c12"
|
|
},
|
|
"mode": "text",
|
|
"name": "bootrom authentication function",
|
|
"text": "bootrom authentication function",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
5.969512195121951
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#7e4e8a"
|
|
},
|
|
"mode": "text",
|
|
"name": "BL1 boot function",
|
|
"text": "BL1 boot function",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
6.640243902439026
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#43f7e5"
|
|
},
|
|
"mode": "text",
|
|
"name": "Frederic Destination pointer",
|
|
"text": "Frederic Destination pointer",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
7.310975609756099
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#d4b036"
|
|
},
|
|
"mode": "text",
|
|
"name": "Boot USB return address",
|
|
"text": "Boot USB return address",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
7.981707317073173
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#574d7b"
|
|
},
|
|
"mode": "text",
|
|
"name": "Event buffer pointer",
|
|
"text": "Event buffer pointer",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
8.652439024390247
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#34619d"
|
|
},
|
|
"mode": "text",
|
|
"name": "BL1 pointer",
|
|
"text": "BL1 pointer",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
9.32317073170732
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#57f720"
|
|
},
|
|
"mode": "text",
|
|
"name": "First debugger location",
|
|
"text": "First debugger location",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
9.993902439024394
|
|
]
|
|
},
|
|
{
|
|
"marker": {
|
|
"color": "#dca8fd"
|
|
},
|
|
"mode": "text",
|
|
"name": "End of memory stack",
|
|
"text": "End of memory stack",
|
|
"textposition": "middle center",
|
|
"type": "scatter",
|
|
"x": [
|
|
0.5
|
|
],
|
|
"y": [
|
|
10.664634146341468
|
|
]
|
|
}
|
|
],
|
|
"layout": {
|
|
"autosize": true,
|
|
"font": {
|
|
"size": 18
|
|
},
|
|
"height": 1200,
|
|
"legend": {
|
|
"title": {
|
|
"text": "Function/Locations"
|
|
}
|
|
},
|
|
"margin": {
|
|
"b": 20,
|
|
"l": 200,
|
|
"r": 20,
|
|
"t": 20
|
|
},
|
|
"shapes": [
|
|
{
|
|
"fillcolor": "#768f95",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 0,
|
|
"y1": 4.2926829268292686
|
|
},
|
|
{
|
|
"fillcolor": "#2564cb",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0,
|
|
"x1": 1,
|
|
"y0": 4.2926829268292686,
|
|
"y1": 4.963414634146342
|
|
},
|
|
{
|
|
"fillcolor": "#9e0519",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 4.963414634146342,
|
|
"y1": 5.634146341463415
|
|
},
|
|
{
|
|
"fillcolor": "#2f0c12",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 5.634146341463415,
|
|
"y1": 6.3048780487804885
|
|
},
|
|
{
|
|
"fillcolor": "#7e4e8a",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 6.3048780487804885,
|
|
"y1": 6.975609756097562
|
|
},
|
|
{
|
|
"fillcolor": "#43f7e5",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 6.975609756097562,
|
|
"y1": 7.646341463414636
|
|
},
|
|
{
|
|
"fillcolor": "#d4b036",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 7.646341463414636,
|
|
"y1": 8.31707317073171
|
|
},
|
|
{
|
|
"fillcolor": "#574d7b",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 8.31707317073171,
|
|
"y1": 8.987804878048784
|
|
},
|
|
{
|
|
"fillcolor": "#34619d",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 8.987804878048784,
|
|
"y1": 9.658536585365857
|
|
},
|
|
{
|
|
"fillcolor": "#57f720",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 9.658536585365857,
|
|
"y1": 10.329268292682931
|
|
},
|
|
{
|
|
"fillcolor": "#dca8fd",
|
|
"layer": "below",
|
|
"line": {
|
|
"width": 2
|
|
},
|
|
"opacity": 0.5,
|
|
"type": "rect",
|
|
"x0": 0.1,
|
|
"x1": 1,
|
|
"y0": 10.329268292682931,
|
|
"y1": 11.000000000000005
|
|
}
|
|
],
|
|
"template": {
|
|
"data": {
|
|
"bar": [
|
|
{
|
|
"error_x": {
|
|
"color": "#2a3f5f"
|
|
},
|
|
"error_y": {
|
|
"color": "#2a3f5f"
|
|
},
|
|
"marker": {
|
|
"line": {
|
|
"color": "#E5ECF6",
|
|
"width": 0.5
|
|
},
|
|
"pattern": {
|
|
"fillmode": "overlay",
|
|
"size": 10,
|
|
"solidity": 0.2
|
|
}
|
|
},
|
|
"type": "bar"
|
|
}
|
|
],
|
|
"barpolar": [
|
|
{
|
|
"marker": {
|
|
"line": {
|
|
"color": "#E5ECF6",
|
|
"width": 0.5
|
|
},
|
|
"pattern": {
|
|
"fillmode": "overlay",
|
|
"size": 10,
|
|
"solidity": 0.2
|
|
}
|
|
},
|
|
"type": "barpolar"
|
|
}
|
|
],
|
|
"carpet": [
|
|
{
|
|
"aaxis": {
|
|
"endlinecolor": "#2a3f5f",
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"minorgridcolor": "white",
|
|
"startlinecolor": "#2a3f5f"
|
|
},
|
|
"baxis": {
|
|
"endlinecolor": "#2a3f5f",
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"minorgridcolor": "white",
|
|
"startlinecolor": "#2a3f5f"
|
|
},
|
|
"type": "carpet"
|
|
}
|
|
],
|
|
"choropleth": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"type": "choropleth"
|
|
}
|
|
],
|
|
"contour": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "contour"
|
|
}
|
|
],
|
|
"contourcarpet": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"type": "contourcarpet"
|
|
}
|
|
],
|
|
"heatmap": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "heatmap"
|
|
}
|
|
],
|
|
"heatmapgl": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "heatmapgl"
|
|
}
|
|
],
|
|
"histogram": [
|
|
{
|
|
"marker": {
|
|
"pattern": {
|
|
"fillmode": "overlay",
|
|
"size": 10,
|
|
"solidity": 0.2
|
|
}
|
|
},
|
|
"type": "histogram"
|
|
}
|
|
],
|
|
"histogram2d": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "histogram2d"
|
|
}
|
|
],
|
|
"histogram2dcontour": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "histogram2dcontour"
|
|
}
|
|
],
|
|
"mesh3d": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"type": "mesh3d"
|
|
}
|
|
],
|
|
"parcoords": [
|
|
{
|
|
"line": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "parcoords"
|
|
}
|
|
],
|
|
"pie": [
|
|
{
|
|
"automargin": true,
|
|
"type": "pie"
|
|
}
|
|
],
|
|
"scatter": [
|
|
{
|
|
"fillpattern": {
|
|
"fillmode": "overlay",
|
|
"size": 10,
|
|
"solidity": 0.2
|
|
},
|
|
"type": "scatter"
|
|
}
|
|
],
|
|
"scatter3d": [
|
|
{
|
|
"line": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scatter3d"
|
|
}
|
|
],
|
|
"scattercarpet": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scattercarpet"
|
|
}
|
|
],
|
|
"scattergeo": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scattergeo"
|
|
}
|
|
],
|
|
"scattergl": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scattergl"
|
|
}
|
|
],
|
|
"scattermapbox": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scattermapbox"
|
|
}
|
|
],
|
|
"scatterpolar": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scatterpolar"
|
|
}
|
|
],
|
|
"scatterpolargl": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scatterpolargl"
|
|
}
|
|
],
|
|
"scatterternary": [
|
|
{
|
|
"marker": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"type": "scatterternary"
|
|
}
|
|
],
|
|
"surface": [
|
|
{
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
},
|
|
"colorscale": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"type": "surface"
|
|
}
|
|
],
|
|
"table": [
|
|
{
|
|
"cells": {
|
|
"fill": {
|
|
"color": "#EBF0F8"
|
|
},
|
|
"line": {
|
|
"color": "white"
|
|
}
|
|
},
|
|
"header": {
|
|
"fill": {
|
|
"color": "#C8D4E3"
|
|
},
|
|
"line": {
|
|
"color": "white"
|
|
}
|
|
},
|
|
"type": "table"
|
|
}
|
|
]
|
|
},
|
|
"layout": {
|
|
"annotationdefaults": {
|
|
"arrowcolor": "#2a3f5f",
|
|
"arrowhead": 0,
|
|
"arrowwidth": 1
|
|
},
|
|
"autotypenumbers": "strict",
|
|
"coloraxis": {
|
|
"colorbar": {
|
|
"outlinewidth": 0,
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"colorscale": {
|
|
"diverging": [
|
|
[
|
|
0,
|
|
"#8e0152"
|
|
],
|
|
[
|
|
0.1,
|
|
"#c51b7d"
|
|
],
|
|
[
|
|
0.2,
|
|
"#de77ae"
|
|
],
|
|
[
|
|
0.3,
|
|
"#f1b6da"
|
|
],
|
|
[
|
|
0.4,
|
|
"#fde0ef"
|
|
],
|
|
[
|
|
0.5,
|
|
"#f7f7f7"
|
|
],
|
|
[
|
|
0.6,
|
|
"#e6f5d0"
|
|
],
|
|
[
|
|
0.7,
|
|
"#b8e186"
|
|
],
|
|
[
|
|
0.8,
|
|
"#7fbc41"
|
|
],
|
|
[
|
|
0.9,
|
|
"#4d9221"
|
|
],
|
|
[
|
|
1,
|
|
"#276419"
|
|
]
|
|
],
|
|
"sequential": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
],
|
|
"sequentialminus": [
|
|
[
|
|
0,
|
|
"#0d0887"
|
|
],
|
|
[
|
|
0.1111111111111111,
|
|
"#46039f"
|
|
],
|
|
[
|
|
0.2222222222222222,
|
|
"#7201a8"
|
|
],
|
|
[
|
|
0.3333333333333333,
|
|
"#9c179e"
|
|
],
|
|
[
|
|
0.4444444444444444,
|
|
"#bd3786"
|
|
],
|
|
[
|
|
0.5555555555555556,
|
|
"#d8576b"
|
|
],
|
|
[
|
|
0.6666666666666666,
|
|
"#ed7953"
|
|
],
|
|
[
|
|
0.7777777777777778,
|
|
"#fb9f3a"
|
|
],
|
|
[
|
|
0.8888888888888888,
|
|
"#fdca26"
|
|
],
|
|
[
|
|
1,
|
|
"#f0f921"
|
|
]
|
|
]
|
|
},
|
|
"colorway": [
|
|
"#636efa",
|
|
"#EF553B",
|
|
"#00cc96",
|
|
"#ab63fa",
|
|
"#FFA15A",
|
|
"#19d3f3",
|
|
"#FF6692",
|
|
"#B6E880",
|
|
"#FF97FF",
|
|
"#FECB52"
|
|
],
|
|
"font": {
|
|
"color": "#2a3f5f"
|
|
},
|
|
"geo": {
|
|
"bgcolor": "white",
|
|
"lakecolor": "white",
|
|
"landcolor": "#E5ECF6",
|
|
"showlakes": true,
|
|
"showland": true,
|
|
"subunitcolor": "white"
|
|
},
|
|
"hoverlabel": {
|
|
"align": "left"
|
|
},
|
|
"hovermode": "closest",
|
|
"mapbox": {
|
|
"style": "light"
|
|
},
|
|
"paper_bgcolor": "white",
|
|
"plot_bgcolor": "#E5ECF6",
|
|
"polar": {
|
|
"angularaxis": {
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": ""
|
|
},
|
|
"bgcolor": "#E5ECF6",
|
|
"radialaxis": {
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"scene": {
|
|
"xaxis": {
|
|
"backgroundcolor": "#E5ECF6",
|
|
"gridcolor": "white",
|
|
"gridwidth": 2,
|
|
"linecolor": "white",
|
|
"showbackground": true,
|
|
"ticks": "",
|
|
"zerolinecolor": "white"
|
|
},
|
|
"yaxis": {
|
|
"backgroundcolor": "#E5ECF6",
|
|
"gridcolor": "white",
|
|
"gridwidth": 2,
|
|
"linecolor": "white",
|
|
"showbackground": true,
|
|
"ticks": "",
|
|
"zerolinecolor": "white"
|
|
},
|
|
"zaxis": {
|
|
"backgroundcolor": "#E5ECF6",
|
|
"gridcolor": "white",
|
|
"gridwidth": 2,
|
|
"linecolor": "white",
|
|
"showbackground": true,
|
|
"ticks": "",
|
|
"zerolinecolor": "white"
|
|
}
|
|
},
|
|
"shapedefaults": {
|
|
"line": {
|
|
"color": "#2a3f5f"
|
|
}
|
|
},
|
|
"ternary": {
|
|
"aaxis": {
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": ""
|
|
},
|
|
"baxis": {
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": ""
|
|
},
|
|
"bgcolor": "#E5ECF6",
|
|
"caxis": {
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": ""
|
|
}
|
|
},
|
|
"title": {
|
|
"x": 0.05
|
|
},
|
|
"xaxis": {
|
|
"automargin": true,
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": "",
|
|
"title": {
|
|
"standoff": 15
|
|
},
|
|
"zerolinecolor": "white",
|
|
"zerolinewidth": 2
|
|
},
|
|
"yaxis": {
|
|
"automargin": true,
|
|
"gridcolor": "white",
|
|
"linecolor": "white",
|
|
"ticks": "",
|
|
"title": {
|
|
"standoff": 15
|
|
},
|
|
"zerolinecolor": "white",
|
|
"zerolinewidth": 2
|
|
}
|
|
}
|
|
},
|
|
"width": 1000,
|
|
"xaxis": {
|
|
"range": [
|
|
0,
|
|
1
|
|
],
|
|
"showticklabels": false,
|
|
"tickvals": [
|
|
0,
|
|
1
|
|
]
|
|
},
|
|
"yaxis": {
|
|
"gridcolor": "black",
|
|
"griddash": "longdashdot",
|
|
"gridwidth": 0,
|
|
"showgrid": false,
|
|
"ticktext": [
|
|
"0x0",
|
|
"0x52c0<br>0x2c0",
|
|
"0xb4e0<br>0x64e0",
|
|
"0x17848<br>0x12848",
|
|
"0x1e310<br>0x19310",
|
|
"0x211000<br>0x20c000",
|
|
"0x2025f60<br>0x2020f60",
|
|
"0x2026578<br>0x2021578",
|
|
"0x2026800<br>0x2021800",
|
|
"0x206e000<br>0x2069000",
|
|
"0x2070000<br>0x206b000",
|
|
[
|
|
"0x0",
|
|
"0x20000",
|
|
"0x2c0",
|
|
"0x52c0",
|
|
"0x64e0",
|
|
"0xb4e0",
|
|
"0x12848",
|
|
"0x17848",
|
|
"0x19310",
|
|
"0x1e310",
|
|
"0x20c000",
|
|
"0x211000",
|
|
"0x2020f60",
|
|
"0x2025f60",
|
|
"0x2021578",
|
|
"0x2026578",
|
|
"0x2021800",
|
|
"0x2026800",
|
|
"0x2069000",
|
|
"0x206e000",
|
|
"0x206b000",
|
|
"0x2070000"
|
|
]
|
|
],
|
|
"tickvals": [
|
|
0,
|
|
4.2926829268292686,
|
|
4.963414634146342,
|
|
5.634146341463415,
|
|
6.3048780487804885,
|
|
6.975609756097562,
|
|
7.646341463414636,
|
|
8.31707317073171,
|
|
8.987804878048784,
|
|
9.658536585365857,
|
|
10.329268292682931
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import plotly.graph_objects as go\n",
|
|
"import random\n",
|
|
"\n",
|
|
"# If there is no end, set it to start + 0x1000\n",
|
|
"for d in data:\n",
|
|
" if 'end' not in d:\n",
|
|
" d['end'] = d['start'] + 0x5000\n",
|
|
"\n",
|
|
"# If there is no start, set it to end - 0x1000\n",
|
|
"for d in data:\n",
|
|
" if 'start' not in d:\n",
|
|
" d['start'] = d['end'] - 0x5000\n",
|
|
"\n",
|
|
"# Sort the data by start\n",
|
|
"data = sorted(data, key=lambda x: x['start'])\n",
|
|
"total_used_len = sum([d['end']-d['start'] for d in data]) # Length of all blocks described\n",
|
|
"tickpointers = []\n",
|
|
"\n",
|
|
"def random_color():\n",
|
|
" return f'#{random.randint(0, 0xFFFFFF):06x}'\n",
|
|
"\n",
|
|
"# Create a square for each index\n",
|
|
"fig = go.Figure()\n",
|
|
"for i, d in enumerate(data):\n",
|
|
" if i == 0:\n",
|
|
" prev_y = 0\n",
|
|
" max_y = (prev_y + ((d['end'] - d['start']) / total_used_len))\n",
|
|
" fillcolor = random_color()\n",
|
|
"\n",
|
|
" if d['Order'] == \"ENTRY\":\n",
|
|
" x0 = 0\n",
|
|
" else:\n",
|
|
" x0 = 0.1\n",
|
|
"\n",
|
|
" fig.add_shape(\n",
|
|
" type=\"rect\",\n",
|
|
" x0=x0,\n",
|
|
" y0=prev_y * len(data),\n",
|
|
" x1=0 + 1,\n",
|
|
" y1=max_y * len(data),\n",
|
|
" line=dict(width=2),\n",
|
|
" fillcolor=fillcolor,\n",
|
|
" opacity=0.5,\n",
|
|
" layer=\"below\",\n",
|
|
" )\n",
|
|
"\n",
|
|
" tickpoint = [(prev_y + (max_y - prev_y) / 2) * len(data)]\n",
|
|
" tickpointers.extend([prev_y * len(data)])\n",
|
|
"\n",
|
|
" fig.add_trace(go.Scatter\n",
|
|
" (\n",
|
|
" x=[0.5],\n",
|
|
" y=tickpoint,\n",
|
|
" text=d['name'],\n",
|
|
" mode=\"text\",\n",
|
|
" textposition=\"middle center\",\n",
|
|
" name=d['name'],\n",
|
|
" # Set color to\n",
|
|
" marker=dict(\n",
|
|
" color=fillcolor,\n",
|
|
" ),\n",
|
|
" ))\n",
|
|
" \n",
|
|
" prev_y = max_y\n",
|
|
"\n",
|
|
"fig.update_xaxes(\n",
|
|
" range=[0, 1],\n",
|
|
" tickvals=[0, 1],\n",
|
|
")\n",
|
|
"\n",
|
|
"labels = [hex(value) for d in data for value in (d.get('start'), d['end']) if 'end' in d]\n",
|
|
"\n",
|
|
"# If label is not the first in labels or the last entry, merge the label with the next label\n",
|
|
"labelset = []\n",
|
|
"for i in range(0, len(labels), 2):\n",
|
|
" if i == 0:\n",
|
|
" labelset.append(labels[i])\n",
|
|
" elif i == len(labels) - 1:\n",
|
|
" labelset.append(labels[i])\n",
|
|
" else:\n",
|
|
" labelset.append(f\"{labels[i+1]}<br>{labels[i]}\")\n",
|
|
"labelset.append(labels)\n",
|
|
"\n",
|
|
"fig.update_yaxes(\n",
|
|
" # tickvals=[i for i in range(len(data)+1)], \n",
|
|
" tickvals = tickpointers,\n",
|
|
" ticktext=labelset,\n",
|
|
" griddash=\"longdashdot\",\n",
|
|
" gridwidth=0,\n",
|
|
" gridcolor=\"black\",\n",
|
|
" showgrid=False,\n",
|
|
")\n",
|
|
"\n",
|
|
"fig.update_xaxes(\n",
|
|
" # Disable ticks\n",
|
|
" showticklabels=False,\n",
|
|
")\n",
|
|
"\n",
|
|
"fig.update_layout(\n",
|
|
" width=1000,\n",
|
|
" height=1200,\n",
|
|
" autosize=True,\n",
|
|
" margin=dict(l=200, r=20, t=20, b=20),\n",
|
|
" font=dict(\n",
|
|
" size=18,\n",
|
|
" ),\n",
|
|
" # Legend being the name of the function\n",
|
|
" legend_title_text=\"Function/Locations\",\n",
|
|
")\n",
|
|
"\n",
|
|
"fig.show()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "venv",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.12"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|