-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
If the core_complex::reset_address parameter changes while reset is asserted, it does not get applied when reset de-asserts. It appears to stem from this logic:
template <unsigned int BUSWIDTH, typename QK> void core_complex<BUSWIDTH, QK>::run() {
reset(GET_PROP_VALUE(reset_address));
wait(SC_ZERO_TIME); // separate from elaboration phase
do {
wait(SC_ZERO_TIME);
if(rst_i.read()) {
reset(GET_PROP_VALUE(reset_address)); // Should this get moved after the wait?
wait(rst_i.negedge_event());
}
...
The internal reset call is made with the existing value of reset_address before entering the wait for the reset de-assertion. Once the negedge event is detected, any change to reset_address that may have occurred during the reset window is ignored.
Metadata
Metadata
Assignees
Labels
No labels