#include <oagFpgaAiModGraph.h>
Public Types | |
typedef set< AiModRef > | Cut |
typedef list< Cut > | CutSet |
Static Public Member Functions | |
Functional operations | |
AiModRef | getNull (oa::oaModule *module) |
bool | isNull (AiModRef x) |
Returns a null reference inside the given module. | |
AiModRef | constantOne (oa::oaModule *module) |
Tests a reference to see if it is null. | |
AiModRef | constantZero (oa::oaModule *module) |
Returns a reference in the given module to the function that is always true. | |
AiModRef | notOf (AiModRef x) |
Returns a reference in the given module to the function that is always false. | |
bool | isInverted (AiModRef x) |
Returns the complement of a reference. | |
AiModRef | getNonInverted (AiModRef x) |
Tests whether a reference that points to a node is inverted. | |
User-data | |
Returns a reference that is not inverted. | |
unsigned int | getUserData (AiModRef x, unsigned int index) |
void | setUserData (AiModRef x, unsigned int index, unsigned int data) |
Returns the user data field on a node. | |
Graph modification | |
Sets the user data field on a node. | |
AiModRef | newSequential (AiModRef nextState) |
AiModRef | newTerminal (AiModRef terminal) |
Creates a new SEQUENTIAL node. | |
AiModRef | newAnd (AiModRef x, AiModRef y) |
Returns a new AND node. | |
AiModRef | andOf (AiModRef x, AiModRef y) |
Returns the logic and of two functions. | |
void | setTerminalDriver (AiModRef terminal, AiModRef driver) |
Sets the driver of a given terminal. | |
void | setNextState (AiModRef sequential, AiModRef nextState) |
Sets the next state input of a given SEQUENTIAL node. | |
void | setAndLeft (AiModRef x, AiModRef left) |
Sets the left operand of a given AND node. | |
void | setAndRight (AiModRef x, AiModRef left) |
Sets the right operand of a given AND node. | |
void | resubstitute (AiModRef original, AiModRef replacement) |
Resubstitutes one node for another. | |
void | resubstitute (AiModRef original, AiModRef replacement, AiModRef target) |
Resubstitutes one node for another. | |
void | detach (AiModRef x) |
Detaches a node from its fan-in and fan-out. | |
Intra-module incremental graph traversal | |
oagAi::Node::Type | getNodeType (AiModRef x) |
AiModRef | getTerminalDriver (AiModRef terminal) |
Returns the type of the referenced graph node. | |
bool | isTerminal (AiModRef x) |
Returns the driver of a TERMINAL node. | |
AiModRef | getNextState (AiModRef sequential) |
Tests if a reference is to a TERMINAL node. | |
bool | isSequential (AiModRef x) |
Returns the next state input of a SEQUENTIAL node. | |
oagAi::Node::SequentialData * | getSequentialData (AiModRef sequential) |
Tests if a reference is to a SEQUENTIAL node. | |
bool | isAnd (AiModRef x) |
Returns the sequential description of a SEQUENTIAL node. | |
AiModRef | getAndLeft (AiModRef x) |
Tests if a reference is to an AND node. | |
AiModRef | getAndRight (AiModRef x) |
Returns the left operand of an AND node. | |
list< AiModRef > | getFanout (AiModRef x) |
Returns the fan-outs of a node that lie within the same module. | |
void | getFanout (AiModRef x, list< AiModRef > &result) |
Returns the fan-outs of a node that lie within the same module. | |
bool | hasFanout (AiModRef x) |
Explicitly managing graph-to-net connections | |
Returns the fanout of a node. | |
AiModRef | prepareNetToAiConnection (oa::oaModBitNet *net) |
Creates an terminal node to represent the function of a net. | |
oa::oaModBitNet * | getNetToAiConnection (AiModRef ref) |
Returns the OpenAccess net connected to a given graph TERMINAL. | |
AiModRef | getNetToAiConnection (oa::oaModBitNet *net) |
Returns the graph node connected to a given OpenAccess net. | |
void | setNetToAiConnection (oa::oaModBitNet *net, AiModRef ref) |
Creates a logical connection between an OpenAccess net and a graph TERMINAL node. | |
void | removeNetToAiConnection (oa::oaModBitNet *net) |
Destroys a logical connection between an OpenAccess net and a graph TERMINAL node. | |
oa::oaModBitNet * | findDriverOfEquivalentNets (oa::oaModBitNet *net) |
Returns the equivalent net that is driving a net. | |
void | connectEquivalentNetsInGraph (oa::oaModule *module) |
Connects the TERMINAL nodes of equivalent nets. | |
Advanced graph traversal | |
bool | hasCombinationalCycle (oa::oaModule *module) |
Tests if there are any combinational cycles in a module's design. | |
CutSet | enumerateKfeasibleCuts (AiModRef x, unsigned int maxCutSize, int maxCutCout=-1, int maxCutDepth=-1, bool includeConstantNode=true) |
Returns the list of cuts in the transitive fan-in of a given node up to a given size. | |
void | clearKfeasibleCuts (oa::oaModule *module) |
Clears the cached sets of cuts in a given module. | |
void | getTransitiveFanin (AiModRef x, list< AiModRef > &transitiveFanin, bool includeRoots=true, bool crossSequential=false) |
Returns a list of all nodes in the transitive fan-in of one node. | |
void | getTransitiveFanin (AiModRef x, vector< AiModRef > &transitiveFanin, bool includeRoots=true, bool crossSequential=false) |
Returns a vector of all nodes in the transitive fan-in of one node. | |
void | getTransitiveFanin (list< AiModRef > x, list< AiModRef > &transitiveFanin, bool includeRoots=true, bool crossSequential=false) |
Returns a list of all nodes in the transitive fan-in of several nodes. | |
void | getTransitiveFanin (list< AiModRef > x, vector< AiModRef > &transitiveFanin, bool includeRoots=true, bool crossSequential=false) |
Returns a vector of all nodes in the transitive fan-in of several nodes. | |
void | getTransitiveFanout (AiModRef x, list< AiModRef > &transitiveFanout, bool includeRoots=true, bool crossSequential=false) |
Returns a list of all nodes in the transitive fan-out of one node. | |
void | getTransitiveFanout (AiModRef x, vector< AiModRef > &transitiveFanout, bool includeRoots=true, bool crossSequential=false) |
Returns a vector of all nodes in the transitive fan-out of one node. | |
void | getTransitiveFanout (list< AiModRef > x, list< AiModRef > &transitiveFanout, bool includeRoots=true, bool crossSequential=false) |
Returns a list of all nodes in the transitive fan-out of several nodes. | |
void | getTransitiveFanout (list< AiModRef > x, vector< AiModRef > &transitiveFanout, bool includeRoots=true, bool crossSequential=false) |
Returns a vector of all nodes in the transitive fan-out of several nodes. | |
void | getFaninCone (AiModRef x, const list< AiModRef > &coneRoots, list< AiModRef > &transitiveFanin, bool includeRoots=true) |
Returns a list of the nodes between a specified cut and a node. | |
void | getFanoutCone (AiModRef x, const list< AiModRef > &coneRoots, list< AiModRef > &transitiveFanout, bool includeRoots=true) |
Returns a list of the nodes between a node and a specified cut. | |
void | getFaninRoots (AiModRef x, list< AiModRef > &faninRoots) |
Returns the roots of the transitive fan-in of a node. | |
void | getFanoutRoots (AiModRef x, list< AiModRef > &fanoutRoots) |
Returns the roots of the transitive fan-out of a node. | |
Equivalence marking | |
bool | testEquivalence (AiModRef x, AiModRef y) |
Tests if two references are explicitly marked as equivalent. | |
void | setEquivalent (AiModRef x, AiModRef y) |
Marks two references as being functionally equivalent. | |
void | getEquivalents (AiModRef x, list< AiModRef > &result) |
Returns all references that have been marked equivalent. | |
void | removeEquivalences (AiModRef x) |
void | chooseEquivalent (AiModRef x) |
Removes any equivalences between this and other nodes. | |
void | getFanoutOfEquivalentNodes (AiModRef x, list< AiModRef > &result) |
Returns the fan-out of a node and all of its equivalents. | |
Global graph queries | |
void | print (oa::oaModule *module) |
Prints entire graph. | |
void | getAllNodes (oa::oaModule *module, list< AiModRef > &result) |
Gets all nodes inside of a module. | |
void | getInputs (oa::oaModule *module, list< AiModRef > &result) |
Gets all input terminals inside a module. | |
void | getOutputs (oa::oaModule *module, list< AiModRef > &result) |
Gets all output terminals inside a module. | |
void | getLocalStates (oa::oaModule *module, list< AiModRef > &result) |
Gets all state bits inside a module. | |
void | getAllConnections (oa::oaModBitNet *net, set< oa::oaModBitNet * > &connectedNets, set< AiModRef > &connectedRefs, bool searchForwardThroughGraph=true, bool searchBackwardThroughGraph=true, bool searchThroughEquivNets=true, bool searchThroughEquivRefs=false, bool includeSelf=true) |
Returns the set of nets and refs that are logically connected. | |
void | getAllConnections (AiModRef x, set< oa::oaModBitNet * > &connectedNets, set< AiModRef > &connectedRefs, bool searchForwardThroughGraph=true, bool searchBackwardThroughGraph=true, bool searchThroughEquivNets=true, bool searchThroughEquivRefs=false, bool includeSelf=true) |
Returns the set of nets and refs that are logically connected. | |
Memory management | |
void | incrementExternalReferences (AiModRef x) |
void | decrementExternalReferences (AiModRef x) |
Increment the external reference count of a node. | |
void | clearExternalReferences (AiModRef x) |
Decrement the external reference count of a node. | |
Static Protected Member Functions | |
oagAi::Graph * | getGraph (oa::oaDesign *design) |
Clears the reference count of a particular node. | |
oagAi::Graph * | getGraph (oa::oaModule *module) |
Returns the graph of a design. | |
oagAi::Graph * | getGraph (const AiModRef &x) |
Returns the graph of a module's design. | |
void | failIfInDifferentModules (oa::oaModule *x, oa::oaModule *y) |
Generates an error if the two modules are not identical. | |
void | failIfInDifferentModules (AiModRef x, AiModRef y) |
oa::oaModule * | convertAiModRefListToRefList (const list< AiModRef > &source, list< oagAi::Ref > &result) |
Converts a list of AiModRefs in a given module into a list of Refs. | |
void | convertRefListToAiModRefList (const list< oagAi::Ref > &source, oa::oaModule *module, list< AiModRef > &result) |
Converts a list of Refs in a given module into a list of AiModRefs. | |
void | convertRefVectorToAiModRefVector (const vector< oagAi::Ref > &source, oa::oaModule *module, vector< AiModRef > &result) |
Converts a vector of Refs in a given module into a vector of AiModRefs. | |
Friends | |
class | SimMod |
The AiModGraph class is not a data structure on its own, but instead provides an interface for manipulating functionality graphs in the folded module domain view. All methods in the AiModGraph class are static. The AiModRef structure provides the mechanism for referring to graph nodes within this view, and most AiModGraph methods operate on AiModRefs.
The module view is appropriate for making modifications to the local functional descriptions of design objects. The functional graphs describe the local behavior of each logical object (module), with every instantiation (occurrence) of a given object type (module) behaving identically. Every occurrence inherits its local functional behavior from the module type that it implements. This is analagous to the role that physical descriptions play in the block domain.
The module view is not appropriate for working with the global functionality of hierarchical designs. Two different instantiations (occurrences) may implement the same local behavior, but the global functions being implemented on each of their pins depends on their connectivity and context in the larger design. To manipulate global functionality, it does not suffice to traverse the folded (module) design view; the unfolded (occurrence) hierarchy is better suited. The OccGraph class provided the interface for manipulating graphs in this view.
Definition at line 48 of file oagFpgaAiModGraph.h.
|
Definition at line 58 of file oagFpgaAiModGraph.h. Referenced by enumerateKfeasibleCuts(). |
|
Definition at line 59 of file oagFpgaAiModGraph.h. Referenced by enumerateKfeasibleCuts(). |
|
Returns the logic and of two functions. A new node may or may not be created, depending on whether the resulting function can be trivially reduced (i.e. one of the operands is constant) or if the node is structurally isomorphic to an existing one and hashing is enabled.
Definition at line 129 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Removes any equivalences between this and other nodes. Each of several nodes which are marked as equivalent may have fan-out. This function takes all of the references to the equivalent nodes and reconnects them to only one of the equivalent nodes.
Definition at line 330 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Decrement the external reference count of a node.
Definition at line 397 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Clears the cached sets of cuts in a given module.
Definition at line 345 of file oagFpgaAiModGraph.cpp. References getGraph(). |
|
Connects the TERMINAL nodes of equivalent nets. Functionally identical nets can also be marked equivalent in the OpenAccess database itself. The semantics of this are unfortunately very unclear as to whether this means either (1) the two nets already both implement the same functionality or (2) the nets don't already implement the same functionality but they should (for example by physical connection). For example, the verilog2oa imports continuous assignments by marking the nets as equivalent. In Verilog, this construct implies (2). In such cases, it may be convenient and/or necessary to reflect this functional dependency in the graph, this routine provides the means to do so. For a group of nets that are marked equivalent, the one that is being driven (as an input or in the graph) is first discovered. The TERMINAL node of this net is then set as the driver as the TERMINAL nodes of the other nets. If no driver is found, the nets are left as is. If there are multiple equivalent nets that are being driven, the existing drivers will not be modified. This should only be the case if the equivalent nets feature in the OpenAccess database is being used in the manner of (1). Because only the undriven nets are modified, this should be compatible with such as use case as well.
Definition at line 1179 of file oagFpgaAiModGraph.cpp. References findDriverOfEquivalentNets(), getNetToAiConnection(), getTerminalDriver(), isNull(), oagFpga::AiModRef::printName(), setTerminalDriver(), and oagFpga::toBitNet(). |
|
Tests a reference to see if it is null.
Definition at line 84 of file oagFpgaAiModGraph.h. |
|
Returns a reference in the given module to the function that is always true.
Definition at line 90 of file oagFpgaAiModGraph.h. |
|
Converts a list of AiModRefs in a given module into a list of Refs.
Definition at line 59 of file oagFpgaAiModGraph.cpp. Referenced by getFaninCone(), getFanoutCone(), getTransitiveFanin(), and getTransitiveFanout(). |
|
Converts a list of Refs in a given module into a list of AiModRefs.
Definition at line 40 of file oagFpgaAiModGraph.cpp. Referenced by getAllNodes(), getEquivalents(), getFaninCone(), getFaninRoots(), getFanout(), getFanoutCone(), getFanoutOfEquivalentNodes(), getFanoutRoots(), getLocalStates(), getTransitiveFanin(), and getTransitiveFanout(). |
|
Converts a vector of Refs in a given module into a vector of AiModRefs.
Definition at line 82 of file oagFpgaAiModGraph.cpp. Referenced by getTransitiveFanin(), and getTransitiveFanout(). |
|
Increment the external reference count of a node. When the application is finished with a node, its external reference count can be decremented, such that if there exist no external references the node may be freed during the next garbage collection.
Definition at line 387 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Detaches a node from its fan-in and fan-out. The inputs of this node are reset to null, its fan-outs are cleared, and all references to it are also reset to null.
Definition at line 274 of file oagFpgaAiModGraph.cpp. References getGraph(), and oagFpga::AiModRef::ref. |
|
Returns the list of cuts in the transitive fan-in of a given node up to a given size. Information about cut sets is cached between subsequent calls. This cache can be reset by clearKfeasibleCuts(). For further information, see oagAi::enumerateKfeasibleCuts()
Definition at line 316 of file oagFpgaAiModGraph.cpp. References Cut, CutSet, getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Definition at line 434 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module. |
|
Generates an error if the two modules are not identical.
Definition at line 21 of file oagFpgaAiModGraph.cpp. Referenced by andOf(), newAnd(), resubstitute(), setAndLeft(), setAndRight(), setEquivalent(), setNetToAiConnection(), setNextState(), setTerminalDriver(), and testEquivalence(). |
|
Returns the equivalent net that is driving a net. The driving net is the first equivalent net that satisfies one of these conditions: 1. connected to an input Term 2. connected to a TERMINAL node that is not driven by NULL In the case where the given net is itself the driver for the group, NULL be returned.
Definition at line 1073 of file oagFpgaAiModGraph.cpp. References DEBUG_PRINT, DEBUG_PRINTMORE, getNetToAiConnection(), getTerminalDriver(), isNull(), and isTerminal(). Referenced by connectEquivalentNetsInGraph(). |
|
Returns the set of nets and refs that are logically connected.
Definition at line 977 of file oagFpgaAiModGraph.cpp. References getAllConnections(), getEquivalents(), getFanout(), getNetToAiConnection(), getTerminalDriver(), isInverted(), isNull(), isTerminal(), and notOf(). |
|
Returns the set of nets and refs that are logically connected.
Definition at line 919 of file oagFpgaAiModGraph.cpp. References getNetToAiConnection(). Referenced by getAllConnections(). |
|
Gets all nodes inside of a module.
Definition at line 872 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), and getGraph(). Referenced by print(). |
|
Tests if a reference is to an AND node. If the reference is not to an AND node, an error will be generated.
Definition at line 234 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the left operand of an AND node. If the reference is not to an AND node, an error will be generated.
Definition at line 243 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns all references that have been marked equivalent. The set of equivalent references will be appended to the provided list. The list will include the reference provided.
Definition at line 696 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. Referenced by getAllConnections(). |
|
Returns a list of the nodes between a specified cut and a node. The nodes in the transitive fan-in are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getFaninCone() for more details.
Definition at line 1354 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the roots of the transitive fan-in of a node.
Definition at line 624 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the fan-outs of a node that lie within the same module. An error is generated if fanout is not being maintained.
Definition at line 381 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getFanout(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the fan-outs of a node that lie within the same module. An error is generated if fanout is not being maintained.
Definition at line 362 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. Referenced by getAllConnections(), and getFanout(). |
|
Returns a list of the nodes between a node and a specified cut. The nodes in the transitive fan-out are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getFanoutCone() for more details.
Definition at line 1384 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the fan-out of a node and all of its equivalents.
Definition at line 714 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the roots of the transitive fan-out of a node.
Definition at line 642 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns the graph of a module's design.
Definition at line 427 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module. |
|
Returns the graph of a design. This module's functional description will be contained within this graph, along with the functional descriptions of other modules in the same design.
Definition at line 417 of file oagFpgaAiModGraph.h. |
|
Clears the reference count of a particular node. All design modules' functional descriptions will be contained within this graph.
Definition at line 408 of file oagFpgaAiModGraph.h. Referenced by andOf(), clearKfeasibleCuts(), detach(), enumerateKfeasibleCuts(), getAllNodes(), getEquivalents(), getFaninCone(), getFaninRoots(), getFanout(), getFanoutCone(), getFanoutOfEquivalentNodes(), getFanoutRoots(), getLocalStates(), getTransitiveFanin(), getTransitiveFanout(), hasCombinationalCycle(), newAnd(), resubstitute(), setAndLeft(), setAndRight(), setEquivalent(), setNextState(), setTerminalDriver(), and testEquivalence(). |
|
Gets all input terminals inside a module. An input terminal is a TERMINAL node that is connected to an input oaModTerm. If the bit net attached to the oaModTerm does not have a connection to the graph, one is created.
Definition at line 850 of file oagFpgaAiModGraph.cpp. References prepareNetToAiConnection(), and oagFpga::toBitNet(). |
|
Gets all state bits inside a module.
Definition at line 893 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), and getGraph(). |
|
Returns the graph node connected to a given OpenAccess net.
Definition at line 769 of file oagFpgaAiModGraph.cpp. References oagFpga::Manager::getNetToAiConnection(). |
|
Returns the OpenAccess net connected to a given graph TERMINAL.
Definition at line 753 of file oagFpgaAiModGraph.cpp. References oagFpga::Manager::getNetToAiConnection(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. Referenced by connectEquivalentNetsInGraph(), findDriverOfEquivalentNets(), and getAllConnections(). |
|
Tests if a reference is to a TERMINAL node. If the reference is not to a SEQUENTIAL node, an error will be generated.
Definition at line 203 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Definition at line 174 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Tests whether a reference that points to a node is inverted.
Definition at line 111 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
There is a no global AiModGraph null reference; one unique null reference exists for each module. This function returns the unique null reference for the given module. Some AiModGraph operations are dependent on the module context of their parameters, even if they are null.
Definition at line 64 of file oagFpgaAiModGraph.h. |
|
Gets all output terminals inside a module. An output terminal is a TERMINAL node that is connected to an output oaModTerm. If the bit net attached to the oaModTerm does not have a connection to the graph, one is created.
Definition at line 823 of file oagFpgaAiModGraph.cpp. References prepareNetToAiConnection(), and oagFpga::toBitNet(). |
|
Tests if a reference is to a SEQUENTIAL node. If the reference is not to a SEQUENTIAL node, an error will be generated.
Definition at line 218 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Returns the type of the referenced graph node. This function only returns the graph reference that is driving this terminal. If the node is driven by a connected OpenAccess net, a null reference is returned. If the reference is not to a TERMINAL node, an error will be generated.
Definition at line 182 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. Referenced by connectEquivalentNetsInGraph(), findDriverOfEquivalentNets(), and getAllConnections(). |
|
Returns a vector of all nodes in the transitive fan-in of several nodes. The nodes in the transitive fan-in are appended to the provided vector in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanin() for more details.
Definition at line 572 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefVectorToAiModRefVector(), and getGraph(). |
|
Returns a list of all nodes in the transitive fan-in of several nodes. The nodes in the transitive fan-in are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanin() for more details.
Definition at line 512 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefListToAiModRefList(), and getGraph(). |
|
Returns a vector of all nodes in the transitive fan-in of one node. The nodes in the transitive fan-in are appended to the provided vector in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanin() for more details.
Definition at line 458 of file oagFpgaAiModGraph.cpp. References convertRefVectorToAiModRefVector(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns a list of all nodes in the transitive fan-in of one node. The nodes in the transitive fan-in are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanin() for more details.
Definition at line 404 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns a vector of all nodes in the transitive fan-out of several nodes. The nodes in the transitive fan-out are appended to the provided vector in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanout() for more details.
Definition at line 602 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefVectorToAiModRefVector(), and getGraph(). |
|
Returns a list of all nodes in the transitive fan-out of several nodes. The nodes in the transitive fan-out are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanout() for more details.
Definition at line 542 of file oagFpgaAiModGraph.cpp. References convertAiModRefListToRefList(), convertRefListToAiModRefList(), and getGraph(). |
|
Returns a vector of all nodes in the transitive fan-out of one node. The nodes in the transitive fan-out are appended to the provided vector in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanout() for more details.
Definition at line 485 of file oagFpgaAiModGraph.cpp. References convertRefVectorToAiModRefVector(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns a list of all nodes in the transitive fan-out of one node. The nodes in the transitive fan-out are appended to the provided list in forward topological order. The initial node is not included. All references will be non-inverted. See oagAi::getTransitiveFanout() for more details.
Definition at line 431 of file oagFpgaAiModGraph.cpp. References convertRefListToAiModRefList(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Definition at line 122 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Tests if there are any combinational cycles in a module's design. All modules in the same design will be checked.
Definition at line 292 of file oagFpgaAiModGraph.cpp. References getGraph(). |
|
An error is generated if fanout is not being maintained.
Definition at line 255 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
With garbage collection, this function should be called to mark nodes that are being used by the application. A non-zero external reference count guarantees that the functionality of a node is not destroyed during the next garbage collection.
Definition at line 375 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Returns the sequential description of a SEQUENTIAL node.
Definition at line 228 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Returns the complement of a reference.
Definition at line 105 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. Referenced by getAllConnections(). |
|
Returns a null reference inside the given module. The module that the reference is in is irrelevant.
Definition at line 76 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. Referenced by connectEquivalentNetsInGraph(), findDriverOfEquivalentNets(), and getAllConnections(). |
|
Returns the next state input of a SEQUENTIAL node.
Definition at line 212 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Returns the driver of a TERMINAL node.
Definition at line 196 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. Referenced by findDriverOfEquivalentNets(), and getAllConnections(). |
|
Returns a new AND node. A new node will be created, even if it could be structually hashed with an isomorphic equivalent.
Definition at line 106 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
The node will be created in the same module as the nextState parameter. Its next state input will be set to nextState.
Definition at line 143 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Creates a new SEQUENTIAL node.
Definition at line 153 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. |
|
Returns a reference in the given module to the function that is always false. The structure of the graph will not be modified and no new nodes will be created.
Definition at line 96 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::module, and oagFpga::AiModRef::ref. Referenced by getAllConnections(). |
|
Creates an terminal node to represent the function of a net. If an terminal node is already associated with the net, then the existing one is returned. If a new terminal node is created, it will implement a null function.
Definition at line 737 of file oagFpgaAiModGraph.cpp. References oagFpga::Manager::prepareNetToAiConnection(). Referenced by getInputs(), and getOutputs(). |
|
Prints entire graph.
Definition at line 1219 of file oagFpgaAiModGraph.cpp. References getAllNodes(), and oagFpga::AiModRef::print(). |
|
This function destroys equivalences in both directions. Not only will this node no longer point to any equivalents, but any of its previous equivalents will no longer point to this node.
Definition at line 321 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Destroys a logical connection between an OpenAccess net and a graph TERMINAL node.
Definition at line 802 of file oagFpgaAiModGraph.cpp. References oagFpga::Manager::removeNetToAiConnection(). |
|
Resubstitutes one node for another. This function takes one reference to a node and replaces it with a reference to another. References in sequential node control signals will not be replaced.
Definition at line 254 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Resubstitutes one node for another. This function takes all of the references to a node and replaces them with another. References in sequential node control signals will not be replaced.
Definition at line 231 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Sets the left operand of a given AND node. The reference must be to an AND node. The AND reference and its operand must be in the same module.
Definition at line 169 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Sets the right operand of a given AND node. The reference must be to an AND node. The AND reference and its operand must be in the same module.
Definition at line 189 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Marks two references as being functionally equivalent. To prevent obfuscation, TERMINAL nodes can not be marked as equivalent. Definition at line 676 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Creates a logical connection between an OpenAccess net and a graph TERMINAL node.
Definition at line 785 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), oagFpga::AiModRef::module, oagFpga::AiModRef::ref, and oagFpga::Manager::setNetToAiConnection(). |
|
Sets the next state input of a given SEQUENTIAL node. The reference must be to a SEQUENTIAL node. The sequential reference and its new next state must be in the same module.
Definition at line 209 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Sets the driver of a given terminal. The reference must be to a TERMINAL node. The terminal and driver must be in the same module.
Definition at line 149 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. Referenced by connectEquivalentNetsInGraph(). |
|
Returns the user data field on a node.
Definition at line 130 of file oagFpgaAiModGraph.h. References oagFpga::AiModRef::ref. |
|
Tests if two references are explicitly marked as equivalent.
Definition at line 660 of file oagFpgaAiModGraph.cpp. References failIfInDifferentModules(), getGraph(), and oagFpga::AiModRef::ref. |
|
Definition at line 49 of file oagFpgaAiModGraph.h. |