# imperas.ic # Initialization file for rv32imc ImperasDV lock step simulation # jcarlin@hmc.edu 15 March 2025 # SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1 # Base configuration --variant RV32IMC # No Supervisor mode --override cpu/sub_Extensions="S" # Zifencei extension not implemented --override cpu/Zifencei=F # Little endian only --override cpu/endianFixed=T # mcause and scause only have 4 lsbs of code and 1 msb of interrupt flag --override cpu/ecode_mask=0x8000000F # for RV32 # No PMP --override cpu/PMP_registers=0 --override cpu/PMP_undefined=T # PMA Settings # 'r': read access allowed # 'w': write access allowed # 'x': execute access allowed # 'a': aligned access required # 'A': atomic instructions NOT allowed (actually USER1 privilege needed) # 'P': push/pop instructions NOT allowed (actually USER2 privilege needed) # '1': 1-byte accesses allowed # '2': 2-byte accesses allowed # '4': 4-byte accesses allowed # '8': 8-byte accesses allowed # '-', space: ignored (use for input string formatting). # # SVxx Memory 0x0000000000 0x7FFFFFFFFF # --callcommand refRoot/cpu/setPMA -lo 0x0000000000 -hi 0xFFFFFFFFFFFFFFFFFF -attributes " ---a-- ---- " # All memory inaccessible unless defined otherwise --callcommand refRoot/cpu/setPMA -lo 0x0000000000 -hi 0x7FFFFFFFFF -attributes " ---a-- ---- " # INITIAL --callcommand refRoot/cpu/setPMA -lo 0x0002000000 -hi 0x000200FFFF -attributes " rw-aA- 1248 " # CLINT --callcommand refRoot/cpu/setPMA -lo 0x000C000000 -hi 0x000FFFFFFF -attributes " rw-aA- --4- " # PLIC --callcommand refRoot/cpu/setPMA -lo 0x0010000000 -hi 0x0010000007 -attributes " rw-aA- 1--- " # UART0 --callcommand refRoot/cpu/setPMA -lo 0x0010060000 -hi 0x00100600FF -attributes " rw-aA- --4- " # GPIO --callcommand refRoot/cpu/setPMA -lo 0x0010040000 -hi 0x0010040FFF -attributes " rw-aA- --4- " # SPI --callcommand refRoot/cpu/setPMA -lo 0x0080000000 -hi 0x00807FFFFF -attributes " rwx--- 1248 " # DTIM/IROM