Functional coverage : Create Unmapped instruction and exceptions coverage models
Created by: AyoubJalali
This PR used the rvfi.cause (that I add in the PR#2354 core-v-verif), to detect the exception cause, using this I create 2 covarege models :
- Unmapped instruction : trying to to cover illegal opcode of various extension also illegal funct3 & funct7, the Covergroup sample only if instr.cause == 2 (illegal instruction exception code)
- Exceptions : cover the values of instr.cause but only if instr.trap == 1 (there's a trap), also I add some switch, as example ENV_CALL_UMODE is ignore because user_mode isn't supported, finally I add a coverpoint that cover the transaction from NO_EXCEPTION -> EXCEPTION -> EXCEPTION.
N.B : this is just a first version, we can add more and of course remove things