Do not create $dffsr cells with no-op resets in proc_dff
authorClifford Wolf <clifford@clifford.at>
Thu, 19 Jun 2014 10:29:29 +0000 (12:29 +0200)
committerClifford Wolf <clifford@clifford.at>
Thu, 19 Jun 2014 10:29:29 +0000 (12:29 +0200)
passes/proc/proc_dff.cc

index 2ec498fb25325a8c264ad2aaeb77912647a423a3..c184465129bc6e707b947acfd1dc316f5c951376 100644 (file)
@@ -356,6 +356,11 @@ static void proc_dff(RTLIL::Module *mod, RTLIL::Process *proc, ConstEval &ce)
                rstval.optimize();
                sig.optimize();
 
+               if (rstval == sig) {
+                       rstval = RTLIL::SigSpec(RTLIL::State::Sz, sig.width);
+                       sync_level = NULL;
+               }
+
                if (sync_always) {
                        if (sync_edge || sync_level || many_async_rules.size() > 0)
                                log_error("Mixed always event with edge and/or level sensitive events!\n");