⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntk.h

📁 主要进行大规模的电路综合
💻 H
📖 第 1 页 / 共 3 页
字号:
/*    The safe iterators allow the user to delete the object    that is currently being iterated through.    Note the following important difference of the iterator    through the nodes (Ntk_NetworkForEachNode) compared to SIS/VIS.    The present iterator iterated only through the internal nodes,    and not through all nodes (including PIs and POs) as before!    This change led to certain simplification of the code. */// iterator through the primary inputs#define Ntk_NetworkForEachCi( Net, Node )                          \    for ( Node = Ntk_NetworkReadCiHead(Net);                       \          Node;                                                    \          Node = Ntk_NodeReadNext(Node) )#define Ntk_NetworkForEachCiSafe( Net, Node, Node2 )               \    for ( Node = Ntk_NetworkReadCiHead(Net),                       \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL);            \          Node;                                                    \          Node = Node2,                                            \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL) )// iterator through the primary outputs#define Ntk_NetworkForEachCo( Net, Node )                          \    for ( Node = Ntk_NetworkReadCoHead(Net);                       \          Node;                                                    \          Node = Ntk_NodeReadNext(Node) )#define Ntk_NetworkForEachCoSafe( Net, Node, Node2 )               \    for ( Node = Ntk_NetworkReadCoHead(Net),                       \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL);            \          Node;                                                    \          Node = Node2,                                            \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL) )// iterator through the primary output drivers#define Ntk_NetworkForEachCoDriver( Net, NodeCo, Driver )          \    for ( NodeCo = Ntk_NetworkReadCoHead(Net),                     \          Driver = NodeCo? Ntk_NodeReadFaninNode(NodeCo,0): NULL;  \          NodeCo;                                                  \          NodeCo = Ntk_NodeReadNext(NodeCo),                       \          Driver = NodeCo? Ntk_NodeReadFaninNode(NodeCo,0): NULL )// iterator through the internal nodes#define Ntk_NetworkForEachNode( Net, Node )                        \    for ( Node = Ntk_NetworkReadNodeHead(Net);                     \          Node;                                                    \          Node = Ntk_NodeReadNext(Node) )#define Ntk_NetworkForEachNodeSafe( Net, Node, Node2 )             \    for ( Node = Ntk_NetworkReadNodeHead(Net),                     \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL);            \          Node;                                                    \          Node = Node2,                                            \          Node2 = (Node? Ntk_NodeReadNext(Node): NULL) )// specialized iterator through the ordered nodes#define Ntk_NetworkForEachNodeSpecial( Net, Node )                 \    for ( Node = Ntk_NetworkReadOrder(Net);                        \          Node;                                                    \          Node = Ntk_NodeReadOrder(Node) )#define Ntk_NetworkForEachNodeSpecialSafe( Net, Node, Node2 )      \    for ( Node = Ntk_NetworkReadOrder(Net),                        \          Node2 = (Node? Ntk_NodeReadOrder(Node): NULL);                      \          Node;                                                    \          Node = Node2,                                            \          Node2 = (Node? Ntk_NodeReadOrder(Node): NULL) )// specialized iterator through the nodes in the levelized structure#define Ntk_NetworkForEachNodeSpecialByLevel( Net, Level, Node )   \    for ( Node = Ntk_NetworkReadOrderByLevel(Net, Level);          \          Node;                                                    \          Node = Ntk_NodeReadOrder(Node) )#define Ntk_NetworkForEachNodeSpecialByLevelSafe( Net, Level, Node, Node2 )\    for ( Node = Ntk_NetworkReadOrderByLevel(Net, Level),          \          Node2 = (Node? Ntk_NodeReadOrder(Node): NULL);                      \          Node;                                                    \          Node = Node2,                                            \          Node2 = (Node? Ntk_NodeReadOrder(Node): NULL) )// iterator through latches#define Ntk_NetworkForEachLatch( Net, Latch )                      \    for ( Latch = Ntk_NetworkReadLatchHead(Net);                   \          Latch;                                                   \          Latch = Ntk_LatchReadNext(Latch) )#define Ntk_NetworkForEachLatchSafe( Net, Latch, Latch2 )          \    for ( Latch = Ntk_NetworkReadLatchHead(Net),                   \          Latch2 = (Latch? Ntk_LatchReadNext(Latch): NULL);        \          Latch;                                                   \          Latch = Latch2,                                          \          Latch2 = (Latch? Ntk_LatchReadNext(Latch): NULL) )// iterator through the fanins of the node#define Ntk_NodeForEachFanin( Node, Pin, Fanin )                   \    for ( Pin = Ntk_NodeReadFaninPinHead(Node);                    \          Pin && (((unsigned)(Fanin = Ntk_PinReadNode(Pin)))>=0);  \          Pin = Ntk_PinReadNext(Pin) )#define Ntk_NodeForEachFaninSafe( Node, Pin, Pin2, Fanin )         \    for ( Pin = Ntk_NodeReadFaninPinHead(Node),                    \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL);                \          Pin && (((unsigned)(Fanin = Ntk_PinReadNode(Pin)))>=0);  \          Pin = Pin2,                                              \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL) )// iterator through the fanouts of the node#define Ntk_NodeForEachFanout( Node, Pin, Fanout )                 \    for ( Pin = Ntk_NodeReadFanoutPinHead(Node);                   \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0); \          Pin = Ntk_PinReadNext(Pin) )#define Ntk_NodeForEachFanoutSafe( Node, Pin, Pin2, Fanout )       \    for ( Pin = Ntk_NodeReadFanoutPinHead(Node),                   \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL);                \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0); \          Pin = Pin2,                                              \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL) )// iterator through the fanins of the node with fanin index#define Ntk_NodeForEachFaninWithIndex( Node, Pin, Fanin, i )       \    for ( Pin = Ntk_NodeReadFaninPinHead(Node), i = 0;             \          Pin && (((unsigned)(Fanin = Ntk_PinReadNode(Pin)))>=0);  \          Pin = Ntk_PinReadNext(Pin), i++ )#define Ntk_NodeForEachFaninWithIndexSafe( Node, Pin, Pin2, Fanin, i )\    for ( Pin = Ntk_NodeReadFaninPinHead(Node),                    \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i = 0;         \          Pin && (((unsigned)(Fanin = Ntk_PinReadNode(Pin)))>=0);  \          Pin = Pin2,                                              \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i++ )// iterator through the fanouts of the node with fanout index#define Ntk_NodeForEachFanoutWithIndex( Node, Pin, Fanout, i )     \    for ( Pin = Ntk_NodeReadFanoutPinHead(Node), i = 0;            \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0); \          Pin = Ntk_PinReadNext(Pin), i++ )#define Ntk_NodeForEachFanoutWithIndexSafe( Node, Pin, Pin2, Fanout, i )\    for ( Pin = Ntk_NodeReadFanoutPinHead(Node),                   \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i = 0;         \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0); \          Pin = Pin2,                                              \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i++ )// iterator through the fanouts of the node with fanout's fanin index#define Ntk_NodeForEachFanoutWithFaninIndex( Node, Pin, Fanout, FaninIndex )\    for ( Pin = Ntk_NodeReadFanoutPinHead(Node);                   \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0) &&\          (((unsigned)(FaninIndex = Ntk_NodeReadFaninIndex(Fanout,Node)))>=0);\          Pin = Ntk_PinReadNext(Pin), i++ )#define Ntk_NodeForEachFanoutWithFaninIndexSafe( Node, Pin, Pin2, Fanout, FaninIndex )\    for ( Pin = Ntk_NodeReadFanoutPinHead(Node),                   \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i = 0;         \          Pin && (((unsigned)(Fanout = Ntk_PinReadNode(Pin)))>=0) &&\          (((unsigned)(FaninIndex = Ntk_NodeReadFaninIndex(Fanout,Node)))>=0);\          Pin = Pin2,                                              \          Pin2 = (Pin? Ntk_PinReadNext(Pin): NULL), i++ )///////////////////////////////////////////////////////////////////////////                       END OF FILE                                ///////////////////////////////////////////////////////////////////////////#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -