Add warnings for quickly growing FSM table size in fsm_expand
authorClifford Wolf <clifford@clifford.at>
Thu, 26 Jan 2017 08:01:26 +0000 (09:01 +0100)
committerClifford Wolf <clifford@clifford.at>
Thu, 26 Jan 2017 08:05:59 +0000 (09:05 +0100)
passes/fsm/fsm_expand.cc

index e7b9dcf90f6b0f6db615ad56db61f827074ed504..0a2166b992e5b8eebe6fbe15e57c83303a2adf20 100644 (file)
@@ -173,6 +173,16 @@ struct FsmExpand
                new_ctrl_out.append(output_sig);
                fsm_cell->setPort("\\CTRL_OUT", new_ctrl_out);
 
+               if (GetSize(input_sig) > 10)
+                       log_warning("Cell %s.%s (%s) has %d input bits, merging into FSM %s.%s might be problematic.\n",
+                                       log_id(cell->module), log_id(cell), log_id(cell->type),
+                                       GetSize(input_sig), log_id(fsm_cell->module), log_id(fsm_cell));
+
+               if (GetSize(fsm_data.transition_table) > 10000)
+                       log_warning("Transition table for FSM %s.%s already has %d rows, merging more cells "
+                                       "into this FSM might be problematic.\n", log_id(fsm_cell->module), log_id(fsm_cell),
+                                       GetSize(fsm_data.transition_table));
+
                std::vector<FsmData::transition_t> new_transition_table;
                for (auto &tr : fsm_data.transition_table) {
                        for (int i = 0; i < (1 << input_sig.size()); i++) {