Skip to content

Commit

Permalink
synth_lattice: Merge NOT gates on DFF control signals
Browse files Browse the repository at this point in the history
`dfflegalize` will emit NOT gates to drive control signals on flip-flops
when mapping to supported flip-flop polarities. Typically in a design
this will produce a number of NOT gates driven by the same signal. For
one reason or another ABC doesn't fully cancel this redundancy during
LUT mapping. Insert an explicit `opt_merge` pass to improve synthesis
QoR.
  • Loading branch information
povik committed Nov 7, 2023
1 parent 63cec22 commit ee3a4ce
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions techlibs/lattice/synth_lattice.cc
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,7 @@ struct SynthLatticePass : public ScriptPass
dfflegalize_args += " -cell $_DLATCH_?_ x";
}
run("dfflegalize" + dfflegalize_args, "($_ALDFF_*_ only if -asyncprld, $_DLATCH_* only if not -asyncprld, $_*DFFE_* only if not -nodffe)");
run("opt_merge");
if ((abc9 && dff) || help_mode)
run("zinit -all w:* t:$_DFF_?_ t:$_DFFE_??_ t:$_SDFF*", "(only if -abc9 and -dff)");
run("techmap -D NO_LUT -map +/lattice/cells_map.v");
Expand Down

0 comments on commit ee3a4ce

Please sign in to comment.