From 06d96e8fcf651a3fd16f5c64cbb01570471c7c0e Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Fri, 6 Dec 2013 12:53:20 +0100 Subject: Fixes in fsm detect/extract for better detection of non-fsm circuits --- passes/fsm/fsm_detect.cc | 2 +- passes/fsm/fsm_extract.cc | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'passes/fsm') diff --git a/passes/fsm/fsm_detect.cc b/passes/fsm/fsm_detect.cc index 6cd428a8..a8ec1912 100644 --- a/passes/fsm/fsm_detect.cc +++ b/passes/fsm/fsm_detect.cc @@ -161,7 +161,7 @@ struct FsmDetectPass : public Pass { sig_at_port.clear(); for (auto &cell_it : module->cells) for (auto &conn_it : cell_it.second->connections) { - if (ct.cell_output(cell_it.second->type, conn_it.first)) { + if (ct.cell_output(cell_it.second->type, conn_it.first) || !ct.cell_known(cell_it.second->type)) { RTLIL::SigSpec sig = conn_it.second; assign_map.apply(sig); sig2driver.insert(sig, sig2driver_entry_t(cell_it.second, conn_it.first)); diff --git a/passes/fsm/fsm_extract.cc b/passes/fsm/fsm_extract.cc index dc3a9ec0..9cba904a 100644 --- a/passes/fsm/fsm_extract.cc +++ b/passes/fsm/fsm_extract.cc @@ -144,8 +144,8 @@ static void find_transitions(ConstEval &ce, ConstEval &ce_nostop, FsmData &fsm_d return; } - assert(undef.width > 0); - assert(ce.stop_signals.check_all(undef)); + log_assert(undef.width > 0); + log_assert(ce.stop_signals.check_all(undef)); undef = undef.extract(0, 1); constval = undef; @@ -361,7 +361,7 @@ struct FsmExtractPass : public Pass { sig2trigger.clear(); for (auto &cell_it : module->cells) for (auto &conn_it : cell_it.second->connections) { - if (ct.cell_output(cell_it.second->type, conn_it.first)) { + if (ct.cell_output(cell_it.second->type, conn_it.first) || !ct.cell_known(cell_it.second->type)) { RTLIL::SigSpec sig = conn_it.second; assign_map.apply(sig); sig2driver.insert(sig, sig2driver_entry_t(cell_it.first, conn_it.first)); -- cgit v1.2.3