Emil J. Tywoniak
d2d97433b6
opt_clean: refactor
2026-02-27 14:17:58 +01:00
Emil J. Tywoniak
818aad7542
opt_clean: resolve TODOs
2026-02-26 01:41:22 +01:00
Emil J. Tywoniak
c17bbeb291
opt_clean: refactor
2026-02-25 13:55:06 +01:00
Emil J. Tywoniak
71af584530
opt_clean: refactor
2026-02-25 13:41:33 +01:00
Emil J. Tywoniak
89fdc05784
opt_clean: refactor
2026-02-25 13:38:44 +01:00
Emil J. Tywoniak
ff67ef6377
opt_clean: refactor
2026-02-24 15:41:47 +01:00
Emil J. Tywoniak
e4c7a8fdab
.github: add gmock to build environment
2026-02-24 13:30:57 +01:00
Emil J. Tywoniak
ba3d62f8f1
opt_clean: fix out of tree build
2026-02-24 13:09:03 +01:00
Emil J. Tywoniak
d33acfe65f
opt_clean: refactor
2026-02-24 13:03:16 +01:00
Emil J. Tywoniak
5d3b3ff18d
opt_clean: refactor
2026-02-24 12:54:03 +01:00
Emil J. Tywoniak
930bd3acc5
opt_clean: refactor
2026-02-24 12:28:41 +01:00
Emil J. Tywoniak
60681ff126
opt_clean: refactor
2026-02-24 12:11:01 +01:00
Emil J. Tywoniak
e13f989234
opt_clean: refactor
2026-02-24 11:33:06 +01:00
Emil J. Tywoniak
90bd16f600
opt_clean: refactor
2026-02-24 10:39:26 +01:00
Emil J. Tywoniak
723258de2d
opt_clean: refactor
2026-02-24 10:39:26 +01:00
Emil J. Tywoniak
ef536c4b1d
opt_clean: refactor
2026-02-24 10:39:26 +01:00
Emil J. Tywoniak
17d667eab0
opt_clean: refactor
2026-02-24 10:39:26 +01:00
Emil J. Tywoniak
8dc9c48d4a
opt_clean: refactor
2026-02-24 10:39:17 +01:00
Emil J. Tywoniak
97166d5aad
opt_clean: refactor
2026-02-24 10:39:13 +01:00
Emil J. Tywoniak
187e91ad65
opt_clean: refactor
2026-02-24 10:39:13 +01:00
Emil J. Tywoniak
17688f053b
opt_clean: refactor
2026-02-24 10:39:13 +01:00
Emil J. Tywoniak
090a0fd575
opt_clean: refactor
2026-02-24 10:39:13 +01:00
Emil J. Tywoniak
7d7978a929
opt_clean: more comments
2026-02-24 10:38:59 +01:00
Emil J. Tywoniak
9710be2f84
opt_clean: more comments
2026-02-24 10:38:59 +01:00
Emil J. Tywoniak
a5f554f00a
opt_clean: add extra comments
2026-02-24 10:38:59 +01:00
Robert O'Callahan
7f1b4dcf99
Add 'init' attributes to RTLIL fuzzing
2026-02-17 03:25:44 +00:00
Robert O'Callahan
6b9f152a1a
Add unit tests for ConcurrentWorkQueue
2026-02-17 03:25:44 +00:00
Robert O'Callahan
e2f939a93f
Add some tests for ShardedHashSet
2026-02-17 03:25:44 +00:00
Robert O'Callahan
71c5b6269f
Add unit tests for ConcurrentQueue and ThreadPool
2026-02-17 03:25:44 +00:00
Robert O'Callahan
722a4fc335
Add unit-tests for ParallelDispatchThread and friends
2026-02-17 03:25:44 +00:00
Robert O'Callahan
f2340639e8
Pass the module Subpool to rmunused_module_signals and parallelize that function
2026-02-17 03:24:52 +00:00
Robert O'Callahan
e2345d197b
Add test that connects a wire with init to a constant
2026-02-17 03:24:52 +00:00
Robert O'Callahan
cbb5d8fa12
Pass the module Subpool to rmunused_module_cells and parallelize that function
2026-02-17 03:24:52 +00:00
Robert O'Callahan
e213437095
Pass the module Subpool to rmunused_module_init and parallelize that function
2026-02-17 03:24:51 +00:00
Robert O'Callahan
2659f32616
Pass the toplevel thread pool to rmunused_module, create a Subpool, and parallelize remove_temporary_cells
2026-02-17 03:24:51 +00:00
Robert O'Callahan
0a64402dde
Create a toplevel ParallelDispatchThreadPool and parallelize keep_cache_t::scan_module() with it
2026-02-17 03:24:51 +00:00
Robert O'Callahan
20189460bd
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-17 03:24:51 +00:00
Robert O'Callahan
b153fc2d16
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-17 03:24:51 +00:00
Robert O'Callahan
6bf9fd3e1f
Parallelize Design::check()
2026-02-17 03:24:51 +00:00
Robert O'Callahan
704d110560
Parallelize collect_garbage()
2026-02-17 03:24:51 +00:00
Robert O'Callahan
937c7ceb4d
Add FfInitVals::set_parallel() method
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
8ced93b176
Add MonotonicFlag
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
1a461f95c5
Add ConcurrentWorkQueue
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
6182db64d2
Add ShardedHashSet
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
8a30051fc2
Add ShardedVector
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
d711cf6185
Add ParallelDispatchThreadPool
...
We'll use this later in the PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
61482d30e5
Add work_pool_size, IntRange, item_range_for_worker, and ThreadIndex
...
We'll use these later in this PR.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
ae569486a0
Work around std::reverse miscompilation with empty range
...
This causes problems when compiling with fuzzing instrumenation enabled.
2026-02-17 03:24:51 +00:00
Robert O'Callahan
af3bb9751f
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-17 03:24:51 +00:00
Robert O'Callahan
577191e44d
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-17 03:24:51 +00:00