YosysHQ / yosys

Yosys Open SYnthesis Suite
https://yosyshq.net/yosys/
ISC License
3.42k stars 874 forks source link

cxxrtl: expose scope information in the C++ API #4209

Closed whitequark closed 7 months ago

whitequark commented 7 months ago

This commit adds a debug_scopes container, which can collect metadata about scopes in a design. Currently the only scope is that of a module. A module scope can be represented either by a module and cell pair, or a $scopeinfo cell in a flattened netlist. The metadata produced by the C++ API is identical between these two cases, so flattening remains transparent to a netlist with CXXRTL.

The existing debug_items method is deprecated. This isn't strictly necessary, but the user experience is better if the path is provided as e.g. "top " (as some VCD viewers make it awkward to select topmost anonymous scope), and the upgrade flow encourages that, which should reduce frustration later.

While the new debug_items method could still be broken in the future as the C++ API permits, this seems unlikely since the debug information can now capture all common netlist aspects and includes several extension points (via debug_item, debug_scope types).

Also, naming of scope paths was normalized to path or top_path, as applicable.