11 using namespace circt;
16 for (
auto &node :
nodes) {
20 auto hwModuleLikeNode =
21 dyn_cast<HWModuleLike>(node.getModule().getOperation());
22 if (hwModuleLikeNode && hwModuleLikeNode.isPublic())
29 cast<igraph::ModuleOpInterface>(module.getOperation()));
30 if (module.isPublic())
36 for (
auto *instance : llvm::make_early_inc_range(
entry)) {
37 if (instance->getTarget() == node)
HW-specific instance graph with a virtual entry node linking to all publicly visible modules.
igraph::InstanceGraphNode * addHWModule(HWModuleLike module)
Adds a module, updating links to entry.
void erase(igraph::InstanceGraphNode *node) override
Erases a module, updating links to entry.
InstanceGraph(Operation *operation)
igraph::InstanceGraphNode entry
This is a Node in the InstanceGraph.
InstanceRecord * addInstance(InstanceOpInterface instance, InstanceGraphNode *target)
Record a new instance op in the body of this module.
virtual InstanceGraphNode * addModule(ModuleOpInterface module)
Add a newly created module to the instance graph.
NodeList nodes
The storage for graph nodes, with deterministic iteration.
virtual void erase(InstanceGraphNode *node)
Remove this module from the instance graph.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.