Skip to content
STIMSMITH

SOURCE ARCHIVE

SHA256: a3997da7395ddd7c1f61f7d48f2e5dc059dd2188e61ea59f07cd2bdca3285eb9
TYPE: text/html
SIZE: 19.4 KB
FETCHED: 9/21/2026, 10:09:59 AM
EXTRACTOR: http-html
CHARS: 4,494

EXTRACTED CONTENT

4,494 chars

2. Overview

This is the general flow chart for csrbox:

_images/CSRBOX1.png

The user is required to provide 2 YAML files as input:

  1. ISA Spec: This YAML file is meant to capture the ISA related features implemented by the user. This is first fed into riscv-config python and the standard isa spec is finally put into the csrbox.
  2. Grouping Spec: This YAML file is meant to capture how the csrs are grouped together by the user. Details of this input file can be found here : Group yaml dependencies.

2.1. Current CSR support

The current version of Csrbox- 1.0.1 supports all machine mode csrs, corresponding supervisor mode and user mode csrs that depend only on ‘U’ extension . For the complete list of csrs, refer here : LISTS OF SUPPORTED CSRS.

2.2. Working

INPUT:

The isa spec is first passed through riscv config to get the standard isa spec as the intermediate input to csrbox.

PROCESS:

The csrs present in both the grouping yaml as well std isa spec and are consecutively checked for the :

  • Size of the csr ( if subfields exists, the check is for highest msb value)
  • Description of csr
  • Address of the csr for decoder
  • Shadow csrs

Attribute Yaml : The attribute yaml is used to automate the process of checking for shadows, dependent csrs, special case action methods and subfields internally. The general structure includes :

> - Value method
> - Action method
>   :   - definition argument
>       - declaration body
> - Dependencies

**Note: Any additions to the attributes yaml should be done in terms of bluespec code and not as running commentary**

CSR Decoder : The decoder is a bluespec demultiplexer like function that checks the validity of the given csr address. The job of the function is to compare the given address with all the csrbox supported address . If it is able to match, a bool variable becomes valid, else is turned false.

CSR Defines : It consists of automatically generated macros for all csrs corresponding with their addresses. This is done after reading the isa yaml file for the right addresses.

WARL Support : The function first splits the warl string into the condition and the legalizing strings. A regular expression is then applied to both strings separately to extract parameters and create bluespec code.

OUTPUT: : All output files are automatically placed under the work directory with the intermediate isa file in it and the bluespec files in a separate folder. These bluespec files are generated after successful bluesim and verilog compilation.

The files generated are :

> **CSR flow in Daisy Chain**
> :   All core requests consists of the following :
>
> Data flows from one group to another in a daisy chain manner until it hits the right group.
> If there is a miss in the first group , using an actionvalue method and a fifo the core request is forwarded to the next node.
>
> Once there is hit, a CSR Response is recorded consisting of:

2.3. LISTS OF SUPPORTED CSRS

MACHINE CSRS
MVENDORID
MARCHID
MIMPID
MHARTID
MISA
MTVEC
MEDELEG
MIDELEG
MIE
MCOUNTEREN
MSTATUS
MIP
MSCRATCH
MEPC
MCAUSE
MTVAL
PMPCFG0
PMPCFG1
PMPCFG2
PMPCFG3
.
.
.
PMPCFG14
PMPCFG15
PMPADDR0
PMPADDR1
PMPADDR2
.
.
.
.
.
PMPADDR63
MCYCLE
MINSTRET
MHPMCOUNTER3
MHPMCOUNTER4
.
.
.
.
MHPMCOUNTER31
MCYCLEH
MINSTRETH
MHPMCOUNTER3H
MHPMCOUNTER4H
.
.
.
.
MHPMCOUNTER31H
MCOUTNINHIBIT
MHPMEVENT3
MHPMEVENT4
.
.
.
.
MHPMEVENT31
USER CSRS
USTATUS
UIP
UIE
UTVEC
UEPC
UTVAL
UCAUSE
USCRATCH
CYCLE
INSTRET
HPMCOUNTER3
HPMCOUNTER4
.
.
.
.
HPMCOUNTER31
CYCLEH
INSTRETH
HPMCOUNTER3H
HPMCOUNTER4H
.
.
.
.
HPMCOUNTER31H
TIME
TIMEH
FFLAGS
FRM
FCSR
SUPERVISOR CSRS
SSTATUS
SEDELEG
SIDELEG
SIE
STVEC
SSCRATCH
SEPC
SCAUSE
STVAL
SIP
SATP
SSCRATCH
SCOUNTEREN
SIDELEG
SEDELEG