Line 8... |
Line 8... |
The system is highly configurable and provides optional common peripherals like embedded memories,
|
The system is highly configurable and provides optional common peripherals like embedded memories,
|
timers, serial interfaces, general purpose IO ports and an external bus interface to connect custom IP like
|
timers, serial interfaces, general purpose IO ports and an external bus interface to connect custom IP like
|
memories, NoCs and other peripherals. On-line and in-system debugging is supported by an OpenOCD/gdb
|
memories, NoCs and other peripherals. On-line and in-system debugging is supported by an OpenOCD/gdb
|
compatible on-chip debugger accessible via JTAG.
|
compatible on-chip debugger accessible via JTAG.
|
|
|
|
Special focus is paid on **execution safety** to provide defined and predictable behavior at any time.
|
|
Therefore, the CPU ensures that all memory access are acknowledged and no invalid/malformed instructions
|
|
are executed. Whenever an unexpected situation occurs, the application code is informed via hardware exceptions.
|
|
|
The software framework of the processor comes with application makefiles, software libraries for all CPU
|
The software framework of the processor comes with application makefiles, software libraries for all CPU
|
and processor features, a bootloader, a runtime environment and several example programs - including a port
|
and processor features, a bootloader, a runtime environment and several example programs - including a port
|
of the CoreMark MCU benchmark and the official RISC-V architecture test suite. RISC-V GCC is used as
|
of the CoreMark MCU benchmark and the official RISC-V architecture test suite. RISC-V GCC is used as
|
default toolchain (https://github.com/stnolting/riscv-gcc-prebuilt[prebuilt toolchains are also provided]).
|
default toolchain (https://github.com/stnolting/riscv-gcc-prebuilt[prebuilt toolchains are also provided]).
|
|
|
Line 146... |
Line 150... |
|
|
...................................
|
...................................
|
neorv32 - Project home folder
|
neorv32 - Project home folder
|
│
|
│
|
├docs - Project documentation
|
├docs - Project documentation
|
│├datasheet - .adoc sources for NEORV32 data sheet
|
│├datasheet - AsciiDoc sources for the NEORV32 data sheet
|
│├doxygen_build - Software framework documentation (generated by doxygen)
|
|
│├figures - Figures and logos
|
│├figures - Figures and logos
|
│├icons - Misc. symbols
|
│├icons - Misc. symbols
|
│├references - Data sheets and RISC-V specs.
|
│├references - Data sheets and RISC-V specs.
|
│└src_adoc - AsciiDoc sources for this document
|
│└userguide - AsciiDoc sources for the NEORV32 user guide
|
│
|
│
|
├rtl - VHDL sources
|
├rtl - VHDL sources
|
│├core - Core sources of the CPU & SoC
|
│├core - Core sources of the CPU & SoC
|
││└mem - SoC-internal memories (default architectures)
|
││└mem - SoC-internal memories (default architectures)
|
│├processor_templates - Pre-configured SoC wrappers
|
│├processor_templates - Pre-configured SoC wrappers
|
Line 166... |
Line 169... |
│└...
|
│└...
|
│
|
│
|
├sim - Simulation files (see User Guide)
|
├sim - Simulation files (see User Guide)
|
│
|
│
|
└sw - Software framework
|
└sw - Software framework
|
├bootloader - Sources and scripts for the NEORV32 internal bootloader
|
├bootloader - Sources of the processor-internal bootloader
|
├common - Linker script and crt0.S start-up code
|
├common - Linker script, crt0.S start-up code and central makefile
|
├example - Various example programs
|
├example - Various example programs
|
│└...
|
│└...
|
├isa-test
|
├isa-test
|
│├riscv-arch-test - RISC-V spec. compatibility test framework (submodule)
|
│├riscv-arch-test - RISC-V spec. compatibility test framework (submodule)
|
│└port-neorv32 - Port files for the official RISC-V architecture tests
|
│└port-neorv32 - Port files for the official RISC-V architecture tests
|
├ocd_firmware - source code for on-chip debugger's "park loop"
|
├ocd_firmware - Source code for on-chip debugger's "park loop"
|
├openocd - OpenOCD on-chip debugger configuration files
|
├openocd - OpenOCD on-chip debugger configuration files
|
├image_gen - Helper program to generate NEORV32 executables
|
├image_gen - Helper program to generate NEORV32 executables
|
└lib - Processor core library
|
└lib - Processor core library
|
├include - Header files (*.h)
|
├include - Header files (*.h)
|
└source - Source files (*.c)
|
└source - Source files (*.c)
|
Line 270... |
Line 273... |
[cols="<5,>1,>1,>1,>1,>1"]
|
[cols="<5,>1,>1,>1,>1,>1"]
|
[options="header",grid="rows"]
|
[options="header",grid="rows"]
|
|=======================
|
|=======================
|
| CPU | LEs | FFs | MEM bits | DSPs | _f~max~_
|
| CPU | LEs | FFs | MEM bits | DSPs | _f~max~_
|
| `rv32i` | 806 | 359 | 1024 | 0 | 125 MHz
|
| `rv32i` | 806 | 359 | 1024 | 0 | 125 MHz
|
| `rv32i_Zicsr` | 1729 | 813 | 1024 | 0 | 124 MHz
|
| `rv32i_Zicsr_Zicntr` | 1729 | 813 | 1024 | 0 | 124 MHz
|
| `rv32im_Zicsr` | 2269 | 1055 | 1024 | 0 | 124 MHz
|
| `rv32im_Zicsr_Zicntr` | 2269 | 1055 | 1024 | 0 | 124 MHz
|
| `rv32imc_Zicsr` | 2501 | 1070 | 1024 | 0 | 124 MHz
|
| `rv32imc_Zicsr_Zicntr` | 2501 | 1070 | 1024 | 0 | 124 MHz
|
| `rv32imac_Zicsr` | 2511 | 1074 | 1024 | 0 | 124 MHz
|
| `rv32imac_Zicsr_Zicntr` | 2511 | 1074 | 1024 | 0 | 124 MHz
|
| `rv32imacu_Zicsr` | 2521 | 1079 | 1024 | 0 | 124 MHz
|
| `rv32imacu_Zicsr_Zicntr` | 2521 | 1079 | 1024 | 0 | 124 MHz
|
| `rv32imacu_Zicsr_Zifencei` | 2522 | 1079 | 1024 | 0 | 122 MHz
|
| `rv32imacu_Zicsr_Zicntr_Zifencei` | 2522 | 1079 | 1024 | 0 | 122 MHz
|
| `rv32imacu_Zicsr_Zifencei_Zfinx` | 3807 | 1731 | 1024 | 7 | 116 MHz
|
| `rv32imacu_Zicsr_Zicntr_Zifencei_Zfinx` | 3807 | 1731 | 1024 | 7 | 116 MHz
|
| `rv32imacu_Zicsr_Zifencei_Zfinx_DebugMode` | 3974 | 1815 | 1024 | 7 | 116 MHz
|
| `rv32imacu_Zicsr_Zicntr_Zifencei_Zfinx_DebugMode` | 3974 | 1815 | 1024 | 7 | 116 MHz
|
|=======================
|
|=======================
|
|
|
[NOTE]
|
[NOTE]
|
No HPM counters and no PMP regions were implemented for generating these results.
|
No HPM counters and no PMP regions were implemented for generating these results.
|
|
|
Line 370... |
Line 373... |
|
|
.CoreMark results
|
.CoreMark results
|
[cols="<4,^1,^1,^1"]
|
[cols="<4,^1,^1,^1"]
|
[options="header",grid="rows"]
|
[options="header",grid="rows"]
|
|=======================
|
|=======================
|
| CPU | CoreMark Score | CoreMarks/Mhz | Average CPI
|
| CPU | CoreMark Score | CoreMarks/MHz | Average CPI
|
| _small_ (`rv32i_Zicsr`) | 33.89 | **0.3389** | **4.04**
|
| _small_ (`rv32i_Zicsr`) | 33.89 | **0.3389** | **4.04**
|
| _medium_ (`rv32imc_Zicsr`) | 62.50 | **0.6250** | **5.34**
|
| _medium_ (`rv32imc_Zicsr`) | 62.50 | **0.6250** | **5.34**
|
| _performance_(`rv32imc_Zicsr` + perf. options) | 95.23 | **0.9523** | **3.54**
|
| _performance_(`rv32imc_Zicsr` + perf. options) | 95.23 | **0.9523** | **3.54**
|
|=======================
|
|=======================
|
|
|