Commit Graph

781 Commits

Author SHA1 Message Date
nella 8dc32cbf4e
Merge pull request #6012 from YosysHQ/nella/fix-opt-reduce
`opt_reduce`: restore pmux b-slice == a elim
2026-07-08 13:36:04 +00:00
nella f6d810acf9 Restore pmux elim. 2026-07-08 11:58:30 +02:00
Miodrag Milanovic 8ad4ffcdd1 Cleanup 2026-07-08 08:34:01 +02:00
nella 006cbc8f72
Merge pull request #5842 from YosysHQ/nella/opt_dff_elim_improvements
opt_dff: Eliminate equivalent bits
2026-07-06 12:02:50 +00:00
nella 0e56ca02ed Make opt_dff -sat conflict with -keepdc. 2026-07-06 13:47:10 +02:00
Miodrag Milanovic a689342207 Remove trailing whitespaces 2026-06-23 07:24:59 +02:00
Miodrag Milanovic 48a3dcc02a End of file fix 2026-06-23 07:23:41 +02:00
nella 3d0c868af0
Merge pull request #5952 from YosysHQ/nella/vector-index
Optimize upto vector indexing (Fix #892).
2026-06-22 09:05:26 +00:00
nella 46cbeab720 Add effort limit. 2026-06-18 11:58:01 +02:00
nella 75a30a22d6 Cleanup bitsim, document hypo. 2026-06-18 11:43:13 +02:00
nella 25810193ab Reuse sat/hashlib. 2026-06-18 10:57:20 +02:00
Emil J. Tywoniak 6032b064e2 opt_muxtree: optimize for single driver, error on multiple drivers 2026-06-15 15:08:26 +02:00
nella d52670e58b Replace suitable (2^k-1)-x with ~x. 2026-06-10 11:29:55 +02:00
Miodrag Milanovic a599999d1f Fixed warnings found by gcc-16 2026-06-03 13:09:38 +02:00
Catherine a727e7f6e7 Migrate build system to CMake
See #5895 for details.

This commit does not include CI or documentation changes.
2026-06-03 08:58:10 +00:00
Philippe Sauter c89cfe1e6e peepopt: add shiftpow2 pattern
Rewrite power-of-two indexed word selects to $bmux when the shift
amount already carries the scale as low zero bits.

Keep the rule to non-overlapping selections and bound the generated
mux ways. Add regressions for aligned shifts, padding, signed
extension, and shiftmul handoff cases.
2026-05-31 02:01:32 +02:00
KrystalDelusion 4230ebff71
Merge pull request #5912 from YosysHQ/krys/opt_clean_docs
opt_clean: Set group for docs gen
2026-05-28 08:35:52 +00:00
Krystine Sherwin 680bb69d85
opt_clean: Set group for docs gen 2026-05-28 14:50:11 +12:00
nella 68df0be7d2 Remove eqbits flag. 2026-05-25 14:16:55 +02:00
nella 386e63ae20 Add prepass for bit simulation. 2026-05-25 12:49:29 +02:00
nella bbec8d2902 Gate behind flag. 2026-05-20 16:44:52 +02:00
nella c6bf13bb94 Implement worklist and SAT counterexample splitting. 2026-05-20 16:44:52 +02:00
nella d85e3f10de Add tests. 2026-05-20 16:44:52 +02:00
nella f69a5fc077 Elim equiv bits. 2026-05-20 16:44:52 +02:00
Emil J e87a9bd9a7
Merge pull request #5888 from mikesinouye/pmux
opt_muxtree: reuse knowledge_t and pass by reference
2026-05-15 16:21:33 +00:00
Miodrag Milanović 36eceed720
Merge pull request #5862 from codexplorer-fish/cleaning-up-log-id
Cleaning up log_id()
2026-05-15 11:07:43 +00:00
Miodrag Milanovic 58df27ce7c Refactor uses of log_id in pgm files 2026-05-14 12:21:32 +02:00
Mike Inouye e20a57b09e
Reuse knowledge_t and pass by reference 2026-05-13 10:57:18 -07:00
Emil J. Tywoniak 3a150f2883 remove unused hashlib containers 2026-05-12 12:52:10 +02:00
Codexplorer e41b969da2 Refactored uses of log_id() 2026-05-08 20:59:24 -07:00
Emil J. Tywoniak 7fa660fc60 share: remove -force 2026-05-04 21:34:19 +02:00
Emil J. Tywoniak e0b833ac1a opt_muxtree: dense knowledge 2026-04-24 11:07:58 +02:00
Emil J. Tywoniak 4abaca273e opt_reduce: further optimization 2026-04-24 11:07:58 +02:00
Emil J. Tywoniak 4f4672d17b muxpack: fix wide Y port handling 2026-03-19 00:12:49 +01:00
Emil J c8f715fed8
Merge pull request #5664 from rocallahan/parallel-opt-clean
Parallelize `opt_clean` pass
2026-03-16 09:52:34 +00:00
Miodrag Milanovic 52533b0d1c Update opt_lut_ins and stat for analogdevices and remove ecp5 2026-03-06 09:10:36 +01:00
Robert O'Callahan 9c51ba1b09 Reduce opt_clean parallelism 2026-03-06 02:20:16 +00:00
Robert O'Callahan 8d8c05b338 Fix `OptCleanPass` usage of `CleanRunContext` to avoid constructing extra `KeepCache` and `ParallelDispatchThreadPool` 2026-03-06 02:20:16 +00:00
Robert O'Callahan 32f5044eaf Clarify "Not passing module as function argument" comment
This correct in terms of intent, it's just not fully enforced due to const laundering.
2026-03-06 02:20:16 +00:00
Emil J. Tywoniak 70cc2d67fd opt_clean: refactor 2026-03-06 02:20:14 +00:00
Robert O'Callahan 3603cd52a0 Pass the module `Subpool` to `rmunused_module_signals` and parallelize that function 2026-03-06 02:20:08 +00:00
Robert O'Callahan 19a7c8fcf3 Pass the module `Subpool` to `rmunused_module_cells` and parallelize that function 2026-03-06 02:20:08 +00:00
Robert O'Callahan 8e044d1045 Pass the module `Subpool` to `rmunused_module_init` and parallelize that function 2026-03-06 02:20:06 +00:00
Robert O'Callahan a7437c636d Pass the toplevel thread pool to `rmunused_module`, create a `Subpool`, and parallelize `remove_temporary_cells` 2026-03-06 02:05:46 +00:00
Robert O'Callahan 887c32cb54 Create a toplevel `ParallelDispatchThreadPool` and parallelize `keep_cache_t::scan_module()` with it 2026-03-06 02:05:46 +00:00
Robert O'Callahan 72a21fe01d 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-03-06 02:05:43 +00:00
Robert O'Callahan c2bb7d6a82 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-03-06 02:05:04 +00:00
Emil J. Tywoniak 07ec8708e4 share: use newcelltypes 2026-03-04 12:22:14 +01:00
Emil J. Tywoniak 9e59f05c25 newcelltypes: wrap design celltypes support 2026-03-04 12:22:14 +01:00
Emil J. Tywoniak 35ccaa60d7 newcelltypes: TurboCellTypes -> StaticCellTypes 2026-03-04 12:22:14 +01:00