Commit Graph

16619 Commits

Author SHA1 Message Date
Robert O'Callahan f34c6fec19 Add unit-tests for `ParallelDispatchThread` and friends 2026-02-08 22:52:17 +00:00
Robert O'Callahan a1aa9ab4aa Make gmock available in test environment 2026-02-08 22:52:17 +00:00
Robert O'Callahan fb05c13b33 Pass the module `Subpool` to `rmunused_module_signals` and parallelize that function 2026-02-08 22:52:17 +00:00
Robert O'Callahan e5cf1a90f1 Add test that connects a wire with `init` to a constant 2026-02-08 22:52:17 +00:00
Robert O'Callahan c81d7b00da Pass the module `Subpool` to `rmunused_module_cells` and parallelize that function 2026-02-08 22:52:17 +00:00
Robert O'Callahan e4dde705dc Pass the module `Subpool` to `rmunused_module_init` and parallelize that function 2026-02-05 21:22:29 +00:00
Robert O'Callahan 84932e3207 Pass the toplevel thread pool to `rmunused_module`, create a `Subpool`, and parallelize `remove_temporary_cells` 2026-02-05 21:22:29 +00:00
Robert O'Callahan 9990bda187 Create a toplevel `ParallelDispatchThreadPool` and parallelize `keep_cache_t::scan_module()` with it 2026-02-05 21:22:29 +00:00
Robert O'Callahan c10374c771 Introduce `RmStats` struct to encapsulate removal statistics
Turns out this is not strictly necessary for this PR but it's
still a good thing to do and makes it clearer that the stats
are not modified in a possibly racy way.
2026-02-05 21:22:29 +00:00
Robert O'Callahan cba49642aa Make `keep_cache_t` process all modules up-front instead of on-demand
We will want to query `keep_cache` from parallel threads. If we compute
the results on-demand, that means we need synchronization for cache
access in those queries, which adds complexity and overhead. Instead, prefill
the cache with the status of all relevant modules. Note that this doesn't
actually do more work --- we always consult `keep_cache` for all cells of
all selected modules, so scanning all those cells and determining the kept
status of all dependency modules is always required.

Later in this PR we're going to parallelize `scan_module` itself, and that's also
much easier to do when no other parallel threads are running.
2026-02-05 21:22:29 +00:00
Robert O'Callahan c8298aae02 Parallelize `Design::check()` 2026-02-05 21:22:29 +00:00
Robert O'Callahan 63aa31172c Parallelize `collect_garbage()` 2026-02-05 21:22:29 +00:00
Robert O'Callahan e551e30fa3 Add `FfInitVals::set_parallel()` method
We'll use this later in the PR.
2026-02-05 21:22:29 +00:00
Robert O'Callahan d5950a6c03 Add `MonotonicFlag`
We'll use this later in the PR.
2026-02-05 21:22:29 +00:00
Robert O'Callahan b18ca8710e Add `ConcurrentWorkQueue`
We'll use this later in the PR.
2026-02-05 21:22:29 +00:00
Robert O'Callahan d0276169d3 Add `ShardedHashSet`
We'll use this later in the PR.
2026-02-05 21:22:29 +00:00
Robert O'Callahan b06e903906 Add `ShardedVector`
We'll use this later in the PR.
2026-02-05 18:58:17 +00:00
Robert O'Callahan 0004708177 Add `ParallelDispatchThreadPool`
We'll use this later in the PR.
2026-02-05 18:58:17 +00:00
Robert O'Callahan fb24763a15 Add `work_pool_size`, `IntRange`, `item_range_for_worker`, and `ThreadIndex`
We'll use these later in this PR.
2026-02-05 18:58:17 +00:00
Robert O'Callahan 9e523e2fd7 Work around `std::reverse` miscompilation with empty range
This causes problems when compiling with fuzzing instrumenation enabled.
2026-02-05 18:58:17 +00:00
Robert O'Callahan 3b563b877e Make `log_error()` work in a `Multithreaded` context.
`log_error()` causes an exit so we don't have to try too hard here. The main
thing is to ensure that we normally are able to exit without causing a stack
overflow due to recursive asserts about not being in a `Multithreaded` context.
2026-02-05 18:58:17 +00:00
Robert O'Callahan 81fd03c6e4 Add `IdString::unescape()` method
We've already talked about adding this as an alternative to `log_id()`, and we'll
need it later in this PR.
2026-02-05 18:58:17 +00:00
Emil J 8bbde80e02
Merge pull request #5631 from rocallahan/cleanup-compare-signals
Clean up `compare_signals()` in `opt_clean`
2026-02-04 17:45:05 +01:00
Emil J 2aa0e1d009
Merge pull request #5629 from rocallahan/remove-zero-wires
Avoid scanning entire module in `Module::remove()` if there are no wires to remove
2026-02-04 17:44:24 +01:00
Emil J 992e64342c
Merge pull request #5621 from rocallahan/remove-opt-sort
Remove `Design::sort()` calls from optimization passes
2026-02-04 16:55:56 +01:00
Miodrag Milanović 776b4d06a6
Merge pull request #5669 from YosysHQ/release/v0.62
Release version 0.62
2026-02-04 08:55:31 +01:00
Miodrag Milanovic ddfa34d743 Next dev cycle 2026-02-04 08:54:38 +01:00
Robert O'Callahan 7326bb7d66
Only reuse ABC processes if we're using yosys-abc and it was built with ENABLE_READLINE
(cherry picked from commit 5054fd17d7b70f2df97360bb0f0cc1c92a6ffe72)
2026-02-04 17:19:10 +13:00
Miodrag Milanovic fc11754557 Release version 0.62 2026-02-03 12:09:24 +01:00
Miodrag Milanović 6dbe03f0f5
Merge pull request #5667 from Logikable/vhdl
Guard vhdl_file::UNDEFINED behind VERIFIC_VHDL_SUPPORT.
2026-02-03 07:59:52 +01:00
github-actions[bot] 153ddc0c84 Bump version 2026-02-03 00:33:37 +00:00
Sean Luchen 224549fb88 Guard vhdl_file::UNDEFINED behind VERIFIC_VHDL_SUPPORT.
Signed-off-by: Sean Luchen <seanluchen@google.com>
2026-02-02 15:26:03 -08:00
KrystalDelusion 414b1b6019
Merge pull request #5651 from rocallahan/abc-error-nonfatal
Handle ABC nonfatal "Error:" messages
2026-02-03 08:55:05 +13:00
Emil J 59653da599
Merge pull request #5609 from nataliakokoromyti/upstream-design-run-pass
Add Design::run_pass()
2026-02-02 19:30:18 +01:00
Miodrag Milanović f5c8368f7a
Merge pull request #5662 from YosysHQ/update_abc
Update ABC as per 2026-02-02
2026-02-02 13:44:56 +01:00
Miodrag Milanovic b88d6588bc Update ABC as per 2026-02-02 2026-02-02 11:25:57 +01:00
Miodrag Milanović ac427a79b0
Merge pull request #5644 from nataliakokoromyti/upstream-linux-perf-unistd
Add unistd header for Linux
2026-01-30 08:17:43 +01:00
Miodrag Milanović 382b28acbe
Merge pull request #5648 from YosysHQ/verific_moreopts
verific: fixed -sv2017 option and added ability to set VHDL standard
2026-01-30 08:17:19 +01:00
Robert O'Callahan 9c56c93632 Add missing newlines to some 'log_error's 2026-01-30 01:52:19 +00:00
Robert O'Callahan 6af1b5b19c Don't treat ABC 'Error:' output as indicating a fatal error, since these messages aren't necessarily fatal 2026-01-30 01:52:19 +00:00
github-actions[bot] 106f289e31 Bump version 2026-01-30 00:30:58 +00:00
KrystalDelusion 5a4ad6a6d0
Merge pull request #5640 from YosysHQ/krys/fix_mod.py
Don't use `module mod_name(...)` style in cell libs
2026-01-30 11:40:07 +13:00
Emil J a68fee1115
Merge pull request #5646 from rocallahan/debug-design_equal
Dump module details when `design_equal` fails
2026-01-29 18:57:24 +01:00
Natalia 61b1c3c75a use run_pass in ecp5 add/sub test 2026-01-29 02:42:23 -08:00
Natalia 7439d2489e add assertion to run_pass test 2026-01-29 02:23:07 -08:00
Miodrag Milanovic b70f527c67 verific: fixed -sv2017 option and added ability to set VHDL standard if applicable 2026-01-29 10:32:30 +01:00
Miodrag Milanović 6ba8f3dc19
Merge pull request #5647 from YosysHQ/update_abc
ABC update (MINGW fix)
2026-01-29 10:12:25 +01:00
Miodrag Milanović 43db5c9488
Merge pull request #5645 from nataliakokoromyti/upstream-verific-mixed-sv-vhdl
Upstream verific mixed sv vhdl
2026-01-29 10:12:09 +01:00
Miodrag Milanovic 6007b68e9c ABC update (MINGW fix) 2026-01-29 09:30:12 +01:00
Natalia 8d504ecb48 verific: use MFCU for SV file list 2026-01-29 00:03:28 -08:00