From 95b6c3588222564b86cfa73f0601be44e3af5786 Mon Sep 17 00:00:00 2001 From: whitequark Date: Fri, 18 Jan 2019 23:22:02 +0000 Subject: proc_clean: fix fully def check to consider compare/signal length. Fixes #790. --- passes/proc/proc_clean.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'passes') diff --git a/passes/proc/proc_clean.cc b/passes/proc/proc_clean.cc index 3919e4b9c..0e2f95226 100644 --- a/passes/proc/proc_clean.cc +++ b/passes/proc/proc_clean.cc @@ -82,9 +82,15 @@ void proc_clean_switch(RTLIL::SwitchRule *sw, RTLIL::CaseRule *parent, bool &did { if (max_depth != 0) proc_clean_case(cs, did_something, count, max_depth-1); + int size = 0; for (auto cmp : cs->compare) - if (!cmp.is_fully_def()) + { + size += cmp.size(); + if (cmp.is_fully_def()) all_fully_def = false; + } + if (sw->signal.size() != size) + all_fully_def = false; } if (all_fully_def) { -- cgit v1.2.3 From 58d059ccb7f32f4d061fe3d7caf57483fbf01516 Mon Sep 17 00:00:00 2001 From: whitequark Date: Wed, 23 Jan 2019 22:08:38 +0000 Subject: proc_clean: fix critical typo. --- passes/proc/proc_clean.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'passes') diff --git a/passes/proc/proc_clean.cc b/passes/proc/proc_clean.cc index 0e2f95226..52141a8ec 100644 --- a/passes/proc/proc_clean.cc +++ b/passes/proc/proc_clean.cc @@ -86,7 +86,7 @@ void proc_clean_switch(RTLIL::SwitchRule *sw, RTLIL::CaseRule *parent, bool &did for (auto cmp : cs->compare) { size += cmp.size(); - if (cmp.is_fully_def()) + if (!cmp.is_fully_def()) all_fully_def = false; } if (sw->signal.size() != size) -- cgit v1.2.3 From a4515712cb4ebf62168583fae0f3d60418c803c6 Mon Sep 17 00:00:00 2001 From: David Shah Date: Thu, 7 Feb 2019 10:35:36 +0000 Subject: fsm_opt: Fix runtime error for FSMs without a reset state Signed-off-by: David Shah --- passes/fsm/fsm_opt.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'passes') diff --git a/passes/fsm/fsm_opt.cc b/passes/fsm/fsm_opt.cc index 3a6ac2746..048daee55 100644 --- a/passes/fsm/fsm_opt.cc +++ b/passes/fsm/fsm_opt.cc @@ -72,7 +72,8 @@ struct FsmOpt new_transition_table.swap(fsm_data.transition_table); new_state_table.swap(fsm_data.state_table); - fsm_data.reset_state = old_to_new_state.at(fsm_data.reset_state); + if (fsm_data.reset_state != -1) + fsm_data.reset_state = old_to_new_state.at(fsm_data.reset_state); } } -- cgit v1.2.3