RTL Reference

This chapter describes RTL block responsibilities, interfaces, and behavior. Each block description identifies the implemented functionality and the design requirements that remain to be implemented.

The reference covers every project module and interface under hw/rtl, alongside the generated HAL interfaces, CSR modules, and packages. Each block has its own RTL Reference page, named after its SV source. Each page begins with a brief component description, followed by parameter and signal tables and architecture and operation. Handwritten runtime blocks and interfaces also include functional scenarios. Parameter tables include defaults and allowed values; signal tables include types and directions or modport roles. Packages list generated constants and have no runtime signals.

Components with a dedicated DV suite describe only their own testbench and coverage in a Verification section after the functional scenarios, while the suite README files provide configuration and test-running instructions. The shared verification framework is described in Verification Infrastructure; third-party TAXI and PicoRV32 sources remain dependencies.

Interfaces

Endpoint blocks

Switching and stream transport

Memory interconnect and processor

Generated HAL RTL

SystemRDL is the source of truth for generated interfaces, register blocks, bridges, and endpoint packages. make -C hal all regenerates these artifacts. RTL changes belong in the RDL, exporter, or template; generated SV is not edited by hand. The software-visible register specification remains in HAL Architecture Specification.

hal/tools/ unit tests cover the exporters; dv/hal/openenoc_endpoint_full/ checks the generated CSR model against RTL, and endpoint tests cover wiring.

Endpoints