source: vis_dev/vis-2.3/src/ntk/ntk.h @ 23

Last change on this file since 23 was 14, checked in by cecile, 13 years ago

vis2.3

File size: 25.5 KB
Line 
1/**CHeaderFile*****************************************************************
2
3  FileName    [ntk.h]
4
5  PackageName [ntk]
6
7  Synopsis    [Flat network of multi-valued combinational nodes and latches.]
8
9  Description [A network is a directed graph, where the vertices are nodes (of
10  type Ntk_Node_t) and the edges are stored as fanin and fanout arrays of each
11  node.  Each node has a single output, which may fanout to multiple nodes. A
12  node is one of 5 types.  In addition, it may have one or more optional
13  attributes, respecting the following table:
14
15  <pre>
16    type         |             attributes
17  ---------------+-------------------------------------------
18                 | primary  latch data  latch init  constant 
19                 |  output    input        input             
20  ---------------+-------------------------------------------
21  pseudo input   |   x          x            x               
22  primary input  |   x          x            x               
23  latch          |   x          x           
24  shadow         |                           
25  combinational  |   x          x            x         x
26 
27  Legend:
28    primary input:    a node with no fanins that is a port of the network;
29                      does not have a table defining its function - it can
30                      take any value in its domain
31    pseudo input:     a node with no fanins, introduced to model
32                      nondeterminism; its table defines which values it can
33                      take
34    latch:            an edge triggered latch with data and initial inputs
35    shadow:           a node with no fanins and no fanouts; it serves as a
36                      "shadow" for a node; for example, a shadow node for a
37                      latch is used to store information about the next
38                      state variable; any node can have a shadow, except a
39                      shadow node
40    combinational:    a node that has a table and is not a primary or pseudo
41                      input
42
43    primary output:   a node that is a port of the network
44    latch data input: a node driving the data input of a latch
45    latch init input: a node driving the initial input of a latch
46    constant:         a combinational node with no fanins that can take
47                      exactly one value
48  </pre>
49
50  An "x" in the table means that it's permissible for a node of the given type
51  to have the given attribute; the absence of an "x" means it's not
52  permissible.<p>
53 
54  In addition, there are several derived attributes: all primary inputs,
55  pseudo inputs, and latches are "combinational inputs"; all latch data
56  inputs, latch initial inputs, and primary outputs are "combinational
57  outputs"; all primary inputs and pseudo inputs are "inputs".<p>
58 
59  Each combinational node has a table defining the function of the node in
60  terms of its immediate fanins.  This function must be deterministic
61  (i.e. for a given valuation of the fanins, the function can assume at most
62  one value) and completely specified (i.e. for a given valuation of the
63  fanins, the function can assume at least one value) in order to ensure
64  correctness of verification results downstream .  (The exception is that
65  pseudo inputs are nondeterministic.)  The table may have multiple output
66  columns, so the node keeps an index giving the output column to which it
67  refers.<p>
68 
69  The ntk package contains facilities to create a network (Ntk_Network_t) from
70  a hierarchical network.  In particular, it supports the concept of "actual
71  names" and "formal names". Consider the following hierarchical network:
72  <pre>
73             +--------------------+
74             |  A                 |
75             |                    |
76             |  +-----+    +----+ |
77             |  | B   |    | C  | |
78             |  |     |    |    | |
79             |  |   x |  y | z  | |
80             |  |  ---+----+--  | |
81             |  |     |    |    | |
82             |  +-----+    +----+ |
83             |                    |
84             +--------------------+
85  </pre>
86  This is meant to depict a block A that contains two blocks B and C.  There
87  is a wire originating in block B, passing through block A, and terminating
88  in block C.  This wire has three different names, A.y, A.B.x, and A.C.z,
89  depending on from which block it is viewed. When a hierarchical network is
90  flattened into a Ntk_Network_t, each node is assigned a unique name,
91  referred to as the "actual name".  The actual name is the name with the
92  fewest levels of hierarchy in it (in this example, A.y).  All other names
93  are referred to as "formal names" (in this example, A.B.x, and A.C.z).  The
94  following functions deal with actual and formal names: Ntk_NodeReadName,
95  Ntk_NetworkFindNodeByActualName, Ntk_NetworkReadActualNameFromFormalName,
96  Ntk_NetworkInsertFormalNameToActualName, Ntk_NetworkFindNodeByName.  See the
97  function descriptions for more details.<p>
98
99  A network may have an MDD manager associated with it, and the nodes may have
100  MDD ids.  However, the network itself does not keep track of any MDDs.  This
101  is the job of the partition package.]
102
103  Author      [Adnan Aziz, Tom Shiple]
104
105  Comment     [The authors would like to acknowledge the ideas of Olivier
106  Coudert, Jean Christophe Madre, and Herve Touati on how to organize the
107  network and node data structures, and functions.]
108 
109  Copyright   [Copyright (c) 1994-1996 The Regents of the Univ. of California.
110  All rights reserved.
111
112  Permission is hereby granted, without written agreement and without license
113  or royalty fees, to use, copy, modify, and distribute this software and its
114  documentation for any purpose, provided that the above copyright notice and
115  the following two paragraphs appear in all copies of this software.
116
117  IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
118  DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
119  OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
120  CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
121
122  THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
123  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
124  FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN
125  "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE
126  MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.]
127
128  Revision    [$Id: ntk.h,v 1.24 2010/04/09 23:44:05 fabio Exp $]
129
130******************************************************************************/
131
132#ifndef _NTK
133#define _NTK
134
135/*---------------------------------------------------------------------------*/
136/* Nested includes                                                           */
137/*---------------------------------------------------------------------------*/
138
139#include "var.h"
140#include "tbl.h"
141#include "hrc.h"
142
143/*---------------------------------------------------------------------------*/
144/* Constant declarations                                                     */
145/*---------------------------------------------------------------------------*/
146#define NTK_UNASSIGNED_MDD_ID     -1
147#define NTK_UNASSIGNED_MAIG_ID    -1
148#define NTK_UNDEFINED_FANIN_INDEX -1
149#define NTK_HRC_NODE_APPL_KEY     "Ntk_HrcNodeApplKey"
150
151/*---------------------------------------------------------------------------*/
152/* Type declarations                                                         */
153/*---------------------------------------------------------------------------*/
154typedef struct NtkNetworkStruct Ntk_Network_t;
155typedef struct NtkNodeStruct    Ntk_Node_t;
156typedef void   (*Ntk_ApplInfoFreeFn) (void *);
157
158
159/*---------------------------------------------------------------------------*/
160/* Macro declarations                                                        */
161/*---------------------------------------------------------------------------*/
162
163/**Macro***********************************************************************
164
165  Synopsis     [Iterates over the fanins of a node.]
166
167  Description  [This macro iterates over the fanins of a node. It is an error
168  to modify the fanins of a node while iterating its fanins.]
169
170  SideEffects  [This macro instantiates macros from the array package.  Hence
171  it is advisable not to nest this macro within array macros.]
172
173  SeeAlso      [Ntk_NodeForEachFanout]
174
175******************************************************************************/
176#define Ntk_NodeForEachFanin(                                       \
177  /* Ntk_Node_t * */ node   /* node to iterate fanins */,            \
178  /* int */          i      /* local variable for iterator */,       \
179  /* Ntk_Node_t * */ fanin  /* fanin of node */                      \
180)                                                                   \
181  arrayForEachItem(Ntk_Node_t *, Ntk_NodeReadFanins(node), i, fanin)
182
183
184/**Macro***********************************************************************
185
186  Synopsis     [Iterates over the fanouts of a node.]
187
188  Description  [This macro iterates over the fanouts of a node. It is an error
189  to modify the fanouts of a node while iterating its fanouts.]
190
191  SideEffects  [This macro instantiates macros from the array package.  Hence
192  it is advisable not to nest this macro within array macros.]
193
194  SeeAlso      [Ntk_NodeForEachFanout]
195
196******************************************************************************/
197#define Ntk_NodeForEachFanout(                                       \
198  /* Ntk_Node_t * */ node   /* node to iterate fanouts */,           \
199  /* int */          i      /* local variable for iterator */,       \
200  /* Ntk_Node_t * */ fanout /* fanout of node */                     \
201)                                                                    \
202  arrayForEachItem(Ntk_Node_t *, Ntk_NodeReadFanouts(node), i, fanout)
203
204
205/**Macro***********************************************************************
206
207  Synopsis     [Iterates over the nodes of a network.]
208
209  Description  [This macro iterates over the nodes of a network. It is an error
210  to modify the nodes of a network while iterating its nodes.]
211
212  SideEffects  []
213
214  SeeAlso      [Ntk_NetworkForEachPrimaryOutput Ntk_NetworkForEachPrimaryInput]
215
216******************************************************************************/
217#define Ntk_NetworkForEachNode(                                      \
218  /* Ntk_Network_t * */ network /* network to iterate nodes */,      \
219  /* lsGen */           gen     /* local variable for iterator */,   \
220  /* Ntk_Node_t * */    node    /* node of network */                \
221)                                                                    \
222  lsForEachItem(Ntk_NetworkReadNodes(network), gen, node)
223     
224
225/**Macro***********************************************************************
226
227  Synopsis     [Iterates over the latches of a network.]
228
229  Description [This macro iterates over the latches of a network. It is an
230  error to modify the latches of a network while iterating its latches.]
231
232  SideEffects  []
233
234  SeeAlso      [Ntk_NetworkForEachPrimaryOutput Ntk_NetworkForEachPrimaryInput]
235
236******************************************************************************/
237#define Ntk_NetworkForEachLatch(                                     \
238  /* Ntk_Network_t * */ network /* network to iterate latches  */,   \
239  /* lsGen */           gen     /* local variable for iterator */,   \
240  /* Ntk_Node_t * */    latch   /* latch of network */               \
241)                                                                    \
242  lsForEachItem(Ntk_NetworkReadLatches(network), gen, latch)
243
244
245
246/**Macro***********************************************************************
247
248  Synopsis     [Iterates over the combinational inputs of a network.]
249
250  Description [This macro iterates over the combinational inputs of a
251  network. Primary inputs, pseudo inputs, and latches are combinational
252  inputs. It is an error to modify the combinational inputs of a network while
253  iterating its combinational inputs.]
254
255  SideEffects  []
256
257  SeeAlso      [Ntk_NetworkForEachPrimaryOutput Ntk_NetworkForEachPrimaryInput]
258
259******************************************************************************/
260#define Ntk_NetworkForEachCombInput(                                   \
261  /* Ntk_Network_t * */ network /* network to iterate comb inputs */,  \
262  /* lsGen */           gen     /* local variable for iterator */,     \
263  /* Ntk_Node_t * */    node    /* node of network */                  \
264)                                                                      \
265  lsForEachItem(Ntk_NetworkReadCombInputs(network), gen, node)
266
267     
268/**Macro***********************************************************************
269
270  Synopsis     [Iterates over the combinational outputs of a network.]
271
272  Description [This macro iterates over the combinational outputs of a
273  network. Primary outputs, latch data inputs, and latch initial inputs, are
274  combinational outputs. A node may be a combinational output for more than
275  one reason (e.g. both a latch data input and a primary output), however, it
276  appears only once in the iteration. It is an error to modify the
277  combinational outputs of a network while iterating its combinational
278  outputs.]
279
280  SideEffects  []
281
282  SeeAlso      [Ntk_NetworkForEachPrimaryOutput Ntk_NetworkForEachPrimaryInput]
283
284******************************************************************************/
285#define Ntk_NetworkForEachCombOutput(                                  \
286  /* Ntk_Network_t * */ network /* network to iterate comb outputs */, \
287  /* lsGen */           gen     /* local variable for iterator */,     \
288  /* Ntk_Node_t * */    node    /* node of network */                  \
289)                                                                      \
290  lsForEachItem(Ntk_NetworkReadCombOutputs(network), gen, node)
291
292     
293/**Macro***********************************************************************
294
295  Synopsis     [Iterates over the primary inputs of a network.]
296
297  Description [This macro iterates over the primary inputs of a network. It is
298  an error to modify the primary inputs of a network while iterating its
299  primary inputs.]
300
301  SideEffects  []
302
303  SeeAlso      [Ntk_NetworkForEachPrimaryOutput Ntk_NetworkForEachPseudoInput
304  Ntk_NetworkForEachInput]
305
306******************************************************************************/
307#define Ntk_NetworkForEachPrimaryInput(                                  \
308  /* Ntk_Network_t * */ network /* network to iterate primary inputs */, \
309  /* lsGen */           gen     /* local variable for iterator */,       \
310  /* Ntk_Node_t * */    input   /* primary input of network */           \
311)                                                                        \
312  lsForEachItem(Ntk_NetworkReadPrimaryInputs(network), gen, input)
313
314
315/**Macro***********************************************************************
316
317  Synopsis     [Iterates over the pseudo inputs of a network.]
318
319  Description [This macro iterates over the pseudo inputs of a network. It is
320  an error to modify the pseudo inputs of a network while iterating its
321  pseudo inputs.]
322
323  SideEffects  []
324
325  SeeAlso      [Ntk_NetworkForEachPrimaryInput Ntk_NetworkForEachInput]
326
327******************************************************************************/
328#define Ntk_NetworkForEachPseudoInput(                                  \
329  /* Ntk_Network_t * */ network /* network to iterate pseudo inputs */, \
330  /* lsGen */           gen     /* local variable for iterator */,      \
331  /* Ntk_Node_t * */    input   /* pseudo input of network */           \
332)                                                                       \
333  lsForEachItem(Ntk_NetworkReadPseudoInputs(network), gen, input)
334
335
336/**Macro***********************************************************************
337
338  Synopsis     [Iterates over the inputs of a network.]
339
340  Description [This macro iterates over the primary inputs and pseudo inputs
341  of a network. It is an error to modify the inputs of a network while
342  iterating its inputs.]
343
344  SideEffects  []
345
346  SeeAlso      [Ntk_NetworkForEachPrimaryInput Ntk_NetworkForEachPseudoInput]
347
348******************************************************************************/
349#define Ntk_NetworkForEachInput(                                     \
350  /* Ntk_Network_t * */ network /* network to iterate inputs */,     \
351  /* lsGen */           gen     /* local variable for iterator */,   \
352  /* Ntk_Node_t * */    input   /* input of network */               \
353)                                                                    \
354  lsForEachItem(Ntk_NetworkReadInputs(network), gen, input)
355
356
357/**Macro***********************************************************************
358
359  Synopsis     [Iterates over the primary outputs of a network.]
360
361  Description [This macro iterates over the primary outputs of a network. It is
362  an error to modify the primary outputs of a network while iterating its
363  primary outputs.]
364
365  SideEffects  []
366
367  SeeAlso      [Ntk_NetworkForEachPrimaryLatch Ntk_NetworkForEachLatch]
368
369******************************************************************************/
370#define Ntk_NetworkForEachPrimaryOutput(                                   \
371  /* Ntk_Network_t * */ network /* network to iterate primary outputs */,  \
372  /* lsGen */           gen     /* local variable for iterator */,         \
373  /* Ntk_Node_t * */    po      /* primary output of network */            \
374)                                                                          \
375  lsForEachItem(Ntk_NetworkReadPrimaryOutputs(network), gen, po)
376
377
378
379
380/**AutomaticStart*************************************************************/
381
382/*---------------------------------------------------------------------------*/
383/* Function prototypes                                                       */
384/*---------------------------------------------------------------------------*/
385
386EXTERN void Ntk_Init(void);
387EXTERN void Ntk_End(void);
388EXTERN Ntk_Network_t * Ntk_HrcManagerReadCurrentNetwork(Hrc_Manager_t *hmgr);
389EXTERN Ntk_Network_t * Ntk_HrcNodeConvertToNetwork(Hrc_Node_t *hrcNode, boolean buildMvfs, lsList abstractedNames);
390EXTERN array_t * Ntk_NodeComputeTransitiveFanoutNodes(array_t * nodeArray, int depth);
391EXTERN array_t * Ntk_NodeComputeTransitiveFanInputNodes(array_t * nodeArray, int depth);
392EXTERN array_t * Ntk_NodeComputeCombinationalSupport(Ntk_Network_t *network, array_t * nodeArray, boolean stopAtLatches);
393EXTERN array_t * Ntk_NodeComputeTransitiveFaninNodes(Ntk_Network_t *network, array_t * nodeArray, boolean stopAtLatches, boolean combInputsOnly);
394
395EXTERN st_table * Ntk_RegionFindNodes(array_t *roots, st_table *leaves);
396EXTERN st_table * Ntk_NetworkComputeLatchDependencies(Ntk_Network_t * network);
397EXTERN boolean Ntk_NetworkTestIsAcyclic(Ntk_Network_t * network);
398EXTERN boolean Ntk_NetworkTestLeavesCoverSupportOfRoots(Ntk_Network_t *network, array_t *roots, st_table *leaves);
399EXTERN lsList Ntk_NetworkComputeTopologicalOrder(Ntk_Network_t *network, array_t *rootNodesArray, st_table *leafNodesTable);
400EXTERN char * Ntk_NodeReadName(Ntk_Node_t * node);
401EXTERN Ntk_Network_t * Ntk_NodeReadNetwork(Ntk_Node_t * node);
402EXTERN Var_Variable_t * Ntk_NodeReadVariable(Ntk_Node_t * node);
403EXTERN int Ntk_NodeReadOutputIndex(Ntk_Node_t * node);
404EXTERN int Ntk_NodeReadMddId(Ntk_Node_t * node);
405EXTERN void Ntk_NodeSetMddId(Ntk_Node_t * node, int id);
406EXTERN void * Ntk_NodeReadUndef(Ntk_Node_t * node);
407EXTERN void Ntk_NodeSetUndef(Ntk_Node_t * node, void * value);
408EXTERN boolean Ntk_NodeTestIsPrimaryInput(Ntk_Node_t * node);
409EXTERN boolean Ntk_NodeTestIsPseudoInput(Ntk_Node_t * node);
410EXTERN boolean Ntk_NodeTestIsInput(Ntk_Node_t * node);
411EXTERN boolean Ntk_NodeTestIsUndefined(Ntk_Node_t * node);
412EXTERN boolean Ntk_NodeTestIsLatch(Ntk_Node_t * node);
413EXTERN boolean Ntk_NodeTestIsNextStateNode(Ntk_Node_t * node);
414EXTERN boolean Ntk_NodeTestIsShadow(Ntk_Node_t * node);
415EXTERN boolean Ntk_NodeTestIsCombInput(Ntk_Node_t * node);
416EXTERN boolean Ntk_NodeTestIsCombOutput(Ntk_Node_t * node);
417EXTERN boolean Ntk_NodeTestIsCombinational(Ntk_Node_t * node);
418EXTERN boolean Ntk_NodeTestIsPrimaryOutput(Ntk_Node_t * node);
419EXTERN boolean Ntk_NodeTestIsLatchDataInput(Ntk_Node_t * node);
420EXTERN boolean Ntk_NodeTestIsLatchInitialInput(Ntk_Node_t * node);
421EXTERN boolean Ntk_NodeTestIsConstant(Ntk_Node_t * node);
422EXTERN Ntk_Node_t * Ntk_NodeReadShadow(Ntk_Node_t * node);
423EXTERN Ntk_Node_t * Ntk_ShadowReadOrigin(Ntk_Node_t * shadow);
424EXTERN Ntk_Node_t * Ntk_LatchReadDataInput(Ntk_Node_t * node);
425EXTERN Ntk_Node_t * Ntk_LatchReadInitialInput(Ntk_Node_t * node);
426EXTERN int Ntk_NodeReadNumFanins(Ntk_Node_t * node);
427EXTERN int Ntk_NodeReadNumFanouts(Ntk_Node_t * node);
428EXTERN Ntk_Node_t * Ntk_NodeReadFaninNode(Ntk_Node_t * node, int faninIndex);
429EXTERN int Ntk_NodeReadFaninIndex(Ntk_Node_t * node, Ntk_Node_t * faninNode);
430EXTERN array_t * Ntk_NodeReadFanins(Ntk_Node_t * node);
431EXTERN array_t * Ntk_NodeReadFanouts(Ntk_Node_t * node);
432EXTERN void Ntk_NodeSetFanins(Ntk_Node_t * node, array_t *faninArray);
433EXTERN void Ntk_NodeSetFanouts(Ntk_Node_t * node, array_t *fanoutArray);
434EXTERN char * Ntk_NodeObtainTypeAsString(Ntk_Node_t * node);
435EXTERN void Ntk_NetworkWriteBlifMv(FILE *fp, Ntk_Network_t *network, boolean promotePseudo);
436EXTERN void Ntk_NodePrint(FILE * fp, Ntk_Node_t * node, boolean printIo, boolean printTableStats);
437EXTERN Ntk_Node_t * Ntk_NodeCreateInNetwork(Ntk_Network_t * network, char * name, Var_Variable_t *variable);
438EXTERN void Ntk_NodeDeclareAsLatch(Ntk_Node_t * latch, char * dataName, char * initName);
439EXTERN void Ntk_NodeDeclareAsPrimaryInput(Ntk_Node_t * node);
440EXTERN void Ntk_NodeDeclareAsPrimaryOutput(Ntk_Node_t * node);
441EXTERN void Ntk_NodeDeclareAsShadow(Ntk_Node_t * shadow, Ntk_Node_t * origin);
442EXTERN void Ntk_NodeFree(Ntk_Node_t * node);
443EXTERN char * Ntk_NetworkReadName(Ntk_Network_t * network);
444EXTERN mdd_manager * Ntk_NetworkReadMddManager(Ntk_Network_t * network);
445EXTERN void Ntk_NetworkSetMddManager(Ntk_Network_t * network, mdd_manager * mddManager);
446EXTERN mdd_manager * Ntk_NetworkInitializeMddManager(Ntk_Network_t * network);
447EXTERN bdd_reorder_type_t Ntk_NetworkReadDynamicVarOrderingMethod(Ntk_Network_t * network);
448EXTERN void Ntk_NetworkSetDynamicVarOrderingMethod(Ntk_Network_t * network, bdd_reorder_type_t dynVarOrdMethod, bdd_reorder_verbosity_t verbosity);
449EXTERN void * Ntk_NetworkReadUndef(Ntk_Network_t * network);
450EXTERN void Ntk_NetworkSetUndef(Ntk_Network_t * network, void * value);
451EXTERN Ntk_Node_t * Ntk_NetworkFindNodeByMddId(Ntk_Network_t * network, int mddId);
452EXTERN Ntk_Node_t * Ntk_NetworkFindNodeByActualName(Ntk_Network_t * network, char * name);
453EXTERN Ntk_Node_t * Ntk_NetworkFindNodeByName(Ntk_Network_t * network, char * name);
454EXTERN char * Ntk_NetworkReadActualNameFromFormalName(Ntk_Network_t * network, char * formalName);
455EXTERN void Ntk_NetworkInsertFormalNameToActualName(Ntk_Network_t * network, char * formalName, char * actualName);
456EXTERN int Ntk_NetworkReadNumNodes(Ntk_Network_t * network);
457EXTERN int Ntk_NetworkReadNumLatches(Ntk_Network_t * network);
458EXTERN int Ntk_NetworkReadNumCombInputs(Ntk_Network_t * network);
459EXTERN int Ntk_NetworkReadNumCombOutputs(Ntk_Network_t * network);
460EXTERN int Ntk_NetworkReadNumPrimaryInputs(Ntk_Network_t * network);
461EXTERN int Ntk_NetworkReadNumPseudoInputs(Ntk_Network_t * network);
462EXTERN int Ntk_NetworkReadNumInputs(Ntk_Network_t * network);
463EXTERN int Ntk_NetworkReadNumPrimaryOutputs(Ntk_Network_t * network);
464EXTERN lsList Ntk_NetworkReadNodes(Ntk_Network_t * network);
465EXTERN lsList Ntk_NetworkReadCombInputs(Ntk_Network_t * network);
466EXTERN lsList Ntk_NetworkReadCombOutputs(Ntk_Network_t * network);
467EXTERN lsList Ntk_NetworkReadLatches(Ntk_Network_t * network);
468EXTERN lsList Ntk_NetworkReadPrimaryInputs(Ntk_Network_t * network);
469EXTERN lsList Ntk_NetworkReadPseudoInputs(Ntk_Network_t * network);
470EXTERN lsList Ntk_NetworkReadInputs(Ntk_Network_t * network);
471EXTERN lsList Ntk_NetworkReadPrimaryOutputs(Ntk_Network_t * network);
472EXTERN boolean Ntk_NetworkAddApplInfo(Ntk_Network_t * network, char * key, Ntk_ApplInfoFreeFn freeFn, void * data);
473EXTERN boolean Ntk_NetworkSetApplInfo(Ntk_Network_t * network, char * key, Ntk_ApplInfoFreeFn freeFn, void * data);
474EXTERN void * Ntk_NetworkReadApplInfo(Ntk_Network_t * network, char * key);
475EXTERN boolean Ntk_NetworkFreeApplInfo(Ntk_Network_t * network, char * key);
476EXTERN Ntk_Network_t * Ntk_NetworkAlloc(char * name);
477EXTERN void Ntk_NetworkFree(Ntk_Network_t * network);
478EXTERN void Ntk_NetworkFreeCallback(void * data);
479EXTERN void Ntk_NetworkPrint(FILE * fp, Ntk_Network_t * network, boolean printIo, boolean printTableStats);
480EXTERN void Ntk_NetworkPrintStats(FILE * fp, Ntk_Network_t * network);
481EXTERN Ntk_Network_t * Ntk_NetworkDuplicate(Ntk_Network_t * oldNetwork);
482EXTERN void Ntk_NetworkAppendNetwork(Ntk_Network_t * network1, Ntk_Network_t * network2, st_table *name2ToName1);
483EXTERN int Ntk_NetworkPrintDot(FILE *fp, Ntk_Network_t *network);
484EXTERN void Ntk_NetworkSweep(Ntk_Network_t *network, int verbosity);
485EXTERN boolean Ntk_NodeRemoveFromNetwork(Ntk_Network_t *network, Ntk_Node_t *node, int force, boolean removeFromNodeList, int verbosity);
486EXTERN void Ntk_NetworkSetMAigManager(Ntk_Network_t * network, mAig_Manager_t * mAigManager);
487EXTERN mAigEdge_t Ntk_NodeReadMAigId(Ntk_Node_t * node);
488EXTERN mAig_Manager_t * Ntk_NetworkReadMAigManager(Ntk_Network_t * network);
489EXTERN void Ntk_NodeSetMAigId(Ntk_Node_t * node, mAigEdge_t mAigId);
490EXTERN void Ntk_NodeSetTable(Ntk_Node_t * node, Tbl_Table_t *table);
491EXTERN Tbl_Table_t * Ntk_NodeReadTable(Ntk_Node_t * node);
492EXTERN void Ntk_NodeDeclareAsPseudoInput(Ntk_Node_t * node, Tbl_Table_t * table, int outputIndex);
493EXTERN void Ntk_NodeDeclareAsCombinational(Ntk_Node_t * node, Tbl_Table_t * table, array_t * inputNames, int outputIndex);
494
495/**AutomaticEnd***************************************************************/
496
497#endif /* _NTK */
498
499
500
501
502
503
504
Note: See TracBrowser for help on using the repository browser.