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"
60 :
public llvm::GraphTraits<circt::igraph::InstanceGraph *> {};
64 :
public llvm::DOTGraphTraits<circt::igraph::InstanceGraph *> {
65 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
bool allUnder(ArrayRef< InstanceRecord * > nodes, InstanceGraphNode *top)
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.
This file defines an intermediate representation for circuits acting as an abstraction for constraint...
A data structure that caches and provides absolute paths to module instances in the IR.