From 009f75824c06bc2923fcb7323ad474259be78eb7 Mon Sep 17 00:00:00 2001 From: Abdulwadoodd Date: Thu, 30 Jun 2022 15:04:23 +0500 Subject: [PATCH] fixed code structure, formatting,duplications etc --- model/riscv_csr_map.sail | 5 - model/riscv_insts_zicsr.sail | 33 ++-- model/riscv_pmp_control.sail | 291 +++++++++++++++++------------------ model/riscv_pmp_regs.sail | 3 +- model/riscv_sys_control.sail | 1 - 5 files changed, 162 insertions(+), 171 deletions(-) diff --git a/model/riscv_csr_map.sail b/model/riscv_csr_map.sail index 701d9274d..6d4636fc0 100644 --- a/model/riscv_csr_map.sail +++ b/model/riscv_csr_map.sail @@ -136,10 +136,6 @@ mapping clause csr_name_map = 0x3A0 <-> "pmpcfg0" mapping clause csr_name_map = 0x3A1 <-> "pmpcfg1" mapping clause csr_name_map = 0x3A2 <-> "pmpcfg2" mapping clause csr_name_map = 0x3A3 <-> "pmpcfg3" -mapping clause csr_name_map = 0x3A0 <-> "pmpcfg0" -mapping clause csr_name_map = 0x3A1 <-> "pmpcfg1" -mapping clause csr_name_map = 0x3A2 <-> "pmpcfg2" -mapping clause csr_name_map = 0x3A3 <-> "pmpcfg3" mapping clause csr_name_map = 0x3A4 <-> "pmpcfg4" mapping clause csr_name_map = 0x3A5 <-> "pmpcfg5" mapping clause csr_name_map = 0x3A6 <-> "pmpcfg6" @@ -216,7 +212,6 @@ mapping clause csr_name_map = 0x3EC <-> "pmpaddr60" mapping clause csr_name_map = 0x3ED <-> "pmpaddr61" mapping clause csr_name_map = 0x3EE <-> "pmpaddr62" mapping clause csr_name_map = 0x3EF <-> "pmpaddr63" - /* machine counters/timers */ mapping clause csr_name_map = 0xB00 <-> "mcycle" mapping clause csr_name_map = 0xB02 <-> "minstret" diff --git a/model/riscv_insts_zicsr.sail b/model/riscv_insts_zicsr.sail index 496b86065..1f71b7fc1 100644 --- a/model/riscv_insts_zicsr.sail +++ b/model/riscv_insts_zicsr.sail @@ -253,23 +253,22 @@ function writeCSR (csr : csreg, value : xlenbits) -> unit = { (0x344, _) => { mip = legalize_mip(mip, value); Some(mip.bits()) }, // Note: Some(value) returned below is not the legalized value due to locked entries - (0x3A0, _) => { pmpWriteCfgReg(0, value); Some(pmpReadCfgReg(0)) }, // pmpcfg0 - (0x3A1, 32) => { pmpWriteCfgReg(1, value); Some(pmpReadCfgReg(1)) }, // pmpcfg1 - (0x3A2, _) => { pmpWriteCfgReg(2, value); Some(pmpReadCfgReg(2)) }, // pmpcfg2 - (0x3A3, 32) => { pmpWriteCfgReg(3, value); Some(pmpReadCfgReg(3)) }, // pmpcfg3 - (0x3A4, _) => { pmpWriteCfgReg(4, value); Some(pmpReadCfgReg(4)) }, // pmpcfg4, - (0x3A5, 32) => { pmpWriteCfgReg(5, value); Some(pmpReadCfgReg(5)) }, // pmpcfg5, - (0x3A6, _) => { pmpWriteCfgReg(6, value); Some(pmpReadCfgReg(6)) }, // pmpcfg6, - (0x3A7, 32) => { pmpWriteCfgReg(7, value); Some(pmpReadCfgReg(7)) }, // pmpcfg7, - (0x3A8, _) => { pmpWriteCfgReg(8, value); Some(pmpReadCfgReg(8)) }, // pmpcfg8, - (0x3A9, 32) => { pmpWriteCfgReg(9, value); Some(pmpReadCfgReg(9)) }, // pmpcfg9, - (0x3AA, _) => { pmpWriteCfgReg(10, value); Some(pmpReadCfgReg(10))}, // pmpcfg10, - (0x3AB, 32) => { pmpWriteCfgReg(11, value); Some(pmpReadCfgReg(11))}, // pmpcfg11, - (0x3AC, _) => { pmpWriteCfgReg(12, value); Some(pmpReadCfgReg(12))}, // pmpcfg12, - (0x3AD, 32) => { pmpWriteCfgReg(13, value); Some(pmpReadCfgReg(13))}, // pmpcfg13, - (0x3AE, _) => { pmpWriteCfgReg(14, value); Some(pmpReadCfgReg(14))}, // pmpcfg14, - (0x3AF, 32) => { pmpWriteCfgReg(15, value); Some(pmpReadCfgReg(15))}, // pmpcfg15, - + (0x3A0, _) => { pmpWriteCfgReg(0, value); Some(pmpReadCfgReg(0)) }, // pmpcfg0 + (0x3A1, 32) => { pmpWriteCfgReg(1, value); Some(pmpReadCfgReg(1)) }, // pmpcfg1 + (0x3A2, _) => { pmpWriteCfgReg(2, value); Some(pmpReadCfgReg(2)) }, // pmpcfg2 + (0x3A3, 32) => { pmpWriteCfgReg(3, value); Some(pmpReadCfgReg(3)) }, // pmpcfg3 + (0x3A4, _) => { pmpWriteCfgReg(4, value); Some(pmpReadCfgReg(4)) }, // pmpcfg4 + (0x3A5, 32) => { pmpWriteCfgReg(5, value); Some(pmpReadCfgReg(5)) }, // pmpcfg5 + (0x3A6, _) => { pmpWriteCfgReg(6, value); Some(pmpReadCfgReg(6)) }, // pmpcfg6 + (0x3A7, 32) => { pmpWriteCfgReg(7, value); Some(pmpReadCfgReg(7)) }, // pmpcfg7 + (0x3A8, _) => { pmpWriteCfgReg(8, value); Some(pmpReadCfgReg(8)) }, // pmpcfg8 + (0x3A9, 32) => { pmpWriteCfgReg(9, value); Some(pmpReadCfgReg(9)) }, // pmpcfg9 + (0x3AA, _) => { pmpWriteCfgReg(10, value); Some(pmpReadCfgReg(10)) }, // pmpcfg10 + (0x3AB, 32) => { pmpWriteCfgReg(11, value); Some(pmpReadCfgReg(11)) }, // pmpcfg11 + (0x3AC, _) => { pmpWriteCfgReg(12, value); Some(pmpReadCfgReg(12)) }, // pmpcfg12 + (0x3AD, 32) => { pmpWriteCfgReg(13, value); Some(pmpReadCfgReg(13)) }, // pmpcfg13 + (0x3AE, _) => { pmpWriteCfgReg(14, value); Some(pmpReadCfgReg(14)) }, // pmpcfg14 + (0x3AF, 32) => { pmpWriteCfgReg(15, value); Some(pmpReadCfgReg(15)) }, // pmpcfg15 (0x3B0, _) => { pmpaddr0 = pmpWriteAddr(pmpLocked(pmp0cfg), pmpTORLocked(pmp1cfg), pmpaddr0, value); Some(pmpaddr0) }, (0x3B1, _) => { pmpaddr1 = pmpWriteAddr(pmpLocked(pmp1cfg), pmpTORLocked(pmp2cfg), pmpaddr1, value); Some(pmpaddr1) }, diff --git a/model/riscv_pmp_control.sail b/model/riscv_pmp_control.sail index 9233f3545..286a50297 100644 --- a/model/riscv_pmp_control.sail +++ b/model/riscv_pmp_control.sail @@ -223,198 +223,197 @@ function pmpCheck forall 'n, 'n > 0. (addr: xlenbits, width: atom('n), acc: Acce PMP_Fail => false, PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp17cfg, pmpaddr17, pmpaddr16) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp18cfg, pmpaddr18, pmpaddr17) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp19cfg, pmpaddr19, pmpaddr18) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp20cfg, pmpaddr20, pmpaddr19) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp21cfg, pmpaddr21, pmpaddr20) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp22cfg, pmpaddr22, pmpaddr21) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp23cfg, pmpaddr23, pmpaddr22) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp24cfg, pmpaddr24, pmpaddr23) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp25cfg, pmpaddr25, pmpaddr24) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp26cfg, pmpaddr26, pmpaddr25) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp27cfg, pmpaddr27, pmpaddr26) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp28cfg, pmpaddr28, pmpaddr27) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp29cfg, pmpaddr29, pmpaddr28) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp30cfg, pmpaddr30, pmpaddr29) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp31cfg, pmpaddr31, pmpaddr30) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp32cfg, pmpaddr32, pmpaddr31) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp33cfg, pmpaddr33, pmpaddr32) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp34cfg, pmpaddr34, pmpaddr33) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp35cfg, pmpaddr35, pmpaddr34) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp36cfg, pmpaddr36, pmpaddr35) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp37cfg, pmpaddr37, pmpaddr36) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp38cfg, pmpaddr38, pmpaddr37) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp39cfg, pmpaddr39, pmpaddr38) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp40cfg, pmpaddr40, pmpaddr39) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp41cfg, pmpaddr41, pmpaddr40) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp42cfg, pmpaddr42, pmpaddr41) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp43cfg, pmpaddr43, pmpaddr42) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp44cfg, pmpaddr44, pmpaddr43) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp45cfg, pmpaddr45, pmpaddr44) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp46cfg, pmpaddr46, pmpaddr45) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp47cfg, pmpaddr47, pmpaddr46) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp48cfg, pmpaddr48, pmpaddr47) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp49cfg, pmpaddr49, pmpaddr48) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp50cfg, pmpaddr50, pmpaddr49) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp51cfg, pmpaddr51, pmpaddr50) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp52cfg, pmpaddr52, pmpaddr51) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp53cfg, pmpaddr53, pmpaddr52) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp54cfg, pmpaddr54, pmpaddr53) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp55cfg, pmpaddr55, pmpaddr54) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp56cfg, pmpaddr56, pmpaddr55) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp57cfg, pmpaddr57, pmpaddr56) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp58cfg, pmpaddr58, pmpaddr57) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp59cfg, pmpaddr59, pmpaddr58) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp60cfg, pmpaddr60, pmpaddr59) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp61cfg, pmpaddr61, pmpaddr60) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp62cfg, pmpaddr62, pmpaddr61) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match pmpMatchEntry(addr, width, acc, priv, pmp63cfg, pmpaddr63, pmpaddr62) { - PMP_Success => true, - PMP_Fail => false, - PMP_Continue => - match priv { - Machine => true, - _ => false - - }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}; + PMP_Success => true, + PMP_Fail => false, + PMP_Continue => match priv { + Machine => true, + _ => false + } + }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}; if check then None() diff --git a/model/riscv_pmp_regs.sail b/model/riscv_pmp_regs.sail index de8d4ecd3..7635128dd 100644 --- a/model/riscv_pmp_regs.sail +++ b/model/riscv_pmp_regs.sail @@ -436,8 +436,7 @@ function pmpWriteCfgReg(n, v) = { pmp61cfg = pmpWriteCfg(pmp59cfg, v[47..40]); pmp62cfg = pmpWriteCfg(pmp59cfg, v[55..48]); pmp63cfg = pmpWriteCfg(pmp59cfg, v[63..56]); - } - + } } } diff --git a/model/riscv_sys_control.sail b/model/riscv_sys_control.sail index 95ff2fbe4..62dffd14d 100644 --- a/model/riscv_sys_control.sail +++ b/model/riscv_sys_control.sail @@ -180,7 +180,6 @@ function is_CSR_defined (csr : csreg, p : Privilege) -> bool = 0x3EE => p == Machine, // pmpaddr62 0x3EF => p == Machine, // pmpaddr63 - /* counters */ 0xB00 => p == Machine, // mcycle 0xB02 => p == Machine, // minstret