aboutsummaryrefslogtreecommitdiffstats
path: root/passes/memory
Commit message (Collapse)AuthorAgeFilesLines
* Fixing old e-mail addresses and deadnamesClaire Xenia Wolf2021-06-089-9/+9
| | | | | | | | s/((Claire|Xen|Xenia|Clifford)\s+)+(Wolf|Xen)\s+<(claire|clifford)@(symbioticeda.com|clifford.at|yosyshq.com)>/Claire Xenia Wolf <claire@yosyshq.com>/gi; s/((Nina|Nak|N\.)\s+)+Engelhardt\s+<nak@(symbioticeda.com|yosyshq.com)>/N. Engelhardt <nak@yosyshq.com>/gi; s/((David)\s+)+Shah\s+<(dave|david)@(symbioticeda.com|yosyshq.com|ds0.me)>/David Shah <dave@ds0.me>/gi; s/((Miodrag)\s+)+Milanovic\s+<(miodrag|micko)@(symbioticeda.com|yosyshq.com)>/Miodrag Milanovic <micko@yosyshq.com>/gi; s,https?://www.clifford.at/yosys/,http://yosyshq.net/yosys/,g;
* memory_map: Improve start_offset handling.Marcelina Kościelnicka2021-05-311-35/+31
| | | | Fixes #2775.
* memory_share: Add read port merging.Marcelina Kościelnicka2021-05-291-0/+140
| | | | | This is mostly meant for wide port recognition, but may also happen to merge some ports with compatible initial/reset values (eg. 0 vs x).
* memory_share: Improve sat-based port sharing.Marcelina Kościelnicka2021-05-281-117/+151
|
* Make a few passes auto-call Mem::narrow instead of rejecting wide ports.Marcelina Kościelnicka2021-05-281-14/+1
| | | | | | This essentially adds wide port support for free in passes that don't have a usefully better way of handling wide ports than just breaking them up to narrow ports, avoiding "please run memory_narrow" annoyance.
* memory_share: Improve same-address merging, recognize wide write ports.Marcelina Kościelnicka2021-05-271-204/+77
|
* mem/extract_rdff: Fix "no FF made" edge case.Marcelina Kościelnicka2021-05-251-2/+5
| | | | | | | When converting a sync transparent read port with const address to async read port, nothing at all needs to be done other than clk_enable change, and thus we have no FF cell to return. Handle this case correctly in the helper and in its users.
* memory_bram: Reuse extract_rdff helper for make_outreg.Marcelina Kościelnicka2021-05-251-23/+38
| | | | | Also properly skip read ports with init value or reset when not making use of make_outreg. Proper support for matching those will land later.
* memory_bram: Respect write port priority.Marcelina Kościelnicka2021-05-251-0/+14
|
* Add memory_narrow pass.Marcelina Kościelnicka2021-05-252-0/+68
|
* memory_share: Add wide port support.Marcelina Kościelnicka2021-05-251-0/+6
|
* memory_map: Add wide port support.Marcelina Kościelnicka2021-05-251-16/+17
|
* Reject wide ports in some passes that will never support them.Marcelina Kościelnicka2021-05-251-0/+14
|
* memory_share: Use Mem helpers.Marcelina Kościelnicka2021-05-231-89/+71
|
* extract_rdff: Add initvals parameter.Marcelina Kościelnicka2021-05-232-9/+15
| | | | | This is not used yet, but will be needed when read port reset/initial value support lands.
* memory_share: Split off feedback path finding as a separate pass.Marcelina Kościelnicka2021-05-232-242/+9
| | | | | memory_share is actually three passes in a trenchcoat. Split off the one that has the least in common with the other two as a separate pass.
* Add new helper class for merging FFs into cells, use for memory_dff.Marcelina Kościelnicka2021-05-231-237/+104
| | | | Fixes #1854.
* memory_memx: Use Mem helper.Marcelina Kościelnicka2021-05-221-42/+31
|
* memory_dff: Use Mem helper.Marcelina Kościelnicka2021-05-211-19/+26
|
* memory_dff: Remove now-useless write port handling.Marcelina Kościelnicka2021-03-083-74/+11
|
* memory_dff: Remove code looking for $mux cells.Marcelina Kościelnicka2021-03-081-56/+12
| | | | This job is now performed by `opt_dff`, which runs before this pass.
* memory_dff: Fix needlessly duplicating enable bits.Marcelina Kościelnicka2020-10-221-0/+8
| | | | | | | | | When the register being merged into the EN signal happens to be a $sdff, the current code creates a new $mux for every bit, even if they happen to be identical (as is usually the case), preventing proper grouping further down the flow. Fix this by adding a simple cache. Fixes #2409.
* memory_bram: Use Mem helpers.Marcelina Kościelnicka2020-10-211-121/+90
|
* memory_map: Use Mem helpers.Marcelina Kościelnicka2020-10-211-138/+81
|
* memory_unpack: Use Mem helpers.Marcelina Kościelnicka2020-10-211-106/+10
|
* memory_collect: Use Mem helpers.Marcelina Kościelnicka2020-10-211-223/+9
|
* memory_nordff: Use Mem helpers.Marcelina Kościelnicka2020-10-211-63/+9
|
* memory_dff: Refactor to use FfInitVals.Marcelina Kościelnicka2020-07-241-12/+5
|
* memory_dff: recognize more dff cellsMarcelina Kościelnicka2020-07-231-11/+112
|
* Use C++11 final/override keywords.whitequark2020-06-189-18/+18
|
* Add flooring division operatorXiretza2020-05-281-0/+1
| | | | | | | | | | The $div and $mod cells use truncating division semantics (rounding towards 0), as defined by e.g. Verilog. Another rounding mode, flooring (rounding towards negative infinity), can be used in e.g. VHDL. The new $divfloor cell provides this flooring division. This commit also fixes the handling of $div in opt_expr, which was previously optimized as if it was $divfloor.
* Add flooring modulo operatorXiretza2020-05-281-0/+1
| | | | | | | | | | | The $div and $mod cells use truncating division semantics (rounding towards 0), as defined by e.g. Verilog. Another rounding mode, flooring (rounding towards negative infinity), can be used in e.g. VHDL. The new $modfloor cell provides this flooring modulo (also known as "remainder" in several languages, but this name is ambiguous). This commit also fixes the handling of $mod in opt_expr, which was previously optimized as if it was $modfloor.
* memory_bram: Fix ignorance of valid, matched rulesDavid Shah2020-04-101-3/+3
| | | | Signed-off-by: David Shah <dave@ds0.me>
* Merge pull request #1603 from whitequark/ice40-ram_stylewhitequark2020-04-102-13/+148
|\ | | | | ice40/ecp5: add support for both 1364.1 and Synplify/LSE RAM/ROM attributes
| * memory_map: add -attr option, to respect inference attributes.whitequark2020-04-031-6/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit, memory_map (which is always a part of a synth script) would always pick up any $mem cell that was not processed by a preceding pass and lower it down to $dff/$mux cells. This is undesirable for two reasons: * If there is an explicit inference attribute set on a $mem cell, e.g. (* ram_block *), then it is arguably incorrect to map such a memory to $dff/$mux cells. * If memory_map tries to lower a memory that was intended to be mapped to a large BRAM, it often takes extraordinarily long time to finish, produces an extremely large log file, and outputs an unusable design. After this commit, properly invoked memory_map will not map any memory that has an explicit inference attribute specified, solving the first issue, and alleviating the second. The default behavior is not changed.
| * memory_bram: add `attr_icase` option.whitequark2020-02-061-7/+35
| | | | | | | | | | Some vendor toolchains use case insensitive matching for values of attributes that control BRAM inference.
* | Merge pull request #1890 from boqwxp/cleanup_memory_collectN. Engelhardt2020-04-091-6/+3
|\ \ | | | | | | Clean up `passes/memory/memory_collect.cc`.
| * | Clean up `passes/memory/memory_collect.cc`.Alberto Gonzalez2020-04-091-6/+3
| | |
* | | Clean up `passes/memory/memory_unpack.cc`.Alberto Gonzalez2020-04-091-7/+6
|/ /
* | kernel: big fat patch to use more ID::*, otherwise ID(*)Eddie Hung2020-04-028-322/+322
| |
* | kernel: use more ID::*Eddie Hung2020-04-023-40/+40
| |
* | Merge pull request #1845 from YosysHQ/eddie/kernel_speedupEddie Hung2020-04-021-8/+8
|\ \ | | | | | | kernel: speedup by using more pass-by-const-ref
| * | kernel: SigSpec use more const& + overloads to prevent implicit SigSpecEddie Hung2020-03-131-8/+8
| |/
* | memory_share: fix stray braceEddie Hung2020-03-301-1/+0
| |
* | Code review fixesEddie Hung2020-03-301-2/+2
| |
* | Apply suggestions from code reviewEddie Hung2020-03-301-4/+1
| | | | | | Co-Authored-By: Alberto Gonzalez <61295559+boqwxp@users.noreply.github.com>
* | kernel: share a single CellTypes within a passEddie Hung2020-03-181-4/+16
|/
* CleanupEddie Hung2019-12-171-11/+7
|
* Enforce non-existenceEddie Hung2019-12-161-0/+4
|
* Update docEddie Hung2019-12-161-4/+6
|