13 #ifndef CIRCT_DIALECT_FIRRTL_FIRRTLINSTANCEGRAPH_H
14 #define CIRCT_DIALECT_FIRRTL_FIRRTLINSTANCEGRAPH_H
19 #include "llvm/ADT/GraphTraits.h"
20 #include "llvm/ADT/STLExtras.h"
21 #include "llvm/ADT/iterator.h"
58 :
public llvm::GraphTraits<circt::igraph::InstanceGraph *> {};
62 :
public llvm::DOTGraphTraits<circt::igraph::InstanceGraph *> {
63 using llvm::DOTGraphTraits<circt::igraph::InstanceGraph *>::DOTGraphTraits;
This graph tracks modules and where they are instantiated.
InstanceGraphNode * topLevelNode
igraph::InstanceGraphNode * getTopLevelNode() override
Get the node corresponding to the top-level module of a circuit.
FModuleLike getTopLevelModule()
Get the module corresponding to the top-level module of a circuit.
InstanceGraph(Operation *operation)
Create a new module graph of a circuit.
This is a Node in the InstanceGraph.
This graph tracks modules and where they are instantiated.
This is an edge in the InstanceGraph.
igraph::InstancePathCache InstancePathCache
igraph::InstanceRecord InstanceRecord
igraph::InstanceGraphNode InstanceGraphNode
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.
A data structure that caches and provides absolute paths to module instances in the IR.