Marcelina Kościelnicka [Fri, 18 Dec 2020 19:51:26 +0000 (20:51 +0100)]
xilinx: Regenerate cells_xtra.v using Vivado 2020.2
whitequark [Mon, 21 Dec 2020 04:32:18 +0000 (04:32 +0000)]
Merge pull request #2496 from whitequark/cxxrtl-fixes
cxxrtl: various improvements
whitequark [Mon, 21 Dec 2020 02:15:55 +0000 (02:15 +0000)]
cxxrtl: speed up bit repeats (sign extends, etc).
On Minerva SoC SRAM, depending on the compiler, this change improves
overall time by 4-7%.
whitequark [Mon, 21 Dec 2020 00:22:50 +0000 (00:22 +0000)]
cxxrtl: speed up commits on clang.
On Minerva SoC SRAM compiled with clang-11, this change cuts commit
time in half (!) and overall time by 20%. When compiled with gcc-10,
there is no difference.
whitequark [Sun, 20 Dec 2020 14:48:16 +0000 (14:48 +0000)]
cxxrtl: use `static inline` instead of `inline` in the C API.
In C, non-static inline functions require an implementation elsewhere
(even though the body is right there in the header). It is basically
never desirable to use those as opposed to static inline ones.
Yosys Bot [Sun, 20 Dec 2020 00:10:10 +0000 (00:10 +0000)]
Bump version
whitequark [Sat, 19 Dec 2020 04:14:31 +0000 (04:14 +0000)]
Merge pull request #2487 from whitequark/cxxrtl-outlining
CXXRTL: implement zero-cost full coverage debug information through the magic✨ of outlining🪄🎀🧹
Yosys Bot [Fri, 18 Dec 2020 00:10:05 +0000 (00:10 +0000)]
Bump version
Marcelina Kościelnicka [Wed, 16 Dec 2020 23:24:48 +0000 (00:24 +0100)]
xilinx: Add FDDRCPE and FDDRRSE blackbox cells.
These are necessary primitives for proper DDR support on Virtex 2 and
Spartan 3.
whitequark [Tue, 15 Dec 2020 03:46:06 +0000 (03:46 +0000)]
cxxrtl: print names of cells inlined in connections.
whitequark [Sun, 13 Dec 2020 18:16:55 +0000 (18:16 +0000)]
cxxrtl: disable optimization of debug_items().
Implementing outlining has greatly increased the amount of debug
information in a typical build, and consequently exposed performance
issues in C++ compilers, which are similar for both GCC and Clang;
the compile time of Minerva SoC SRAM increased almost twofold.
Although one would expect the slowdown to be caused by the increased
use of templates in `debug_eval()`, it is actually almost entirely
attributable to optimizations and codegen for `debug_items()`.
Fortunately, it is neither possible nor desirable to optimize
`debug_items()`: in most cases it is called exactly once, and its
body is a linear sequence of calls with unique arguments.
This commit turns off optimizations for `debug_items()` on GCC and
Clang, improving -Os compile time of Minerva SoC SRAM by ~40% (!)
whitequark [Sun, 13 Dec 2020 15:33:47 +0000 (15:33 +0000)]
cxxrtl: make alias analysis outlining-aware.
Before this commit, if a sequence of wires assigned in a chain would
terminate on a cell, none of the wires would get marked as aliases,
and typically all of the public wires would get outlined. The reason
for this behavior is that alias analysis predates outlining and in
fact runs before it.
After this commit, alias analysis runs after outlining and considers
outlined wires valid aliasees. More importantly, if the chained wires
contain any valid aliasees, then all of the wires are aliased to
the one that is topologically deepest.
Aliased wires incur virtually no overhead for the VCD writer, unlike
outlined wires that would otherwise take their place. On Minerva SoC
SRAM, size of the full VCD dump is reduced by ~65%, and throughput
is increased by ~55%.
Yosys Bot [Tue, 15 Dec 2020 00:10:06 +0000 (00:10 +0000)]
Bump version
Marcelina Kościelnicka [Mon, 14 Dec 2020 17:14:42 +0000 (18:14 +0100)]
timinginfo: Error instead of segfault on const signals.
Reported by @Ravenslofty
whitequark [Sun, 13 Dec 2020 07:44:27 +0000 (07:44 +0000)]
cxxrtl: add a "bare minimum" debug information level.
Useful to reduce overhead when no debug capabilities are necessary
except for access to design state.
whitequark [Sun, 13 Dec 2020 07:03:16 +0000 (07:03 +0000)]
cxxrtl: implement debug information outlining.
Aggressive wire localization and inlining is necessary for CXXRTL to
achieve high performance. However, that comes with a cost: reduced
debug information coverage. Previously, as a workaround, the `-Og`
option could have been used to guarantee complete coverage, at a cost
of a significant performance penalty.
This commit introduces debug information outlining. The main eval()
function is compiled with the user-specified optimization settings.
In tandem, an auxiliary debug_eval() function, compiled from the same
netlist, can be used to reconstruct the values of localized/inlined
signals on demand. To the extent that it is possible, debug_eval()
reuses the results of computations performed by eval(), only filling
in the missing values.
Benchmarking a representative design (Minerva SoC SRAM) shows that:
* Switching from `-O4`/`-Og` to `-O6` reduces runtime by ~40%.
* Switching from `-g1` to `-g2`, both used with `-O6`, increases
compile time by ~25%.
* Although `-g2` increases the resident size of generated modules,
this has no effect on runtime.
Because the impact of `-g2` is minimal and the benefits of having
unconditional 100% debug information coverage (and the performance
improvement as well) are major, this commit removes `-Og` and changes
the defaults to `-O6 -g2`.
We'll have our cake and eat it too!
whitequark [Sun, 13 Dec 2020 00:34:32 +0000 (00:34 +0000)]
cxxrtl: rename "elision" to "inlining". NFC.
"Elision" in this context is an unusual and not very descriptive term
whereas "inlining" is common and straightforward. Also, introducing
"inlining" makes it easier to introduce its dual under the obvious
name "outlining".
whitequark [Sat, 12 Dec 2020 20:24:53 +0000 (20:24 +0000)]
cxxrtl: fix outdated comment. NFC.
whitequark [Sun, 13 Dec 2020 00:54:12 +0000 (00:54 +0000)]
cxxrtl: use IdString::isPublic(). NFC.
Yosys Bot [Sun, 13 Dec 2020 00:10:07 +0000 (00:10 +0000)]
Bump version
whitequark [Sat, 12 Dec 2020 20:50:37 +0000 (20:50 +0000)]
kernel: make IdString::isPublic() const.
whitequark [Sat, 12 Dec 2020 19:55:57 +0000 (19:55 +0000)]
Merge pull request #2485 from whitequark/cxxrtl-cell-input-buffering
cxxrtl: don't overwrite buffered inputs
whitequark [Fri, 11 Dec 2020 23:30:32 +0000 (23:30 +0000)]
cxxrtl: don't overwrite buffered inputs.
Before this commit, a cell's input was always assigned like:
p_cell.p_input = (value...);
If `p_input` is buffered (e.g. if the design is built at -O0), this
is not correct. (In practice, this breaks clocking.) Unfortunately,
the incorrect design was compiled without diagnostics because wire<>
was move-assignable and also implicitly constructible from value<>.
After this commit, cell inputs are no longer incorrectly assumed to
always be unbuffered, and wires are not assignable from values.
Yosys Bot [Thu, 10 Dec 2020 00:10:10 +0000 (00:10 +0000)]
Bump version
Miodrag Milanović [Wed, 9 Dec 2020 10:19:30 +0000 (11:19 +0100)]
Merge pull request #2483 from YosysHQ/pmgen_nice_error
Return nice error in pmgen generated code, fixes #2482
Miodrag Milanovic [Wed, 9 Dec 2020 10:06:22 +0000 (11:06 +0100)]
Return nice error in pmgen generated code, fixes #2482
Yosys Bot [Wed, 9 Dec 2020 00:10:04 +0000 (00:10 +0000)]
Bump version
whitequark [Tue, 8 Dec 2020 07:32:11 +0000 (07:32 +0000)]
Merge pull request #2478 from whitequark/improve-bugpoint
bugpoint: various improvements
whitequark [Mon, 7 Dec 2020 09:24:35 +0000 (09:24 +0000)]
bugpoint: add -wires option.
whitequark [Mon, 7 Dec 2020 08:27:25 +0000 (08:27 +0000)]
bugpoint: try to remove whole processes first.
whitequark [Mon, 7 Dec 2020 08:23:32 +0000 (08:23 +0000)]
bugpoint: accept quoted strings in -grep.
whitequark [Mon, 7 Dec 2020 08:42:45 +0000 (08:42 +0000)]
bugpoint: add -command option.
Yosys Bot [Fri, 4 Dec 2020 00:10:06 +0000 (00:10 +0000)]
Bump version
whitequark [Thu, 3 Dec 2020 02:35:23 +0000 (02:35 +0000)]
Merge pull request #2470 from whitequark/cxxrtl-create_at
cxxrtl: allow customizing the root module path in the C API
whitequark [Thu, 3 Dec 2020 01:58:02 +0000 (01:58 +0000)]
cxxrtl: allow customizing the root module path in the C API.
Yosys Bot [Thu, 3 Dec 2020 00:10:09 +0000 (00:10 +0000)]
Bump version
whitequark [Wed, 2 Dec 2020 23:36:22 +0000 (23:36 +0000)]
Merge pull request #2468 from whitequark/cxxrtl-assert
cxxrtl: use CXXRTL_ASSERT for RTL contract violations instead of assert
whitequark [Wed, 2 Dec 2020 23:36:03 +0000 (23:36 +0000)]
Merge pull request #2469 from whitequark/cxxrtl-no-clk
cxxrtl: fix crashes caused by a floating or constant clock input
whitequark [Wed, 2 Dec 2020 23:35:54 +0000 (23:35 +0000)]
Merge pull request #2466 from whitequark/cxxrtl-reset
cxxrtl: provide a way to perform unobtrusive power-on reset
whitequark [Wed, 2 Dec 2020 22:20:02 +0000 (22:20 +0000)]
Merge pull request #2456 from Zottel/master
Return correct modname when found in cache.
whitequark [Wed, 2 Dec 2020 22:19:52 +0000 (22:19 +0000)]
Merge pull request #2455 from gsomlo/gls-fedpkg-fixes
Fixes for building Fedora distro RPMs of yosys
David Shah [Wed, 2 Dec 2020 22:07:25 +0000 (22:07 +0000)]
Merge pull request #2467 from YosysHQ/dave/nexus-carry-fix
nexus: More efficient CO mapping
whitequark [Wed, 2 Dec 2020 21:39:25 +0000 (21:39 +0000)]
cxxrtl: fix crashes caused by a floating or constant clock input.
E.g. in:
module test;
wire clk = 0;
reg data;
always @(posedge clk)
data <= 0;
endmodule
whitequark [Wed, 2 Dec 2020 19:50:51 +0000 (19:50 +0000)]
Merge pull request #2446 from RobertBaruch/rtlil_format
Adds appendix on RTLIL text format
whitequark [Wed, 2 Dec 2020 19:41:00 +0000 (19:41 +0000)]
cxxrtl: use CXXRTL_ASSERT for RTL contract violations instead of assert.
RTL contract violations and C++ contract violations are different:
the former depend on the netlist and will never violate memory safety
whereas the latter may. When loading a CXXRTL simulation into another
process, RTL contract violations should generally not crash it, while
C++ contract violations should.
David Shah [Wed, 2 Dec 2020 17:08:39 +0000 (17:08 +0000)]
nexus: More efficient CO mapping
Signed-off-by: David Shah <dave@ds0.me>
Miodrag Milanovic [Wed, 2 Dec 2020 14:18:04 +0000 (15:18 +0100)]
Bump required Verific version
whitequark [Wed, 2 Dec 2020 08:25:27 +0000 (08:25 +0000)]
cxxrtl: provide a way to perform unobtrusive power-on reset.
Although it is always possible to destroy and recreate the design to
simulate a power-on reset, this has two drawbacks:
* Black boxes are also destroyed and recreated, which causes them
to reacquire their resources, which might be costly and/or erase
important state.
* Pointers into the design are invalidated and have to be acquired
again, which is costly and might be very inconvenient if they are
captured elsewhere (especially through the C API).
Yosys Bot [Wed, 2 Dec 2020 00:10:06 +0000 (00:10 +0000)]
Bump version
Claire Xen [Tue, 1 Dec 2020 11:31:34 +0000 (12:31 +0100)]
Merge pull request #2463 from georgerennie/fix_verilog_frontend_auto_defines
Fix SYNTHESIS always being defined in Verilog frontend
Miodrag Milanović [Tue, 1 Dec 2020 08:18:37 +0000 (09:18 +0100)]
Merge pull request #2460 from pepijndevos/simple-gowin
add -noalu and -json option for apicula
georgerennie [Tue, 1 Dec 2020 01:37:19 +0000 (01:37 +0000)]
Fix SYNTHESIS always being defined in Verilog frontend
Pepijn de Vos [Mon, 30 Nov 2020 10:43:12 +0000 (11:43 +0100)]
add -noalu and -json option for apicula
Julius Roob [Thu, 26 Nov 2020 12:28:28 +0000 (13:28 +0100)]
Return correct modname when found in cache.
Gabriel Somlo [Wed, 25 Nov 2020 17:29:59 +0000 (12:29 -0500)]
fixup over commit
829b5cca to re-enable ABCEXTERNAL support
Gabriel Somlo [Wed, 25 Nov 2020 13:46:26 +0000 (08:46 -0500)]
Add #include needed to build with gcc-11
Suggested by Jeff Law <law@redhat.com>
Yosys Bot [Thu, 26 Nov 2020 00:10:09 +0000 (00:10 +0000)]
Bump version
whitequark [Wed, 25 Nov 2020 21:22:14 +0000 (21:22 +0000)]
Merge pull request #2452 from whitequark/rtlil-remove-dot-identifiers
rtlil: remove dotted identifiers
Robert Baruch [Wed, 25 Nov 2020 20:02:35 +0000 (12:02 -0800)]
Further juggles the wording of "character".
Robert Baruch [Wed, 25 Nov 2020 19:57:17 +0000 (11:57 -0800)]
Clarifies how character encodings work.
Miodrag Milanović [Wed, 25 Nov 2020 18:15:11 +0000 (19:15 +0100)]
Merge pull request #2453 from YosysHQ/mmicko/verilog_assignments
Generate only simple assignments in verilog backend
Robert Baruch [Wed, 25 Nov 2020 18:06:22 +0000 (10:06 -0800)]
Clarifies whitespace and eol.
Robert Baruch [Wed, 25 Nov 2020 17:58:36 +0000 (09:58 -0800)]
Cleans up doublequotes
Robert Baruch [Wed, 25 Nov 2020 17:53:39 +0000 (09:53 -0800)]
Clarifies use of integers, and character set.
Miodrag Milanovic [Wed, 25 Nov 2020 17:21:41 +0000 (18:21 +0100)]
Add verilog backend option for simple_lhs
Robert Baruch [Wed, 25 Nov 2020 16:59:25 +0000 (08:59 -0800)]
Clarifies processes, corrects some attributes
whitequark [Wed, 25 Nov 2020 16:47:20 +0000 (16:47 +0000)]
rtlil: remove dotted identifiers.
No one knows where they came from and they never did anything useful.
Miodrag Milanovic [Wed, 25 Nov 2020 16:43:28 +0000 (17:43 +0100)]
generate only simple assignments in verilog backend
Claire Xen [Wed, 25 Nov 2020 08:44:23 +0000 (09:44 +0100)]
Merge pull request #2133 from dh73/nodev_head
Adding latch tests for shift&mask AST dynamic part-select enhancements
Robert Baruch [Wed, 25 Nov 2020 05:59:53 +0000 (21:59 -0800)]
Refactors for attributes.
whitequark [Wed, 25 Nov 2020 02:48:39 +0000 (02:48 +0000)]
Merge pull request #2442 from cr1901/sccache
Makefile: Add disabled-by-default ENABLE_SCCACHE config option.
whitequark [Wed, 25 Nov 2020 02:48:10 +0000 (02:48 +0000)]
Merge pull request #2450 from nitz/sim-vcd-filename
Add rewrite_filename for sim -vcd argument.
William D. Jones [Wed, 25 Nov 2020 02:32:27 +0000 (21:32 -0500)]
Makefile: Update ABCREV to bring in sccache fixes.
Yosys Bot [Wed, 25 Nov 2020 00:10:05 +0000 (00:10 +0000)]
Bump version
Robert Baruch [Tue, 24 Nov 2020 23:27:30 +0000 (15:27 -0800)]
Cleans up some descriptions and syntax
Now all rules ending in "-stmt" end in eol.
Chris Dailey [Tue, 24 Nov 2020 20:17:16 +0000 (15:17 -0500)]
Add rewrite_filename for sim -vcd argument.
whitequark [Tue, 24 Nov 2020 15:04:42 +0000 (15:04 +0000)]
Merge pull request #2428 from whitequark/check-processes
check: add support for processes
Miodrag Milanović [Tue, 24 Nov 2020 06:51:56 +0000 (07:51 +0100)]
Merge pull request #2448 from nitz/tcl-script-documentation-fixes
Tcl script documentation fixes
Miodrag Milanović [Tue, 24 Nov 2020 06:50:17 +0000 (07:50 +0100)]
Merge pull request #2295 from epfl-vlsc/firrtl_blackbox_generic_parameters
Add firrtl backend support for generic parameters in blackbox components
nitz [Tue, 24 Nov 2020 02:48:44 +0000 (21:48 -0500)]
tcl -h message only if YOSYS_ENABLE_TCL defined.
Sahand Kashani [Mon, 23 Nov 2020 09:43:59 +0000 (10:43 +0100)]
Formatting fixes
Robert Baruch [Mon, 23 Nov 2020 05:08:58 +0000 (21:08 -0800)]
Adds missing "end" and eol to module.
Robert Baruch [Mon, 23 Nov 2020 02:50:41 +0000 (18:50 -0800)]
Update to Values #2
Robert Baruch [Mon, 23 Nov 2020 02:48:21 +0000 (18:48 -0800)]
Update to Values section
Robert Baruch [Sun, 22 Nov 2020 20:56:29 +0000 (12:56 -0800)]
Adds appendix on RTLIL text format
Yosys Bot [Sat, 21 Nov 2020 00:10:06 +0000 (00:10 +0000)]
Bump version
Miodrag Milanović [Fri, 20 Nov 2020 09:30:56 +0000 (10:30 +0100)]
Merge pull request #2443 from YosysHQ/dave/nexus-mult-infer
nexus: Multiplier inference support
David Shah [Fri, 20 Nov 2020 08:26:58 +0000 (08:26 +0000)]
nexus: DSP inference support
Signed-off-by: David Shah <dave@ds0.me>
William D. Jones [Thu, 19 Nov 2020 18:23:54 +0000 (13:23 -0500)]
Makefile: Add disabled-by-default ENABLE_SCCACHE config option.
Yosys Bot [Thu, 19 Nov 2020 00:10:10 +0000 (00:10 +0000)]
Bump version
Miodrag Milanović [Wed, 18 Nov 2020 11:22:05 +0000 (12:22 +0100)]
Merge pull request #2441 from YosysHQ/dave/nexus_dsp_sim
nexus: Add DSP simulation model
David Shah [Tue, 17 Nov 2020 11:56:18 +0000 (11:56 +0000)]
nexus: Add DSP simulation model
Signed-off-by: David Shah <dave@ds0.me>
Miodrag Milanovic [Wed, 18 Nov 2020 09:03:57 +0000 (10:03 +0100)]
Fix duplicated parameter name typo
Yosys Bot [Tue, 17 Nov 2020 00:10:06 +0000 (00:10 +0000)]
Bump version
William Woodruff [Mon, 16 Nov 2020 08:31:48 +0000 (03:31 -0500)]
backends/blif: Remove unused vector of strings (#2420)
* backends/blif: Remove unused vector of strings
For reasons that are unclear to me, this was being used to store every
result of `cstr` before returning them. The vector was never accessed otherwise,
resulting in a huge unnecessary memory sink when emitting to BLIF.
* backends/blif: Remove CSTR macro
* backends/blif: Actually call str()
Miodrag Milanović [Mon, 16 Nov 2020 08:30:54 +0000 (09:30 +0100)]
Merge pull request #2438 from kbeckmann/gowin_rpll
synth_gowin: Add rPLL blackbox
Konrad Beckmann [Wed, 11 Nov 2020 16:01:50 +0000 (17:01 +0100)]
synth_gowin: Add rPLL blackbox
Yosys Bot [Wed, 11 Nov 2020 00:10:17 +0000 (00:10 +0000)]
Bump version
Miodrag Milanović [Tue, 10 Nov 2020 07:05:42 +0000 (08:05 +0100)]
Merge pull request #2433 from YosysHQ/paths_as_globals
Expose abc and data paths as globals for pyosys
Yosys Bot [Sun, 8 Nov 2020 00:10:06 +0000 (00:10 +0000)]
Bump version