aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-06-06 14:01:37 +0200
committerClifford Wolf <clifford@clifford.at>2015-06-06 14:14:32 +0200
commit77ba5a18973bd02b461ab96047acfcc3fb62cf7b (patch)
tree573afedb6a3a14c91224e16724fa21ba3a939de2 /README.md
downloadpicorv32-77ba5a18973bd02b461ab96047acfcc3fb62cf7b.tar.gz
picorv32-77ba5a18973bd02b461ab96047acfcc3fb62cf7b.zip
Initial import
Diffstat (limited to 'README.md')
-rw-r--r--README.md63
1 files changed, 63 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..36f1ef0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,63 @@
+
+PicoRV32 - A Size-Optimized RISC-V CPU
+======================================
+
+PicoRV32 is a CPU core that implements the [RISC-V RV32I Instruction Set](http://riscv.org/).
+
+Tools (gcc, binutils, etc..) can be obtained via the [RISC-V Website](http://riscv.org/download.html#tab_tools).
+
+
+Features and Typical Applications:
+----------------------------------
+
+- Small (about 1000 LUTs in a 7-Series Xilinx FGPA)
+- High fMAX (>250 MHz on 7-Series Xilinx FGPAs)
+- Selectable native memory interface or AXI4-Lite master
+
+This CPU is meant to be used as auxiliary processor in FPGA designs and ASICs. Due
+to its high fMAX it can be integrated in most existing designs without crossing
+clock domains. When operated on a lower frequency, it will have a lot of timing
+slack and thus can be added to a design without compromising timing closure.
+
+For even smaller size it is possible disable support for registers `x16`..`x31` as
+well as `RDCYCLE[H]`, `RDTIME[H]`, and `RDINSTRET[H]` instructions, turning the
+processor into an RV32E core.
+
+*Note: In architectures that implement the register file in dedicated memory
+resources, such as many FPGAs, disabling the 16 upper registers may not further
+reduce the core size.*
+
+The core exists in two variations: `picorv32` and `picorv32_axi`. The former
+provides a simple native memory interface, that is easy to use in simple
+environments, and the latter provides an AXI-4 Lite Master interface that can
+easily be integrated with existing systems that are already using the AXI
+standard.
+
+A separate core `picorv32_axi_adapter` is provided to bridge between the native
+memory interface and AXI4. This core can be used to create custom cores that
+include one or more PicoRV32 cores together with local RAM, ROM, and
+memory-mapped peripherals, communicating with each other using the native
+interface, and communicating with the outside world via AXI4.
+
+
+Performance:
+------------
+
+The average Cycles per Instruction (CPI) is 6 to 8, depending on the
+application code. (Most instructions, including unconditional branches and
+not-taken conditional branches execute in 5 cycles. Memory load/store, taken
+conditional branches, JALR, and shift operations may take more than 5 cycles.)
+
+Dhrystone benchmark results: 0.124 DMIPS/MHz (219 Dhrystones/Second/MHz)
+
+*This numbers apply for setups with memory that can accomodate requests within
+one clock cycle. Slower memory will degrade the performance of the processor.*
+
+
+Todos:
+------
+
+- Optional IRQ support
+- Optional write-through cache
+- Optional support for compressed ISA
+