13 #ifndef CIRCT_DIALECT_HW_HWINSTANCEGRAPH_H
14 #define CIRCT_DIALECT_HW_HWINSTANCEGRAPH_H
48 :
public llvm::GraphTraits<circt::igraph::InstanceGraph *> {};
52 :
public llvm::DOTGraphTraits<circt::igraph::InstanceGraph *> {
53 using llvm::DOTGraphTraits<circt::igraph::InstanceGraph *>::DOTGraphTraits;
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.
igraph::InstanceGraphNode * getTopLevelNode() override
Return the entry node linking to all public modules.
InstanceGraph(Operation *operation)
igraph::InstanceGraphNode entry
This is a Node in the InstanceGraph.
This graph tracks modules and where they are instantiated.
virtual InstanceGraphNode * addModule(ModuleOpInterface module)
Add a newly created module to the instance graph.
std::map< std::string, std::set< std::string > > InstanceGraph
Iterates over the handshake::FuncOp's in the program to build an instance graph.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.