3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-14 21:08:47 +00:00
yosys/passes
Krystine Sherwin 398afd102e
Refactor full_selection
The `Design::selected_*()` methods no longer unconditionally skip boxed modules.  Instead, selections are now box and design aware.
The selection constructor now optionally takes a design pointer, and has a new `selects_boxes` flag.  If the selection has an assigned design, then `Selection::selected_*()` will only return true for boxed modules if the selects_boxes flag is set.  A warning is raised if a selection is checked and no design is set.  Selections can change design via the `Selection::optimize()` method.
Most places that iterate over `Design::modules()` and check `Selection::selected_module()` should instead use `Design::selected_modules()`.
Since boxed modules should only ever be selected explicitly, and `full_selection` (now) refers to all non-boxed modules, `Selection::optimize()` will clear the `full_selection` flag if the `selects_boxes` flag is enabled, and instead explicitly selects all modules (including boxed modules).  This also means that `full_selection` will only get automatically applied to a design without any boxed modules.

These changes necessitated a number of changes to `select.cc` in order to support this functionality when operating on selections, in particular when combining selections (e.g. by union or difference).
To minimize redundancy, a number of places that previously iterated over `design->modules()` now push the current selection to the design, use `design->selected_modules()`, and then pop the selection when done.

Introduce `RTLIL::NamedObject`, to allow for iterating over all members of a module with a single iterator instead of needing to iterate over wires, cells, memories, and processes separately.
Also implement `Module::selected_{memories, processes, members}()` to match wires and cells methods.  The `selected_members()` method combines each of the other `selected_*()` methods into a single list.
2025-03-14 14:05:39 +13:00
..
cmds Refactor full_selection 2025-03-14 14:05:39 +13:00
equiv mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
fsm fix bugs in handling last id in hdlname to scopename conversion 2025-01-16 12:57:08 +01:00
hierarchy keep_hierarchy.cc: use strictly correct syntax for printf of uint64_t values 2025-01-10 14:03:09 -08:00
memory memory_libmap: update indices on design modification 2025-02-11 13:32:34 +01:00
opt Merge pull request #4931 from povik/buf-clean 2025-03-10 15:10:17 +01:00
pmgen pmgen: Move passes out of pmgen folder 2025-01-31 15:18:28 +13:00
proc mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
sat mark all hash_into methods nodiscard 2025-01-14 12:39:15 +01:00
techmap Merge pull request #4818 from povik/macc_v2 2025-03-12 22:55:40 +01:00
tests macc: Stop using the B port 2025-01-08 13:03:35 +01:00