Line 154... |
Line 154... |
│├references - Data sheets and RISC-V specs.
|
│├references - Data sheets and RISC-V specs.
|
│└src_adoc - AsciiDoc sources for this document
|
│└src_adoc - AsciiDoc sources for this document
|
│
|
│
|
├rtl - VHDL sources
|
├rtl - VHDL sources
|
│├core - Core sources of the CPU & SoC
|
│├core - Core sources of the CPU & SoC
|
│└templates - Alternate/additional top entities & wrappers
|
│├processor_templates - Pre-configured SoC wrappers
|
│ ├processor - Processor SoC wrappers
|
│├system_integration - System wrappers for advanced connectivity
|
│ └system - System wrappers for advanced connectivity
|
│└test_setups - Minimal test setup "SoCs" used in the User Guide
|
│
|
│
|
├setups - Example setups for various FPGAs, boards and toolchains
|
├setups - Example setups for various FPGAs, boards and toolchains
|
│└...
|
│└...
|
│
|
│
|
├sim - Simulation files (see User Guide)
|
├sim - Simulation files (see User Guide)
|
Line 201... |
Line 201... |
├neorv32_fifo.vhd - General purpose FIFO component
|
├neorv32_fifo.vhd - General purpose FIFO component
|
├neorv32_package.vhd - Processor/CPU main VHDL package file
|
├neorv32_package.vhd - Processor/CPU main VHDL package file
|
│
|
│
|
├neorv32_cpu.vhd - NEORV32 CPU top entity
|
├neorv32_cpu.vhd - NEORV32 CPU top entity
|
│├neorv32_cpu_alu.vhd - Arithmetic/logic unit
|
│├neorv32_cpu_alu.vhd - Arithmetic/logic unit
|
|
││├neorv32_cpu_cp_bitmanip.vhd - Bit-manipulation co-processor (B ext.)
|
││├neorv32_cpu_cp_fpu.vhd - Floating-point co-processor (Zfinx ext.)
|
││├neorv32_cpu_cp_fpu.vhd - Floating-point co-processor (Zfinx ext.)
|
││├neorv32_cpu_cp_muldiv.vhd - Mul/Div co-processor (M extension)
|
││├neorv32_cpu_cp_muldiv.vhd - Mul/Div co-processor (M extension)
|
││└neorv32_cpu_cp_shifter.vhd - Bit-shift co-processor
|
││└neorv32_cpu_cp_shifter.vhd - Bit-shift co-processor
|
│├neorv32_cpu_bus.vhd - Bus interface + physical memory protection
|
│├neorv32_cpu_bus.vhd - Bus interface + physical memory protection
|
│├neorv32_cpu_control.vhd - CPU control, exception/IRQ system and CSRs
|
│├neorv32_cpu_control.vhd - CPU control, exception/IRQ system and CSRs
|
Line 273... |
Line 274... |
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.
|
|
|
[TIP]
|
[TIP]
|
The CPU provides further options to reduce the area footprint (for example by constraining the CPU-internal
|
The CPU provides further options to reduce the area footprint (for example by constraining the CPU-internal
|
counter sizes) or to increase performance (for example by using a barrel-shifter; at cost of extra hardware).
|
counter sizes) or to increase performance (for example by using a barrel-shifter; at cost of extra hardware).
|
See section <<_processor_top_entity_generics>> for more information.
|
See section <<_processor_top_entity_generics>> for more information. Also, take a look at the User Guide section
|
|
https://stnolting.github.io/neorv32/ug/#_application_specific_processor_configuration[Application-Specific Processor Configuration].
|
|
|
|
|
:sectnums:
|
:sectnums:
|
==== Processor Modules
|
==== Processor Modules
|
|
|
Line 333... |
Line 335... |
|
|
The performance of the NEORV32 was tested and evaluated using the https://www.eembc.org/coremark/[Core Mark CPU benchmark].
|
The performance of the NEORV32 was tested and evaluated using the https://www.eembc.org/coremark/[Core Mark CPU benchmark].
|
This benchmark focuses on testing the capabilities of the CPU core itself rather than the performance of the whole
|
This benchmark focuses on testing the capabilities of the CPU core itself rather than the performance of the whole
|
system. The according sources can be found in the `sw/example/coremark` folder.
|
system. The according sources can be found in the `sw/example/coremark` folder.
|
|
|
|
.Dhrystone
|
|
[TIP]
|
|
A _simple_ port of the Dhrystone benchmark is also available in `sw/example/dhrystone`.
|
|
|
The resulting CoreMark score is defined as CoreMark iterations per second.
|
The resulting CoreMark score is defined as CoreMark iterations per second.
|
The execution time is determined via the RISC-V `[m]cycle[h]` CSRs. The relative CoreMark score is
|
The execution time is determined via the RISC-V `[m]cycle[h]` CSRs. The relative CoreMark score is
|
defined as CoreMark score divided by the CPU's clock frequency in MHz.
|
defined as CoreMark score divided by the CPU's clock frequency in MHz.
|
|
|
.Configuration
|
.Configuration
|