mirror of
https://github.com/YosysHQ/yosys
synced 2025-05-14 11:14:44 +00:00
cxxrtl: expose scope information in the C++ API.
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.
This commit is contained in:
parent
d903f47d41
commit
1a44645aef
5 changed files with 247 additions and 162 deletions
|
@ -491,9 +491,9 @@ public:
|
|||
template<typename ...Args>
|
||||
recorder(Args &&...args) : writer(std::forward<Args>(args)...) {}
|
||||
|
||||
void start(module &module) {
|
||||
void start(module &module, std::string top_path = "") {
|
||||
debug_items items;
|
||||
module.debug_info(items);
|
||||
module.debug_info(&items, /*scopes=*/nullptr, top_path);
|
||||
start(items);
|
||||
}
|
||||
|
||||
|
@ -621,9 +621,10 @@ public:
|
|||
template<typename ...Args>
|
||||
player(Args &&...args) : reader(std::forward<Args>(args)...) {}
|
||||
|
||||
void start(module &module) {
|
||||
// The `top_path` must match the one given to the recorder.
|
||||
void start(module &module, std::string top_path = "") {
|
||||
debug_items items;
|
||||
module.debug_info(items);
|
||||
module.debug_info(&items, /*scopes=*/nullptr, top_path);
|
||||
start(items);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue