aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2016-04-10 16:55:10 +0200
committerClifford Wolf <clifford@clifford.at>2016-04-10 16:55:10 +0200
commit472dae6b433f67183c3f2815d05bf168b0860aca (patch)
treebb212b980447e599ce4c513bd7e8a140cf1eecd8
parent00dd6ac38ee7e0b948a0a30d36f2e7a6fc2369ea (diff)
downloadpicorv32-472dae6b433f67183c3f2815d05bf168b0860aca.tar.gz
picorv32-472dae6b433f67183c3f2815d05bf168b0860aca.zip
Updates dhrystone results
-rw-r--r--README.md7
-rw-r--r--dhrystone/Makefile4
-rw-r--r--dhrystone/testbench.v7
3 files changed, 12 insertions, 6 deletions
diff --git a/README.md b/README.md
index ba27f0f..7f4ece8 100644
--- a/README.md
+++ b/README.md
@@ -289,9 +289,12 @@ a core built without ENABLE_REGS_DUALPORT.
When `ENABLE_MUL` is activated, then a `MUL` instruction will execute
in 40 cycles and a `MULH[SU|U]` instruction will execute in 72 cycles.
-Dhrystone benchmark results: 0.327 DMIPS/MHz (575 Dhrystones/Second/MHz)
+When `ENABLE_DIV` is activated, then a `DIV[U]/REM[U]` instruction will
+execute in 40 cycles.
-For the Dhrystone benchmark the average CPI is 3.945.
+Dhrystone benchmark results: 0.391 DMIPS/MHz (688 Dhrystones/Second/MHz)
+
+For the Dhrystone benchmark the average CPI is 4.110.
PicoRV32 Native Memory Interface
diff --git a/dhrystone/Makefile b/dhrystone/Makefile
index e42fa17..a4622f0 100644
--- a/dhrystone/Makefile
+++ b/dhrystone/Makefile
@@ -1,6 +1,6 @@
OBJS = start.o dhry_1.o dhry_2.o stdlib.o
-CFLAGS = -MD -O3 -m32 -march=RV32I -ffreestanding -nostdlib -DTIME -DRISCV
+CFLAGS = -MD -O3 -m32 -march=RV32IM -ffreestanding -nostdlib -DTIME -DRISCV
TOOLCHAIN_PREFIX = riscv32-unknown-elf-
test: testbench.exe dhry.hex
@@ -8,7 +8,7 @@ test: testbench.exe dhry.hex
timing: timing.exe dhry.hex
vvp -N timing.exe > timing.txt
- sed 's,.*## ,,' timing.txt | gawk 'x != "" {print x,$$2-y;} {x=$$1;y=$$2;}' | sort | uniq -c | sort -k3 -n
+ grep '^##' timing.txt | gawk 'x != "" {print x,$$3-y;} {x=$$2;y=$$3;}' | sort | uniq -c | sort -k3 -n
testbench.exe: testbench.v ../picorv32.v
iverilog -o testbench.exe testbench.v ../picorv32.v
diff --git a/dhrystone/testbench.v b/dhrystone/testbench.v
index c3c766d..6251472 100644
--- a/dhrystone/testbench.v
+++ b/dhrystone/testbench.v
@@ -26,7 +26,10 @@ module testbench;
wire [31:0] mem_la_wdata;
wire [3:0] mem_la_wstrb;
- picorv32 uut (
+ picorv32 #(
+ .ENABLE_MUL(1),
+ .ENABLE_DIV(1)
+ ) uut (
.clk (clk ),
.resetn (resetn ),
.trap (trap ),
@@ -88,7 +91,7 @@ module testbench;
$finish;
end
always @(uut.count_instr[0]) begin
- $display("## %-s %d", uut.instruction, uut.count_cycle);
+ $display("## %-s %d", uut.ascii_instr ? uut.ascii_instr : "x", uut.count_cycle);
end
`endif
endmodule