Full endpoint register block – openenoc_endpoint_full_csr
Implements the generated software-visible register bank and its hardware update boundary.
Source: openenoc_endpoint_full_csr.sv.
RDL: openenoc_endpoint_full.rdl.
Parameters
Name |
Default value |
Allowed values |
Description |
|---|---|---|---|
None |
— |
— |
This component has no elaboration parameters. |
Signals
The hardware-interface types are imported from
openenoc_endpoint_full_csr_pkg.
Name |
Type |
Direction / role |
Description |
|---|---|---|---|
|
|
input |
Clock for this component or interface domain. |
|
|
input |
Active-high reset of transaction and control state. |
|
|
output |
Write-address channel acceptance. |
|
|
input |
Write-address channel is valid. |
|
|
input |
Write byte address. |
|
|
input |
Write access attributes. |
|
|
output |
Write-data channel acceptance. |
|
|
input |
Write-data channel is valid. |
|
|
input |
Write data word. |
|
|
input |
Write-byte enables. |
|
|
input |
Write-response acceptance. |
|
|
output |
Write response is valid. |
|
|
output |
Write response: OKAY or AXI error. |
|
|
output |
Read-address channel acceptance. |
|
|
input |
Read-address channel is valid. |
|
|
input |
Read byte address. |
|
|
input |
Read attributes; instruction fetch sets bit 2. |
|
|
input |
Read-response acceptance. |
|
|
output |
Read response is valid. |
|
|
output |
Read data word. |
|
|
output |
Read response: OKAY or AXI error. |
|
|
input |
Hardware-driven register updates, command clears, and external target responses. |
|
|
output |
Stored software controls and external register-file requests. |
Architecture and operation
PeakRDL-regblock generates the flattened AXI4-Lite CSR target and hardware interface structures. It implements register storage, decode, readback, and software/hardware field access semantics, forwarding external RMEM and table accesses to their request/completion boundaries. Register addresses and field layouts are derived from RDL; integration must use generated constants.
Transport configuration and status
The endpoint register interface exposes the following transport controls. Names below are relative to the endpoint register file within the generated CSR map.
Register field |
Meaning |
Hardware consumer or owner |
|---|---|---|
|
Individual identity and accepted group destination. Zero disables group reception; broadcast requires the broadcast address in the group field. |
|
|
32-bit unicast RMEM response wait in endpoint clock cycles; zero disables the timer. |
|
|
32-bit response wait for each unicast DMA fragment; zero disables the timer. There is no whole-block timer. |
|
|
Maximum locally initiated fragment size, rounded down to four bytes and saved at block acceptance. Resets to 8160 bytes for the default frame limit. |
|
|
Shared sticky RMEM/DMA failure record, including received-request failures.
Cleared by |
MAX_RAW_FRAME_SIZE is an RDL synthesis parameter, not a writable transport
setting. It fixes the raw frame ceiling and the derived DMA fragment ceiling.
The software-selected fragment size affects locally initiated blocks; received
requests remain bounded by the synthesized ceiling. The size calculations and
timer start/stop rules are specified in oETP Engine – openenoc_endpoint_oetp_engine.
RMEM and bulk DMA use the same peer error record but separate RMEM_ERROR and PEER_DMA_COMPLETE notification sources. Error recording, IRQ enable, and IRQ claim completion are independent: completing a claim does not clear the error. Failed incoming requests preserve the status of independent locally initiated work. Memory completion and error ownership belong to DMA Engine – openenoc_endpoint_dma_engine; event admission and software claims belong to IRQ controller – openenoc_endpoint_irq_controller.
Verification
The test suite is in dv/hal/openenoc_endpoint_full/.
Testbench
This cocotb suite verifies the generated full-endpoint CSR RTL through AXI4-Lite using the generated PeakRDL Python register model. A thin SV wrapper supplies hardware status and command acknowledgements. Seven existing cases run through the cocotb Makefile flow; this suite has no pytest parameter sweep. FST tracing is enabled on every simulation run.
Coverage
The suite covers:
callback-driven Python register-model access to actual AXI4-Lite RTL;
test register and multi-field register writes, readback, and defaults;
full-width RMEM/DMA timeout storage and neighboring-register preservation;
independent unicast/multicast MAC configuration and RMEM_ERROR IRQ enable;
fragment-size reset, generated register ordering, and unrounded readback;
per-peer sticky error status and independently acknowledged clear commands;
independent raw TX/RX error records and held
clear_errorsacknowledgements.