Skip to content

Commit

Permalink
Merge pull request #4714 from georgerennie/george/proc_dff_bug_multip…
Browse files Browse the repository at this point in the history
…le_sigs

proc_dff: fix early return bug
  • Loading branch information
povik authored Nov 20, 2024
2 parents 1184418 + c23e64a commit 7ebe451
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 deletions.
4 changes: 2 additions & 2 deletions passes/proc/proc_dff.cc
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ void proc_dff(RTLIL::Module *mod, RTLIL::Process *proc, ConstEval &ce)
{
log_warning("Complex async reset for dff `%s'.\n", log_signal(sig));
gen_dffsr_complex(mod, insig, sig, sync_edge->signal, sync_edge->type == RTLIL::SyncType::STp, async_rules, proc);
return;
continue;
}

// If there is a reset condition in the async rules, use it
Expand All @@ -277,7 +277,7 @@ void proc_dff(RTLIL::Module *mod, RTLIL::Process *proc, ConstEval &ce)
sync_edge->type == RTLIL::SyncType::STp,
sync_level && sync_level->type == RTLIL::SyncType::ST1,
sync_edge->signal, sync_level->signal, proc);
return;
continue;
}

gen_dff(mod, insig, rstval.as_const(), sig_q,
Expand Down
31 changes: 31 additions & 0 deletions tests/proc/bug4712.ys
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
read_rtlil <<EOT
autoidx 1
module \top
wire input 1 \clk
wire input 2 \rst

wire input 3 \a_r
wire input 4 \a_n
wire input 5 \b_n

wire \a
wire \b

process $proc
sync high \rst
update \a \a_r
update \b \b
sync posedge \clk
update \a \a_n
update \b \b_n
end
end
EOT

proc_dff
proc_clean

# Processes should have been converted to one aldff and one dff
select -assert-none p:*
select -assert-count 1 t:$aldff
select -assert-count 1 t:$dff

0 comments on commit 7ebe451

Please sign in to comment.