cva6/config/riscv-config/cv64a60ax/spec/isa_spec.yaml
khandelwaltanuj 3a389af151
Some checks are pending
bender-up-to-date / bender-up-to-date (push) Waiting to run
ci / build-riscv-tests (push) Waiting to run
ci / execute-riscv64-tests (push) Blocked by required conditions
ci / execute-riscv32-tests (push) Blocked by required conditions
added correct reset val (#2823)
For cv64a60ax configuration
2025-03-12 15:19:15 +01:00

1863 lines
40 KiB
YAML

# Copyright 2024 Thales DIS France SAS
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Original Author: Zbigniew CHAMSKI - Thales
# Updated from CV6A60AX 64 CEA - Tanuj Khandelwal - Thales
hart_ids: [0]
hart0: &hart0
ISA: RV64IMAFDCNSUZicsr_Zicbom_Zicbop_Zicboz_Zifencei_Zcb_Zba_Zbb_Zbc_Zbs
User_Spec_Version: '2.3'
supported_xlen: [64]
physical_addr_sz: 39
pmp_granularity: 10 # FIXME: To verify
misa:
reset-val: 0x800000000014312D # B: bit 1, C: bit 2, I = bit 8, M = bit 12, Z = bit 25
rv64:
accessible: true
mxl:
implemented: true
type:
warl:
dependency_fields: []
legal:
- mxl[1:0] in [0x2]
wr_illegal:
- unchanged
extensions:
implemented: true
type:
# ro_constant: 0x214312F
mvendorid:
reset-val: 0x00000602
rv64:
accessible: true
type:
ro_constant: 0x00000602
rv32:
accessible: false
fcsr:
rv32:
accessible: false
rv64:
accessible: true
fflags:
implemented: true
type:
warl:
dependency_fields: []
legal:
- fflags[4:0] in [0x00:0x1F]
wr_illegal:
- Unchanged
mtvec:
reset-val: 0x80010000
rv64:
accessible: true
base:
implemented: true
type:
warl:
dependency_fields: []
legal:
# The 62 bits of 'base' are suffixed with 2'b00
# ==> all values are legal, alignment 4 bytes is implied
- base[61:0] in [0x00000000:0x3FFFFFFFFFFFFFFF]
wr_illegal:
- Unchanged
mode:
implemented: true
type:
warl:
dependency_fields: []
legal:
# Only Direct mode.
- mode[1:0] in [0x0]
wr_illegal:
- Unchanged
vsstatus:
reset-val: 0x0
rv64:
accessible: false
rv32:
accessible: false
mstatus: # FIXME verify details
reset-val: 0xA00001800 # .mpp = 0x3
rv64:
accessible: true
uie:
implemented: true
sie:
implemented: true
mie:
implemented: true
upie:
implemented: true
spie:
implemented: true
sxl:
implemented: true
type:
warl:
dependency_fields: []
legal:
- sxl[1:0] in [0x2]
wr_illegal:
- unchanged
uxl:
implemented: true
type:
warl:
dependency_fields: []
legal:
- uxl[1:0] in [0x2]
wr_illegal:
- unchanged
mpie:
implemented: true
mpp:
implemented: true
type:
warl:
dependency_fields: []
legal:
- mpp[1:0] in [0x3]
wr_illegal:
- Unchanged
fs:
implemented: true
xs:
implemented: true
mprv:
implemented: false
sum:
implemented: true
mxr:
implemented: true
tvm:
implemented: false
tw:
implemented: false
tsr:
implemented: false
rv32:
accessible: false
mip: # Check if readonly or not
reset-val: 0
rv64:
accessible: true
usip:
implemented: true
ssip:
implemented: true
msip:
implemented: true
utip:
implemented: true
stip:
implemented: true
mtip:
implemented: true
type:
ro_variable: true
ueip:
implemented: true
seip:
implemented: true
meip:
implemented: true
type:
ro_variable: true
rv32:
accessible: false
hip:
reset-val: 0
rv64:
accessible: false
vssip:
implemented: false
vstip:
implemented: false
vseip:
implemented: false
sgeip:
implemented: false
rv32:
accessible: false
mie:
reset-val: 0
rv64:
accessible: true
usie:
implemented: true
ssie:
implemented: true
msie:
implemented: true
utie:
implemented: true
stie:
implemented: true
mtie:
implemented: true
ueie:
implemented: true
seie:
implemented: true
meie:
implemented: true
rv32:
accessible: false
hie:
reset-val: 0
rv64:
accessible: false
vssie:
implemented: false
vstie:
implemented: false
vseie:
implemented: false
sgeie:
implemented: false
rv32:
accessible: false
mepc:
reset-val: 0x0
rv64:
accessible: true
rv32:
accessible: false
mtval:
reset-val: 0x0
rv64:
accessible: true
rv32:
accessible: false
mcause:
reset-val: 0
rv64:
accessible: true
interrupt:
implemented: true
exception_code:
implemented: true
rv32:
accessible: false
medeleg:
reset-val: 0
rv64:
accessible: true
rv32:
accessible: false
mideleg:
reset-val: 0
rv64:
accessible: true
rv32:
accessible: false
menvcfg: #FIXME: not convinced if it is needed
reset-val: 0
rv64:
accessible: true
rv32:
accessible: false
marchid:
rv64:
accessible: true
type:
ro_constant: 0x00000003
rv32:
accessible: false
reset-val: 0x00000003
# FIXME not supported yet
# mconfigptr:
# rv64:
# accessible: true
# type:
# ro_constant: 0x0
# rv32:
# accessible: false
# reset-val: 0x0
mhartid:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x00
mhpmcounter3:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter4:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter5:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter6:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter7:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter8:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter9:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter10:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter11:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter12:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter13:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter14:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter15:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter16:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter17:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter18:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter19:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter20:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter21:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter22:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter23:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter24:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter25:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter26:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter27:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter28:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter29:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter30:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmcounter31:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
# FIXME NOT SUPPORTED
# instret:
# rv64:
# accessible: true
# type:
# warl:
# dependency_fields: []
# legal:
# - instret[31:0] in [0x00000000:0xFFFFFFFF]
# wr_illegal:
# - unchanged
# rv32:
# accessible: false
# reset-val: 0
mcountinhibit: #FIXME Details
rv64:
accessible: true
rv32:
accessible: false
reset-val: 0x0
mhpmevent3:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent4:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent5:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent6:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent7:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent8:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent9:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent10:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent11:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent12:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent13:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent14:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent15:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent16:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent17:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent18:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent19:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent20:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent21:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent22:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent23:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent24:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent25:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent26:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent27:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent28:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent29:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent30:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mhpmevent31:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0x0
mimpid:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
mcounteren: #FIXME Check details
rv64:
accessible: true
rv32:
accessible: false
reset-val: 0
pmpcfg0:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp0cfg:
implemented: true
type:
warl:
dependency_fields: [pmpcfg0::pmp0cfg]
legal:
- "pmp0cfg[7] in [0] -> pmp0cfg[7] in [0x0:0x1] pmp0cfg[6:5] in [0] pmp0cfg[4:3] not in [2] pmp0cfg[2:0] not in [2,6]"
wr_illegal:
- Unchanged
pmp1cfg:
implemented: true
type:
warl:
dependency_fields: [pmpcfg0::pmp1cfg]
legal:
- "pmp1cfg[7] in [0] -> pmp1cfg[7] in [0x0,0x1] pmp1cfg[6:5] in [0] pmp1cfg[4:3] not in [2] pmp1cfg[2:0] not in [2,6]"
wr_illegal:
- Unchanged
pmp2cfg:
implemented: true
type:
warl:
dependency_fields: [pmpcfg0::pmp2cfg]
legal:
- "pmp2cfg[7] in [0] -> pmp2cfg[7] in [0x0,0x1] pmp2cfg[6:5] in [0] pmp2cfg[4:3] not in [2] pmp2cfg[2:0] not in [2,6]"
wr_illegal:
- Unchanged
pmp3cfg:
implemented: true
type:
warl:
dependency_fields: [pmpcfg0::pmp3cfg]
legal:
- "pmp3cfg[7] in [0] -> pmp3cfg[7] in [0x0,0x1] pmp3cfg[6:5] in [0] pmp3cfg[4:3] not in [2] pmp3cfg[2:0] not in [2,6]"
wr_illegal:
- Unchanged
pmp4cfg:
implemented: true
type:
ro_constant: 0
pmp5cfg:
implemented: true
type:
ro_constant: 0
pmp6cfg:
implemented: true
type:
ro_constant: 0
pmp7cfg:
implemented: true
type:
ro_constant: 0
pmpcfg2:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp8cfg:
implemented: true
type:
ro_constant: 0
pmp9cfg:
implemented: true
type:
ro_constant: 0
pmp10cfg:
implemented: true
type:
ro_constant: 0
pmp11cfg:
implemented: true
type:
ro_constant: 0
pmp12cfg:
implemented: true
type:
ro_constant: 0
pmp13cfg:
implemented: true
type:
ro_constant: 0
pmp14cfg:
implemented: true
type:
ro_constant: 0
pmp15cfg:
implemented: true
type:
ro_constant: 0
pmpcfg4:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp16cfg:
implemented: true
type:
ro_constant: 0
pmp17cfg:
implemented: true
type:
ro_constant: 0
pmp18cfg:
implemented: true
type:
ro_constant: 0
pmp19cfg:
implemented: true
type:
ro_constant: 0
pmp20cfg:
implemented: true
type:
ro_constant: 0
pmp21cfg:
implemented: true
type:
ro_constant: 0
pmp22cfg:
implemented: true
type:
ro_constant: 0
pmp23cfg:
implemented: true
type:
ro_constant: 0
pmpcfg6:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp24cfg:
implemented: true
type:
ro_constant: 0
pmp25cfg:
implemented: true
type:
ro_constant: 0
pmp26cfg:
implemented: true
type:
ro_constant: 0
pmp27cfg:
implemented: true
type:
ro_constant: 0
pmp28cfg:
implemented: true
type:
ro_constant: 0
pmp29cfg:
implemented: true
type:
ro_constant: 0
pmp30cfg:
implemented: true
type:
ro_constant: 0
pmp31cfg:
implemented: true
type:
ro_constant: 0
pmpcfg8:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp32cfg:
implemented: true
type:
ro_constant: 0
pmp33cfg:
implemented: true
type:
ro_constant: 0
pmp34cfg:
implemented: true
type:
ro_constant: 0
pmp35cfg:
implemented: true
type:
ro_constant: 0
pmp36cfg:
implemented: true
type:
ro_constant: 0
pmp37cfg:
implemented: true
type:
ro_constant: 0
pmp38cfg:
implemented: true
type:
ro_constant: 0
pmp39cfg:
implemented: true
type:
ro_constant: 0
pmpcfg10:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp40cfg:
implemented: true
type:
ro_constant: 0
pmp41cfg:
implemented: true
type:
ro_constant: 0
pmp42cfg:
implemented: true
type:
ro_constant: 0
pmp43cfg:
implemented: true
type:
ro_constant: 0
pmp44cfg:
implemented: true
type:
ro_constant: 0
pmp45cfg:
implemented: true
type:
ro_constant: 0
pmp46cfg:
implemented: true
type:
ro_constant: 0
pmp47cfg:
implemented: true
type:
ro_constant: 0
pmpcfg12:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp48cfg:
implemented: true
type:
ro_constant: 0
pmp49cfg:
implemented: true
type:
ro_constant: 0
pmp50cfg:
implemented: true
type:
ro_constant: 0
pmp51cfg:
implemented: true
type:
ro_constant: 0
pmp52cfg:
implemented: true
type:
ro_constant: 0
pmp53cfg:
implemented: true
type:
ro_constant: 0
pmp54cfg:
implemented: true
type:
ro_constant: 0
pmp55cfg:
implemented: true
type:
ro_constant: 0
pmpcfg14:
reset-val: 0
rv32:
accessible: false
rv64:
accessible: true
pmp56cfg:
implemented: true
type:
ro_constant: 0
pmp57cfg:
implemented: true
type:
ro_constant: 0
pmp58cfg:
implemented: true
type:
ro_constant: 0
pmp59cfg:
implemented: true
type:
ro_constant: 0
pmp60cfg:
implemented: true
type:
ro_constant: 0
pmp61cfg:
implemented: true
type:
ro_constant: 0
pmp62cfg:
implemented: true
type:
ro_constant: 0
pmp63cfg:
implemented: true
type:
ro_constant: 0
mcycle:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- mcycle[63:0] in [0x0000000000000000:0xFFFFFFFFFFFFFFFF]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
minstret:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- minstret[63:0] in [0x0000000000000000:0xFFFFFFFFFFFFFFFF]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr0:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr0[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr1:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr1[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr2:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr2[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr3:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr3[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr4:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr4[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr5:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr5[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr6:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr6[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr7:
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- pmpaddr7[63:0] bitmask [0xFFFFFFFFFFFFFFFE, 0x0000000000000000]
wr_illegal:
- unchanged
rv32:
accessible: false
reset-val: 0
pmpaddr8:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr9:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr10:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr11:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr12:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr13:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr14:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr15:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr16:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr17:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr18:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr19:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr20:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr21:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr22:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr23:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr24:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr25:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr26:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr27:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr28:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr29:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr30:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr31:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr32:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr33:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr34:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr35:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr36:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr37:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr38:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr39:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr40:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr41:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr42:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr43:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr44:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr45:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr46:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr47:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr48:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr49:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr50:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr51:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr52:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr53:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr54:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr55:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr56:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr57:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr58:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr59:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr60:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr61:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr62:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
pmpaddr63:
rv64:
accessible: true
type:
ro_constant: 0x0
rv32:
accessible: false
reset-val: 0
satp:
rv32:
accessible: false
rv64:
accessible: true
ppn:
type:
warl:
dependency_fields: []
legal:
- "ppn[43:0] in [0x00000000000:0xFFFFFFFFFFF]"
wr_illegal:
- Unchanged
asid:
type:
warl:
dependency_fields: []
legal:
- "asid[15:0] in [0x0000:0x00FF]"
wr_illegal:
- Unchanged
mode:
type:
warl:
dependency_fields: []
legal:
- "mode[3:0] in [0,8]"
wr_illegal:
- Unchanged
reset-val: 0x0000000000000000
scause:
rv32:
accessible: false
rv64:
accessible: true
exception_code:
implemented: True
interrupt:
implemented: True
reset-val: 0
senvcfg:
rv32:
accessible: false
rv64:
accessible: true
reset-val: 0
sepc:
rv32:
accessible: false
rv64:
accessible: true
reset-val: 0
sie: #FIXME Check if readonly or not
reset-val: 0
rv64:
accessible: true
ssie:
implemented: true
stie:
implemented: true
seie:
implemented: true
rv32:
accessible: false
sip: #FIXME Check if readonly or not
reset-val: 0
rv64:
accessible: true
ssip:
implemented: true
stip:
implemented: true
seip:
implemented: true
rv32:
accessible: false
sscratch:
rv64:
accessible: true
rv32:
accessible: false
sstatus:
reset-val: 0x0
rv64:
accessible: true
uie:
implemented: false
sie:
implemented: true
upie:
implemented: false
spie:
implemented: true
spp:
implemented: true
fs:
implemented: false
xs:
implemented: true
sum:
implemented: true
mxr:
implemented: true
# FIXME not supported yet
#uxl:
# implemented: true
# type:
# warl:
# dependency_fields: []
# legal:
# - uxl[1:0] in [0x2]
# wr_illegal:
# - unchanged
sd:
implemented: true
rv32:
accessible: false
stval:
rv32:
accessible: false
rv64:
accessible: true
type:
warl:
dependency_fields: []
legal:
- stval[63:0] in [0x0000000000000000:0xFFFFFFFFFFFFFFFF]
wr_illegal:
- Unchanged
reset-val: 0
stvec:
reset-val: 0x80010000
rv64:
accessible: true
base:
implemented: true
type:
warl:
dependency_fields: []
legal:
# The 62 bits of 'base' are suffixed with 2'b00
# ==> all values are legal, alignment 4 bytes is implied
- base[61:0] in [0x00000000:0x3FFFFFFFFFFFFFFF]
wr_illegal:
- Unchanged
mode:
implemented: true
type:
warl:
dependency_fields: []
legal:
# Only Direct mode.
- mode[1:0] in [0x0]
wr_illegal:
- Unchanged
time:
rv64:
accessible: true
type:
ro_variable: true
rv32:
accessible: false
reset-val: 0