Line 105... |
Line 105... |
|
|
The project aims to provide _another option_ in the RISC-V / soft-core design space with a different performance
|
The project aims to provide _another option_ in the RISC-V / soft-core design space with a different performance
|
vs. size trade-off and a different focus: _embrace_ concepts like documentation, platform-independence / portability,
|
vs. size trade-off and a different focus: _embrace_ concepts like documentation, platform-independence / portability,
|
RISC-V compatibility, _customization_ and _ease of use_. See the <<_project_key_features>> below.
|
RISC-V compatibility, _customization_ and _ease of use_. See the <<_project_key_features>> below.
|
|
|
|
Furthermore, the NEORV32 pays special focus on _execution safety_ using <<_full_virtualization>>. The CPU aims to
|
|
provide fall-backs for _everything that could go wrong_. This includes malformed instruction words, privilege escalations
|
|
and even memory accesses that are checked for address space holes and deterministic response times from memory-mapped
|
|
devices. Precise exceptions allow a defined and fully-synchronized state of the CPU at every time.
|
|
|
|
|
|
|
// ####################################################################################################################
|
// ####################################################################################################################
|
:sectnums:
|
:sectnums:
|
=== Project Key Features
|
=== Project Key Features
|
|
|
Line 191... |
Line 197... |
|
|
// ####################################################################################################################
|
// ####################################################################################################################
|
:sectnums:
|
:sectnums:
|
=== VHDL File Hierarchy
|
=== VHDL File Hierarchy
|
|
|
All necessary VHDL hardware description files are located in the project's `rtl/core folder`. The top entity
|
All necessary VHDL hardware description files are located in the project's `rtl/core` folder. The top entity
|
of the entire processor including all the required configuration generics is **`neorv32_top.vhd`**.
|
of the entire processor including all the required configuration generics is **`neorv32_top.vhd`**.
|
|
|
[IMPORTANT]
|
[IMPORTANT]
|
All core VHDL files from the list below have to be assigned to a new design library named **`neorv32`**. Additional
|
All core VHDL files from the list below have to be assigned to a new design library named **`neorv32`**. Additional
|
files, like alternative top entities, can be assigned to any library.
|
files, like alternative top entities, can be assigned to any library.
|
Line 241... |
Line 247... |
├neorv32_uart.vhd - Universal async. receiver/transmitter
|
├neorv32_uart.vhd - Universal async. receiver/transmitter
|
├neorv32_wdt.vhd - Watchdog timer
|
├neorv32_wdt.vhd - Watchdog timer
|
├neorv32_wishbone.vhd - External (Wishbone) bus interface
|
├neorv32_wishbone.vhd - External (Wishbone) bus interface
|
├neorv32_xirq.vhd - External interrupt controller
|
├neorv32_xirq.vhd - External interrupt controller
|
│
|
│
|
├mem/neorv32_dmem.default.vhd - _Default_ data memory (architecture-only!)
|
├mem/neorv32_dmem.default.vhd - _Default_ data memory (architecture-only)
|
└mem/neorv32_imem.default.vhd - _Default_ instruction memory (architecture-only!)
|
└mem/neorv32_imem.default.vhd - _Default_ instruction memory (architecture-only)
|
...................................
|
...................................
|
|
|
[NOTE]
|
[NOTE]
|
The processor-internal instruction and data memories (IMEM and DMEM) are split into two design files each:
|
The processor-internal instruction and data memories (IMEM and DMEM) are split into two design files each:
|
a plain entity definition (`neorv32_*mem.entity.vhd`) and the actual architecture definition
|
a plain entity definition (`neorv32_*mem.entity.vhd`) and the actual architecture definition
|
(`mem/neorv32_*mem.default.vhd`). The **default** architecture definitions from `rtl/core/mem` provide a _generic_ and
|
(`mem/neorv32_*mem.default.vhd`). The `*.default.vhd` architecture definitions from `rtl/core/mem` provide a _generic_ and
|
_platform independent_ memory design that (should) infers embedded memory blocks. You can replace/modify the architecture
|
_platform independent_ memory design that (should) infers embedded memory blocks. You can replace/modify the architecture
|
source file in order to use platform-specific features (like advanced memory resources) or to improve technology mapping
|
source file in order to use platform-specific features (like advanced memory resources) or to improve technology mapping
|
and/or timing.
|
and/or timing.
|
|
|
|
|