OpenCores
URL https://opencores.org/ocsvn/neorv32/neorv32/trunk

Subversion Repositories neorv32

[/] [neorv32/] [trunk/] [README.md] - Diff between revs 17 and 18

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 17 Rev 18
Line 61... Line 61...
 
 
 * From zero to main(): Completely open source and documented.
 * From zero to main(): Completely open source and documented.
 * Plain VHDL without technology-specific parts like attributes, macros or primitives.
 * Plain VHDL without technology-specific parts like attributes, macros or primitives.
 * Easy to use – working out of the box.
 * Easy to use – working out of the box.
 * Clean synchronous design, no wacky combinatorial interfaces.
 * Clean synchronous design, no wacky combinatorial interfaces.
 
 * Be as small as possible – but with a reasonable size-speed tradeoff.
 * The processor has to fit in a Lattice iCE40 UltraPlus 5k FPGA running at 20+ MHz.
 * The processor has to fit in a Lattice iCE40 UltraPlus 5k FPGA running at 20+ MHz.
 
 
 
 
### Status
### Status
 
 
Line 84... Line 85...
 
 
* No exception is triggered for the `E` CPU extension when using registers above `x15` (*needs fixing*)
* No exception is triggered for the `E` CPU extension when using registers above `x15` (*needs fixing*)
* `misa` CSR is read-only - no dynamic enabling/disabling of implemented CPU extensions during runtime
* `misa` CSR is read-only - no dynamic enabling/disabling of implemented CPU extensions during runtime
* `mcause` CSR is read-only
* `mcause` CSR is read-only
* The `[m]cycleh` and `[m]instreth` CSR counters are only 20-bit wide (in contrast to original 32-bit)
* The `[m]cycleh` and `[m]instreth` CSR counters are only 20-bit wide (in contrast to original 32-bit)
* The physical memory protection (**PMP**) only supports `NAPOT` mode and only up to 8 regions
* The physical memory protection (**PMP**) only supports `NAPOT` mode, a minimal granularity of 8 bytes and only up to 8 regions
 
 
 
 
### Custom CPU Extensions
### Custom CPU Extensions
 
 
The custom extensions are always enabled and are indicated via the `X` bit in the `misa` CSR.
The custom extensions are always enabled and are indicated via the `X` bit in the `misa` CSR.
Line 192... Line 193...
  * Privilege levels: `M-mode` (Machine mode) + `U-mode` (User mode)
  * Privilege levels: `M-mode` (Machine mode) + `U-mode` (User mode)
 
 
**Privileged architecture / FENCE.I** (`Zifencei` extension):
**Privileged architecture / FENCE.I** (`Zifencei` extension):
  * System instructions: `FENCE.I`
  * System instructions: `FENCE.I`
 
 
**Physical memory protection** (`PMP`, requires `Zicsr` extension):
**Privileged architecture / Physical memory protection** (`PMP`, requires `Zicsr` extension):
  * Additional machine CSRs: `pmpcfgx` `pmpaddrx`
  * Additional machine CSRs: `pmpcfgx` `pmpaddrx`
 
 
 
 
## FPGA Implementation Results
## FPGA Implementation Results
 
 
Line 278... Line 279...
Compiler:    RISCV32-GCC 10.1.0
Compiler:    RISCV32-GCC 10.1.0
Peripherals: UART for printing the results
Peripherals: UART for printing the results
~~~
~~~
 
 
| CPU                              | Executable Size | Optimization | CoreMark Score | CoreMarks/MHz |
| CPU                              | Executable Size | Optimization | CoreMark Score | CoreMarks/MHz |
|:---------------------------------|:---------------:|:------------:|:--------------:|:-------------:|
|:----------|:---------------:|:------------:|:--------------:|:-------------:|
| `rv32i`   + `Zicsr` + `Zifencei` |    21 600 bytes |        `-O2` |          27.02 |        0.2702 |
| `rv32i`   |    21 600 bytes |        `-O2` |          27.02 |        0.2702 |
| `rv32im`  + `Zicsr` + `Zifencei` |    20 976 bytes |        `-O2` |          57.14 |        0.5714 |
| `rv32im`  |    20 976 bytes |        `-O2` |          57.14 |        0.5714 |
| `rv32imc` + `Zicsr` + `Zifencei` |    16 348 bytes |        `-O2` |          57.14 |        0.5714 |
| `rv32imc` |    16 348 bytes |        `-O2` |          57.14 |        0.5714 |
 
 
 
 
### Instruction Cycles
### Instruction Cycles
 
 
The NEORV32 CPU is based on a two-stages pipelined architecutre. Each stage uses a multi-cycle processing scheme. Hence,
The NEORV32 CPU is based on a two-stages pipelined architecutre. Each stage uses a multi-cycle processing scheme. Hence,
Line 302... Line 303...
by the number of executed instructions (`instret[h]` CSRs). The executables were generated using optimization `-O2`.
by the number of executed instructions (`instret[h]` CSRs). The executables were generated using optimization `-O2`.
 
 
Results generated for hardware version: `1.3.0.0`
Results generated for hardware version: `1.3.0.0`
 
 
| CPU                              | Required Clock Cycles | Executed Instructions | Average CPI |
| CPU                              | Required Clock Cycles | Executed Instructions | Average CPI |
|:---------------------------------|----------------------:|----------------------:|:-----------:|
|:----------|----------------------:|----------------------:|:-----------:|
| `rv32i`   + `Zicsr` + `Zifencei` |         7 433 933 906 |         1 494 298 800 |        4.97 |
| `rv32i`   |         7 433 933 906 |         1 494 298 800 |        4.97 |
| `rv32im`  + `Zicsr` + `Zifencei` |         3 589 861 906 |           628 281 454 |        5.71 |
| `rv32im`  |         3 589 861 906 |           628 281 454 |        5.71 |
| `rv32imc` + `Zicsr` + `Zifencei` |         3 587 131 226 |           628 282 016 |        5.70 |
| `rv32imc` |         3 587 131 226 |           628 282 016 |        5.70 |
 
 
 
 
 
 
## Top Entities
## Top Entities
 
 
Line 662... Line 663...
"iCE40", "UltraPlus" and "Lattice Radiant" are trademarks of Lattice Semiconductor Corporation.
"iCE40", "UltraPlus" and "Lattice Radiant" are trademarks of Lattice Semiconductor Corporation.
 
 
"AXI" and "AXI-Lite" are trademarks of Arm Holdings plc.
"AXI" and "AXI-Lite" are trademarks of Arm Holdings plc.
 
 
 
 
## Acknowledgement
## Acknowledgements
 
 
 
[![RISC-V](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/figures/riscv_logo.png)](https://riscv.org/)
 
 
[RISC-V](https://riscv.org/) - Instruction Sets Want To Be Free :heart:
[RISC-V](https://riscv.org/) - Instruction Sets Want To Be Free :heart:
 
 
[![Continous Integration provided by Travis CI](https://travis-ci.com/images/logos/TravisCI-Full-Color.png)](https://travis-ci.com/stnolting/neorv32)
[![Continous Integration provided by Travis CI](https://travis-ci.com/images/logos/TravisCI-Full-Color.png)](https://travis-ci.com/stnolting/neorv32)
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.