Minor bugfix in FSM reset state detection
authorClifford Wolf <clifford@clifford.at>
Tue, 12 Jul 2016 07:46:15 +0000 (09:46 +0200)
committerClifford Wolf <clifford@clifford.at>
Tue, 12 Jul 2016 07:46:15 +0000 (09:46 +0200)
passes/fsm/fsm_extract.cc

index 95cb498e348822ecb8d86f43f9dd5cce2164a007..8a4ee3f265de636cb77e1dc914d3d7f650d7daf0 100644 (file)
@@ -92,12 +92,15 @@ static bool find_states(RTLIL::SigSpec sig, const RTLIL::SigSpec &dff_out, RTLIL
 
                if (reset_state && RTLIL::SigSpec(*reset_state).is_fully_undef())
                        do {
+                               SigSpec new_reset_state;
                                if (sig_aa.is_fully_def())
-                                       *reset_state = sig_aa.as_const();
+                                       new_reset_state = sig_aa.as_const();
                                else if (sig_bb.is_fully_def())
-                                       *reset_state = sig_bb.as_const();
+                                       new_reset_state = sig_bb.as_const();
                                else
                                        break;
+                               new_reset_state.extend_u0(GetSize(*reset_state));
+                               *reset_state = new_reset_state.as_const();
                                log("  found reset state: %s (guessed from mux tree)\n", log_signal(*reset_state));
                        } while (0);