Skip to content
STIMSMITH

CSR Daisy-Chain Flow

Technique WIKI v1 · 9/21/2026

A daisy-chain style request/response routing technique used by the CSRBox generator to forward core CSR requests across CSR groups until a matching address is found, and to record a CSR response on a hit.

CSR Daisy-Chain Flow

CSR Daisy-Chain Flow is the technique by which core CSR requests are propagated from one CSR group to the next in a daisy-chain topology within the CSRBox-generated design. The goal is to locate the CSR group that owns the requested address, then return a CSR response on a hit.

Mechanism

  • Core requests are queued and forwarded group-to-group in a daisy-chain manner until they reach the group whose address space contains the requested CSR.
  • On a miss in the current group, the request is forwarded to the next node using an ActionValue method in combination with a FIFO buffer.
  • On a hit (the requested address matches an address registered by the CSR decoder for that group), a CSR Response is recorded.

Place in the CSRBox pipeline

The daisy-chain is the output-side response/dataflow portion of CSRBox's overall working pipeline:

  1. Input: an ISA spec YAML (normalized via riscv-config) and a grouping spec YAML describing how CSRs are grouped.
  2. Process: the CSRs present in both YAMLs are checked for size, description, address, and shadow CSRs. This drives generation of the attribute YAML, CSR decoder (a Bluespec demultiplexer-like address comparator that produces a validity bool), CSR defines (auto-generated address macros), and WARL support (regex-driven legalization of WARL strings into Bluespec code).
  3. Output: generated Bluespec is placed under a working directory; the daisy-chain request/response flow is one of the artifacts produced after successful Bluesim and Verilog compilation.

CSR coverage scope

CSRBox 1.0.1 supports all machine-mode CSRs and the corresponding supervisor- and user-mode CSRs that depend only on the 'U' extension (machine CSRs include MVENDORID, MARCHID, MIMPID, MHARTID, MISA, MTVEC, MEDELEG, MIDELEG, MIE, MCOUNTEREN, MSTATUS, MIP, MSCRATCH, MEPC, MCAUSE, MTVAL, PMPCFG0–PMPCFG15, PMPADDR0–PMPADDR63, MCYCLE, MINSTRET, MHPMCOUNTER3–MHPMCOUNTER31 and their high halves, MCOUTNINHIBIT, and MHPMEVENT3–MHPMEVENT31; user CSRs include USTATUS, UIP, UIE, UTVEC, UEPC, UTVAL, UCAUSE, USCRATCH, CYCLE, INSTRET, HPMCOUNTER3+).

Notes

  • The daisy-chain relies on each group exposing an address-decoding function (the CSR Decoder) so misses can be detected and forwarded.
  • Forwarding between groups uses an ActionValue plus a FIFO rather than combinational broadcast across all groups.

LINKED ENTITIES

1 links

CITATIONS

4 sources
4 citations
[1] Core CSR requests are forwarded from one group to another in a daisy chain until a match is found, and on a miss the core request is forwarded to the next node using an ActionValue method and a FIFO. 2. Overview — RISC-V CSRBox Generator 1.0.2 documentation
[2] On a hit, a CSR Response is recorded. 2. Overview — RISC-V CSRBox Generator 1.0.2 documentation
[3] The CSR decoder is a Bluespec demultiplexer-like function that compares the given address against CSRBox-supported addresses and produces a bool validity signal used by the daisy-chain routing. 2. Overview — RISC-V CSRBox Generator 1.0.2 documentation
[4] CSRBox 1.0.1 supports all machine-mode CSRs and the corresponding supervisor- and user-mode CSRs that depend only on the 'U' extension. 2. Overview — RISC-V CSRBox Generator 1.0.2 documentation