ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcNetlist.c
Go to the documentation of this file.
1
20
21#include "abc.h"
22#include "base/main/main.h"
23//#include "seq.h"
24
26
27
31
32static void Abc_NtkAddPoBuffers( Abc_Ntk_t * pNtk );
33static Abc_Ntk_t * Abc_NtkLogicToNetlist( Abc_Ntk_t * pNtk );
34static Abc_Ntk_t * Abc_NtkAigToLogicSop( Abc_Ntk_t * pNtk );
35static Abc_Ntk_t * Abc_NtkAigToLogicSopBench( Abc_Ntk_t * pNtk );
36
40
53{
54 Abc_Ntk_t * pNtkNew;
55 Abc_Obj_t * pObj, * pFanin;
56 int i, k;
57 // consider the case of the AIG
58 if ( Abc_NtkIsStrash(pNtk) )
59 return Abc_NtkAigToLogicSop( pNtk );
60 assert( Abc_NtkIsNetlist(pNtk) );
61 // consider simple case when there is hierarchy
62// assert( pNtk->pDesign == NULL );
63 assert( Abc_NtkWhiteboxNum(pNtk) == 0 );
64 assert( Abc_NtkBlackboxNum(pNtk) == 0 );
65 // start the network
66 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_LOGIC, pNtk->ntkFunc );
67 // duplicate the nodes
68 Abc_NtkForEachNode( pNtk, pObj, i )
69 {
70 Abc_NtkDupObj(pNtkNew, pObj, 0);
71 Abc_ObjAssignName( pObj->pCopy, Abc_ObjName(Abc_ObjFanout0(pObj)), NULL );
72 }
73 // reconnect the internal nodes in the new network
74 Abc_NtkForEachNode( pNtk, pObj, i )
75 Abc_ObjForEachFanin( pObj, pFanin, k )
76 Abc_ObjAddFanin( pObj->pCopy, Abc_ObjFanin0(pFanin)->pCopy );
77 // collect the CO nodes
78 Abc_NtkFinalize( pNtk, pNtkNew );
79 // fix the problem with CO pointing directly to CIs
80 Abc_NtkLogicMakeSimpleCos( pNtkNew, 0 );
81 // duplicate EXDC
82 if ( pNtk->pExdc )
83 pNtkNew->pExdc = Abc_NtkToLogic( pNtk->pExdc );
84 if ( !Abc_NtkCheck( pNtkNew ) )
85 fprintf( stdout, "Abc_NtkToLogic(): Network check has failed.\n" );
86 return pNtkNew;
87}
88
101{
102 Abc_Ntk_t * pNtkNew, * pNtkTemp;
103 assert( Abc_NtkIsLogic(pNtk) || Abc_NtkIsStrash(pNtk) );
104 if ( Abc_NtkIsStrash(pNtk) )
105 {
106 pNtkTemp = Abc_NtkAigToLogicSop(pNtk);
107 pNtkNew = Abc_NtkLogicToNetlist( pNtkTemp );
108 Abc_NtkDelete( pNtkTemp );
109 return pNtkNew;
110 }
111 return Abc_NtkLogicToNetlist( pNtk );
112}
113
126{
127 Abc_Ntk_t * pNtkNew, * pNtkTemp;
128 assert( Abc_NtkIsStrash(pNtk) );
129 pNtkTemp = Abc_NtkAigToLogicSopBench( pNtk );
130 pNtkNew = Abc_NtkLogicToNetlist( pNtkTemp );
131 Abc_NtkDelete( pNtkTemp );
132 return pNtkNew;
133}
134
150Abc_Ntk_t * Abc_NtkLogicToNetlist( Abc_Ntk_t * pNtk )
151{
152 Abc_Ntk_t * pNtkNew;
153 Abc_Obj_t * pObj, * pNet, * pDriver, * pFanin;
154 int i, k;
155
156 assert( Abc_NtkIsLogic(pNtk) );
157
158 // remove dangling nodes
159 Abc_NtkCleanup( pNtk, 0 );
160
161 // make sure the CO names are unique
165
166// assert( Abc_NtkLogicHasSimpleCos(pNtk) );
167 if ( !Abc_NtkLogicHasSimpleCos(pNtk) )
168 {
169 if ( !Abc_FrameReadFlag("silentmode") )
170 printf( "Abc_NtkLogicToNetlist() warning: The network is converted to have simple COs.\n" );
171 Abc_NtkLogicMakeSimpleCos( pNtk, 0 );
172 }
173
174 // start the netlist by creating PI/PO/Latch objects
175 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_NETLIST, pNtk->ntkFunc );
176 // create the CI nets and remember them in the new CI nodes
177 Abc_NtkForEachCi( pNtk, pObj, i )
178 {
179 pNet = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pObj) );
180 Abc_ObjAddFanin( pNet, pObj->pCopy );
181 pObj->pCopy->pCopy = pNet;
182 }
183 // duplicate all nodes
184 Abc_NtkForEachNode( pNtk, pObj, i )
185 Abc_NtkDupObj(pNtkNew, pObj, 0);
186 // first add the nets to the CO drivers
187 Abc_NtkForEachCo( pNtk, pObj, i )
188 {
189 pDriver = Abc_ObjFanin0(pObj);
190 if ( Abc_ObjIsCi(pDriver) )
191 {
192 assert( !strcmp( Abc_ObjName(pDriver), Abc_ObjName(pObj) ) );
193 Abc_ObjAddFanin( pObj->pCopy, pDriver->pCopy->pCopy );
194 continue;
195 }
196 assert( Abc_ObjIsNode(pDriver) );
197 // if the CO driver has no net, create it
198 if ( pDriver->pCopy->pCopy == NULL )
199 {
200 // create the CO net and connect it to CO
201 //if ( Abc_NtkFindNet(pNtkNew, Abc_ObjName(pDriver)) == NULL )
202 // pNet = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pDriver) );
203 //else
204 pNet = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pObj) );
205 Abc_ObjAddFanin( pObj->pCopy, pNet );
206 // connect the CO net to the new driver and remember it in the new driver
207 Abc_ObjAddFanin( pNet, pDriver->pCopy );
208 pDriver->pCopy->pCopy = pNet;
209 }
210 else
211 {
212 assert( !strcmp( Abc_ObjName(pDriver->pCopy->pCopy), Abc_ObjName(pObj) ) );
213 Abc_ObjAddFanin( pObj->pCopy, pDriver->pCopy->pCopy );
214 }
215 }
216 // create the missing nets
217 Abc_NtkForEachNode( pNtk, pObj, i )
218 {
219 char Buffer[1000];
220 if ( pObj->pCopy->pCopy ) // the net of the new object is already created
221 continue;
222 // create the new net
223 sprintf( Buffer, "new_%s", Abc_ObjName(pObj) );
224 //pNet = Abc_NtkFindOrCreateNet( pNtkNew, Abc_ObjName(pObj) ); // here we create net names such as "n48", where 48 is the ID of the node
225 pNet = Abc_NtkFindOrCreateNet( pNtkNew, Buffer );
226 Abc_ObjAddFanin( pNet, pObj->pCopy );
227 pObj->pCopy->pCopy = pNet;
228 }
229 // connect nodes to the fanins nets
230 Abc_NtkForEachNode( pNtk, pObj, i )
231 Abc_ObjForEachFanin( pObj, pFanin, k )
232 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
233 // duplicate EXDC
234 if ( pNtk->pExdc )
235 pNtkNew->pExdc = Abc_NtkToNetlist( pNtk->pExdc );
236 if ( !Abc_NtkCheck( pNtkNew ) )
237 fprintf( stdout, "Abc_NtkLogicToNetlist(): Network check has failed.\n" );
238 return pNtkNew;
239}
240
252Abc_Ntk_t * Abc_NtkAigToLogicSop( Abc_Ntk_t * pNtk )
253{
254 extern int Abc_NtkLogicMakeSimpleCos2( Abc_Ntk_t * pNtk, int fDuplicate );
255
256 Abc_Ntk_t * pNtkNew;
257 Abc_Obj_t * pObj, * pFanin, * pNodeNew;
258 Vec_Int_t * vInts;
259 int i, k, fChoices = 0;
260 assert( Abc_NtkIsStrash(pNtk) );
261 // start the network
262 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_LOGIC, ABC_FUNC_SOP );
263 // if the constant node is used, duplicate it
264 pObj = Abc_AigConst1(pNtk);
265 if ( Abc_ObjFanoutNum(pObj) > 0 )
266 pObj->pCopy = Abc_NtkCreateNodeConst1(pNtkNew);
267 // duplicate the nodes and create node functions
268 Abc_NtkForEachNode( pNtk, pObj, i )
269 {
270 Abc_NtkDupObj(pNtkNew, pObj, 0);
271 pObj->pCopy->pData = Abc_SopCreateAnd2( (Mem_Flex_t *)pNtkNew->pManFunc, Abc_ObjFaninC0(pObj), Abc_ObjFaninC1(pObj) );
272 }
273 // create the choice nodes
274 Abc_NtkForEachNode( pNtk, pObj, i )
275 {
276 if ( !Abc_AigNodeIsChoice(pObj) )
277 continue;
278 // create an OR gate
279 pNodeNew = Abc_NtkCreateNode(pNtkNew);
280 // add fanins
281 vInts = Vec_IntAlloc( 10 );
282 for ( pFanin = pObj; pFanin; pFanin = (Abc_Obj_t *)pFanin->pData )
283 {
284 Vec_IntPush( vInts, (int)(pObj->fPhase != pFanin->fPhase) );
285 Abc_ObjAddFanin( pNodeNew, pFanin->pCopy );
286 }
287 // create the logic function
288 pNodeNew->pData = Abc_SopCreateOrMultiCube( (Mem_Flex_t *)pNtkNew->pManFunc, Vec_IntSize(vInts), Vec_IntArray(vInts) );
289 // set the new node
290 pObj->pCopy->pCopy = pNodeNew;
291 Vec_IntFree( vInts );
292 fChoices = 1;
293 }
294 // connect the internal nodes
295 Abc_NtkForEachNode( pNtk, pObj, i )
296 Abc_ObjForEachFanin( pObj, pFanin, k )
297 if ( pFanin->pCopy->pCopy )
298 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
299 else
300 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy );
301 // connect the COs
302// Abc_NtkFinalize( pNtk, pNtkNew );
303 Abc_NtkForEachCo( pNtk, pObj, i )
304 {
305 pFanin = Abc_ObjFanin0(pObj);
306 if ( pFanin->pCopy->pCopy )
307 pNodeNew = Abc_ObjNotCond(pFanin->pCopy->pCopy, Abc_ObjFaninC0(pObj));
308 else
309 pNodeNew = Abc_ObjNotCond(pFanin->pCopy, Abc_ObjFaninC0(pObj));
310 Abc_ObjAddFanin( pObj->pCopy, pNodeNew );
311 }
312
313 // fix the problem with complemented and duplicated CO edges
314 if ( fChoices )
315 Abc_NtkLogicMakeSimpleCos2( pNtkNew, 0 );
316 else
317 Abc_NtkLogicMakeSimpleCos( pNtkNew, 0 );
318 // duplicate the EXDC Ntk
319 if ( pNtk->pExdc )
320 {
321 if ( Abc_NtkIsStrash(pNtk->pExdc) )
322 pNtkNew->pExdc = Abc_NtkAigToLogicSop( pNtk->pExdc );
323 else
324 pNtkNew->pExdc = Abc_NtkDup( pNtk->pExdc );
325 }
326 if ( !Abc_NtkCheck( pNtkNew ) )
327 fprintf( stdout, "Abc_NtkAigToLogicSop(): Network check has failed.\n" );
328 return pNtkNew;
329}
330
342Abc_Ntk_t * Abc_NtkAigToLogicSopBench( Abc_Ntk_t * pNtk )
343{
344 Abc_Ntk_t * pNtkNew;
345 Abc_Obj_t * pObj, * pFanin;
346 Vec_Ptr_t * vNodes;
347 int i, k;
348 assert( Abc_NtkIsStrash(pNtk) );
349 if ( Abc_NtkGetChoiceNum(pNtk) )
350 printf( "Warning: Choice nodes are skipped.\n" );
351 // start the network
352 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_LOGIC, ABC_FUNC_SOP );
353 // collect the nodes to be used (marks all nodes with current TravId)
354 vNodes = Abc_NtkDfs( pNtk, 0 );
355 // create inverters for the constant node
356 pObj = Abc_AigConst1(pNtk);
357 if ( Abc_ObjFanoutNum(pObj) > 0 )
358 pObj->pCopy = Abc_NtkCreateNodeConst1(pNtkNew);
360 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
361 // create inverters for the CIs
362 Abc_NtkForEachCi( pNtk, pObj, i )
364 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
365 // duplicate the nodes, create node functions, and inverters
366 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
367 {
368 Abc_NtkDupObj( pNtkNew, pObj, 0 );
369 pObj->pCopy->pData = Abc_SopCreateAnd( (Mem_Flex_t *)pNtkNew->pManFunc, 2, NULL );
371 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
372 }
373 // connect the objects
374 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
375 Abc_ObjForEachFanin( pObj, pFanin, k )
376 {
377 if ( Abc_ObjFaninC( pObj, k ) )
378 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
379 else
380 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy );
381 }
382 Vec_PtrFree( vNodes );
383 // connect the COs
384 Abc_NtkForEachCo( pNtk, pObj, i )
385 {
386 pFanin = Abc_ObjFanin0(pObj);
387 if ( Abc_ObjFaninC0( pObj ) )
388 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
389 else
390 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy );
391 }
392 // fix the problem with complemented and duplicated CO edges
393 Abc_NtkLogicMakeSimpleCos( pNtkNew, 0 );
394 // duplicate the EXDC Ntk
395 if ( pNtk->pExdc )
396 printf( "Warning: The EXDc network is skipped.\n" );
397 if ( !Abc_NtkCheck( pNtkNew ) )
398 fprintf( stdout, "Abc_NtkAigToLogicSopBench(): Network check has failed.\n" );
399 return pNtkNew;
400}
401
414{
415 Abc_Ntk_t * pNtkNew;
416 Abc_Obj_t * pObj, * pFanin;
417 Vec_Ptr_t * vNodes;
418 int i, k;
419 assert( Abc_NtkIsStrash(pNtk) );
420 if ( Abc_NtkGetChoiceNum(pNtk) )
421 printf( "Warning: Choice nodes are skipped.\n" );
422 // convert complemented edges
423 Abc_NtkForEachObj( pNtk, pObj, i )
424 Abc_ObjForEachFanin( pObj, pFanin, k )
425 if ( Abc_ObjIsNode(pFanin) )
426 Abc_ObjXorFaninC( pObj, k );
427 // start the network
428 pNtkNew = Abc_NtkStartFrom( pNtk, ABC_NTK_LOGIC, ABC_FUNC_SOP );
429 // collect the nodes to be used (marks all nodes with current TravId)
430 vNodes = Abc_NtkDfs( pNtk, 0 );
431 // create inverters for the constant node
432 pObj = Abc_AigConst1(pNtk);
433 if ( Abc_ObjFanoutNum(pObj) > 0 )
434 pObj->pCopy = Abc_NtkCreateNodeConst1(pNtkNew);
436 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
437 // create inverters for the CIs
438 Abc_NtkForEachCi( pNtk, pObj, i )
440 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
441 // duplicate the nodes, create node functions, and inverters
442 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
443 {
444 Abc_NtkDupObj( pNtkNew, pObj, 0 );
445 pObj->pCopy->pData = Abc_SopCreateNand( (Mem_Flex_t *)pNtkNew->pManFunc, 2 );
447 pObj->pCopy->pCopy = Abc_NtkCreateNodeInv( pNtkNew, pObj->pCopy );
448 }
449 // connect the objects
450 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
451 Abc_ObjForEachFanin( pObj, pFanin, k )
452 {
453 if ( Abc_ObjFaninC( pObj, k ) )
454 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
455 else
456 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy );
457 }
458 Vec_PtrFree( vNodes );
459 // connect the COs
460 Abc_NtkForEachCo( pNtk, pObj, i )
461 {
462 pFanin = Abc_ObjFanin0(pObj);
463 if ( Abc_ObjFaninC0( pObj ) )
464 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy->pCopy );
465 else
466 Abc_ObjAddFanin( pObj->pCopy, pFanin->pCopy );
467 }
468 // fix the problem with complemented and duplicated CO edges
469 Abc_NtkLogicMakeSimpleCos( pNtkNew, 0 );
470 // convert complemented edges
471 Abc_NtkForEachObj( pNtk, pObj, i )
472 Abc_ObjForEachFanin( pObj, pFanin, k )
473 if ( Abc_ObjIsNode(pFanin) )
474 Abc_ObjXorFaninC( pObj, k );
475 // duplicate the EXDC Ntk
476 if ( pNtk->pExdc )
477 printf( "Warning: The EXDc network is skipped.\n" );
478 if ( !Abc_NtkCheck( pNtkNew ) )
479 fprintf( stdout, "Abc_NtkAigToLogicSopBench(): Network check has failed.\n" );
480 return pNtkNew;
481}
482
494void Abc_NtkAddPoBuffers( Abc_Ntk_t * pNtk )
495{
496 Abc_Obj_t * pObj, * pFanin, * pFaninNew;
497 int i;
498 assert( Abc_NtkIsStrash(pNtk) );
499 Abc_NtkForEachPo( pNtk, pObj, i )
500 {
501 pFanin = Abc_ObjChild0(pObj);
502 pFaninNew = Abc_NtkCreateNode(pNtk);
503 Abc_ObjAddFanin( pFaninNew, pFanin );
504 Abc_ObjPatchFanin( pObj, pFanin, pFaninNew );
505 }
506}
507
511
512
514
Abc_Ntk_t * Abc_NtkToNetlistBench(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:125
Abc_Ntk_t * Abc_NtkToNetlist(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:100
Abc_Ntk_t * Abc_NtkAigToLogicSopNand(Abc_Ntk_t *pNtk)
Definition abcNetlist.c:413
Abc_Ntk_t * Abc_NtkToLogic(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcNetlist.c:52
int Abc_NtkLogicMakeSimpleCos2(Abc_Ntk_t *pNtk, int fDuplicate)
Definition abcUtil.c:987
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
ABC_DLL Abc_Obj_t * Abc_NtkFindOrCreateNet(Abc_Ntk_t *pNtk, char *pName)
Definition abcObj.c:587
#define Abc_NtkForEachCo(pNtk, pCo, i)
Definition abc.h:522
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
Definition abcFanio.c:84
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
Definition abcObj.c:643
#define Abc_NtkForEachPo(pNtk, pPo, i)
Definition abc.h:520
ABC_DLL Abc_Obj_t * Abc_NtkDupObj(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pObj, int fCopyName)
Definition abcObj.c:342
ABC_DLL int Abc_NtkCleanup(Abc_Ntk_t *pNtk, int fVerbose)
Definition abcSweep.c:478
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
Definition abcUtil.c:463
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
Definition abcDfs.c:82
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
Definition abc.h:449
#define Abc_ObjForEachFanin(pObj, pFanin, i)
Definition abc.h:527
ABC_DLL int Abc_NtkCheckUniqueCoNames(Abc_Ntk_t *pNtk)
Definition abcCheck.c:893
ABC_DLL char * Abc_SopCreateOrMultiCube(Mem_Flex_t *pMan, int nVars, int *pfCompl)
Definition abcSop.c:234
ABC_DLL char * Abc_ObjName(Abc_Obj_t *pNode)
DECLARATIONS ///.
Definition abcNames.c:49
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
Definition abcNames.c:69
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
Definition abcNtk.c:355
ABC_DLL char * Abc_SopCreateAnd2(Mem_Flex_t *pMan, int fCompl0, int fCompl1)
Definition abcSop.c:145
ABC_DLL char * Abc_SopCreateNand(Mem_Flex_t *pMan, int nVars)
Definition abcSop.c:190
@ ABC_NTK_LOGIC
Definition abc.h:57
@ ABC_NTK_NETLIST
Definition abc.h:56
ABC_DLL char * Abc_SopCreateAnd(Mem_Flex_t *pMan, int nVars, int *pfCompl)
Definition abcSop.c:168
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
Definition abcUtil.c:1080
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
Definition abcObj.c:674
ABC_DLL int Abc_NtkCheckUniqueCioNames(Abc_Ntk_t *pNtk)
Definition abcCheck.c:927
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL int Abc_AigNodeHasComplFanoutEdgeTrav(Abc_Obj_t *pNode)
Definition abcAig.c:1268
ABC_DLL void Abc_ObjPatchFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFaninOld, Abc_Obj_t *pFaninNew)
Definition abcFanio.c:172
@ ABC_FUNC_SOP
Definition abc.h:65
ABC_DLL int Abc_NtkCheckUniqueCiNames(Abc_Ntk_t *pNtk)
Definition abcCheck.c:862
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
Definition abcNtk.c:157
ABC_DLL int Abc_NtkLogicHasSimpleCos(Abc_Ntk_t *pNtk)
Definition abcUtil.c:942
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
Definition abcNtk.c:472
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
Definition abcAig.c:683
#define Abc_NtkForEachNode(pNtk, pNode, i)
Definition abc.h:464
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
Definition mainFrame.c:69
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
struct Mem_Flex_t_ Mem_Flex_t
Definition mem.h:34
Abc_Ntk_t * pExdc
Definition abc.h:201
void * pManFunc
Definition abc.h:191
Abc_NtkFunc_t ntkFunc
Definition abc.h:157
void * pData
Definition abc.h:145
Abc_Obj_t * pCopy
Definition abc.h:148
unsigned fPhase
Definition abc.h:137
#define assert(ex)
Definition util_old.h:213
int strcmp()
char * sprintf()
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55