📄 ntk.h
字号:
/* 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 + -