3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-11-06 14:26:04 +00:00

dfflibmap: fix next_state inversion propagation for DFF flops by inverting reset value polarity

This commit is contained in:
Emil J. Tywoniak 2025-10-28 13:01:26 +01:00
parent 8bc63ef6da
commit b2fe335b2d
3 changed files with 62 additions and 0 deletions

View file

@ -271,6 +271,13 @@ static void find_cell(std::vector<const LibertyAst *> cells, IdString cell_type,
continue;
if (!parse_next_state(cell, ff->find("next_state"), cell_next_pin, cell_next_pol, cell_enable_pin, cell_enable_pol) || (has_enable && (cell_enable_pin.empty() || cell_enable_pol != enapol)))
continue;
if (has_reset && !cell_next_pol) {
// next_state is negated
// we later propagate this inversion to the output,
// which requires the negation of the reset value
rstval = !rstval;
}
if (has_reset && rstval == false) {
if (!parse_pin(cell, ff->find("clear"), cell_rst_pin, cell_rst_pol) || cell_rst_pol != rstpol)
continue;