aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add claire deadname stuff to .mailmapClaire Xenia Wolf2021-06-081-0/+4
| | | | Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
* sv: support tasks and functions within packagesZachary Snow2021-06-015-2/+56
|
* kernel/mem: Recognize some deprecated memory port configs.Marcelina Kościelnicka2021-06-011-0/+10
| | | | | | | | | | Transparency is meaningless for asynchronous ports, so we assume transparent == false to simplify the code in this case. Likewise, enable is meaningless, and we assume it is const-1. However, turns out that nMigen emits the former, and Verilog frontend emits the latter, so squash these issues when ingesting a $memrd cell. Fixes #2811.
* memory_map: Improve start_offset handling.Marcelina Kościelnicka2021-05-312-35/+131
| | | | 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-285-33/+10
| | | | | | 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.
* backends/verilog: Add support for memory read port reset and init value.Marcelina Kościelnicka2021-05-271-9/+81
|
* backends/verilog: Add wide port support.Marcelina Kościelnicka2021-05-271-43/+88
|
* memory_share: Improve same-address merging, recognize wide write ports.Marcelina Kościelnicka2021-05-271-204/+77
|
* kernel/mem: Add helpers for write port widening.Marcelina Kościelnicka2021-05-272-0/+57
|
* kernel/mem: Add sub_addr helpers.Marcelina Kościelnicka2021-05-263-26/+32
|
* kernel/mem: Add prepare_wr_merge helper.Marcelina Kościelnicka2021-05-262-0/+27
|
* backends/verilog: Try to preserve mem write port priorities.Marcelina Kościelnicka2021-05-261-32/+84
|
* mem/extract_rdff: Fix "no FF made" edge case.Marcelina Kościelnicka2021-05-252-3/+9
| | | | | | | 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-255-40/+52
| | | | | 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.
* verilog: fix case expression sign and width handlingZachary Snow2021-05-255-12/+157
| | | | | | | | | - The case expression and case item expressions are extended to the maximum width among them, and are only interpreted as signed if all of them are signed - Add overall width and sign detection for AST_CASE - Add sign argument to genWidthRTLIL helper - Coverage for both const and non-const case statements
* sv: support remaining assignment operatorsZachary Snow2021-05-253-42/+64
| | | | | - Add support for: *=, /=, %=, <<=, >>=, <<<=, >>>= - Unify existing support for: +=, -=, &=, |=, ^=
* mem/extract_rdff: Add alternate transparency handling.Marcelina Kościelnicka2021-05-251-18/+80
| | | | | | | | | | When extracting read register from a transparent port that has an enable, reset, or initial value, the usual trick of putting a register on the address instead of data doesn't work. In this case, create soft transparency logic instead. When transparency masks land, this will also be used to handle ports that are transparent to only a subset of write ports.
* opt_mem: Add reset/init value support.Marcelina Kościelnicka2021-05-251-0/+12
|
* kernel/mem: Add model support for read port init value and resets.Marcelina Kościelnicka2021-05-252-4/+73
| | | | | | | Like wide port support, this is still completely unusable, and support in various passes will be gradually added later. It also has no support at all in the cell library, so attempting to create a read port with a reset or initial value will cause an assert failure for now.
* mem/extract_rdff: Fix wire naming and wide port support.Marcelina Kościelnicka2021-05-251-6/+22
|
* memory_bram: Respect write port priority.Marcelina Kościelnicka2021-05-251-0/+14
|
* opt_mem_feedback: Respect write port priority.Marcelina Kościelnicka2021-05-252-0/+62
|
* kernel/mem: Add emulate_priority helper.Marcelina Kościelnicka2021-05-252-0/+44
|
* Add memory_narrow pass.Marcelina Kościelnicka2021-05-252-0/+68
|
* memory_share: Add wide port support.Marcelina Kościelnicka2021-05-251-0/+6
|
* opt_mem_feedback: Add wide port support.Marcelina Kościelnicka2021-05-251-14/+24
|
* memory_map: Add wide port support.Marcelina Kościelnicka2021-05-251-16/+17
|
* sim: Add wide port support.Marcelina Kościelnicka2021-05-251-3/+3
|
* Reject wide ports in some passes that will never support them.Marcelina Kościelnicka2021-05-254-2/+35
|
* kernel/mem: Add a Mem::narrow helper to split up wide ports.Marcelina Kościelnicka2021-05-252-0/+53
|
* kernel/mem: Emit support for wide ports in packed mode.Marcelina Kościelnicka2021-05-251-30/+34
| | | | | | | Since the packed cell doesn't actually support wide ports yet, we just auto-narrow them on emit. The future packed cell will add RD_WIDE_CONTINUATION and WR_WIDE_CONTINUATION parameters so the transform will be trivially reversible for proper serialization.
* kernel/mem: Add model for wide ports.Marcelina Kościelnicka2021-05-252-6/+28
| | | | | | Such ports cannot actually be created or used yet, this just adds the necessary plumbing in the helper. Subsequent commits will gradually add wide port support to various yosys passes.
* kernel/mem: Add priority_mask to model.Marcelina Kościelnicka2021-05-252-1/+47
| | | | | | | | This is going to be used to store arbitrary priority masks in the future. Right now, it is not supported by our cell library, so the priority_mask is computed from port order on helper construction, and discarded when emitted. However, this allows us to already convert helper-using passes to the new model.
* opt_mem_feedback: Rewrite feedback path finding logic.Marcelina Kościelnicka2021-05-243-115/+373
| | | | Fixes #2766.
* opt_mem_feedback: Convert to Mem helpers.Marcelina Kościelnicka2021-05-241-49/+28
|
* hashlib: Add a hash for bool.Marcelina Kościelnicka2021-05-241-0/+6
|
* Add a .mailmap file.Marcelina Kościelnicka2021-05-241-0/+3
|
* Merge pull request #2779 from YosysHQ/mwk/nuke-travisMiodrag Milanović2021-05-245-279/+0
|\ | | | | Remove Travis CI.
| * Remove Travis CI.Marcelina Kościelnicka2021-05-245-279/+0
|/ | | | | It has been replaced by GitHub Actions, and travis-ci.org is shutting down in a few days anyway.
* backend/firrtl: Convert to use Mem helpers.Marcelina Kościelnicka2021-05-241-264/+88
|
* github actions: Test on several gcc and clang versions on Linux.Marcelina Kościelnicka2021-05-241-6/+31
| | | | Fixes #2776.
* memory_share: Use Mem helpers.Marcelina Kościelnicka2021-05-231-89/+71
|
* extract_rdff: Add initvals parameter.Marcelina Kościelnicka2021-05-234-11/+18
| | | | | This is not used yet, but will be needed when read port reset/initial value support lands.
* btor: Use is_mem_cell in one more place.Marcelina Kościelnicka2021-05-231-1/+1
|
* memory_share: Split off feedback path finding as a separate pass.Marcelina Kościelnicka2021-05-234-242/+343
| | | | | 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-237-240/+596
| | | | Fixes #1854.
* opt_mem: Remove write ports with const-0 EN.Marcelina Kościelnicka2021-05-232-0/+46
| | | | Fixes #2765.
* memory_memx: Use Mem helper.Marcelina Kościelnicka2021-05-221-42/+31
|