Zachary Snow [Thu, 27 May 2021 20:47:02 +0000 (16:47 -0400)]
sv: support tasks and functions within packages
Marcelina Kościelnicka [Mon, 31 May 2021 23:48:35 +0000 (01:48 +0200)]
kernel/mem: Recognize some deprecated memory port configs.
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.
Marcelina Kościelnicka [Mon, 31 May 2021 13:53:18 +0000 (15:53 +0200)]
memory_map: Improve start_offset handling.
Fixes #2775.
Marcelina Kościelnicka [Sun, 25 Oct 2020 23:44:37 +0000 (00:44 +0100)]
memory_share: Add read port merging.
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).
Marcelina Kościelnicka [Mon, 26 Oct 2020 02:20:57 +0000 (03:20 +0100)]
memory_share: Improve sat-based port sharing.
Marcelina Kościelnicka [Thu, 27 May 2021 21:43:25 +0000 (23:43 +0200)]
Make a few passes auto-call Mem::narrow instead of rejecting wide ports.
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.
Marcelina Kościelnicka [Thu, 27 May 2021 15:50:59 +0000 (17:50 +0200)]
backends/verilog: Add support for memory read port reset and init value.
Marcelina Kościelnicka [Tue, 25 May 2021 23:18:29 +0000 (01:18 +0200)]
backends/verilog: Add wide port support.
Marcelina Kościelnicka [Sun, 25 Oct 2020 22:01:59 +0000 (23:01 +0100)]
memory_share: Improve same-address merging, recognize wide write ports.
Marcelina Kościelnicka [Wed, 26 May 2021 01:07:51 +0000 (03:07 +0200)]
kernel/mem: Add helpers for write port widening.
Marcelina Kościelnicka [Wed, 26 May 2021 00:49:50 +0000 (02:49 +0200)]
kernel/mem: Add sub_addr helpers.
Marcelina Kościelnicka [Wed, 26 May 2021 00:06:44 +0000 (02:06 +0200)]
kernel/mem: Add prepare_wr_merge helper.
Marcelina Kościelnicka [Tue, 25 May 2021 20:37:03 +0000 (22:37 +0200)]
backends/verilog: Try to preserve mem write port priorities.
Marcelina Kościelnicka [Tue, 25 May 2021 20:39:50 +0000 (22:39 +0200)]
mem/extract_rdff: Fix "no FF made" edge case.
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.
Marcelina Kościelnicka [Tue, 25 May 2021 17:31:53 +0000 (19:31 +0200)]
memory_bram: Reuse extract_rdff helper for make_outreg.
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.
Zachary Snow [Thu, 25 Mar 2021 18:06:05 +0000 (14:06 -0400)]
verilog: fix case expression sign and width handling
- 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
Zachary Snow [Sat, 27 Mar 2021 19:59:48 +0000 (15:59 -0400)]
sv: support remaining assignment operators
- Add support for: *=, /=, %=, <<=, >>=, <<<=, >>>=
- Unify existing support for: +=, -=, &=, |=, ^=
Marcelina Kościelnicka [Tue, 25 May 2021 18:42:34 +0000 (20:42 +0200)]
mem/extract_rdff: Add alternate transparency handling.
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.
Marcelina Kościelnicka [Tue, 25 May 2021 16:49:17 +0000 (18:49 +0200)]
opt_mem: Add reset/init value support.
Marcelina Kościelnicka [Sat, 22 May 2021 15:18:59 +0000 (17:18 +0200)]
kernel/mem: Add model support for read port init value and resets.
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.
Marcelina Kościelnicka [Tue, 25 May 2021 13:48:52 +0000 (15:48 +0200)]
mem/extract_rdff: Fix wire naming and wide port support.
Marcelina Kościelnicka [Tue, 25 May 2021 13:34:12 +0000 (15:34 +0200)]
memory_bram: Respect write port priority.
Marcelina Kościelnicka [Tue, 25 May 2021 13:17:29 +0000 (15:17 +0200)]
opt_mem_feedback: Respect write port priority.
Marcelina Kościelnicka [Tue, 25 May 2021 00:56:35 +0000 (02:56 +0200)]
kernel/mem: Add emulate_priority helper.
Marcelina Kościelnicka [Tue, 25 May 2021 00:12:55 +0000 (02:12 +0200)]
Add memory_narrow pass.
Marcelina Kościelnicka [Mon, 24 May 2021 23:55:44 +0000 (01:55 +0200)]
memory_share: Add wide port support.
Marcelina Kościelnicka [Mon, 24 May 2021 23:52:52 +0000 (01:52 +0200)]
opt_mem_feedback: Add wide port support.
Marcelina Kościelnicka [Mon, 24 May 2021 14:35:25 +0000 (16:35 +0200)]
memory_map: Add wide port support.
Marcelina Kościelnicka [Mon, 24 May 2021 23:12:19 +0000 (01:12 +0200)]
sim: Add wide port support.
Marcelina Kościelnicka [Sat, 22 May 2021 16:18:50 +0000 (18:18 +0200)]
Reject wide ports in some passes that will never support them.
Marcelina Kościelnicka [Mon, 24 May 2021 22:58:17 +0000 (00:58 +0200)]
kernel/mem: Add a Mem::narrow helper to split up wide ports.
Marcelina Kościelnicka [Mon, 24 May 2021 22:49:52 +0000 (00:49 +0200)]
kernel/mem: Emit support for wide ports in packed mode.
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.
Marcelina Kościelnicka [Sat, 22 May 2021 14:48:46 +0000 (16:48 +0200)]
kernel/mem: Add model for wide ports.
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.
Marcelina Kościelnicka [Sat, 22 May 2021 15:00:20 +0000 (17:00 +0200)]
kernel/mem: Add priority_mask to model.
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.
Marcelina Kościelnicka [Mon, 24 May 2021 19:21:51 +0000 (21:21 +0200)]
opt_mem_feedback: Rewrite feedback path finding logic.
Fixes #2766.
Marcelina Kościelnicka [Sun, 23 May 2021 15:20:55 +0000 (17:20 +0200)]
opt_mem_feedback: Convert to Mem helpers.
Marcelina Kościelnicka [Mon, 24 May 2021 19:27:29 +0000 (21:27 +0200)]
hashlib: Add a hash for bool.
Marcelina Kościelnicka [Mon, 24 May 2021 15:37:29 +0000 (17:37 +0200)]
Add a .mailmap file.
Miodrag Milanović [Mon, 24 May 2021 15:24:01 +0000 (17:24 +0200)]
Merge pull request #2779 from YosysHQ/mwk/nuke-travis
Remove Travis CI.
Marcelina Kościelnicka [Mon, 24 May 2021 15:18:03 +0000 (17:18 +0200)]
Remove Travis CI.
It has been replaced by GitHub Actions, and travis-ci.org is shutting
down in a few days anyway.
Marcelina Kościelnicka [Sun, 23 May 2021 22:41:31 +0000 (00:41 +0200)]
backend/firrtl: Convert to use Mem helpers.
Marcelina Kościelnicka [Sun, 23 May 2021 19:20:04 +0000 (21:20 +0200)]
github actions: Test on several gcc and clang versions on Linux.
Fixes #2776.
Marcelina Kościelnicka [Sun, 23 May 2021 15:20:51 +0000 (17:20 +0200)]
memory_share: Use Mem helpers.
Marcelina Kościelnicka [Sun, 23 May 2021 16:29:44 +0000 (18:29 +0200)]
extract_rdff: Add initvals parameter.
This is not used yet, but will be needed when read port reset/initial
value support lands.
Marcelina Kościelnicka [Sun, 23 May 2021 16:08:34 +0000 (18:08 +0200)]
btor: Use is_mem_cell in one more place.
Marcelina Kościelnicka [Sun, 23 May 2021 13:42:51 +0000 (15:42 +0200)]
memory_share: Split off feedback path finding as a separate pass.
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.
Marcelina Kościelnicka [Mon, 15 Mar 2021 14:38:45 +0000 (15:38 +0100)]
Add new helper class for merging FFs into cells, use for memory_dff.
Fixes #1854.
Marcelina Kościelnicka [Sat, 22 May 2021 18:27:51 +0000 (20:27 +0200)]
opt_mem: Remove write ports with const-0 EN.
Fixes #2765.
Marcelina Kościelnicka [Sat, 22 May 2021 18:19:00 +0000 (20:19 +0200)]
memory_memx: Use Mem helper.
Marcelina Kościelnicka [Sat, 22 May 2021 17:14:13 +0000 (19:14 +0200)]
kernel/rtlil: Extract some helpers for checking memory cell types.
There will soon be more (versioned) memory cells, so handle passes that
only care if a cell is memory-related by a simple helper call instead of
a hardcoded list.
Marcelina Kościelnicka [Sat, 22 May 2021 14:36:50 +0000 (16:36 +0200)]
kernel/mem: Add a check() function.
Marcelina Kościelnicka [Sat, 22 May 2021 14:10:18 +0000 (16:10 +0200)]
kernel/mem: defer port removal to emit()
Marcelina Kościelnicka [Fri, 23 Oct 2020 15:48:00 +0000 (17:48 +0200)]
memory_dff: Use Mem helper.
Miodrag Milanović [Thu, 20 May 2021 17:21:34 +0000 (19:21 +0200)]
Run VS build on PRs and each push
Marcelina Kościelnicka [Thu, 20 May 2021 10:50:32 +0000 (12:50 +0200)]
Bump version
Marcelina Kościelnicka [Thu, 20 May 2021 10:49:51 +0000 (12:49 +0200)]
tests/blif: Add missing gitignore
Miodrag Milanovic [Mon, 17 May 2021 08:24:30 +0000 (10:24 +0200)]
Visual Studio build action
gatecat [Sat, 15 May 2021 13:40:37 +0000 (14:40 +0100)]
intel_alm: Fix illegal carry chains
Signed-off-by: gatecat <gatecat@ds0.me>
gatecat [Sat, 15 May 2021 13:34:48 +0000 (14:34 +0100)]
intel_alm: Add global buffer insertion
Signed-off-by: gatecat <gatecat@ds0.me>
gatecat [Sat, 15 May 2021 13:23:22 +0000 (14:23 +0100)]
intel_alm: Add IO buffer insertion
Signed-off-by: gatecat <gatecat@ds0.me>
Rupert Swarbrick [Mon, 20 Apr 2020 13:41:55 +0000 (14:41 +0100)]
Change the type of current_module to Module
The current_module global is needed so that genRTLIL has somewhere to
put cells and wires that it generates as it makes sense of expressions
that it sees. However, that doesn't actually need to be an AstModule:
the Module base class is enough.
This patch should cause no functional change, but the point is that
it's now possible to call genRTLIL with a module that isn't an
AstModule as "current_module". This will be needed for 'bind' support.
Rupert Swarbrick [Mon, 20 Apr 2020 15:24:57 +0000 (16:24 +0100)]
Use range-based for loop in AST::process
No functional change: just get rid of the explicit iterator and
replace (*it)-> with child->. It's even the same number of characters,
but is hopefully a little easier to read.
Adam Greig [Wed, 27 Jan 2021 18:51:19 +0000 (18:51 +0000)]
Add missing parameters for MULT18X18D and ALU54B to ECP5 techlib.
Zachary Snow [Mon, 10 May 2021 15:06:02 +0000 (11:06 -0400)]
sv: check validity of package end label
Marcelina Kościelnicka [Wed, 5 May 2021 18:31:27 +0000 (20:31 +0200)]
blif: Use library cells' start_offset and upto for wideports.
Fixes #2729.
Marcelina Kościelnicka [Wed, 5 May 2021 18:32:07 +0000 (20:32 +0200)]
connect: Add -assert option, fix non-working sigmap.
Should be useful for writing tests.
Marcelina Kościelnicka [Tue, 4 May 2021 17:14:24 +0000 (19:14 +0200)]
opt_dff: Fix NOT gates wired in reverse.
Miodrag Milanović [Tue, 27 Apr 2021 09:46:41 +0000 (11:46 +0200)]
Merge pull request #2738 from mdko/xilinx-blif
Fix use of blif name in synth_xilinx command
Michael Christensen [Tue, 27 Apr 2021 09:29:52 +0000 (02:29 -0700)]
Fix use of blif name in synth_xilinx command
Claire Xen [Mon, 26 Apr 2021 15:54:30 +0000 (17:54 +0200)]
Merge pull request #2737 from YosysHQ/claire/fix2736
Remove duplicates from conns array in JSON front-end, fixes #2736
Claire Xenia Wolf [Mon, 26 Apr 2021 14:31:44 +0000 (16:31 +0200)]
Remove duplicates from conns array in JSON front-end, fixes #2736
Claire Xen [Wed, 21 Apr 2021 10:24:07 +0000 (12:24 +0200)]
Merge pull request #2669 from YosysHQ/claire/ice40defaults
Add input default assignments to iCE40 cell library
Claire Xenia Wolf [Tue, 20 Apr 2021 16:52:36 +0000 (18:52 +0200)]
Add default assignments to other SB_* simulation models
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
Claire Xenia Wolf [Mon, 15 Mar 2021 22:27:55 +0000 (23:27 +0100)]
Add default assignments to SB_LUT4
Signed-off-by: Claire Xenia Wolf <claire@clairexen.net>
Lofty [Mon, 12 Apr 2021 09:33:40 +0000 (10:33 +0100)]
quicklogic: ABC9 synthesis
Stefan Riesenberger [Fri, 9 Apr 2021 13:44:08 +0000 (15:44 +0200)]
sf2: fix name of AND modules
whitequark [Fri, 9 Apr 2021 14:22:36 +0000 (14:22 +0000)]
Merge pull request #2724 from whitequark/flatten-rewrite-memwr-memid
flatten: rewrite memid in memwr actions
whitequark [Fri, 9 Apr 2021 09:46:53 +0000 (09:46 +0000)]
flatten: rewrite memid in memwr actions.
Zachary Snow [Tue, 30 Mar 2021 13:38:00 +0000 (09:38 -0400)]
preproc: test coverage for #2712
Marcelina Kościelnicka [Tue, 30 Mar 2021 02:00:45 +0000 (04:00 +0200)]
equiv: Suggest running async2sync or clk2fflogic where appropriate.
See #2713.
Zachary Snow [Mon, 29 Mar 2021 15:03:46 +0000 (11:03 -0400)]
verilog: revise hot comment warnings
Eddie Hung [Tue, 30 Mar 2021 05:02:06 +0000 (22:02 -0700)]
abc9: uniquify blackboxes like whiteboxes (#2695)
* abc9_ops: uniquify blackboxes too
* abc9_ops: update comment
* abc9_ops: allow bypass for param-less blackboxes
* Add tests
Eddie Hung [Tue, 30 Mar 2021 05:01:57 +0000 (22:01 -0700)]
abc9: fix SCC issues (#2694)
* xilinx: add SCC test for DSP48E1
* xilinx: Gate DSP48E1 being a whitebox behind ALLOW_WHITEBOX_DSP48E1
Have a test that checks it works through ABC9 when enabled
* abc9 to break SCCs using $__ABC9_SCC_BREAKER module
* Add test
* abc9_ops: remove refs to (* abc9_keep *) on wires
* abc9_ops: do not bypass cells in an SCC
* Add myself to CODEOWNERS for abc9*
* Fix compile
* abc9_ops: run -prep_hier before scc
* Fix tests
* Remove bug reference pending fix
* abc9: fix for -prep_hier -dff
* xaiger: restore PI handling
* abc9_ops: -prep_xaiger sigmap
* abc9_ops: -mark_scc -> -break_scc
* abc9: eliminate hard-coded abc9.box from tests
Also tidy up
* Address review
Marcelina Kościelnicka [Tue, 30 Mar 2021 00:30:17 +0000 (02:30 +0200)]
Bump version
Marcelina Kościelnicka [Mon, 29 Mar 2021 23:15:49 +0000 (01:15 +0200)]
preproc: Fix up conditional handling.
Fixes #2710.
Fixes #2711.
Zachary Snow [Sun, 28 Mar 2021 21:45:38 +0000 (17:45 -0400)]
gha: trim macOS dependencies
- Only install needed dependencies rather than using Brewfile
- Remove brew update (recent enough formulae already baked in)
- Saves ~16 minutes in macOS CI
Zachary Snow [Sun, 28 Mar 2021 19:28:23 +0000 (15:28 -0400)]
gha: combine jobs using matrix
Zachary Snow [Wed, 24 Mar 2021 15:23:23 +0000 (11:23 -0400)]
rtlil: add const accessors for modules, wires, and cells
whitequark [Wed, 24 Mar 2021 23:39:19 +0000 (23:39 +0000)]
Merge pull request #2702 from modwizcode/patch-1
Clarify bugpoint documentation regarding output
Iris Johnson [Wed, 24 Mar 2021 21:24:33 +0000 (16:24 -0500)]
Clarify bugpoint documentation regarding output
Bugpoint's current documentation does specify that the result of a run is stored as the current design,
however it's easy to skim over what that means in practice.
Add a documentation comment to explain specifically that an after bugpoint `write_xyz` pass is required to save
the reduced design.
Zachary Snow [Tue, 23 Mar 2021 16:49:11 +0000 (12:49 -0400)]
ast: make design available to process_module()
Marcelina Kościelnicka [Tue, 23 Mar 2021 16:39:06 +0000 (17:39 +0100)]
rtlil: Fix process memwr roundtrip.
Fixes #2646 fallout.
N. Engelhardt [Tue, 23 Mar 2021 16:41:13 +0000 (17:41 +0100)]
Merge pull request #2696 from nakengelhardt/guidelines
split CodingReadme into multiple files
Marcelina Kościelnicka [Tue, 23 Mar 2021 13:51:37 +0000 (14:51 +0100)]
quicklogic: Add .gitignore file for test outputs.
Marcelina Kościelnicka [Tue, 23 Mar 2021 13:47:32 +0000 (14:47 +0100)]
json: Improve the "processes in module" message a bit.
N. Engelhardt [Mon, 22 Mar 2021 18:16:25 +0000 (19:16 +0100)]
split CodingReadme into multiple files
Xiretza [Thu, 18 Mar 2021 20:53:02 +0000 (21:53 +0100)]
verilog: check entire user type stack for type definition
Zachary Snow [Thu, 18 Mar 2021 17:38:25 +0000 (13:38 -0400)]
sv: allow typenames as function return types
Miodrag Milanović [Fri, 19 Mar 2021 07:47:07 +0000 (08:47 +0100)]
Merge pull request #2681 from msinger/fix-issue2606
Fix check for bad std::regex
Xiretza [Tue, 16 Mar 2021 15:42:14 +0000 (16:42 +0100)]
verilog: rebuild user_type_stack from globals before parsing file
This was actually a ticking UB bomb: after running the parser, the type
maps contain pointers to children of the current AST, which is
recursively deleted after the pass has executed. This leaves the
pointers in user_type_stack dangling, which just happened to never be a
problem due to another bug that causes typedefs from higher-level type
maps to never be considered.
Rebuilding the type stack from the design's globals ensures the AstNode
pointers are valid.