mirror of
https://github.com/YosysHQ/yosys
synced 2025-09-27 11:49:02 +00:00
Update passes/fsm to avoid bits()
This commit is contained in:
parent
1b589b065d
commit
e1d0c010ef
5 changed files with 32 additions and 44 deletions
|
@ -169,13 +169,16 @@ struct FsmOpt
|
|||
|
||||
for (auto tr : fsm_data.transition_table)
|
||||
{
|
||||
RTLIL::State &si = tr.ctrl_in.bits()[i];
|
||||
RTLIL::State &sj = tr.ctrl_in.bits()[j];
|
||||
RTLIL::State si = tr.ctrl_in[i];
|
||||
RTLIL::State sj = tr.ctrl_in[j];
|
||||
|
||||
if (si > RTLIL::State::S1)
|
||||
if (si > RTLIL::State::S1) {
|
||||
si = sj;
|
||||
else if (sj > RTLIL::State::S1)
|
||||
tr.ctrl_in.set(i, si);
|
||||
} else if (sj > RTLIL::State::S1) {
|
||||
sj = si;
|
||||
tr.ctrl_in.set(j, sj);
|
||||
}
|
||||
|
||||
if (si == sj) {
|
||||
RTLIL::SigSpec tmp(tr.ctrl_in);
|
||||
|
@ -207,8 +210,8 @@ struct FsmOpt
|
|||
|
||||
for (auto tr : fsm_data.transition_table)
|
||||
{
|
||||
RTLIL::State &si = tr.ctrl_in.bits()[i];
|
||||
RTLIL::State &sj = tr.ctrl_out.bits()[j];
|
||||
RTLIL::State si = tr.ctrl_in[i];
|
||||
RTLIL::State sj = tr.ctrl_out[j];
|
||||
|
||||
if (si > RTLIL::State::S1 || si == sj) {
|
||||
RTLIL::SigSpec tmp(tr.ctrl_in);
|
||||
|
@ -240,14 +243,14 @@ struct FsmOpt
|
|||
RTLIL::Const other_pattern = pattern;
|
||||
|
||||
if (pattern[bit] == RTLIL::State::S1)
|
||||
other_pattern.bits()[bit] = RTLIL::State::S0;
|
||||
other_pattern.set(bit, RTLIL::State::S0);
|
||||
else
|
||||
other_pattern.bits()[bit] = RTLIL::State::S1;
|
||||
other_pattern.set(bit, RTLIL::State::S1);
|
||||
|
||||
if (set.count(other_pattern) > 0) {
|
||||
log(" Merging pattern %s and %s from group (%d %d %s).\n", log_signal(pattern), log_signal(other_pattern),
|
||||
tr.state_in, tr.state_out, log_signal(tr.ctrl_out));
|
||||
other_pattern.bits()[bit] = RTLIL::State::Sa;
|
||||
other_pattern.set(bit, RTLIL::State::Sa);
|
||||
new_set.insert(other_pattern);
|
||||
did_something = true;
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue