summaryrefslogtreecommitdiffstats
path: root/picosoc/performance.py
blob: 92c50c50f21b5372fc6575b889e806ff6ececaee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#!/usr/bin/env python3

import matplotlib.pyplot as plt
import numpy as np

uncompr_text = """
default        : 010f52ef
dspi-8         : 008dc82f
dspi-7         : 008d6d63
dspi-6         : 008d1297
dspi-5         : 008cb7cb
dspi-4         : 008c5cff
dspi-3         : 008c0233
dspi-2         : 008ba767
dspi-1         : 008b4c9b
dspi-crm-8     : 008af1cf
dspi-crm-7     : 008a9703
dspi-crm-6     : 008a3c37
dspi-crm-5     : 0089e16b
dspi-crm-4     : 0089869f
dspi-crm-3     : 00892bd3
dspi-crm-2     : 0088d107
dspi-crm-1     : 0088763b
qspi-8         : 004a2c6f
qspi-7         : 0049d1a3
qspi-6         : 004976d7
qspi-5         : 00491c0b
qspi-4         : 0048c13f
qspi-3         : 00486673
qspi-2         : 00480ba7
qspi-1         : 0047b0db
qspi-crm-8     : 0047560f
qspi-crm-7     : 0046fb43
qspi-crm-6     : 0046a077
qspi-crm-5     : 004645ab
qspi-crm-4     : 0045eadf
qspi-crm-3     : 00459013
qspi-crm-2     : 00453547
qspi-crm-1     : 0044da7b
qspi-ddr-8     : 00288bf5
qspi-ddr-7     : 00283129
qspi-ddr-6     : 0027d65d
qspi-ddr-5     : 00277b91
qspi-ddr-4     : 002720c5
qspi-ddr-3     : 0026c5f9
qspi-ddr-2     : 00266b2d
qspi-ddr-1     : 00261061
qspi-ddr-crm-8 : 0025b595
qspi-ddr-crm-7 : 00255ac9
qspi-ddr-crm-6 : 0024fffd
qspi-ddr-crm-5 : 0024a531
qspi-ddr-crm-4 : 00244a65
qspi-ddr-crm-3 : 0023ef99
qspi-ddr-crm-2 : 002394cd
qspi-ddr-crm-1 : 00233a01
instns         : 0003df2d
"""

compr_text = """
default        : 00f3d36d
dspi-8         : 008008ad
dspi-7         : 007fade1
dspi-6         : 007f5315
dspi-5         : 007ef849
dspi-4         : 007e9d7d
dspi-3         : 007e42b1
dspi-2         : 007de7e5
dspi-1         : 007d8d19
dspi-crm-8     : 007d324d
dspi-crm-7     : 007cd781
dspi-crm-6     : 007c7cb5
dspi-crm-5     : 007c21e9
dspi-crm-4     : 007bc71d
dspi-crm-3     : 007b6c51
dspi-crm-2     : 007b1185
dspi-crm-1     : 007ab6b9
qspi-8         : 00434ced
qspi-7         : 0042f221
qspi-6         : 00429755
qspi-5         : 00423c89
qspi-4         : 0041e1bd
qspi-3         : 004186f1
qspi-2         : 00412c25
qspi-1         : 0040d159
qspi-crm-8     : 0040768d
qspi-crm-7     : 00401bc1
qspi-crm-6     : 003fc0f5
qspi-crm-5     : 003f6629
qspi-crm-4     : 003f0b5d
qspi-crm-3     : 003eb091
qspi-crm-2     : 003e55c5
qspi-crm-1     : 003dfaf9
qspi-ddr-8     : 00255d87
qspi-ddr-7     : 002502bb
qspi-ddr-6     : 0024a7ef
qspi-ddr-5     : 00244d23
qspi-ddr-4     : 0023f257
qspi-ddr-3     : 0023978b
qspi-ddr-2     : 00233cbf
qspi-ddr-1     : 0022e1f3
qspi-ddr-crm-8 : 00228727
qspi-ddr-crm-7 : 00222c5b
qspi-ddr-crm-6 : 0021d18f
qspi-ddr-crm-5 : 002176c3
qspi-ddr-crm-4 : 00211bf7
qspi-ddr-crm-3 : 0020c12b
qspi-ddr-crm-2 : 0020665f
qspi-ddr-crm-1 : 00200b93
instns         : 0003df2d
"""

labels = list()
uncompr_values = list()
compr_values = list()

for line in uncompr_text.split("\n"):
    if line != "":
        line = line.split()
        if line[0] == "instns":
            for i in range(len(uncompr_values)):
                uncompr_values[i] = int(line[2], 16) / uncompr_values[i]
        else:
            labels.append(line[0])
            uncompr_values.append(int(line[2], 16))

for line in compr_text.split("\n"):
    if line != "":
        line = line.split()
        if line[0] == "instns":
            for i in range(len(compr_values)):
                compr_values[i] = int(line[2], 16) / compr_values[i]
        else:
            compr_values.append(int(line[2], 16))

print(np.array(compr_values) / np.array(uncompr_values))

values = list()
for i in range(len(compr_values)):
    values.append(uncompr_values[i] / uncompr_values[0])
    # values.append(compr_values[i] / compr_values[0])

values = np.array(values)
print(values)

plt.figure(figsize=(10, 5))
plt.title("Performance comparison for different PicoSoC SPI flash configurations")
plt.plot(range(len(labels)), values)
plt.xticks(range(len(labels)), labels, rotation=80)

for color, x1, x2 in [["black", 0, 0], ["red", 1, 8], ["green", 9, 16],
        ["red", 17, 24], ["green", 25, 32], ["red", 33, 40], ["green", 41, 48]]:
    for t in plt.axes().xaxis.get_ticklabels()[x1:x2+1]:
        t.set_color(color)
    plt.plot([x1, x1], [0, values[x1] - 0.2], color=color)
    plt.plot([x2, x2], [0, values[x2] - 0.2], color=color)
    plt.plot([x1], [values[x1]], "k.")
    plt.plot([x2], [values[x2]], "k.")

plt.xlim(-1, len(labels))
plt.ylim(0, 9)
plt.grid()

plt.gcf().subplots_adjust(bottom=0.3)
plt.savefig("performance.png")
# plt.show()