-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Labels
Component:OtherNon-RTL, non-documentation (e.g. bhv, sva)Non-RTL, non-documentation (e.g. bhv, sva)Status:ResolvedIssue has been resolved, but closure is pending on git merge and/or issuer confirmationIssue has been resolved, but closure is pending on git merge and/or issuer confirmationType:BugFor bugs in any content (RTL, Documentation, etc.)For bugs in any content (RTL, Documentation, etc.)
Description
WFE/WFI in wb + IRQ can cause interrupt to be missed
An wfi/wfe in wb while there is a pending and enabled interrupt for one cycle causes interrupt to be missed. In the example below the second pending and enabled interrupt wakes up the core and is taken.
Steps to Reproduce
- git hash: df6c2cd
- Assertion:
property p_higher_lvl_than_mintthresh_th_can_preempt;
clic.irq
##1 ($past(clic.priv) == current_priv_mode)
&& ($past(clic.level) > effective_clic_level)
&& mstatus_fields.mie
&& is_interrupt_allowed == 1'b1
|->
irq_ack
or
rvfi_valid[->1:2]
##0 rvfi_dbg_mode
or
rvfi_valid[->1:2]
##0 rvfi_intr.exception
or
rvfi_valid[->1:2]
##0 rvfi_trap.exception
or
rvfi_valid[->1:2]
##0 is_cause_nmi
;
endproperty : p_higher_lvl_than_mintthresh_th_can_preempt
a_higher_lvl_than_mintthresh_th_can_preempt: assert property(p_higher_lvl_than_mintthresh_th_can_preempt)
else
`uvm_error(info_tag,
$sformatf("Higher level than mintthresh should be able to interrupt"));
Metadata
Metadata
Assignees
Labels
Component:OtherNon-RTL, non-documentation (e.g. bhv, sva)Non-RTL, non-documentation (e.g. bhv, sva)Status:ResolvedIssue has been resolved, but closure is pending on git merge and/or issuer confirmationIssue has been resolved, but closure is pending on git merge and/or issuer confirmationType:BugFor bugs in any content (RTL, Documentation, etc.)For bugs in any content (RTL, Documentation, etc.)