| #!/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() |