Claire Wolf [Wed, 22 Apr 2020 12:51:20 +0000 (14:51 +0200)]
Clear current_scope when done with RTLIL generation, fixes #1837
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
Marcelina Kościelnicka [Thu, 16 Apr 2020 13:57:03 +0000 (15:57 +0200)]
write_json: dump default parameter values
Fixes #1823.
This will allow nextpnr to reuse the default value information already
present in yosys cells_sim.v and avoid duplicating (and probably
desyncing) this information.
Marcelina Kościelnicka [Thu, 16 Apr 2020 19:48:21 +0000 (21:48 +0200)]
Use default parameter value in getParam
Fixes #1822.
Marcelina Kościelnicka [Thu, 16 Apr 2020 15:38:55 +0000 (17:38 +0200)]
hierarchy: Convert positional parameters to named.
Fixes #1821.
Marcelina Kościelnicka [Thu, 16 Apr 2020 13:51:03 +0000 (15:51 +0200)]
ilang, ast: Store parameter order and default value information.
Fixes #1819, #1820.
Marcelina Kościelnicka [Thu, 16 Apr 2020 19:48:03 +0000 (21:48 +0200)]
idict: Make iterator go forward.
Previously, iterating over an idict returned its contents in reverse.
Claire Wolf [Tue, 21 Apr 2020 17:04:55 +0000 (19:04 +0200)]
Merge pull request #1971 from YosysHQ/claire/edifkeep
Ignore conflicting keep attributes, unless asked not to
Claire Wolf [Tue, 21 Apr 2020 16:46:52 +0000 (18:46 +0200)]
Merge pull request #1851 from YosysHQ/claire/bitselwrite
Improved rewrite code for writing to bit slice
Claire Wolf [Tue, 21 Apr 2020 10:35:25 +0000 (12:35 +0200)]
Improve net priorities in EDIF back-end
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
whitequark [Tue, 21 Apr 2020 01:43:20 +0000 (01:43 +0000)]
Merge pull request #1961 from whitequark/paramod-original-name
ast, rpc: record original name of $paramod\* as \hdlname attribute
Eddie Hung [Mon, 20 Apr 2020 22:42:29 +0000 (15:42 -0700)]
tests: remove write_ilang
Eddie Hung [Mon, 20 Apr 2020 22:34:31 +0000 (15:34 -0700)]
Merge pull request #1975 from dh73/claire/bitselwrite
Adding tests to Claire/bitselwrite branch
Eddie Hung [Mon, 20 Apr 2020 18:58:23 +0000 (11:58 -0700)]
Remove '-ignore_unknown_cells' option from 'sat'
Eddie Hung [Mon, 20 Apr 2020 18:54:10 +0000 (11:54 -0700)]
Simplify test case script
Eddie Hung [Mon, 20 Apr 2020 18:53:48 +0000 (11:53 -0700)]
Remove ununsed files
Eddie Hung [Mon, 20 Apr 2020 18:39:13 +0000 (11:39 -0700)]
Merge pull request #1972 from YosysHQ/eddie/bug1970
abc9_ops: -prep_lut to be more robust
diego [Mon, 20 Apr 2020 17:45:35 +0000 (12:45 -0500)]
Modifications of tests as per Eddie's request
Eddie Hung [Mon, 20 Apr 2020 16:39:35 +0000 (09:39 -0700)]
abc9: -prep_lut to be more robust
Eddie Hung [Mon, 20 Apr 2020 16:38:29 +0000 (09:38 -0700)]
abc9: add testcase reduced from #1970
Claire Wolf [Mon, 20 Apr 2020 14:00:37 +0000 (16:00 +0200)]
Ignore conflicting keep attributes, unless asked not to. Fixes #1733
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
Claire Wolf [Mon, 20 Apr 2020 12:51:40 +0000 (14:51 +0200)]
Merge pull request #1964 from YosysHQ/claire/sformatf
Extend support for format strings in Verilog front-end
whitequark [Sun, 19 Apr 2020 19:59:42 +0000 (19:59 +0000)]
Merge pull request #1967 from whitequark/cxxrtl-blackbox-attributes
cxxrtl: provide attributes to black box factories, too
whitequark [Sun, 19 Apr 2020 16:22:02 +0000 (16:22 +0000)]
cxxrtl: provide attributes to black box factories, too.
Both parameters and attributes are necessary because the parameters
have to be the same between every instantiation of the cell, but
attributes may well vary. For example, for an UART PHY, the type
of the PHY (tty, pty, socket) would be a parameter, but configuration
of the implementation specified by the type (socket address) would
be an attribute.
Claire Wolf [Sat, 18 Apr 2020 12:08:51 +0000 (14:08 +0200)]
Extend support for format strings in Verilog front-end
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
whitequark [Sat, 18 Apr 2020 09:21:14 +0000 (09:21 +0000)]
Merge pull request #1963 from whitequark/cxxrtl-blackboxes
cxxrtl: add support for simple and templated C++ black boxes
whitequark [Sat, 18 Apr 2020 08:04:57 +0000 (08:04 +0000)]
cxxrtl: add templated black box support.
whitequark [Sat, 18 Apr 2020 02:14:20 +0000 (02:14 +0000)]
cxxrtl: make eval() and commit() inline in blackboxes.
This change is a preparation for template blackboxes. It has no
effect on current generated code.
whitequark [Fri, 17 Apr 2020 01:41:08 +0000 (01:41 +0000)]
cxxrtl: add simple black box support.
This commit adds support for replacing RTLIL modules with CXXRTL
black boxes. Black box port widths may not depend on the parameters
with which it is instantiated (yet); the parameters may only be used
to change the behavior of the black box.
whitequark [Wed, 15 Apr 2020 17:39:14 +0000 (17:39 +0000)]
cxxrtl: use ID::X instead of ID(X). NFC.
whitequark [Sat, 18 Apr 2020 03:43:15 +0000 (03:43 +0000)]
ast, rpc: record original name of $paramod\* as \hdlname attribute.
The $paramod name mangling is not invertible (the \ character, which
separates the module name from the parameters, is valid in the module
name itself), which does not stop people from trying to invert it.
This commit makes it easy to invert the name mangling by storing
the original name explicitly, and fixes the firrtl backend to use
the newly introduced attribute.
whitequark [Fri, 17 Apr 2020 21:36:59 +0000 (21:36 +0000)]
Merge pull request #1955 from whitequark/cxxrtl-sync_always
cxxrtl: correctly handle `sync always` rules
whitequark [Fri, 17 Apr 2020 18:57:00 +0000 (18:57 +0000)]
Merge pull request #1952 from boqwxp/add_edge_location
Verilog frontend: add source location in more parser rules
diego [Fri, 17 Apr 2020 15:15:22 +0000 (10:15 -0500)]
Wrong fixed value
whitequark [Fri, 17 Apr 2020 09:43:13 +0000 (09:43 +0000)]
cxxrtl: correctly handle `sync always` rules.
Fixes #1948.
whitequark [Fri, 17 Apr 2020 09:07:49 +0000 (09:07 +0000)]
Merge pull request #1954 from YosysHQ/dave/fix-stdout-conflict
qbfsat: Fix illegal use of 'stdout' identifier
whitequark [Fri, 17 Apr 2020 09:06:40 +0000 (09:06 +0000)]
Merge pull request #1951 from whitequark/rtlil-string_attribute
rtlil: add AttrObject::{get,set}_string_attribute, AttrObject::has_attribute
David Shah [Fri, 17 Apr 2020 07:42:39 +0000 (08:42 +0100)]
qbfsat: Fix illegal use of 'stdout' identifier
Signed-off-by: David Shah <dave@ds0.me>
Alberto Gonzalez [Fri, 17 Apr 2020 06:23:03 +0000 (06:23 +0000)]
Set Verilog source location for explicit blocks (`begin` ... `end`).
Alberto Gonzalez [Fri, 17 Apr 2020 06:16:59 +0000 (06:16 +0000)]
Add Verilog source location information to `AST_POSEDGE` and `AST_NEGEDGE` nodes.
whitequark [Fri, 17 Apr 2020 02:27:13 +0000 (02:27 +0000)]
Merge pull request #1898 from boqwxp/locations
Verilog frontend: add location information to parsed constants
whitequark [Fri, 17 Apr 2020 02:25:18 +0000 (02:25 +0000)]
Merge pull request #1864 from boqwxp/cleanup_techmap_abc
Clean up pseudo-private member usage and simplify `passes/techmap/abc.cc`
whitequark [Fri, 17 Apr 2020 02:21:23 +0000 (02:21 +0000)]
Merge pull request #1888 from boqwxp/cleanup_scatter
Clean up `passes/cmds/scatter.cc`.
whitequark [Fri, 17 Apr 2020 02:20:54 +0000 (02:20 +0000)]
Merge pull request #1882 from boqwxp/cleanup_rename
Clean up pseudo-private member usage in `passes/cmds/rename.cc`.
whitequark [Thu, 16 Apr 2020 22:09:25 +0000 (22:09 +0000)]
Merge pull request #1929 from YosysHQ/eddie/select_unset
select: add select -unset option
whitequark [Thu, 16 Apr 2020 21:49:49 +0000 (21:49 +0000)]
rtlil: add AttrObject::has_attribute.
whitequark [Thu, 16 Apr 2020 21:43:03 +0000 (21:43 +0000)]
rtlil: add AttrObject::{get,set}_string_attribute.
And make {get,set}_src_attribute use those functions.
whitequark [Thu, 16 Apr 2020 21:28:13 +0000 (21:28 +0000)]
Merge pull request #1947 from whitequark/cxxrtl-usability
cxxrtl: minor documentation and usability improvements
Alberto Gonzalez [Fri, 10 Apr 2020 22:37:36 +0000 (22:37 +0000)]
Add location information to `AST_CONSTANT` nodes.
Alberto Gonzalez [Tue, 14 Apr 2020 00:35:47 +0000 (00:35 +0000)]
Use `dict` instead of `std::map`.
Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
Alberto Gonzalez [Thu, 9 Apr 2020 19:31:12 +0000 (19:31 +0000)]
Revert to `stringf()` rather than stringstreams.
Alberto Gonzalez [Wed, 8 Apr 2020 07:22:10 +0000 (07:22 +0000)]
Clean up pseudo-private member usage in `passes/cmds/rename.cc`.
Alberto Gonzalez [Mon, 13 Apr 2020 19:37:01 +0000 (19:37 +0000)]
Replace `std::map` with `dict`.
Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
Alberto Gonzalez [Thu, 9 Apr 2020 23:55:24 +0000 (23:55 +0000)]
Replace pseudo-private member access to `connections_` in `passes/cmds/scatter.cc`.
Co-Authored-By: N. Engelhardt <nak@symbioticeda.com>
Alberto Gonzalez [Thu, 9 Apr 2020 05:34:28 +0000 (05:34 +0000)]
Clean up `passes/cmds/scatter.cc`.
diego [Thu, 16 Apr 2020 18:31:05 +0000 (13:31 -0500)]
Adding tests for dynamic part select optimisation
Eddie Hung [Tue, 14 Apr 2020 17:58:51 +0000 (10:58 -0700)]
tests: add select -unset tests
Eddie Hung [Tue, 14 Apr 2020 17:58:42 +0000 (10:58 -0700)]
select: add select -unset option
Eddie Hung [Thu, 16 Apr 2020 17:51:09 +0000 (10:51 -0700)]
Merge pull request #1928 from YosysHQ/eddie/design_delete
kernel: add design -delete option
whitequark [Thu, 16 Apr 2020 17:18:29 +0000 (17:18 +0000)]
Merge pull request #1896 from boqwxp/read_stdin_repl
Frontend: allow reading file input from stdin, like a REPL heredoc mode
Claire Wolf [Thu, 16 Apr 2020 16:50:43 +0000 (18:50 +0200)]
Merge pull request #1797 from epfl-vlsc/firrtl_backend_fileinfo
Keep file information when emitting firrtl
whitequark [Thu, 16 Apr 2020 16:45:02 +0000 (16:45 +0000)]
cxxrtl: make ROMs writable, document memory::operator[].
There is no practical benefit from using `const memory` for ROMs;
it uses an std::vector internally, which prevents contemporary
compilers from constant-propagating ROM contents. (It is not clear
whether they are permitted to do so.)
However, there is a major benefit from using non-const `memory` for
ROMs, which is the ability to dynamically fill the ROM for each
individual simulation.
whitequark [Thu, 16 Apr 2020 16:30:43 +0000 (16:30 +0000)]
cxxrtl: fix misleading example, caution about race conditions.
Fixes #1944.
whitequark [Wed, 15 Apr 2020 19:01:17 +0000 (19:01 +0000)]
cxxrtl: remove inaccurate comment. NFC.
David Shah [Thu, 16 Apr 2020 15:38:19 +0000 (16:38 +0100)]
ecp5: Force SIGNED ports to be 1 bit
Signed-off-by: David Shah <dave@ds0.me>
Eddie Hung [Thu, 16 Apr 2020 15:06:12 +0000 (08:06 -0700)]
Merge pull request #1927 from YosysHQ/eddie/design_remove_assert
kernel: Design::remove(RTLIL::Module *) to check refcount_modules_
Eddie Hung [Tue, 14 Apr 2020 17:34:23 +0000 (10:34 -0700)]
tests: add design -delete tests
Eddie Hung [Tue, 14 Apr 2020 17:33:55 +0000 (10:33 -0700)]
kernel: add design -delete option
whitequark [Thu, 16 Apr 2020 13:29:13 +0000 (13:29 +0000)]
Merge pull request #1915 from boqwxp/dict_move_semantics
kernel: Add `dict` support for rvalue references and C++11 move semantics.
whitequark [Thu, 16 Apr 2020 13:28:34 +0000 (13:28 +0000)]
Merge pull request #1900 from Xiretza/suppress-makefile-echo
Suppress output of Makefile.conf when printing source versions
whitequark [Thu, 16 Apr 2020 13:28:03 +0000 (13:28 +0000)]
Merge pull request #1937 from hzeller/consexpr-opportunity
Use static constexpr instead of static const where possible.
David Shah [Thu, 16 Apr 2020 12:48:20 +0000 (13:48 +0100)]
Merge pull request #1943 from YosysHQ/dave/fix-1919
ast: Fix handling of identifiers in the global scope
Claire Wolf [Thu, 16 Apr 2020 10:11:52 +0000 (12:11 +0200)]
Make mask-and-shift the default for bitselwrite
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
Claire Wolf [Wed, 15 Apr 2020 18:36:40 +0000 (20:36 +0200)]
Add LookaheadRewriter for proper bitselwrite support
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
Marcelina Kościelnicka [Tue, 14 Apr 2020 16:59:49 +0000 (18:59 +0200)]
opt_expr: Fix X and CO outputs for $alu identity-mapping rules.
David Shah [Thu, 16 Apr 2020 09:27:59 +0000 (10:27 +0100)]
ast: Fix handling of identifiers in the global scope
Signed-off-by: David Shah <dave@ds0.me>
Alberto Gonzalez [Wed, 15 Apr 2020 16:22:22 +0000 (16:22 +0000)]
Rename overloaded `insert()` to `emplace()` and add overloaded versions for all possible lvalue/rvalue combinationsfor its arguments.
Alberto Gonzalez [Fri, 10 Apr 2020 20:06:12 +0000 (20:06 +0000)]
Use script-style heredoc syntax for REPL heredocs.
Alberto Gonzalez [Fri, 10 Apr 2020 19:30:22 +0000 (19:30 +0000)]
Allow reading file input from stdin, improving REPL experience.
Claire Wolf [Wed, 1 Apr 2020 10:43:42 +0000 (12:43 +0200)]
Improved rewrite code for writing to bit slice (disabled for now)
This adds the new rewrite rule. But it's still missing a check that makes
sure the new rewrite rule is actually a valid substitute in the always
block being processed. Therefore the new rewrite rule is just disabled
for now.
Signed-off-by: Claire Wolf <claire@symbioticeda.com>
Miodrag Milanović [Wed, 15 Apr 2020 15:43:31 +0000 (17:43 +0200)]
Merge pull request #1894 from YosysHQ/mingw_fix
Fix compile for mingw
Eddie Hung [Wed, 15 Apr 2020 15:42:39 +0000 (08:42 -0700)]
Merge pull request #1916 from YosysHQ/eddie/kernel_makeblackbox
kernel: Module::makeblackbox() to clear connections too
Eddie Hung [Wed, 15 Apr 2020 15:36:25 +0000 (08:36 -0700)]
Merge pull request #1933 from YosysHQ/eddie/zinit_more
zinit: handle $__DFFS?E?_[NP][NP][01] too
N. Engelhardt [Wed, 15 Apr 2020 15:33:50 +0000 (17:33 +0200)]
Merge pull request #1830 from boqwxp/qbfsat
Add `qbfsat` command to integrate exists-forall solving and specialization
Marcelina Kościelnicka [Sat, 11 Apr 2020 14:03:19 +0000 (16:03 +0200)]
Fix the truth table for $_SR_* cells.
This brings the documented behavior for these cells in line with
$_DFFSR_* and $_DLATCHSR_*, which is that R has priority over S.
The models were already reflecting that behavior.
Also get rid of sim-synth mismatch in the models while we're at it.
David Shah [Wed, 15 Apr 2020 15:10:38 +0000 (16:10 +0100)]
Merge pull request #1897 from YosysHQ/dave/bram-rejection-fix
memory_bram: Fix ignorance of valid, matched rules
Miodrag Milanovic [Wed, 15 Apr 2020 14:38:09 +0000 (16:38 +0200)]
Fix compile for mingw
Marcelina Kościelnicka [Sat, 11 Apr 2020 16:36:51 +0000 (18:36 +0200)]
Get rid of dffsr2dff.
This pass is a proper subset of opt_rmdff, which is called by opt, which
is called by every synth flow in the coarse part. Thus, it never
actually does anything and can be safely removed.
Marcelina Kościelnicka [Sat, 11 Apr 2020 14:59:10 +0000 (16:59 +0200)]
opt_clean: Add missing assignments to opt.did_something.
whitequark [Wed, 15 Apr 2020 14:16:50 +0000 (14:16 +0000)]
Merge pull request #1918 from whitequark/simplify-improve_enum
ast/simplify: improve enum handling
Dan Ravensloft [Wed, 15 Apr 2020 13:28:35 +0000 (14:28 +0100)]
synth_intel_alm: VQM support
whitequark [Tue, 14 Apr 2020 03:25:22 +0000 (03:25 +0000)]
ast/simplify: improve enum handling.
Before this commit, enum values were serialized as attributes of form
\enum_<width>_<value>
where <value> was a decimal signed integer.
This has multiple drawbacks:
* Enums with large values would be hard to process for downstream
tooling that cannot parse arbitrary precision decimals. (In fact
Yosys also did not correctly process enums with large values,
and would overflow `int`.)
* Enum value attributes were not confined to their own namespace,
making it harder for downstream tooling to enumerate all such
attributes, as opposed to looking up any specific value.
* Enum values could not include x or z, which are explicitly
permitted in the SystemVerilog standard.
After this commit, enum values are serialized as attributes of form
\enum_value_<value>
where <value> is a bit sequence of the appropriate width.
Marcelina Kościelnicka [Wed, 15 Apr 2020 14:12:34 +0000 (16:12 +0200)]
setundef: Improve error messages.
Fixes #1092.
Marcelina Kościelnicka [Tue, 14 Apr 2020 20:57:37 +0000 (22:57 +0200)]
json: Update format documentation.
Fixes #1693.
Claire Wolf [Wed, 15 Apr 2020 14:01:19 +0000 (16:01 +0200)]
Merge pull request #1930 from YosysHQ/claire/fix1876
Fix handling of ternary with constant condition
Dan Ravensloft [Tue, 19 Nov 2019 10:19:00 +0000 (10:19 +0000)]
synth_intel_alm: alternative synthesis for Intel FPGAs
By operating at a layer of abstraction over the rather clumsy Intel primitives,
we can avoid special hacks like `dffinit -highlow` in favour of simple techmapping.
This also makes the primitives much easier to manipulate, and more descriptive
(no more cyclonev_lcell_comb to mean anything from a LUT2 to a LUT6).
Marcelina Kościelnicka [Tue, 14 Apr 2020 13:44:17 +0000 (15:44 +0200)]
abc9_ops: Add a check ensuring that connected port actually exists.
whitequark [Wed, 15 Apr 2020 05:34:29 +0000 (05:34 +0000)]
Merge pull request #1932 from YosysHQ/dave/cxxrtl-unclocked-read
cxxrtl: Fix handling of unclocked memory read ports
Henner Zeller [Tue, 14 Apr 2020 21:19:38 +0000 (14:19 -0700)]
Use static constexpr instead of static const where possible.
In particular inside class declarations, a static const
assignment is technically not a definition, while constexpr is.
Signed-off-by: Henner Zeller <h.zeller@acm.org>
Eddie Hung [Tue, 14 Apr 2020 20:08:37 +0000 (13:08 -0700)]
tests: zinit for new types
Eddie Hung [Tue, 14 Apr 2020 20:08:23 +0000 (13:08 -0700)]
zinit: handle $__DFFS?E?_[NP][NP][01] too