@@ -163,7 +163,9 @@ NotDebug: assume property (!ibex_top_i.u_ibex_core.debug_mode & !debug_req_i);
163163ConstantBoot: assume property (boot_addr_i == $past (boot_addr_i));
164164// 3. Always fetch enable
165165FetchEnable: assume property (fetch_enable_i == IbexMuBiOn);
166- // 4. Never try to sleep if we couldn't ever wake up
166+ // 4. Always have mcounteren writable
167+ McounterenWritable: assume property (mcounteren_writable_i == IbexMuBiOn);
168+ // 5. Never try to sleep if we couldn't ever wake up
167169WFIStart: assume property (`IDC .ctrl_fsm_cs == SLEEP | - > (
168170 `CSR .mie_q.irq_software |
169171 `CSR .mie_q.irq_timer |
@@ -201,6 +203,7 @@ WFIStart: assume property (`IDC.ctrl_fsm_cs == SLEEP |-> (
201203 logic [31 : 0 ] `X (mscratch); \
202204 logic [31 : 0 ] `X (mepc); \
203205 logic [63 : 0 ] `X (mcycle); \
206+ logic [63 : 0 ] `X (cycle); \
204207 logic [31 : 0 ] `X (mshwmb); \
205208 logic [31 : 0 ] `X (mshwm); \
206209 logic [31 : 0 ] `X (mcounteren); \
@@ -442,13 +445,17 @@ logic ex_is_checkable_csr;
442445assign ex_is_checkable_csr = ~ (
443446 ((CSR_MHPMCOUNTER3H <= `CSR_ADDR ) && (`CSR_ADDR <= CSR_MHPMCOUNTER31H )) |
444447 ((CSR_MHPMCOUNTER3 <= `CSR_ADDR ) && (`CSR_ADDR <= CSR_MHPMCOUNTER31 )) |
448+ ((CSR_HPMCOUNTER3H <= `CSR_ADDR ) && (`CSR_ADDR <= CSR_HPMCOUNTER31H )) |
449+ ((CSR_HPMCOUNTER3 <= `CSR_ADDR ) && (`CSR_ADDR <= CSR_HPMCOUNTER31 )) |
445450 ((CSR_MHPMEVENT3 <= `CSR_ADDR ) && (`CSR_ADDR <= CSR_MHPMEVENT31 )) |
446451 (`CSR_ADDR == CSR_CPUCTRLSTS ) | (`CSR_ADDR == CSR_SECURESEED ) |
447452 (`CSR_ADDR == CSR_MIE ) |
448453 (`CSR_ADDR == CSR_MCYCLE ) | (`CSR_ADDR == CSR_MCYCLEH ) |
454+ (`CSR_ADDR == CSR_CYCLE ) | (`CSR_ADDR == CSR_CYCLEH ) |
449455
450456 // TODO:
451457 (`CSR_ADDR == CSR_MINSTRET ) | (`CSR_ADDR == CSR_MINSTRETH ) |
458+ (`CSR_ADDR == CSR_INSTRET ) | (`CSR_ADDR == CSR_INSTRETH ) |
452459 (`CSR_ADDR == CSR_MCOUNTINHIBIT )
453460);
454461
0 commit comments