clk2fflogic: Generate less unused logic when using verific

Verific generates a lot of FFs with an unused async load and we cannot
always optimize that away before running clk2fflogic, so check for that
special case here.
This commit is contained in:
Jannis Harder 2022-08-05 15:34:14 +02:00
parent 65145db7e7
commit 4ad13c647e
1 changed files with 4 additions and 1 deletions

View File

@ -233,7 +233,10 @@ struct Clk2fflogicPass : public Pass {
qval = past_q;
}
if (ff.has_aload) {
// The check for a constant sig_aload is also done by opt_dff, but when using verific and running
// clk2fflogic before opt_dff (which does more and possibly unwanted optimizations) this check avoids
// generating a lot of extra logic.
if (ff.has_aload && ff.sig_aload != (ff.pol_aload ? State::S0 : State::S1)) {
SigSpec sig_aload = wrap_async_control(module, ff.sig_aload, ff.pol_aload, ff.is_fine, NEW_ID);
if (!ff.is_fine)