Contributors to all versions of the spec in alphabetical order
-
James Ball
-
David Harris
This document is released under a Creative Commons Attribution 4.0 International License.
CRD Revision History
History of documentation changes that eventually lead to releases.
| Date | Revision | Changes |
|---|---|---|
Mar 10, 2026 |
1.0 - Voted on and approved by the CSC Requirements WG on this date |
|
Mar 10, 2026 |
0.8 |
|
Mar 9, 2026 |
0.7 |
|
Mar 5, 2026 |
0.6 |
|
Mar 4, 2026 |
0.5 |
|
Mar 3, 2026 |
0.4 |
|
Feb 23, 2026 |
0.3 |
|
Feb 23, 2026 |
0.2 |
|
Feb 5, 2026 |
0.1 |
|
Glossary
| Term | Meaning |
|---|---|
RISC-V |
(Reduced Instruction Set Computer) architecture, version 5 |
RVI |
RISC-V International (organization that oversees RISC-V) |
RVCP |
RISC-V Certification Program |
TSC |
Technical Steering Committee (branch of RVI that creates standards) |
CSC |
Certification Steering Committee (branch of RVI that oversees the RVCP) |
CRD |
Certification Requirements Document |
CTP |
Certification Test Plan |
CSR |
Control & Status Register (located inside processor, not memory-mapped) |
TBD |
To Be Determined |
N/A |
“Not Applicable” |
AKA |
“Also Known As” |
Additionally, this CRD follows RFC 2119 which defines the keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in uppercase to indicate requirement level. This is summarized in the table below for convenience.
| Term | Meaning |
|---|---|
MUST |
Indicates a mandatory requirement |
SHOULD |
Indicates a recommended requirement |
MAY |
Indicates an optional requirement |
1. Introduction
The RVI20-32 processor certificate is based on the RVI20U32 profile. The RVI20-64 processor certificate is based on the RVI20U64 profile.
The RVI certificate class corresponds to the RVI Profile Family. This certificate class only includes the RISC-V Unprivileged ISA. Certificates for the RVI certificate class are intended for internal use by the RVCP (RISC-V Certification Program).
1.1. What’s a CRD?
Certification Requirements Documents (CRDs) list requirements an implementation MUST meet to obtain an associated RVI (RISC-V International) certificate. CRDs are developed by the RVI CSC (Certification Steering Committee) organization in collaboration with the RVI TSC (Technical Steering Committee) organization who creates RISC-V standards.
The CRDs refer to and augment information provided in existing ratified RVI standards.
There are a variety of certificates offered by RVI to accommodate the various RVI standards. There are certificates for processors, non-processor system IP (e.g., IOMMU), and system platforms (processor + system IP) hardware standards. There are multiple classes of processor certificates available to accommodate the wide range of RISC-V implementations from basic microcontrollers to advanced Applications-class processors.
Each CRD has a list of mandatory behaviors along with a list of optional behaviors. Note that not all behaviors allowed in RISC-V standards are supported by a particular CRD.
1.2. Naming Scheme
1.2.1. CRD Naming
All components of the RVCP share the following naming scheme:
Format: <name>[v<version>]
Where:
-
Left & right square brackets denote optional.
-
Less-than & greater-than signs just separate fields (i.e., they aren’t present in the CRD name).
-
<name> identifies the type of RISC-V standard (processor, non-processor system IP, or platform) along with any other information required to identify the variant of that standard.
-
<version> identifies a particular release
-
Format is <major>[.<minor>[.<patch>]]
-
Inspired by semantic versioning scheme (semver.org/) but doesn’t follow it exactly
-
The rules for updating <major>, <minor>, and <patch> are defined by the type of RVCP component. However, they follow these general guidelines:
-
A <major> release of 0 is used for pre-release versions and release versions start with 1.
-
The <major> release number is updated when mandatory changes are made.
-
The <minor> release number is updated when optional changes are made.
-
The <patch> release number is updated for documentation fixes/improvements that don’t affect certificates already obtained for a particular implementation.
The specific rules for updating the version number of a CRD are as follows:
-
The <major> release number is updated for changes that could cause a previously certified implementation to no longer meet requirements. An example is requiring a new version of a standard.
-
The <minor> release number is updated for increased support of optional behaviors.
-
The <patch> release number is updated for documentation fixes/improvements. These changes cannot cause a previously certified implementation to no longer meet requirements.
1.2.2. Processor Naming
RVCP components for processors have the following format for their <name>:
<class><model>[<-base>]
Where:
-
<class> is MC for Microcontroller Class and AC for Apps-processor Class
-
<model> is 3-digit integer defined as follows:
-
The hundreds' digit indicates the series
-
The ten’s digit identifies large differences in mandatory extensions (e.g., V, H) within the series
-
The one’s digit identifies small/medium differences in mandatory extensions (e.g., Zicond, PMP) within the series
-
-
<base> is optional and is 32 for RV32I, 64 for RV64I, and 32E for RV32E
-
If multiple bases are supported and <base> is omitted in a reference, the reference applies to all bases
-
If only one base is supported then <base> is generally omitted
-
1.3. Requirements Terminology
| Term | Meaning |
|---|---|
MANDATORY |
You have to implement it to get a certificate and the certificate tests will cover it |
OPTIONAL |
It’s up to you if you implement or not. If you claim to implement it, certificate tests will cover it |
IN-SCOPE |
Either MANDATORY or OPTIONAL |
OUT-OF-SCOPE |
It’s up to you if you implement or not. If you implement it, it won’t be certified but make sure you don’t mess up anything we are certifying. |
INCOMPATIBLE |
If you implement it you won’t get a certificate |
| Term | Meaning |
|---|---|
REQ-<ID> |
A requirement that applies to both RV32 and RV64 |
REQ32-<ID> |
A requirement that applies to only RV32 |
REQ64-<ID> |
A requirement that applies to only RV64 |
1.4. Related Specifications
-
Unprivileged ISA Specification - Latest version
-
RISC-V Profiles Document - Will be moving to ISA Manual repository soon
2. Base ISA
| Requirement ID | Description |
|---|---|
REQ32-BASE |
Uses the RV32I base integer ISA |
REQ64-BASE |
Uses the RV64I base integer ISA |
REQ-ENDIANNESS |
Only little-endian is supported |
2.1. Exclusions
As per the unprivileged architecture specification, the ecall
instruction causes a requested trap to the execution environment.
Since the RVI profile family doesn’t define any execution environments
the ecall instruction is OUT-OF-SCOPE for the RVI20 certificate.
Similarly the ebreak and c.ebreak instructions are OUT-OF-SCOPE for the RVI20 certificate
since they cause a breakpoint exception and the RVI profile family doesn’t define any
execution environments to handle such exceptions.
3. Extensions
Any RISC-V extensions not listed in this section are OUT-OF-SCOPE and the associated certificate doesn’t cover their behaviors.
Please refer to the Extension Definitions appendix for more information about the extensions listed in this section or click on the extension names in the table below to jump to their definitions.
Note that the syntax ~> for version numbers in the tables below means "version or later backwards-compatible version".
3.1. Mandatory Extensions
None
3.2. Optional Extensions
| Requirement ID | Extension | Version |
|---|---|---|
REQ-EXT-A |
~> 2.1 |
|
REQ-EXT-C |
~> 2.0 |
|
REQ-EXT-D |
~> 2.2 |
|
REQ-EXT-F |
~> 2.2 |
|
REQ-EXT-M |
~> 2.0 |
|
REQ-EXT-Zicntr |
~> 2.0 |
|
REQ-EXT-Zifencei |
~> 2.0 |
|
REQ-EXT-Zihpm |
~> 2.0 |
3.3. Dependent Extensions
| Requirement ID | Extension | Version | Dependency |
|---|---|---|---|
REQ-EXT-Zicsr |
~> 2.0 |
Required if Zicntr or F extensions are present |
4. Parameter Values
This section lists the parameters that are IN-SCOPE and OUT-OF-SCOPE for the RVI20 certificate.
Please refer to the Parameter Definitions appendix for more information about the parameters listed in this section or click on the parameter names in the table below to jump to their definitions.
4.1. IN-SCOPE Parameters
An implementation MUST abide by the "Allowed Value(s)" of IN-SCOPE parameters to obtain a certificate. If the "Allowed Value(s)" is "Any" then any value defined by the parameter is acceptable.
| Parameter | Allowed Value(s) | Impact on Certificate Scope |
|---|---|---|
Any |
Only counters with a size of 0 are IN-SCOPE since the behavior of HPM counters is implementation-specific. |
|
Any |
The load-reserved/store-conditional instructions are only IN-SCOPE if this parameter is not "Other" |
|
Any |
Misaligned load/store instructions are only IN-SCOPE if this parameter is true and if any restrictions on misaligned load/store instructions expressed by other parameters are met. |
|
Any |
Reading time-related CSRs is only IN-SCOPE if this parameter is true |
4.2. OUT-OF-SCOPE Parameters
There are no restrictions on the values of OUT-OF-SCOPE parameters for certification purposes because the certificate doesn’t cover the behavior associated with the parameter.
| Parameter |
|---|
None |
5. CSR WARL Fields
There are no CSRs in RVI20 with WARL fields.
6. CSR WLRL Fields
There are no CSRs in RVI20 with WLRL fields.
Appendix A: Extension Definitions
This appendix contains information about RISC-V extensions mentioned in this CRD.
A.1. Extension A
- Long Name
-
Atomic Instructions
- Description
-
Atomic instructions from the Zaamo and Zalrsc extensions
A.2. Extension C
- Long Name
-
Compressed instructions
- Description
-
Always includes Zca, includes Zcf if F is present (RV32 only), and includes Zcd if D is present
A.3. Extension D
- Long Name
-
Double-Precision Floating-Point
- Description
-
Double-precision floating-point instructions and CSRs. Requires F.
A.4. Extension F
- Long Name
-
Single-Precision Floating-Point
- Description
-
Single-precision floating-point instructions and CSRs
A.5. Extension M
- Long Name
-
Multiply
- Description
-
Integer multiply and divide instructions
A.6. Extension Zicntr
- Long Name
-
Base Counters and Timers
- Description
-
Base counters and timers including the time/timeh, cycle/cycleh, and instret/instreth CSRs.
A.7. Extension Zicsr
- Long Name
-
Control and Status Register Instructions
- Description
-
Instructions for reading and writing control and status registers.
A.8. Extension Zifencei
- Long Name
-
Instruction Fence
- Description
-
Instruction fence instructions and related CSRs.
A.9. Extension Zihpm
- Long Name
-
Hardware Performance Counters
- Description
-
The number of counters is platform-specific.
Appendix B: Parameter Definitions
Parameters are hardware options supported by RISC-V standards. Many parameters are not named in RISC-V standards but a golden list of parameters is maintained separately by RISC-V International and this section uses those names.
| The golden list of parameters is still under development so the parameters in this document are "preliminary parameters" and subject to change as the golden list is finalized. |
Parameters map to one or more normative rules in the RISC-V ISA manual. Typically these normative rules are the Implementation-Defined Behavior variant of normative rules. These are normative rules that allow for multiple behaviors and require the implementation to specify its behavior. By convention, Implementation-Defined Behaviors have uppercase names while other types of normative rules have lowercase names.
Parameter and Mapping to Normative Rules |
Type |
ISA Feature |
Definition |
||||||||||
Array[3:31] of Integer 0 to 64 |
Zicntr |
Bit width of each implemented unprivileged hardware performance counter. A value of 0 indicates the corresponding counter is not implemented and will not trap if read. |
|||||||||||
Enum (Exact, 64B, 128B, Other) |
Atomic (Zalrsc extension) |
Defines the reservation strategy for load-reserved/store-conditional (LR/SC) atomic instructions:
|
|||||||||||
Boolean |
RV32I/RV64I Base ISA |
Hardware support for misaligned integer and floating-point load/store instructions.
|
|||||||||||
Boolean |
Zicntr |
Implementation supports reading of all unprivileged time-related CSRs without triggering an exception. For RV31I the |