ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
abcDress.c File Reference
#include "base/abc/abc.h"
#include "base/io/ioAbc.h"
Include dependency graph for abcDress.c:

Go to the source code of this file.

Functions

Abc_Ntk_tAbc_NtkIvyFraig (Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose)
 
void Abc_NtkDress (Abc_Ntk_t *pNtkLogic, char *pFileName, int fVerbose)
 FUNCTION DEFINITIONS ///.
 

Function Documentation

◆ Abc_NtkDress()

void Abc_NtkDress ( Abc_Ntk_t * pNtkLogic,
char * pFileName,
int fVerbose )

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis [Transfers names from one netlist to the other.]

Description []

SideEffects []

SeeAlso []

Definition at line 51 of file abcDress.c.

52{
53 Abc_Ntk_t * pNtkOrig, * pNtkLogicOrig;
54 Abc_Ntk_t * pMiter, * pMiterFraig;
55 stmm_table * tMapping;
56
57 assert( Abc_NtkIsLogic(pNtkLogic) );
58
59 // get the original netlist
60 pNtkOrig = Io_ReadNetlist( pFileName, Io_ReadFileType(pFileName), 1 );
61 if ( pNtkOrig == NULL )
62 return;
63 assert( Abc_NtkIsNetlist(pNtkOrig) );
64
65 Abc_NtkCleanCopy(pNtkLogic);
66 Abc_NtkCleanCopy(pNtkOrig);
67
68 // convert it into the logic network
69 pNtkLogicOrig = Abc_NtkToLogic( pNtkOrig );
70 // check that the networks have the same PIs/POs/latches
71 if ( !Abc_NtkCompareSignals( pNtkLogic, pNtkLogicOrig, 1, 1 ) )
72 {
73 Abc_NtkDelete( pNtkOrig );
74 Abc_NtkDelete( pNtkLogicOrig );
75 return;
76 }
77
78 // convert the current logic network into an AIG
79 pMiter = Abc_NtkStrash( pNtkLogic, 1, 0, 0 );
80
81 // convert it into the AIG and make the netlist point to the AIG
82 Abc_NtkAppend( pMiter, pNtkLogicOrig, 1 );
83 Abc_NtkTransferCopy( pNtkOrig );
84 Abc_NtkDelete( pNtkLogicOrig );
85
86if ( fVerbose )
87{
88printf( "After mitering:\n" );
89printf( "Logic: Nodes = %5d. Copy = %5d. \n", Abc_NtkNodeNum(pNtkLogic), Abc_NtkCountCopy(pNtkLogic) );
90printf( "Orig: Nodes = %5d. Copy = %5d. \n", Abc_NtkNodeNum(pNtkOrig), Abc_NtkCountCopy(pNtkOrig) );
91}
92
93 // fraig the miter (miter nodes point to the fraiged miter)
94 pMiterFraig = Abc_NtkIvyFraig( pMiter, 100, 1, 0, 1, 0 );
95 // make netlists point to the fraiged miter
96 Abc_NtkTransferCopy( pNtkLogic );
97 Abc_NtkTransferCopy( pNtkOrig );
98 Abc_NtkDelete( pMiter );
99
100if ( fVerbose )
101{
102printf( "After fraiging:\n" );
103printf( "Logic: Nodes = %5d. Copy = %5d. \n", Abc_NtkNodeNum(pNtkLogic), Abc_NtkCountCopy(pNtkLogic) );
104printf( "Orig: Nodes = %5d. Copy = %5d. \n", Abc_NtkNodeNum(pNtkOrig), Abc_NtkCountCopy(pNtkOrig) );
105}
106
107 // derive mapping from the fraiged nodes into their prototype nodes in the original netlist
108 tMapping = Abc_NtkDressDeriveMapping( pNtkOrig );
109
110 // transfer the names to the new netlist
111 Abc_NtkDressTransferNames( pNtkLogic, tMapping, fVerbose );
112
113 // clean up
114 stmm_free_table( tMapping );
115 Abc_NtkDelete( pMiterFraig );
116 Abc_NtkDelete( pNtkOrig );
117}
Abc_Ntk_t * Abc_NtkIvyFraig(Abc_Ntk_t *pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose)
Definition abcIvy.c:460
ABC_DLL int Abc_NtkCountCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:605
ABC_DLL Abc_Ntk_t * Abc_NtkToLogic(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcNetlist.c:52
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL Abc_Ntk_t * Abc_NtkStrash(Abc_Ntk_t *pNtk, int fAllNodes, int fCleanup, int fRecord)
Definition abcStrash.c:265
ABC_DLL void Abc_NtkTransferCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:1962
ABC_DLL int Abc_NtkAppend(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fAddPos)
Definition abcStrash.c:320
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
ABC_DLL void Abc_NtkCleanCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:540
ABC_DLL int Abc_NtkCompareSignals(Abc_Ntk_t *pNtk1, Abc_Ntk_t *pNtk2, int fOnlyPis, int fComb)
Definition abcCheck.c:749
Abc_Ntk_t * Io_ReadNetlist(char *pFileName, Io_FileType_t FileType, int fCheck)
Definition ioUtil.c:99
Io_FileType_t Io_ReadFileType(char *pFileName)
DECLARATIONS ///.
Definition ioUtil.c:47
void stmm_free_table(stmm_table *table)
Definition stmm.c:79
#define assert(ex)
Definition util_old.h:213
Here is the call graph for this function:

◆ Abc_NtkIvyFraig()

Abc_Ntk_t * Abc_NtkIvyFraig ( Abc_Ntk_t * pNtk,
int nConfLimit,
int fDoSparse,
int fProve,
int fTransfer,
int fVerbose )
extern

Function*************************************************************

Synopsis [Gives the current ABC network to AIG manager for processing.]

Description []

SideEffects []

SeeAlso []

Definition at line 460 of file abcIvy.c.

461{
462 Ivy_FraigParams_t Params, * pParams = &Params;
463 Abc_Ntk_t * pNtkAig;
464 Ivy_Man_t * pMan, * pTemp;
465 pMan = Abc_NtkIvyBefore( pNtk, 0, 0 );
466 if ( pMan == NULL )
467 return NULL;
468 Ivy_FraigParamsDefault( pParams );
469 pParams->nBTLimitNode = nConfLimit;
470 pParams->fVerbose = fVerbose;
471 pParams->fProve = fProve;
472 pParams->fDoSparse = fDoSparse;
473 pMan = Ivy_FraigPerform( pTemp = pMan, pParams );
474 // transfer the pointers
475 if ( fTransfer == 1 )
476 {
477 Vec_Ptr_t * vCopies;
478 vCopies = Abc_NtkSaveCopy( pNtk );
479 pNtkAig = Abc_NtkIvyAfter( pNtk, pMan, 0, 0 );
480 Abc_NtkLoadCopy( pNtk, vCopies );
481 Vec_PtrFree( vCopies );
482 Abc_NtkTransferPointers( pNtk, pNtkAig );
483 }
484 else
485 pNtkAig = Abc_NtkIvyAfter( pNtk, pMan, 0, 0 );
486 pNtkAig->pModel = (int *)pMan->pData; pMan->pData = NULL;
487 Ivy_ManStop( pTemp );
488 Ivy_ManStop( pMan );
489 return pNtkAig;
490}
void Abc_NtkTransferPointers(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkAig)
Definition abcIvy.c:423
Ivy_Man_t * Abc_NtkIvyBefore(Abc_Ntk_t *pNtk, int fSeq, int fUseDc)
FUNCTION DEFINITIONS ///.
Definition abcIvy.c:88
Abc_Ntk_t * Abc_NtkIvyAfter(Abc_Ntk_t *pNtk, Ivy_Man_t *pMan, int fSeq, int fHaig)
Definition abcIvy.c:141
ABC_DLL void Abc_NtkLoadCopy(Abc_Ntk_t *pNtk, Vec_Ptr_t *vCopies)
Definition abcUtil.c:650
ABC_DLL Vec_Ptr_t * Abc_NtkSaveCopy(Abc_Ntk_t *pNtk)
Definition abcUtil.c:628
Ivy_Man_t * Ivy_FraigPerform(Ivy_Man_t *pManAig, Ivy_FraigParams_t *pParams)
Definition ivyFraig.c:451
typedefABC_NAMESPACE_HEADER_START struct Ivy_Man_t_ Ivy_Man_t
INCLUDES ///.
Definition ivy.h:46
void Ivy_FraigParamsDefault(Ivy_FraigParams_t *pParams)
FUNCTION DEFINITIONS ///.
Definition ivyFraig.c:225
struct Ivy_FraigParams_t_ Ivy_FraigParams_t
Definition ivy.h:49
void Ivy_ManStop(Ivy_Man_t *p)
Definition ivyMan.c:238
int * pModel
Definition abc.h:198
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the call graph for this function:
Here is the caller graph for this function: