From: Miodrag Milanovic Date: Fri, 22 Apr 2022 09:57:39 +0000 (+0200) Subject: Set init state for all wires from FST and set past X-Git-Tag: yosys-0.17~23^2~6 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=75032a565d22506ae7910bfa00e2b71558a30e26;p=yosys.git Set init state for all wires from FST and set past --- diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc index e12701817..967f7f227 100644 --- a/passes/sat/sim.cc +++ b/passes/sat/sim.cc @@ -782,22 +782,21 @@ struct SimInstance bool setInitState() { bool did_something = false; + for(auto &item : fst_handles) { + if (item.second==0) continue; // Ignore signals not found + std::string v = shared->fst->valueOf(item.second); + did_something |= set_state(item.first, Const::from_string(v)); + } for (auto &it : ff_database) { ff_state_t &ff = it.second; - SigSpec qsig = it.second.data.sig_q; - if (qsig.is_wire()) { - IdString name = qsig.as_wire()->name; - fstHandle id = shared->fst->getHandle(scope + "." + RTLIL::unescape_id(name)); - if (id==0 && name.isPublic()) - log_warning("Unable to find wire %s in input file.\n", (scope + "." + RTLIL::unescape_id(name)).c_str()); - if (id!=0) { - Const fst_val = Const::from_string(shared->fst->valueOf(id)); - ff.past_d = fst_val; - if (ff.data.has_aload) - ff.past_ad = fst_val; - did_something = set_state(qsig, fst_val); - } + SigSpec dsig = it.second.data.sig_d; + Const value = get_state(dsig); + if (dsig.is_wire()) { + ff.past_d = value; + if (ff.data.has_aload) + ff.past_ad = value; + did_something |= true; } } for (auto child : children)