From b54aecd80a58dc2a7f5069ee03561d64efdba765 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 2 Apr 2022 10:33:41 +0200 Subject: Set past_d value for init state --- passes/sat/sim.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'passes') diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc index 65bd5c78e..d74fbcc4e 100644 --- a/passes/sat/sim.cc +++ b/passes/sat/sim.cc @@ -782,6 +782,7 @@ struct SimInstance { 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; @@ -790,6 +791,7 @@ struct SimInstance 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; set_state(qsig, fst_val); } } -- cgit v1.2.3 From 2c96ecc5f7d88cfd8dbddc3e5f45fb0a2a9bb6d3 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 2 Apr 2022 10:34:11 +0200 Subject: setInitState can be only one altering values --- passes/sat/sim.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'passes') diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc index d74fbcc4e..3fb49bbf7 100644 --- a/passes/sat/sim.cc +++ b/passes/sat/sim.cc @@ -778,8 +778,9 @@ struct SimInstance child.second->register_output_step_values(data); } - void setInitState() + bool setInitState() { + bool did_something = false; for (auto &it : ff_database) { ff_state_t &ff = it.second; @@ -792,12 +793,13 @@ struct SimInstance if (id!=0) { Const fst_val = Const::from_string(shared->fst->valueOf(id)); ff.past_d = fst_val; - set_state(qsig, fst_val); + did_something = set_state(qsig, fst_val); } } } for (auto child : children) - child.second->setInitState(); + did_something |= child.second->setInitState(); + return did_something; } void setState(dict> bits, std::string values) @@ -1112,7 +1114,7 @@ struct SimWorker : SimShared } if (initial) { - top->setInitState(); + did_something |= top->setInitState(); initial = false; } if (did_something) -- cgit v1.2.3 From 6020ba67ac0b493109ee1d0ef598f7f1de965d4d Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 2 Apr 2022 10:59:15 +0200 Subject: past_ad initial value setting --- passes/sat/sim.cc | 3 +++ 1 file changed, 3 insertions(+) (limited to 'passes') diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc index 3fb49bbf7..ca4aab566 100644 --- a/passes/sat/sim.cc +++ b/passes/sat/sim.cc @@ -256,6 +256,7 @@ struct SimInstance { ff_state_t &ff = it.second; zinit(ff.past_d); + zinit(ff.past_ad); SigSpec qsig = it.second.data.sig_q; Const qdata = get_state(qsig); @@ -793,6 +794,8 @@ struct SimInstance 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); } } -- cgit v1.2.3