A newer version of this document is available. Customers should click here to go to the newest version.
3.3.6.1.1. Machine Status Register (mstatus)
3.3.6.1.2. Machine Trap-Vector Base-Address Register (mtvec)
3.3.6.1.3. Machine Interrupt Register (mip and mie)
3.3.6.1.4. Machine Exception Program Counter Register (mepc)
3.3.6.1.5. Machine Cause Register (mcause)
3.3.6.1.6. Machine Trap Value Register (mtval)
4.3.1. General-Purpose Register File
4.3.2. Arithmetic Logic Unit
4.3.3. Multipy and Divide Units
4.3.4. Floating-Point Unit
4.3.5. Custom Instruction
4.3.6. Instruction Cycles
4.3.7. Reset and Debug Signals
4.3.8. Control and Status Registers
4.3.9. Trap Controller (CLINT)
4.3.10. Memory and I/O Organization
4.3.11. RISC-V based Debug Module
4.3.12. Error Correction Code (ECC)
4.3.13. Branch Prediction
4.3.14. Lockstep Module
4.3.9.1.1. Machine Status Register (mstatus)
4.3.9.1.2. Machine Trap-Vector Base-Address Register (mtvec)
4.3.9.1.3. Machine Interrupt Register (mip and mie)
4.3.9.1.4. Machine Exception Program Counter Register (mepc)
4.3.9.1.5. Machine Cause Register (mcause)
4.3.9.1.6. Machine Trap Value Register (mtval)
4.3.9.1.7. Machine Second Trap Value Register (mtval2)
4.3.12.2. ECC Error Injection
ECC error injection allows you to inject ECC errors into the processor. This ECC error injection tests the hardware features, firmware, and driver development. You can trigger an ECC exception by writing an error code into the ECC Error Inject module based on the mtval2 table.
Note: To prevent the hardware from continuing to trigger the ECC error, write a zero to turn off the ECC error injection.
Altera provides an error injection API for users to inject an ECC error into the processor based on the Table List of ECC Sources based on mtval2 Bit Field. The source header file is in <BSP Project>\HAL\inc\sys\alt_ecc_error_inject.h.
alt_ecc_error_inject(ALT_ECC_ERROR_TYPE type)I
For example, if you write 24 to the module, the cpu_ecc_status and cpu_ecc_source of Data TCM1 become 2'b10 and 4’b1000 respectively. If you write 25 to the module, the cpu_ecc_status and cpu_ecc_source of Data TCM1 become 2'b11 and 4’b1000, respectively.
ECC Error Inject | Module based on mtval2 | cpu_ecc_status | cpu_ecc_source |
---|---|---|---|
24 | Data TCM1 Correctable Error | 2'b10 (Correctable) | 4’b1000 (Data TCM1) |
25 | Data TCM1 Uncorrectable Error | 2'b11 (Uncorrectable) | 4’b1000 (Data TCM1) |