aboutsummaryrefslogtreecommitdiffstats
path: root/passes/opt
Commit message (Collapse)AuthorAgeFilesLines
* Fix multiple issues in wreduce FF handling, fixes #835Clifford Wolf2019-02-281-5/+24
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Cleanups in ARST handling in wreduceClifford Wolf2019-02-241-10/+4
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Fix WREDUCE on FF not fixing ARST_VALUE parameter.Keith Rothman2019-02-221-0/+13
| | | | | | Adds test case that fails without code change. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* Merge pull request #818 from YosysHQ/clifford/dffsrfixClifford Wolf2019-02-211-6/+7
|\ | | | | Fix opt_rmdff handling of $_DFFSR_???_ and $_DLATCHSR_???_, fixes #816
| * Fix opt_rmdff handling of $_DFFSR_???_ and $_DLATCHSR_???_, fixes #816Clifford Wolf2019-02-211-6/+7
| | | | | | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* | Add FF support to wreduceClifford Wolf2019-02-201-1/+70
|/ | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Bugfix in $memrd sharingClifford Wolf2019-01-071-2/+6
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Merge pull request #775 from whitequark/opt_flowmapClifford Wolf2019-01-031-1/+1
|\ | | | | flowmap: new techmap pass
| * flowmap: new techmap pass.whitequark2019-01-031-1/+1
| |
* | Merge pull request #770 from whitequark/opt_expr_cmpClifford Wolf2019-01-021-97/+134
|\ \ | |/ |/| opt_expr: refactor and improve simplification of comparisons
| * opt_expr: improve simplification of comparisons with large constants.whitequark2019-01-021-70/+47
| | | | | | | | | | | | | | | | | | | | | | | | The idea behind this simplification is that a N-bit signal X being compared with an M-bit constant where M>N and the constant has Nth or higher bit set, it either always succeeds or always fails. However, the existing implementation only worked with one-hot signals for some reason. It also printed incorrect messages. This commit adjusts the simplification to have as much power as possible, and fixes other bugs.
| * opt_expr: refactor simplification of unsigned X<onehot and X>=onehot. NFCI.whitequark2019-01-021-31/+37
| |
| * opt_expr: refactor simplification of signed X>=0 and X<0. NFCI.whitequark2019-01-021-24/+26
| |
| * opt_expr: simplify any unsigned comparisons with all-0 and all-1.whitequark2019-01-021-17/+69
| | | | | | | | | | | | Before this commit, only unsigned comparisons with all-0 would be simplified. This commit also makes the code handling such comparisons to be more rigorous and not abort on unexpected input.
* | Merge pull request #773 from whitequark/opt_lut_elim_fixesClifford Wolf2019-01-021-8/+31
|\ \ | | | | | | opt_lut: elimination fixes
| * | opt_lut: reflect changes in sigmap.whitequark2019-01-021-0/+2
| | | | | | | | | | | | Otherwise, some LUTs will be missed during elimination.
| * | opt_lut: use a worklist, and revisit cells affected by elimination.whitequark2019-01-021-3/+10
| | |
| * | opt_lut: count eliminated cells, and set opt.did_something for them.whitequark2019-01-021-6/+20
| |/
* / Fix typographical and grammatical errors and inconsistencies.whitequark2019-01-022-2/+2
|/ | | | | | | | | | | | The initial list of hits was generated with the codespell command below, and each hit was evaluated and fixed manually while taking context into consideration. DIRS="kernel/ frontends/ backends/ passes/ techlibs/" DIRS="${DIRS} libs/ezsat/ libs/subcircuit" codespell $DIRS -S *.o -L upto,iff,thru,synopsys,uint More hits were found by looking through comments and strings manually.
* opt_lut: eliminate LUTs evaluating to constants or inputs.whitequark2018-12-311-0/+81
|
* Fix handling of (* keep *) wires in wreduceClifford Wolf2018-12-311-1/+4
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Merge pull request #720 from whitequark/masterClifford Wolf2018-12-161-1/+1
|\ | | | | lut2mux: handle 1-bit INIT constant in $lut cells
| * opt_lut: simplify type conversion. NFC.whitequark2018-12-051-1/+1
| |
* | opt_lut: leave intact LUTs with cascade feeding module outputs.whitequark2018-12-071-0/+6
| |
* | opt_lut: show original truth table for both cells.whitequark2018-12-071-2/+3
| |
* | opt_lut: add -limit option, for debugging misoptimizations.whitequark2018-12-071-3/+21
| |
* | Bugfix in opt_expr handling of a<0 and a>=0Clifford Wolf2018-12-061-1/+1
|/ | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Rename opt_lut.cpp to opt_lut.ccClifford Wolf2018-12-051-0/+0
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* opt_lut: add -dlogic, to avoid disturbing logic such as carry chains.whitequark2018-12-051-17/+163
|
* opt_lut: always prefer to eliminate 1-LUTs.whitequark2018-12-051-19/+41
| | | | | These are always either buffers or inverters, and keeping the larger LUT preserves more source-level information about the design.
* opt_lut: collect and display statistics.whitequark2018-12-051-4/+33
|
* opt_lut: refactor to use a worker. NFC.whitequark2018-12-051-170/+177
|
* opt_lut: new pass, to combine LUTs for tighter packing.whitequark2018-12-052-0/+275
|
* Add iteration limit to "opt_muxtree"Clifford Wolf2018-11-201-1/+17
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Consistent use of 'override' for virtual methods in derived classes.Henner Zeller2018-07-2011-24/+24
| | | | | | | | | o Not all derived methods were marked 'override', but it is a great feature of C++11 that we should make use of. o While at it: touched header files got a -*- c++ -*- for emacs to provide support for that language. o use YS_OVERRIDE for all override keywords (though we should probably use the plain keyword going forward now that C++11 is established)
* Add optimization of tristate buffer with constant control inputClifford Wolf2018-05-121-0/+17
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Fix opt_rmdff handling of $dlatchsrClifford Wolf2018-02-261-0/+3
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Add $allconst and $allseq cell typesClifford Wolf2018-02-231-0/+2
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Add warnings for driver-driver conflicts between FFs (and other cells) and ↵Clifford Wolf2017-12-121-1/+8
| | | | constants
* Fix memory corruption bug in opt_rmdffClifford Wolf2017-10-261-0/+3
|
* Fix typo in opt_clean log messageClifford Wolf2017-10-261-1/+1
|
* Revert 90be0d8 as it causes endless loops for some designsClifford Wolf2017-10-141-1/+0
|
* Fix input vector for reduce cells.Kaj Tuomi2017-10-121-0/+1
|
* Minor changes to opt_demorgan requested during code reviewAndrew Zonenberg2017-09-142-18/+18
|
* Initial version of opt_demorgan is functioning for AND/OR gates. Not the ↵Andrew Zonenberg2017-09-122-0/+203
| | | | prettiest results for bus inputs, but this can be improved
* Don't track , ... contradictions through x/z-bitsClifford Wolf2017-08-251-1/+4
|
* Add removing of redundant pairs of bits in ==, ===, !=, and !== to opt_exprClifford Wolf2017-08-251-0/+72
|
* Mostly coding style related fixes in rmports passClifford Wolf2017-08-151-30/+33
|
* rmports: Now remove ports from cell instances if we optimized them out of ↵Andrew Zonenberg2017-08-141-2/+35
| | | | that cell
* ProcessModule is no longer virtual (why was it in the first place?)Andrew Zonenberg2017-08-141-1/+1
|