aboutsummaryrefslogtreecommitdiffstats
path: root/passes
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* 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>
* proc_clean: remove any empty cases if all cases use all-def compare.whitequark2018-12-231-6/+28
|
* proc_clean: remove any empty cases at the end of the switch.whitequark2018-12-221-7/+3
| | | | Previously, only completely empty switches were removed.
* memory_collect: do not truncate 'x from \INIT.whitequark2018-12-211-3/+0
| | | | | | | The semantics of an RTLIL constant that has less bits than its declared bit width is zero padding. Therefore, if the output of memory_collect will be used for simulation, truncating 'x from the end of \INIT will produce incorrect simulation results.
* memory_dff: Fix typo when checking init valueDavid Shah2018-12-181-1/+1
| | | | Signed-off-by: David Shah <davey1576@gmail.com>
* Revert "Proof-of-concept: preserve naming through ABC using dress"Clifford Wolf2018-12-161-51/+29
|
* Merge pull request #736 from whitequark/select_assert_listClifford Wolf2018-12-161-8/+50
|\ | | | | select: print selection if a -assert-* flag causes an error
| * select: print selection if a -assert-* flag causes an error.whitequark2018-12-161-8/+50
| |
* | Merge pull request #735 from daveshah1/trifixesClifford Wolf2018-12-161-3/+4
|\ \ | | | | | | deminout fixes
| * | deminout: Consider $tribuf cellsDavid Shah2018-12-121-2/+2
| | | | | | | | | | | | Signed-off-by: David Shah <dave@ds0.me>
| * | deminout: Don't demote constant-driven inouts to inputsDavid Shah2018-12-121-1/+2
| |/ | | | | | | Signed-off-by: David Shah <dave@ds0.me>
* | Fix equiv_opt indentingClifford Wolf2018-12-161-139/+129
| | | | | | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* | Merge pull request #724 from whitequark/equiv_optClifford Wolf2018-12-162-1/+168
|\ \ | | | | | | equiv_opt: new command, for verifying optimization passes
| * | equiv_opt: pass -D EQUIV when techmapping.whitequark2018-12-071-2/+4
| | | | | | | | | | | | | | | This allows avoiding techmap crashes e.g. because of large memories in white-box cell models.
| * | equiv_opt: new command, for verifying optimization passes.whitequark2018-12-072-1/+166
| | |
* | | Merge pull request #734 from grahamedgecombe/fix-shuffled-bram-initdataClifford Wolf2018-12-161-0/+17
|\ \ \ | | | | | | | | memory_bram: Fix initdata bit order after shuffling
| * | | memory_bram: Fix initdata bit order after shufflingGraham Edgecombe2018-12-111-0/+17
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some cases the memory_bram pass shuffles the order of the bits in a memory's RD_DATA port. Although the order of the bits in the WR_DATA and WR_EN ports is changed to match the RD_DATA port, the order of the bits in the initialization data is not. This causes reads of initialized memories to return invalid data (until the initialization data is overwritten). This commit fixes the bug by shuffling the initdata bits in exactly the same order as the RD_DATA/WR_DATA/WR_EN bits.
* | | Merge pull request #714 from daveshah1/abc_preserve_namingClifford Wolf2018-12-161-29/+51
|\ \ \ | | | | | | | | Proof-of-concept: preserve naming through ABC using dress
| * | | abc: Preserve naming through ABC using 'dress' commandDavid Shah2018-12-061-29/+51
| | | | | | | | | | | | | | | | Signed-off-by: David Shah <dave@ds0.me>
* | | | Merge pull request #722 from whitequark/rename_srcClifford Wolf2018-12-161-0/+50
|\ \ \ \ | | | | | | | | | | rename: add -src, for inferring names from source locations
| * | | | rename: add -src, for inferring names from source locations.whitequark2018-12-051-0/+50
| | |_|/ | |/| |
* | | | Merge pull request #720 from whitequark/masterClifford Wolf2018-12-162-2/+2
|\ \ \ \ | |_|_|/ |/| | | lut2mux: handle 1-bit INIT constant in $lut cells
| * | | lut2mux: handle 1-bit INIT constant in $lut cells.whitequark2018-12-051-1/+1
| | | | | | | | | | | | | | | | | | | | This pass already handles INIT constants shorter than 2^width, but that was not done for the recursion base case.
| * | | 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
|
* Fix typoClifford Wolf2018-12-041-1/+1
| | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* Merge pull request #702 from smunaut/min_ce_useClifford Wolf2018-12-041-1/+36
|\ | | | | Add option to only use DFFE is the resulting E signal would be use > N times
| * dff2dffe: Add option for unmap to only remove DFFE with low CE signal useSylvain Munaut2018-11-271-1/+36
| | | | | | | | Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* | Merge pull request #676 from rafaeltp/masterClifford Wolf2018-12-011-10/+17
|\ \ | |/ |/| Splits SigSpec into bits before calling check_signal_in_fanout (solves #675)
| * using [i] to access individual bits of SigSpec and merging bits into a tmp ↵rafaeltp2018-10-211-11/+12
| | | | | | | | Sig before setting the port to new signal
| * cleaning up for PRrafaeltp2018-10-201-2/+2
| |
| * fixing code stylerafaeltp2018-10-201-1/+1
| |
| * solves #675rafaeltp2018-10-201-11/+17
| |
* | Add iteration limit to "opt_muxtree"Clifford Wolf2018-11-201-1/+17
| | | | | | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* | DFFLIBMAP: changed 'missing pin' error into a warning with additional ↵Niels Moseley2018-11-061-1/+10
| | | | | | | | reason/info.
* | Allow square brackets in liberty identifiersClifford Wolf2018-11-051-2/+2
| | | | | | | | Signed-off-by: Clifford Wolf <clifford@clifford.at>
* | Liberty file newline handling is more relaxed. More descriptive error messageNiels Moseley2018-11-031-4/+7
| |
* | Report an error when a liberty file contains pin references that reference ↵Niels Moseley2018-11-031-0/+3
|/ | | | non-existing pins