aboutsummaryrefslogtreecommitdiffstats
path: root/passes/sat/sat.cc
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2019-10-08 12:38:29 -0700
committerGitHub <noreply@github.com>2019-10-08 12:38:29 -0700
commitcfc181cba9837f42d9faa8ba9dbffbcede0ca84b (patch)
treef3c6541c857e43cc856cc925f3aeea586fc8f262 /passes/sat/sat.cc
parent4c89a4e642c8618a0e18270d338e48599834d923 (diff)
parent045f34403889b69f3ac3ac08d96e5cf1fae787d1 (diff)
downloadyosys-cfc181cba9837f42d9faa8ba9dbffbcede0ca84b.tar.gz
yosys-cfc181cba9837f42d9faa8ba9dbffbcede0ca84b.tar.bz2
yosys-cfc181cba9837f42d9faa8ba9dbffbcede0ca84b.zip
Merge pull request #1432 from YosysHQ/eddie/fix1427
Refactor peepopt_dffmux and be sensitive to \init when trimming
Diffstat (limited to 'passes/sat/sat.cc')
-rw-r--r--passes/sat/sat.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/passes/sat/sat.cc b/passes/sat/sat.cc
index 430bba1e8..93a4f225e 100644
--- a/passes/sat/sat.cc
+++ b/passes/sat/sat.cc
@@ -265,15 +265,18 @@ struct SatHelper
RTLIL::SigSpec rhs = it.second->attributes.at("\\init");
log_assert(lhs.size() == rhs.size());
+ dict<RTLIL::SigBit,SigBit> seen_init;
RTLIL::SigSpec removed_bits;
for (int i = 0; i < lhs.size(); i++) {
RTLIL::SigSpec bit = lhs.extract(i, 1);
- if (rhs[i] == State::Sx || !satgen.initial_state.check_all(bit)) {
+ if (rhs[i] == State::Sx || !satgen.initial_state.check_all(bit) || seen_init.at(bit, rhs[i]) != rhs[i]) {
removed_bits.append(bit);
lhs.remove(i, 1);
rhs.remove(i, 1);
i--;
}
+ else
+ seen_init[bit] = rhs[i];
}
if (removed_bits.size())