Don't be too smart with $dff cells with "init" attribute on out signal
authorClifford Wolf <clifford@clifford.at>
Thu, 16 Oct 2014 09:49:31 +0000 (11:49 +0200)
committerClifford Wolf <clifford@clifford.at>
Thu, 16 Oct 2014 09:49:31 +0000 (11:49 +0200)
passes/opt/opt_rmdff.cc

index c7e92ddc15e53259aef2a3d1b765711c75aa84d2..5f52bb8d810a118abc9fc89a8ce45fb6272bc3cd 100644 (file)
@@ -83,7 +83,7 @@ bool handle_dff(RTLIL::Module *mod, RTLIL::Cell *dff)
                val_init.bits.push_back(bit.wire == NULL ? bit.data : RTLIL::State::Sx);
        }
 
-       if (dff->type == "$dff" && mux_drivers.has(sig_d)) {
+       if (dff->type == "$dff" && mux_drivers.has(sig_d) && !has_init) {
                std::set<RTLIL::Cell*> muxes;
                mux_drivers.find(sig_d, muxes);
                for (auto mux : muxes) {