Cannot gate clock for WFI when PULP_CLUSTER = 1
Created by: Silabs-ArjanB
In the configuration with PULP_CLUSTER = 1 the internal architectural clock gate (i.e. core_clock_gate_i) cannot be gated.
Once the WFI has been hit, the core_busy_o signal will go low as intended. In order to gate the internal clock the environment will have to lower clock_en_i as the final gating condition is determined as follows:
assign clock_en = PULP_CLUSTER ? clock_en_i | core_busy_o : irq_pending | debug_req_i | core_busy_o;
Once both clock_en_i and core_busy_o are low a pending and locally enabled interrupt will not be signaled via core_busy_o as clock_en will remain low and the core will not become 'busy'. The environment could have kept clock_en_i high to prevent this situation, but that would leave the internal clocks running during a WFI, which is not desired.
Likely irq_pending (and debug_req_i ?) need to factor into clock_en for PULP_CLUSTER = 1 as well.