From 694b9390fd6c7c32498d028a45ec02988eadaa68 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Fri, 22 Sep 2017 04:52:44 +0200 Subject: [PATCH] Enable a bunch of PicoRV32 features in PicoSoC --- picosoc/Makefile | 2 +- picosoc/firmware.c | 27 +++++++---- picosoc/hx8kdemo.v | 4 ++ picosoc/performance.png | Bin 33032 -> 62502 bytes picosoc/performance.py | 100 +++++++++++++++++++++++++++++++++++----- picosoc/picosoc.v | 29 +++++++++++- 6 files changed, 139 insertions(+), 23 deletions(-) diff --git a/picosoc/Makefile b/picosoc/Makefile index d2c5b3f..835cc05 100644 --- a/picosoc/Makefile +++ b/picosoc/Makefile @@ -36,7 +36,7 @@ hx8kprog_fw: firmware.bin # ---- Example Firmware ---- firmware.elf: sections.lds start.s firmware.c - riscv32-unknown-elf-gcc -Wl,-Bstatic,-T,sections.lds,--strip-debug -ffreestanding -nostdlib -o firmware.elf start.s firmware.c + riscv32-unknown-elf-gcc -march=rv32imc -Wl,-Bstatic,-T,sections.lds,--strip-debug -ffreestanding -nostdlib -o firmware.elf start.s firmware.c firmware.hex: firmware.elf riscv32-unknown-elf-objcopy -O verilog firmware.elf /dev/stdout | sed -e '1 s/@00000000/@00100000/; 2,65537 d;' > firmware.hex diff --git a/picosoc/firmware.c b/picosoc/firmware.c index 1d733f9..5c0bec1 100644 --- a/picosoc/firmware.c +++ b/picosoc/firmware.c @@ -179,7 +179,7 @@ void cmd_read_flash_regs() // -------------------------------------------------------- -uint32_t cmd_benchmark(bool verbose) +uint32_t cmd_benchmark(bool verbose, uint32_t *instns_p) { uint8_t data[256]; uint32_t *words = (void*)data; @@ -231,6 +231,9 @@ uint32_t cmd_benchmark(bool verbose) putchar('\n'); } + if (instns_p) + *instns_p = instns_end - instns_begin; + return cycles_end - cycles_begin; } @@ -238,10 +241,12 @@ uint32_t cmd_benchmark(bool verbose) void cmd_benchmark_all() { + uint32_t instns = 0; + print("default "); reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00000000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); for (int i = 8; i > 0; i--) @@ -254,7 +259,7 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00400000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } @@ -268,7 +273,7 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00500000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } @@ -282,7 +287,7 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00200000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } @@ -296,7 +301,7 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00300000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } @@ -310,7 +315,7 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00600000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } @@ -324,9 +329,13 @@ void cmd_benchmark_all() reg_spictrl = (reg_spictrl & ~0x00700000) | 0x00700000; print(": "); - print_hex(cmd_benchmark(false), 8); + print_hex(cmd_benchmark(false, &instns), 8); putchar('\n'); } + + print("instns : "); + print_hex(instns, 8); + putchar('\n'); } // -------------------------------------------------------- @@ -419,7 +428,7 @@ void main() reg_spictrl = reg_spictrl ^ 0x00100000; break; case '9': - cmd_benchmark(true); + cmd_benchmark(true, 0); break; case '0': cmd_benchmark_all(); diff --git a/picosoc/hx8kdemo.v b/picosoc/hx8kdemo.v index 9cf6605..9b784f8 100644 --- a/picosoc/hx8kdemo.v +++ b/picosoc/hx8kdemo.v @@ -115,6 +115,10 @@ module hx8kdemo ( .flash_io2_di (flash_io2_di), .flash_io3_di (flash_io3_di), + .irq_5 (1'b0 ), + .irq_6 (1'b0 ), + .irq_7 (1'b0 ), + .iomem_valid (iomem_valid ), .iomem_ready (iomem_ready ), .iomem_wstrb (iomem_wstrb ), diff --git a/picosoc/performance.png b/picosoc/performance.png index 4f7da5bc14b300a16b917c13fc6b437c4c9cee01..aac75b244ef3d25f8586e614038edf04abff62fc 100644 GIT binary patch literal 62502 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 tNtPi&^yPh-Ux* literal 33032 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 diff --git a/picosoc/performance.py b/picosoc/performance.py index dc1fb52..92c50c5 100644 --- a/picosoc/performance.py +++ b/picosoc/performance.py @@ -3,7 +3,7 @@ import matplotlib.pyplot as plt import numpy as np -text = """ +uncompr_text = """ default : 010f52ef dspi-8 : 008dc82f dspi-7 : 008d6d63 @@ -53,32 +53,110 @@ 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() -values = list() +uncompr_values = list() +compr_values = list() -for line in text.split("\n"): +for line in uncompr_text.split("\n"): if line != "": line = line.split() - labels.append(line[0]) - values.append(int(line[2], 16)) + 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[0] / np.array(values)) +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[0] / values[x1] - 0.2], color=color) - plt.plot([x2, x2], [0, values[0] / values[x2] - 0.2], color=color) - plt.plot([x1], [values[0] / values[x1]], "k.") - plt.plot([x2], [values[0] / values[x2]], "k.") + 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(values)) +plt.xlim(-1, len(labels)) plt.ylim(0, 9) plt.grid() diff --git a/picosoc/picosoc.v b/picosoc/picosoc.v index 1a93c3a..0402749 100644 --- a/picosoc/picosoc.v +++ b/picosoc/picosoc.v @@ -28,6 +28,10 @@ module picosoc ( output [31:0] iomem_wdata, input [31:0] iomem_rdata, + input irq_5, + input irq_6, + input irq_7, + output ser_tx, input ser_rx, @@ -53,6 +57,19 @@ module picosoc ( parameter [31:0] STACKADDR = (4*MEM_WORDS); // end of memory parameter [31:0] PROGADDR_RESET = 32'h 0010_0000; // 1 MB into flash + reg [31:0] irq; + wire irq_stall = 0; + wire irq_uart = 0; + + always @* begin + irq = 0; + irq[3] = irq_stall; + irq[4] = irq_uart; + irq[5] = irq_5; + irq[6] = irq_6; + irq[7] = irq_7; + end + wire mem_valid; wire mem_instr; wire mem_ready; @@ -91,7 +108,14 @@ module picosoc ( picorv32 #( .STACKADDR(STACKADDR), - .PROGADDR_RESET(PROGADDR_RESET) + .PROGADDR_RESET(PROGADDR_RESET), + .PROGADDR_IRQ(32'h 0000_0000), + .BARREL_SHIFTER(1), + .COMPRESSED_ISA(1), + .ENABLE_MUL(1), + .ENABLE_DIV(1), + .ENABLE_IRQ(1), + .ENABLE_IRQ_QREGS(0) ) cpu ( .clk (clk ), .resetn (resetn ), @@ -101,7 +125,8 @@ module picosoc ( .mem_addr (mem_addr ), .mem_wdata (mem_wdata ), .mem_wstrb (mem_wstrb ), - .mem_rdata (mem_rdata ) + .mem_rdata (mem_rdata ), + .irq (irq ) ); spimemio spimemio (