|
CIRCT 22.0.0git
|
This is an edge in the InstanceGraph. More...
#include <InstanceGraph.h>


Public Member Functions | |
| template<typename TTarget = InstanceOpInterface> | |
| auto | getInstance () |
| Get the instance-like op that this is tracking. | |
| InstanceGraphNode * | getParent () const |
| Get the module where the instantiation lives. | |
| InstanceGraphNode * | getTarget () const |
| Get the module which the instance-like is instantiating. | |
| void | erase () |
| Erase this instance record, removing it from the parent module and the target's use-list. | |
Private Member Functions | |
| InstanceRecord (InstanceGraphNode *parent, InstanceOpInterface instance, InstanceGraphNode *target) | |
| InstanceRecord (const InstanceRecord &)=delete | |
Private Attributes | |
| InstanceGraphNode * | parent |
| This is the module where the instantiation lives. | |
| InstanceOpInterface | instance |
| The InstanceLike that this is tracking. | |
| InstanceGraphNode * | target |
| This is the module which the instance-like is instantiating. | |
| InstanceRecord * | nextUse = nullptr |
| Intrusive linked list for other uses. | |
| InstanceRecord * | prevUse = nullptr |
Friends | |
| class | InstanceGraph |
| Iterates over the handshake::FuncOp's in the program to build an instance graph. | |
| class | InstanceGraphNode |
This is an edge in the InstanceGraph.
This tracks a specific instantiation of a module.
Definition at line 59 of file InstanceGraph.h.
|
inlineprivate |
Definition at line 84 of file InstanceGraph.h.
|
privatedelete |
| void InstanceRecord::erase | ( | ) |
Erase this instance record, removing it from the parent module and the target's use-list.
Definition at line 20 of file InstanceGraph.cpp.
References circt::igraph::InstanceGraphNode::firstUse, getParent(), circt::igraph::InstanceGraphNode::instances, nextUse, prevUse, and target.
Referenced by circt::hw::InstanceGraph::erase().
|
inline |
Get the instance-like op that this is tracking.
Definition at line 64 of file InstanceGraph.h.
References instance.
|
inline |
Get the module where the instantiation lives.
Definition at line 71 of file InstanceGraph.h.
References parent.
Referenced by erase(), and llvm::GraphTraits< llvm::Inverse< circt::igraph::InstanceGraphNode * > >::getParent().
|
inline |
Get the module which the instance-like is instantiating.
Definition at line 74 of file InstanceGraph.h.
References target.
Referenced by llvm::GraphTraits< circt::igraph::InstanceGraphNode * >::getChild().
|
friend |
Iterates over the handshake::FuncOp's in the program to build an instance graph.
In doing so, we detect whether there are any cycles in this graph, as well as infer a top function for the design by performing a topological sort of the instance graph. The result of this sort is placed in sortedFuncs.
Definition at line 81 of file InstanceGraph.h.
|
friend |
Definition at line 82 of file InstanceGraph.h.
|
private |
The InstanceLike that this is tracking.
Definition at line 93 of file InstanceGraph.h.
Referenced by getInstance().
|
private |
Intrusive linked list for other uses.
Definition at line 98 of file InstanceGraph.h.
Referenced by erase(), circt::igraph::InstanceGraphNode::UseIterator::operator++(), and circt::igraph::InstanceGraphNode::recordUse().
|
private |
This is the module where the instantiation lives.
Definition at line 90 of file InstanceGraph.h.
Referenced by getParent().
|
private |
Definition at line 99 of file InstanceGraph.h.
Referenced by erase(), and circt::igraph::InstanceGraphNode::recordUse().
|
private |
This is the module which the instance-like is instantiating.
Definition at line 96 of file InstanceGraph.h.
Referenced by erase(), and getTarget().