mirror of https://github.com/YosysHQ/yosys.git
This commit introduces the negopt pass with pre/post optimization modes for handling negation patterns in arithmetic circuits. Pre-optimization patterns (expose for tree balancing): - manual2sub: (a + ~b) + 1 → a - b - sub2neg: a - b → a + (-b) - negexpand: -(a + b) → (-a) + (-b) [with output width fix] - negneg: -(-a) → a - negmux: -(s ? a : b) → s ? (-a) : (-b) Post-optimization patterns (cleanup/rebuild): - negrebuild: (-a) + (-b) → -(a + b) - muxneg: s ? (-a) : (-b) → -(s ? a : b) - neg2sub: a + (-b) → a - b All patterns use nusers() for fanout checking (standard Yosys style). Comprehensive test coverage with positive/negative cases and formal verification via equiv_opt. |
||
|---|---|---|
| .. | ||
| breakreduce.ys | ||
| breaksop.ys | ||
| fanoutbuf.ys | ||
| manual2sub.ys | ||
| mux_andnot.ys | ||
| mux_ornot.ys | ||
| muxinvprop.ys | ||
| muxmode.ys | ||
| muxneg.ys | ||
| neg2sub.ys | ||
| negexpand.ys | ||
| negmux.ys | ||
| negneg.ys | ||
| negrebuild.ys | ||
| opt_expand.ys | ||
| run-test.sh | ||
| splitfanout.ys | ||
| sub2neg.ys | ||
| wide_op.tcl | ||
| wide_op.v | ||