ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cba.h File Reference
#include "aig/gia/gia.h"
#include "misc/extra/extra.h"
#include "misc/util/utilNam.h"
#include "misc/vec/vecHash.h"
#include "cbaTypes.h"
Include dependency graph for cba.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Cba_Ntk_t_
 
struct  Cba_Man_t_
 

Macros

#define Cba_ManForEachNtk(p, pNtk, i)
 ITERATORS ///.
 
#define Cba_NtkForEachPi(p, iObj, i)
 
#define Cba_NtkForEachPo(p, iObj, i)
 
#define Cba_NtkForEachBoxSeq(p, iObj, i)
 
#define Cba_NtkForEachPioOrder(p, iObj, i)
 
#define Cba_NtkForEachPiFon(p, iObj, iFon, i)
 
#define Cba_NtkForEachPoDriverFon(p, iObj, iFon, i)
 
#define Cba_NtkForEachPoDriver(p, iObj, i)
 
#define Cba_NtkForEachObj(p, i)
 
#define Cba_NtkForEachObjType(p, Type, i)
 
#define Cba_NtkForEachBox(p, i)
 
#define Cba_NtkForEachBoxComb(p, i)
 
#define Cba_NtkForEachBoxUser(p, i)
 
#define Cba_NtkForEachBoxPrim(p, i)
 
#define Cba_NtkForEachFon(p, i)
 
#define Cba_NtkForEachFinFon(p, iFon, iFin)
 
#define Cba_NtkForEachFonName(p, NameId, iFon)
 
#define Cba_ObjForEachFin(p, iObj, iFin, k)
 
#define Cba_ObjForEachFon(p, iObj, iFon, k)
 
#define Cba_ObjForEachFinFon(p, iObj, iFin, iFon, k)
 
#define Cba_ObjForEachFinFanin(p, iObj, iFin, iFanin, k)
 
#define Cba_ObjForEachFinFaninReal(p, iObj, iFin, iFanin, k)
 

Typedefs

typedef typedefABC_NAMESPACE_HEADER_START struct Cba_Ntk_t_ Cba_Ntk_t
 INCLUDES ///.
 
typedef struct Cba_Man_t_ Cba_Man_t
 

Functions

Gia_Man_tCba_ManBlast (Cba_Man_t *p, int fBarBufs, int fSeq, int fVerbose)
 
Cba_Man_tCba_ManInsertGia (Cba_Man_t *p, Gia_Man_t *pGia)
 
Cba_Man_tCba_ManInsertAbc (Cba_Man_t *p, void *pAbc)
 
Cba_Man_tCba_ManReadCba (char *pFileName)
 DECLARATIONS ///.
 
void Cba_ManWriteCba (char *pFileName, Cba_Man_t *p)
 
void Cba_NtkPrintStatsFull (Cba_Ntk_t *p, int fDistrib, int fVerbose)
 
void Cba_NtkPrintNodes (Cba_Ntk_t *p, int Type)
 
void Cba_NtkPrintDistribOld (Cba_Ntk_t *p)
 
void Cba_ManPrintDistrib (Cba_Man_t *p)
 
void Cba_NtkObjOrder (Cba_Ntk_t *p, Vec_Int_t *vObjs, Vec_Int_t *vNameIds)
 
int Cba_NtkCiFonNum (Cba_Ntk_t *p)
 
int Cba_NtkCoFinNum (Cba_Ntk_t *p)
 
int Cba_NtkCheckComboLoop (Cba_Ntk_t *p)
 
int Cba_ManIsTopoOrder (Cba_Man_t *p)
 
Vec_Int_tCba_NtkCollectDfs (Cba_Ntk_t *p)
 
Cba_Man_tCba_ManCollapse (Cba_Man_t *p)
 
Cba_Man_tCba_ManExtractGroup (Cba_Man_t *p, Vec_Int_t *vObjs)
 
Cba_Man_tCba_ManDeriveFromGia (Cba_Man_t *p, Gia_Man_t *pGia, int fUseXor)
 
Cba_Man_tCba_ManInsertGroup (Cba_Man_t *p, Vec_Int_t *vObjs, Cba_Ntk_t *pSyn)
 
Cba_Man_tPrs_ManBuildCbaBlif (char *pFileName, Vec_Ptr_t *vDes)
 
void Prs_ManReadBlifTest (char *pFileName)
 
Cba_Man_tCba_ManReadBlif (char *pFileName)
 
Cba_Man_tPrs_ManBuildCbaVerilog (char *pFileName, Vec_Ptr_t *vDes)
 
void Prs_ManReadVerilogTest (char *pFileName)
 
Cba_Man_tCba_ManReadVerilog (char *pFileName)
 
void Prs_ManWriteBlif (char *pFileName, Vec_Ptr_t *p)
 
void Cba_ManWriteBlif (char *pFileName, Cba_Man_t *p)
 
void Cba_ManCreatePrimMap (char **pMap)
 DECLARATIONS ///.
 
char * Cba_ManGetSliceName (Cba_Ntk_t *p, int iFon, int RangeId)
 
void Prs_ManWriteVerilog (char *pFileName, Vec_Ptr_t *p)
 
void Cba_ManWriteVerilog (char *pFileName, Cba_Man_t *p, int fInlineConcat)
 

Macro Definition Documentation

◆ Cba_ManForEachNtk

#define Cba_ManForEachNtk ( p,
pNtk,
i )
Value:
for ( i = 1; (i <= Cba_ManNtkNum(p)) && (((pNtk) = Cba_ManNtk(p, i)), 1); i++ )
Cube * p
Definition exorList.c:222

ITERATORS ///.

Definition at line 305 of file cba.h.

305#define Cba_ManForEachNtk( p, pNtk, i ) \
306 for ( i = 1; (i <= Cba_ManNtkNum(p)) && (((pNtk) = Cba_ManNtk(p, i)), 1); i++ )

◆ Cba_NtkForEachBox

#define Cba_NtkForEachBox ( p,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBox(p, i) ) {} else

Definition at line 328 of file cba.h.

328#define Cba_NtkForEachBox( p, i ) \
329 for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBox(p, i) ) {} else

◆ Cba_NtkForEachBoxComb

#define Cba_NtkForEachBoxComb ( p,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBox(p, i) || Cba_ObjIsSeq(p, i) ) {} else

Definition at line 330 of file cba.h.

330#define Cba_NtkForEachBoxComb( p, i ) \
331 for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBox(p, i) || Cba_ObjIsSeq(p, i) ) {} else

◆ Cba_NtkForEachBoxPrim

#define Cba_NtkForEachBoxPrim ( p,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBoxPrim(p, i) ) {} else

Definition at line 334 of file cba.h.

334#define Cba_NtkForEachBoxPrim( p, i ) \
335 for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBoxPrim(p, i) ) {} else

◆ Cba_NtkForEachBoxSeq

#define Cba_NtkForEachBoxSeq ( p,
iObj,
i )
Value:
for ( i = 0; (i < Cba_NtkBoxSeqNum(p)) && (((iObj) = Cba_NtkBoxSeq(p, i)), 1); i++ )

Definition at line 312 of file cba.h.

312#define Cba_NtkForEachBoxSeq( p, iObj, i ) \
313 for ( i = 0; (i < Cba_NtkBoxSeqNum(p)) && (((iObj) = Cba_NtkBoxSeq(p, i)), 1); i++ )

◆ Cba_NtkForEachBoxUser

#define Cba_NtkForEachBoxUser ( p,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBoxUser(p, i) ) {} else

Definition at line 332 of file cba.h.

332#define Cba_NtkForEachBoxUser( p, i ) \
333 for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjIsBoxUser(p, i) ) {} else

◆ Cba_NtkForEachFinFon

#define Cba_NtkForEachFinFon ( p,
iFon,
iFin )
Value:
for ( iFin = 1; iFin < Vec_IntSize(&p->vFinFon) && (((iFon) = Vec_IntEntry(&p->vFinFon, iFin)), 1); iFin++ ) if ( !iFon ) {} else

Definition at line 339 of file cba.h.

339#define Cba_NtkForEachFinFon( p, iFon, iFin ) \
340 for ( iFin = 1; iFin < Vec_IntSize(&p->vFinFon) && (((iFon) = Vec_IntEntry(&p->vFinFon, iFin)), 1); iFin++ ) if ( !iFon ) {} else

◆ Cba_NtkForEachFon

#define Cba_NtkForEachFon ( p,
i )
Value:
for ( i = 1; i < Vec_IntSize(&p->vFonObj); i++ )

Definition at line 337 of file cba.h.

337#define Cba_NtkForEachFon( p, i ) \
338 for ( i = 1; i < Vec_IntSize(&p->vFonObj); i++ )

◆ Cba_NtkForEachFonName

#define Cba_NtkForEachFonName ( p,
NameId,
iFon )
Value:
for ( iFon = 1; iFon < Vec_IntSize(&p->vFonName) && (((NameId) = Vec_IntEntry(&p->vFonName, iFon)), 1); iFon++ ) if ( !NameId ) {} else

Definition at line 341 of file cba.h.

341#define Cba_NtkForEachFonName( p, NameId, iFon ) \
342 for ( iFon = 1; iFon < Vec_IntSize(&p->vFonName) && (((NameId) = Vec_IntEntry(&p->vFonName, iFon)), 1); iFon++ ) if ( !NameId ) {} else

◆ Cba_NtkForEachObj

#define Cba_NtkForEachObj ( p,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjType(p, i) ) {} else

Definition at line 324 of file cba.h.

324#define Cba_NtkForEachObj( p, i ) \
325 for ( i = 1; i < Vec_StrSize(&p->vObjType); i++ ) if ( !Cba_ObjType(p, i) ) {} else

◆ Cba_NtkForEachObjType

#define Cba_NtkForEachObjType ( p,
Type,
i )
Value:
for ( i = 1; i < Vec_StrSize(&p->vObjType) && (((Type) = Cba_ObjType(p, i)), 1); i++ ) if ( !Type ) {} else

Definition at line 326 of file cba.h.

326#define Cba_NtkForEachObjType( p, Type, i ) \
327 for ( i = 1; i < Vec_StrSize(&p->vObjType) && (((Type) = Cba_ObjType(p, i)), 1); i++ ) if ( !Type ) {} else

◆ Cba_NtkForEachPi

#define Cba_NtkForEachPi ( p,
iObj,
i )
Value:
for ( i = 0; (i < Cba_NtkPiNum(p)) && (((iObj) = Cba_NtkPi(p, i)), 1); i++ )

Definition at line 308 of file cba.h.

308#define Cba_NtkForEachPi( p, iObj, i ) \
309 for ( i = 0; (i < Cba_NtkPiNum(p)) && (((iObj) = Cba_NtkPi(p, i)), 1); i++ )

◆ Cba_NtkForEachPiFon

#define Cba_NtkForEachPiFon ( p,
iObj,
iFon,
i )
Value:
for ( i = 0; (i < Cba_NtkPiNum(p)) && (((iObj) = Cba_NtkPi(p, i)), 1) && (((iFon) = Cba_ObjFon0(p, iObj)), 1); i++ )

Definition at line 317 of file cba.h.

317#define Cba_NtkForEachPiFon( p, iObj, iFon, i ) \
318 for ( i = 0; (i < Cba_NtkPiNum(p)) && (((iObj) = Cba_NtkPi(p, i)), 1) && (((iFon) = Cba_ObjFon0(p, iObj)), 1); i++ )

◆ Cba_NtkForEachPioOrder

#define Cba_NtkForEachPioOrder ( p,
iObj,
i )
Value:
for ( i = 0; (i < Cba_NtkPioOrderNum(p)) && (((iObj) = Cba_NtkPioOrder(p, i)), 1); i++ )

Definition at line 314 of file cba.h.

314#define Cba_NtkForEachPioOrder( p, iObj, i ) \
315 for ( i = 0; (i < Cba_NtkPioOrderNum(p)) && (((iObj) = Cba_NtkPioOrder(p, i)), 1); i++ )

◆ Cba_NtkForEachPo

#define Cba_NtkForEachPo ( p,
iObj,
i )
Value:
for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_NtkPo(p, i)), 1); i++ )

Definition at line 310 of file cba.h.

310#define Cba_NtkForEachPo( p, iObj, i ) \
311 for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_NtkPo(p, i)), 1); i++ )

◆ Cba_NtkForEachPoDriver

#define Cba_NtkForEachPoDriver ( p,
iObj,
i )
Value:
for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_ObjFanin(p, Cba_NtkPo(p, i), 0)), 1); i++ )

Definition at line 321 of file cba.h.

321#define Cba_NtkForEachPoDriver( p, iObj, i ) \
322 for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_ObjFanin(p, Cba_NtkPo(p, i), 0)), 1); i++ )

◆ Cba_NtkForEachPoDriverFon

#define Cba_NtkForEachPoDriverFon ( p,
iObj,
iFon,
i )
Value:
for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_NtkPo(p, i)), 1) && (((iFon) = Cba_ObjFinFon(p, iObj, 0)), 1); i++ )

Definition at line 319 of file cba.h.

319#define Cba_NtkForEachPoDriverFon( p, iObj, iFon, i ) \
320 for ( i = 0; (i < Cba_NtkPoNum(p)) && (((iObj) = Cba_NtkPo(p, i)), 1) && (((iFon) = Cba_ObjFinFon(p, iObj, 0)), 1); i++ )

◆ Cba_ObjForEachFin

#define Cba_ObjForEachFin ( p,
iObj,
iFin,
k )
Value:
for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1); iFin++, k++ )

Definition at line 344 of file cba.h.

344#define Cba_ObjForEachFin( p, iObj, iFin, k ) \
345 for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1); iFin++, k++ )

◆ Cba_ObjForEachFinFanin

#define Cba_ObjForEachFinFanin ( p,
iObj,
iFin,
iFanin,
k )
Value:
for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFanin = Cba_FonObj(p, Cba_FinFon(p, iFin))), 1); iFin++, k++ )

Definition at line 350 of file cba.h.

350#define Cba_ObjForEachFinFanin( p, iObj, iFin, iFanin, k ) \
351 for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFanin = Cba_FonObj(p, Cba_FinFon(p, iFin))), 1); iFin++, k++ )

◆ Cba_ObjForEachFinFaninReal

#define Cba_ObjForEachFinFaninReal ( p,
iObj,
iFin,
iFanin,
k )
Value:
for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFanin = Cba_FonObj(p, Cba_FinFon(p, iFin))), 1); iFin++, k++ ) if ( !iFanin ) {} else

Definition at line 352 of file cba.h.

352#define Cba_ObjForEachFinFaninReal( p, iObj, iFin, iFanin, k ) \
353 for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFanin = Cba_FonObj(p, Cba_FinFon(p, iFin))), 1); iFin++, k++ ) if ( !iFanin ) {} else

◆ Cba_ObjForEachFinFon

#define Cba_ObjForEachFinFon ( p,
iObj,
iFin,
iFon,
k )
Value:
for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFon = Cba_FinFon(p, iFin)), 1); iFin++, k++ )

Definition at line 348 of file cba.h.

348#define Cba_ObjForEachFinFon( p, iObj, iFin, iFon, k ) \
349 for ( k = 0, iFin = Cba_ObjFin0(p, iObj); iFin < Cba_ObjFin0(p, iObj+1) && ((iFon = Cba_FinFon(p, iFin)), 1); iFin++, k++ )

◆ Cba_ObjForEachFon

#define Cba_ObjForEachFon ( p,
iObj,
iFon,
k )
Value:
for ( k = 0, iFon = Cba_ObjFon0(p, iObj); iFon < Cba_ObjFon0(p, iObj+1); iFon++, k++ )

Definition at line 346 of file cba.h.

346#define Cba_ObjForEachFon( p, iObj, iFon, k ) \
347 for ( k = 0, iFon = Cba_ObjFon0(p, iObj); iFon < Cba_ObjFon0(p, iObj+1); iFon++, k++ )

Typedef Documentation

◆ Cba_Man_t

typedef struct Cba_Man_t_ Cba_Man_t

Definition at line 46 of file cba.h.

◆ Cba_Ntk_t

typedef typedefABC_NAMESPACE_HEADER_START struct Cba_Ntk_t_ Cba_Ntk_t

INCLUDES ///.

CFile****************************************************************

FileName [cba.h]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Hierarchical word-level netlist.]

Synopsis [External declarations.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - July 21, 2015.]

Revision [

Id
cba.h,v 1.00 2014/11/29 00:00:00 alanmi Exp

] PARAMETERS /// BASIC TYPES ///

Definition at line 45 of file cba.h.

Function Documentation

◆ Cba_ManBlast()

Gia_Man_t * Cba_ManBlast ( Cba_Man_t * p,
int fBarBufs,
int fSeq,
int fVerbose )
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 1037 of file cbaBlast.c.

1038{
1039 return Cba_NtkBlast( Cba_ManRoot(p), fSeq );
1040}
Gia_Man_t * Cba_NtkBlast(Cba_Ntk_t *p, int fSeq)
Definition cbaBlast.c:596
Here is the call graph for this function:

◆ Cba_ManCollapse()

Cba_Man_t * Cba_ManCollapse ( Cba_Man_t * p)
extern

Definition at line 788 of file cbaNtk.c.

789{
790 Cba_Man_t * pNew = Cba_ManAlloc( p->pSpec, 1, Abc_NamRef(p->pStrs), Abc_NamRef(p->pFuns), Abc_NamStart(100, 24), Hash_IntManRef(p->vHash) );
791 Cba_Ntk_t * pRoot = Cba_ManRoot( p ), * pRootNew;
792 Vec_Int_t * vSigs = Vec_IntAlloc( 1000 );
793 int i, iObj, iObjNew, iFon, nObjs = 0, nFins = 0, nFons = 0;
794 Cba_ManDupTypeNames( pNew, p );
795 Cba_ManGetClpStats( p, &nObjs, &nFins, &nFons );
796 pRootNew = Cba_NtkAlloc( pNew, Cba_NtkNameId(pRoot), Cba_NtkPiNum(pRoot), Cba_NtkPoNum(pRoot), nObjs, nFins, nFons );
797 Cba_NtkAdd( pNew, pRootNew );
798 if ( Cba_NtkHasObjNames(pRoot) )
799 Cba_NtkCleanObjNames( pRootNew );
800 if ( Cba_NtkHasFonNames(pRoot) )
801 Cba_NtkCleanFonNames( pRootNew );
802 if ( Cba_NtkHasObjAttrs(pRoot) )
803 Cba_NtkCleanObjAttrs( pRootNew );
804 if ( Cba_ObjAttr(pRoot, 0) )
805 Cba_ObjSetAttrs( pRootNew, 0, Cba_ObjAttrArray(pRoot, 0), Cba_ObjAttrSize(pRoot, 0) );
806 Cba_NtkCleanObjCopies( pRoot );
807 Cba_NtkForEachPiFon( pRoot, iObj, iFon, i )
808 {
809 iObjNew = Cba_ObjDup( pRootNew, pRoot, iObj );
810 Vec_IntPush( vSigs, Cba_ObjFon0(pRootNew, iObjNew) );
811 if ( Cba_NtkHasObjNames(pRoot) )
812 Cba_ObjSetName( pRootNew, iObjNew, Cba_ObjName(pRoot, iObj) );
813 if ( Cba_NtkHasFonNames(pRoot) )
814 Cba_FonSetName( pRootNew, Cba_ObjFon0(pRootNew, iObjNew), Cba_FonName(pRoot, iFon) );
815 if ( Cba_ObjAttr(pRoot, iObj) )
816 Cba_ObjSetAttrs( pRootNew, iObjNew, Cba_ObjAttrArray(pRoot, iObj), Cba_ObjAttrSize(pRoot, iObj) );
817 }
818 assert( Vec_IntSize(vSigs) == Cba_NtkPiNum(pRoot) );
819 Cba_NtkCollapse_rec( pRootNew, pRoot, vSigs );
820 assert( Vec_IntSize(vSigs) == Cba_NtkPoNum(pRoot) );
821 Cba_NtkForEachPoDriverFon( pRoot, iObj, iFon, i )
822 {
823 iObjNew = Cba_ObjDup( pRootNew, pRoot, iObj );
824 Cba_ObjSetFinFon( pRootNew, iObjNew, 0, Vec_IntEntry(vSigs, i) );
825 if ( Cba_NtkHasObjNames(pRoot) )
826 Cba_ObjSetName( pRootNew, iObjNew, Cba_ObjName(pRoot, iObj) );
827 if ( Cba_NtkHasFonNames(pRoot) )
828 Cba_FonSetName( pRootNew, Vec_IntEntry(vSigs, i), Cba_FonName(pRoot, iFon) );
829 if ( Cba_ObjAttr(pRoot, iObj) )
830 Cba_ObjSetAttrs( pRootNew, iObjNew, Cba_ObjAttrArray(pRoot, iObj), Cba_ObjAttrSize(pRoot, iObj) );
831 }
832 Vec_IntFree( vSigs );
833 assert( Cba_NtkObjNum(pRootNew) == Cba_NtkObjNumAlloc(pRootNew) );
834 assert( Cba_NtkFinNum(pRootNew) == Cba_NtkFinNumAlloc(pRootNew) );
835 assert( Cba_NtkFonNum(pRootNew) == Cba_NtkFonNumAlloc(pRootNew) );
836 // create internal node names
837 Cba_NtkMissingFonNames( pRootNew, "m" );
838 //Cba_NtkPrepareSeq( pRootNew );
839 return pNew;
840}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
void Cba_NtkCollapse_rec(Cba_Ntk_t *pNew, Cba_Ntk_t *p, Vec_Int_t *vSigs)
Definition cbaNtk.c:734
void Cba_ManGetClpStats(Cba_Man_t *p, int *nObjs, int *nFins, int *nFons)
Definition cbaNtk.c:708
typedefABC_NAMESPACE_HEADER_START struct Cba_Ntk_t_ Cba_Ntk_t
INCLUDES ///.
Definition cba.h:45
#define Cba_NtkForEachPiFon(p, iObj, iFon, i)
Definition cba.h:317
#define Cba_NtkForEachPoDriverFon(p, iObj, iFon, i)
Definition cba.h:319
struct Cba_Man_t_ Cba_Man_t
Definition cba.h:46
Abc_Nam_t * Abc_NamStart(int nObjs, int nAveSize)
FUNCTION DEFINITIONS ///.
Definition utilNam.c:80
Abc_Nam_t * Abc_NamRef(Abc_Nam_t *p)
Definition utilNam.c:195
#define assert(ex)
Definition util_old.h:213
Here is the call graph for this function:

◆ Cba_ManCreatePrimMap()

void Cba_ManCreatePrimMap ( char ** pMap)
extern

DECLARATIONS ///.

CFile****************************************************************

FileName [cbaWriteVer.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Hierarchical word-level netlist.]

Synopsis [Verilog writer.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - November 29, 2014.]

Revision [

Id
cbaWriteVer.c,v 1.00 2014/11/29 00:00:00 alanmi Exp

] FUNCTION DEFINITIONS /// Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 47 of file cbaWriteVer.c.

48{
49 memset( pMap, 0, sizeof(char *) * CBA_BOX_LAST );
50
51 pMap[ CBA_BOX_SLICE ] = "sli";
52 pMap[ CBA_BOX_CONCAT ] = "icc";
53
54 pMap[ CBA_BOX_BUF ] = "";
55 pMap[ CBA_BOX_INV ] = "~";
56 pMap[ CBA_BOX_AND ] = "&";
57 pMap[ CBA_BOX_NAND ] = "&";
58 pMap[ CBA_BOX_OR ] = "|";
59 pMap[ CBA_BOX_NOR ] = "|";
60 pMap[ CBA_BOX_XOR ] = "^";
61 pMap[ CBA_BOX_XNOR ] = "^";
62 pMap[ CBA_BOX_SHARP ] = "&";
63 pMap[ CBA_BOX_SHARPL ] = "&";
64 pMap[ CBA_BOX_MUX ] = "?";
65 pMap[ CBA_BOX_MAJ ] = "maj";
66 pMap[ CBA_BOX_RAND ] = "&";
67 pMap[ CBA_BOX_RNAND ] = "~&";
68 pMap[ CBA_BOX_ROR ] = "|";
69 pMap[ CBA_BOX_RNOR ] = "~|";
70 pMap[ CBA_BOX_RXOR ] = "^";
71 pMap[ CBA_BOX_RXNOR ] = "~^";
72 pMap[ CBA_BOX_LNOT ] = "!";
73 pMap[ CBA_BOX_LAND ] = "&&";
74 pMap[ CBA_BOX_LNAND ] = "logic nand";
75 pMap[ CBA_BOX_LOR ] = "||";
76 pMap[ CBA_BOX_LNOR ] = "logic nor";
77 pMap[ CBA_BOX_LXOR ] = "^^";
78 pMap[ CBA_BOX_LXNOR ] = "logic xnor";
79 pMap[ CBA_BOX_NMUX ] = "nmux";
80 pMap[ CBA_BOX_SEL ] = "sel";
81 pMap[ CBA_BOX_PSEL ] = "prio-select";
82 pMap[ CBA_BOX_ENC ] = "enc";
83 pMap[ CBA_BOX_PENC ] = "prio-enc";
84 pMap[ CBA_BOX_DEC ] = "dec";
85 pMap[ CBA_BOX_EDEC ] = "enable-dec";
86 pMap[ CBA_BOX_ADD ] = "+";
87 pMap[ CBA_BOX_SUB ] = "-";
88 pMap[ CBA_BOX_MUL ] = "*";
89 pMap[ CBA_BOX_DIV ] = "/";
90 pMap[ CBA_BOX_MOD ] = "%";
91 pMap[ CBA_BOX_REM ] = "%";
92 pMap[ CBA_BOX_POW ] = "**";
93 pMap[ CBA_BOX_MIN ] = "-";
94 pMap[ CBA_BOX_SQRT ] = "@";
95 pMap[ CBA_BOX_ABS ] = "abs";
96 pMap[ CBA_BOX_LTHAN ] = "<";
97 pMap[ CBA_BOX_LETHAN ] = "<=";
98 pMap[ CBA_BOX_METHAN ] = ">=";
99 pMap[ CBA_BOX_MTHAN ] = ">";
100 pMap[ CBA_BOX_EQU ] = "==";
101 pMap[ CBA_BOX_NEQU ] = "!=";
102 pMap[ CBA_BOX_SHIL ] = "<<";
103 pMap[ CBA_BOX_SHIR ] = ">>";
104 pMap[ CBA_BOX_SHILA ] = "<<<";
105 pMap[ CBA_BOX_SHIRA ] = ">>>";
106 pMap[ CBA_BOX_ROTL ] = "rotL";
107 pMap[ CBA_BOX_ROTR ] = "rotR";
108
109 pMap[ CBA_BOX_TRI ] = "tri";
110 pMap[ CBA_BOX_RAM ] = "ram";
111 pMap[ CBA_BOX_RAMR ] = "ramR";
112 pMap[ CBA_BOX_RAMW ] = "ramW";
113 pMap[ CBA_BOX_RAMWC ] = "ramWC";
114 pMap[ CBA_BOX_RAMBOX ] = "ramBox";
115
116 pMap[ CBA_BOX_LATCH ] = "lat";
117 pMap[ CBA_BOX_LATCHRS] = "latrs";
118 pMap[ CBA_BOX_DFF ] = "dff";
119 pMap[ CBA_BOX_DFFRS ] = "dffrs";
120}
@ CBA_BOX_RNAND
Definition cbaTypes.h:72
@ CBA_BOX_RAMW
Definition cbaTypes.h:129
@ CBA_BOX_SHIRA
Definition cbaTypes.h:117
@ CBA_BOX_NEQU
Definition cbaTypes.h:112
@ CBA_BOX_LXNOR
Definition cbaTypes.h:84
@ CBA_BOX_INV
Definition cbaTypes.h:51
@ CBA_BOX_LTHAN
Definition cbaTypes.h:107
@ CBA_BOX_MUL
Definition cbaTypes.h:96
@ CBA_BOX_NOR
Definition cbaTypes.h:55
@ CBA_BOX_MOD
Definition cbaTypes.h:99
@ CBA_BOX_DIV
Definition cbaTypes.h:98
@ CBA_BOX_XNOR
Definition cbaTypes.h:57
@ CBA_BOX_LOR
Definition cbaTypes.h:81
@ CBA_BOX_LNOR
Definition cbaTypes.h:82
@ CBA_BOX_PENC
Definition cbaTypes.h:90
@ CBA_BOX_RAM
Definition cbaTypes.h:127
@ CBA_BOX_LNOT
Definition cbaTypes.h:78
@ CBA_BOX_LNAND
Definition cbaTypes.h:80
@ CBA_BOX_SHARP
Definition cbaTypes.h:58
@ CBA_BOX_RXOR
Definition cbaTypes.h:75
@ CBA_BOX_BUF
Definition cbaTypes.h:50
@ CBA_BOX_SHIL
Definition cbaTypes.h:114
@ CBA_BOX_RAMBOX
Definition cbaTypes.h:133
@ CBA_BOX_METHAN
Definition cbaTypes.h:109
@ CBA_BOX_SHILA
Definition cbaTypes.h:116
@ CBA_BOX_RAMR
Definition cbaTypes.h:128
@ CBA_BOX_ENC
Definition cbaTypes.h:89
@ CBA_BOX_SHIR
Definition cbaTypes.h:115
@ CBA_BOX_NMUX
Definition cbaTypes.h:86
@ CBA_BOX_MIN
Definition cbaTypes.h:102
@ CBA_BOX_REM
Definition cbaTypes.h:100
@ CBA_BOX_LATCHRS
Definition cbaTypes.h:136
@ CBA_BOX_NAND
Definition cbaTypes.h:53
@ CBA_BOX_RNOR
Definition cbaTypes.h:74
@ CBA_BOX_MUX
Definition cbaTypes.h:60
@ CBA_BOX_RXNOR
Definition cbaTypes.h:76
@ CBA_BOX_ROTR
Definition cbaTypes.h:119
@ CBA_BOX_PSEL
Definition cbaTypes.h:88
@ CBA_BOX_SEL
Definition cbaTypes.h:87
@ CBA_BOX_ROTL
Definition cbaTypes.h:118
@ CBA_BOX_ABS
Definition cbaTypes.h:104
@ CBA_BOX_RAMWC
Definition cbaTypes.h:130
@ CBA_BOX_SHARPL
Definition cbaTypes.h:59
@ CBA_BOX_LAST
Definition cbaTypes.h:144
@ CBA_BOX_POW
Definition cbaTypes.h:101
@ CBA_BOX_TRI
Definition cbaTypes.h:126
@ CBA_BOX_ROR
Definition cbaTypes.h:73
@ CBA_BOX_SQRT
Definition cbaTypes.h:103
@ CBA_BOX_EQU
Definition cbaTypes.h:111
@ CBA_BOX_LETHAN
Definition cbaTypes.h:108
@ CBA_BOX_RAND
Definition cbaTypes.h:71
@ CBA_BOX_AND
Definition cbaTypes.h:52
@ CBA_BOX_SLICE
Definition cbaTypes.h:141
@ CBA_BOX_EDEC
Definition cbaTypes.h:92
@ CBA_BOX_LAND
Definition cbaTypes.h:79
@ CBA_BOX_LATCH
Definition cbaTypes.h:135
@ CBA_BOX_ADD
Definition cbaTypes.h:94
@ CBA_BOX_OR
Definition cbaTypes.h:54
@ CBA_BOX_DFFRS
Definition cbaTypes.h:139
@ CBA_BOX_DFF
Definition cbaTypes.h:137
@ CBA_BOX_MTHAN
Definition cbaTypes.h:110
@ CBA_BOX_MAJ
Definition cbaTypes.h:61
@ CBA_BOX_CONCAT
Definition cbaTypes.h:142
@ CBA_BOX_DEC
Definition cbaTypes.h:91
@ CBA_BOX_LXOR
Definition cbaTypes.h:83
@ CBA_BOX_SUB
Definition cbaTypes.h:95
@ CBA_BOX_XOR
Definition cbaTypes.h:56
char * memset()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Cba_ManDeriveFromGia()

Cba_Man_t * Cba_ManDeriveFromGia ( Cba_Man_t * p,
Gia_Man_t * pGia,
int fUseXor )
extern

Definition at line 1053 of file cbaNtk.c.

1054{
1055 Cba_Man_t * p = Cba_ManAlloc( pGia->pSpec, 1, pOld ? Abc_NamRef(pOld->pStrs) : NULL, pOld ? Abc_NamRef(pOld->pFuns) : NULL, NULL, NULL );
1056 Cba_Ntk_t * pNtk = Cba_NtkAlloc( p, Abc_NamStrFindOrAdd(p->pStrs, pGia->pName, NULL), Gia_ManCiNum(pGia), Gia_ManCoNum(pGia), 1000, 2000, 2000 );
1057 Vec_Int_t * vLit2Fon = Vec_IntStartFull( 2*Gia_ManObjNum(pGia) );
1058 int i, iObj, iObjNew, NameId, iLit0, iFon0;
1059 Gia_Obj_t * pObj;
1060 //Cba_ManPrepareTypeNames( p );
1061 Cba_NtkAdd( p, pNtk );
1062 Cba_NtkCleanObjNames( pNtk );
1063 Gia_ManForEachCiId( pGia, iObj, i )
1064 {
1065 NameId = pGia->vNamesIn? Abc_NamStrFindOrAdd(p->pStrs, (char*)Vec_PtrEntry(pGia->vNamesIn, i), NULL) : Cba_NtkNewStrId(pNtk, "i%d", i);
1066 iObjNew = Cba_ObjAlloc( pNtk, CBA_OBJ_PI, 0, 1 );
1067 Cba_ObjSetName( pNtk, iObjNew, NameId );
1068 Vec_IntWriteEntry( vLit2Fon, Abc_Var2Lit(iObj, 0), Cba_ObjFon0(pNtk, iObjNew) );
1069 }
1070 Gia_ManForEachAndId( pGia, iObj )
1071 Cba_NtkInsertGiaObj( pNtk, pGia, iObj, vLit2Fon, fUseXor );
1072 // create inverters if needed
1073 Gia_ManForEachCoId( pGia, iObj, i )
1074 {
1075 pObj = Gia_ManObj( pGia, iObj );
1076 iLit0 = Gia_ObjFaninLit0( pObj, iObj );
1077 iFon0 = Cba_NtkInsertGiaLit( pNtk, iLit0, vLit2Fon, fUseXor ); // can be const!
1078 }
1079 Gia_ManForEachCoId( pGia, iObj, i )
1080 {
1081 pObj = Gia_ManObj( pGia, iObj );
1082 iLit0 = Gia_ObjFaninLit0( pObj, iObj );
1083 iFon0 = Cba_NtkInsertGiaLit( pNtk, iLit0, vLit2Fon, fUseXor ); // can be const!
1084 iObjNew = Cba_ObjAlloc( pNtk, CBA_BOX_BUF, 1, 1 );
1085 Cba_ObjSetFinFon( pNtk, iObjNew, 0, iFon0 );
1086 iFon0 = Cba_ObjFon0(pNtk, iObjNew); // non-const fon unique for this output
1087 NameId = pGia->vNamesOut? Abc_NamStrFindOrAdd(p->pStrs, (char*)Vec_PtrEntry(pGia->vNamesOut, i), NULL) : Cba_NtkNewStrId(pNtk, "o%d", i);
1088 iObjNew = Cba_ObjAlloc( pNtk, CBA_OBJ_PO, 1, 0 );
1089 Cba_ObjSetName( pNtk, iObjNew, NameId );
1090 Cba_ObjSetFinFon( pNtk, iObjNew, 0, iFon0 );
1091 }
1092 Cba_NtkCleanFonNames( pNtk );
1093 Cba_NtkCreateFonNames( pNtk, "a" );
1094 Vec_IntFree( vLit2Fon );
1095 return p;
1096}
@ CBA_OBJ_PI
Definition cbaTypes.h:41
@ CBA_OBJ_PO
Definition cbaTypes.h:42
#define Gia_ManForEachCoId(p, Id, i)
Definition gia.h:1240
struct Gia_Obj_t_ Gia_Obj_t
Definition gia.h:76
#define Gia_ManForEachAndId(p, i)
Definition gia.h:1216
#define Gia_ManForEachCiId(p, Id, i)
Definition gia.h:1230
Vec_Ptr_t * vNamesIn
Definition gia.h:181
char * pSpec
Definition gia.h:100
Vec_Ptr_t * vNamesOut
Definition gia.h:182
char * pName
Definition gia.h:99
int Abc_NamStrFindOrAdd(Abc_Nam_t *p, char *pStr, int *pfFound)
Definition utilNam.c:453
Here is the call graph for this function:

◆ Cba_ManExtractGroup()

Cba_Man_t * Cba_ManExtractGroup ( Cba_Man_t * p,
Vec_Int_t * vObjs )
extern

Definition at line 959 of file cbaNtk.c.

960{
961 Cba_Man_t * pNew = Cba_ManAlloc( p->pSpec, 1, Abc_NamRef(p->pStrs), Abc_NamRef(p->pFuns), Abc_NamStart(100, 24), Hash_IntManRef(p->vHash) );
962 Cba_Ntk_t * pRoot = Cba_ManRoot( p ), * pRootNew;
963 Vec_Int_t * vFonIns = Cba_NtkCollectInFons( pRoot, vObjs );
964 Vec_Int_t * vFonOuts = Cba_NtkCollectOutFons( pRoot, vObjs );
965 int nObjs, nFins, nFons;
966 Cba_ManDupTypeNames( pNew, p );
967 // collect stats
968 Cba_NtkCollectGroupStats( pRoot, vObjs, &nFins, &nFons );
969 nObjs = Vec_IntSize(vObjs) + Vec_IntSize(vFonIns) + Vec_IntSize(vFonOuts);
970 nFins += Vec_IntSize(vFonOuts);
971 nFons += Vec_IntSize(vFonIns);
972 // create network
973 pRootNew = Cba_NtkAlloc( pNew, Cba_NtkNameId(pRoot), Vec_IntSize(vFonIns), Vec_IntSize(vFonOuts), nObjs, nFins, nFons );
974 Cba_NtkAdd( pNew, pRootNew );
975 if ( Cba_NtkHasObjNames(pRoot) )
976 Cba_NtkCleanObjNames( pRootNew );
977 if ( Cba_NtkHasFonNames(pRoot) )
978 Cba_NtkCleanFonNames( pRootNew );
979 // add group nodes
980 Cba_ManExtractGroupInt( pRootNew, pRoot, vObjs, vFonIns, vFonOuts );
981 Cba_NtkMissingFonNames( pRootNew, "b" );
982 //Cba_NtkPrepareSeq( pRootNew );
983 // cleanup
984 Vec_IntFree( vFonIns );
985 Vec_IntFree( vFonOuts );
986 return pNew;
987}
void Cba_ManExtractGroupInt(Cba_Ntk_t *pNew, Cba_Ntk_t *p, Vec_Int_t *vObjs, Vec_Int_t *vFonIns, Vec_Int_t *vFonOuts)
Definition cbaNtk.c:911
Vec_Int_t * Cba_NtkCollectInFons(Cba_Ntk_t *p, Vec_Int_t *vObjs)
Definition cbaNtk.c:855
void Cba_NtkCollectGroupStats(Cba_Ntk_t *p, Vec_Int_t *vObjs, int *pnFins, int *pnFons)
Definition cbaNtk.c:900
Vec_Int_t * Cba_NtkCollectOutFons(Cba_Ntk_t *p, Vec_Int_t *vObjs)
Definition cbaNtk.c:876
Here is the call graph for this function:

◆ Cba_ManGetSliceName()

char * Cba_ManGetSliceName ( Cba_Ntk_t * p,
int iFon,
int RangeId )
extern

Definition at line 381 of file cbaWriteVer.c.

382{
383 int Left = Cba_NtkRangeLeft(p, RangeId);
384 int Right = Cba_NtkRangeRight(p, RangeId);
385 char * pName = Cba_FonNameStr(p, iFon);
386 if ( Cba_NameIsLegalInVerilog(pName, Cba_FonName(p, iFon)) )
387 if ( Left == Right )
388 return Vec_StrPrintF( Abc_NamBuffer(Cba_NtkNam(p)), "%s[%d]", pName, Right );
389 else
390 return Vec_StrPrintF( Abc_NamBuffer(Cba_NtkNam(p)), "%s[%d:%d]", pName, Left, Right );
391 else
392 if ( Left == Right )
393 return Vec_StrPrintF( Abc_NamBuffer(Cba_NtkNam(p)), "\\%s [%d]", pName, Right );
394 else
395 return Vec_StrPrintF( Abc_NamBuffer(Cba_NtkNam(p)), "\\%s [%d:%d]", pName, Left, Right );
396}
Vec_Str_t * Abc_NamBuffer(Abc_Nam_t *p)
Definition utilNam.c:571
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Cba_ManInsertAbc()

Cba_Man_t * Cba_ManInsertAbc ( Cba_Man_t * p,
void * pAbc )
extern

Definition at line 1057 of file cbaBlast.c.

1058{
1059 Abc_Ntk_t * pNtk = (Abc_Ntk_t *)pAbc;
1060 return (Cba_Man_t *)pNtk;
1061}
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115

◆ Cba_ManInsertGia()

Cba_Man_t * Cba_ManInsertGia ( Cba_Man_t * p,
Gia_Man_t * pGia )
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 1053 of file cbaBlast.c.

1054{
1055 return NULL;
1056}

◆ Cba_ManInsertGroup()

Cba_Man_t * Cba_ManInsertGroup ( Cba_Man_t * p,
Vec_Int_t * vObjs,
Cba_Ntk_t * pSyn )
extern

Definition at line 1170 of file cbaNtk.c.

1171{
1172 Cba_NtkInsertGroup( Cba_ManRoot(p), vObjs, pSyn );
1173 Cba_NtkCheckComboLoop( Cba_ManRoot(p) );
1174 return Cba_ManDup( p, Cba_NtkCollectDfs );
1175}
int Cba_NtkCheckComboLoop(Cba_Ntk_t *p)
Definition cbaNtk.c:578
void Cba_NtkInsertGroup(Cba_Ntk_t *p, Vec_Int_t *vObjs, Cba_Ntk_t *pSyn)
Definition cbaNtk.c:1110
Vec_Int_t * Cba_NtkCollectDfs(Cba_Ntk_t *p)
Definition cbaNtk.c:640
Here is the call graph for this function:

◆ Cba_ManIsTopoOrder()

int Cba_ManIsTopoOrder ( Cba_Man_t * p)
extern

Definition at line 540 of file cbaNtk.c.

541{
542 Cba_Ntk_t * pNtk; int i;
543 Cba_ManForEachNtk( p, pNtk, i )
544 if ( !Cba_NtkIsTopoOrder(pNtk) )
545 return 0;
546 return 1;
547}
int Cba_NtkIsTopoOrder(Cba_Ntk_t *p)
Definition cbaNtk.c:498
#define Cba_ManForEachNtk(p, pNtk, i)
ITERATORS ///.
Definition cba.h:305
Here is the call graph for this function:

◆ Cba_ManPrintDistrib()

void Cba_ManPrintDistrib ( Cba_Man_t * p)
extern

Definition at line 354 of file cbaNtk.c.

355{
356 Cba_Ntk_t * pNtk; int i;
357 int pCounts[CBA_BOX_LAST] = {0};
358 int * pUserCounts = ABC_CALLOC( int, Cba_ManNtkNum(p) + 1 );
359 Cba_ManCreatePrimMap( p->pTypeNames );
360 Cba_ManForEachNtk( p, pNtk, i )
361 Cba_NtkCollectDistrib( pNtk, pCounts, pUserCounts );
362 Cba_ManPrintDistribStat( p, pCounts, pUserCounts );
363 ABC_FREE( pUserCounts );
364}
#define ABC_CALLOC(type, num)
Definition abc_global.h:265
#define ABC_FREE(obj)
Definition abc_global.h:267
void Cba_NtkCollectDistrib(Cba_Ntk_t *p, int *pCounts, int *pUserCounts)
Definition cbaNtk.c:310
void Cba_ManPrintDistribStat(Cba_Man_t *p, int *pCounts, int *pUserCounts)
Definition cbaNtk.c:342
void Cba_ManCreatePrimMap(char **pMap)
DECLARATIONS ///.
Definition cbaWriteVer.c:47
Here is the call graph for this function:

◆ Cba_ManReadBlif()

Cba_Man_t * Cba_ManReadBlif ( char * pFileName)
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 629 of file cbaReadBlif.c.

630{
631 Cba_Man_t * p = NULL;
632 Vec_Ptr_t * vDes = Prs_ManReadBlif( pFileName );
633 if ( vDes && Vec_PtrSize(vDes) )
634 p = Prs_ManBuildCbaBlif( pFileName, vDes );
635 if ( vDes )
636 Prs_ManVecFree( vDes );
637 return p;
638}
Cba_Man_t * Prs_ManBuildCbaBlif(char *pFileName, Vec_Ptr_t *vDes)
Vec_Ptr_t * Prs_ManReadBlif(char *pFileName)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
Here is the call graph for this function:

◆ Cba_ManReadCba()

Cba_Man_t * Cba_ManReadCba ( char * pFileName)
extern

DECLARATIONS ///.

CFile****************************************************************

FileName [cbaCba.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Hierarchical word-level netlist.]

Synopsis [Reading binary representation.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - July 21, 2015.]

Revision [

Id
cbaCba.c,v 1.00 2014/11/29 00:00:00 alanmi Exp

] FUNCTION DEFINITIONS /// Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 44 of file cbaCba.c.

45{
46 return NULL;
47}

◆ Cba_ManReadVerilog()

Cba_Man_t * Cba_ManReadVerilog ( char * pFileName)
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 2165 of file cbaReadVer.c.

2166{
2167 Cba_Man_t * p = NULL;
2168 Vec_Ptr_t * vDes = Prs_ManReadVerilog( pFileName );
2169 if ( vDes && Vec_PtrSize(vDes) )
2170 p = Prs_ManBuildCbaVerilog( pFileName, vDes );
2171 if ( vDes )
2172 Prs_ManVecFree( vDes );
2173 return p;
2174}
Vec_Ptr_t * Prs_ManReadVerilog(char *pFileName)
Cba_Man_t * Prs_ManBuildCbaVerilog(char *pFileName, Vec_Ptr_t *vDes)
Here is the call graph for this function:

◆ Cba_ManWriteBlif()

void Cba_ManWriteBlif ( char * pFileName,
Cba_Man_t * p )
extern

Definition at line 187 of file cbaWriteBlif.c.

188{
189 FILE * pFile;
190 Cba_Ntk_t * pNtk;
191 int i;
192 // check the library
193 if ( p->pMioLib && p->pMioLib != Abc_FrameReadLibGen() )
194 {
195 printf( "Genlib library used in the mapped design is not longer a current library.\n" );
196 return;
197 }
198 pFile = fopen( pFileName, "wb" );
199 if ( pFile == NULL )
200 {
201 printf( "Cannot open output file \"%s\".\n", pFileName );
202 return;
203 }
204 fprintf( pFile, "# Design \"%s\" written via CBA package in ABC on %s\n\n", Cba_ManName(p), Extra_TimeStamp() );
205// Cba_ManAssignInternWordNames( p );
206 Cba_ManForEachNtk( p, pNtk, i )
207 Cba_ManWriteBlifNtk( pFile, pNtk );
208 fclose( pFile );
209}
ABC_DLL void * Abc_FrameReadLibGen()
Definition mainFrame.c:59
void Cba_ManWriteBlifNtk(FILE *pFile, Cba_Ntk_t *p)
char * Extra_TimeStamp()
Here is the call graph for this function:

◆ Cba_ManWriteCba()

void Cba_ManWriteCba ( char * pFileName,
Cba_Man_t * p )
extern

Definition at line 48 of file cbaCba.c.

49{
50}

◆ Cba_ManWriteVerilog()

void Cba_ManWriteVerilog ( char * pFileName,
Cba_Man_t * p,
int fInlineConcat )
extern

Definition at line 975 of file cbaWriteVer.c.

976{
977 Cba_Ntk_t * pNtk; int i;
978 // check the library
979 if ( p->pMioLib && p->pMioLib != Abc_FrameReadLibGen() )
980 {
981 printf( "Genlib library used in the mapped design is not longer a current library.\n" );
982 return;
983 }
984 Cba_ManCreatePrimMap( p->pTypeNames );
985 // derive the stream
986 p->nOpens = 1;
987 Vec_StrClear( &p->vOut );
988 Vec_StrClear( &p->vOut2 );
989 Vec_StrPrintStr( &p->vOut, "// Design \"" );
990 Vec_StrPrintStr( &p->vOut, Cba_ManName(p) );
991 Vec_StrPrintStr( &p->vOut, "\" written via CBA package in ABC on " );
992 Vec_StrPrintStr( &p->vOut, Extra_TimeStamp() );
993 Vec_StrPrintStr( &p->vOut, "\n\n" );
994 Cba_ManForEachNtk( p, pNtk, i )
995 Cba_ManWriteVerilogNtk( pNtk, fInlineConcat );
996 // dump into file
997 if ( Vec_StrSize(&p->vOut) > 0 )
998 {
999 FILE * pFile = fopen( pFileName, "wb" );
1000 if ( pFile == NULL )
1001 printf( "Cannot open file \"%s\" for writing.\n", pFileName );
1002 else
1003 {
1004 fwrite( Vec_StrArray(&p->vOut), 1, Vec_StrSize(&p->vOut), pFile );
1005 fclose( pFile );
1006 }
1007 }
1008}
void Cba_ManWriteVerilogNtk(Cba_Ntk_t *p, int fInlineConcat)
ABC_NAMESPACE_IMPL_START void Cba_ManCreatePrimMap(char **pMap)
DECLARATIONS ///.
Definition cbaWriteVer.c:47
Here is the call graph for this function:

◆ Cba_NtkCheckComboLoop()

int Cba_NtkCheckComboLoop ( Cba_Ntk_t * p)
extern

Definition at line 578 of file cbaNtk.c.

579{
580 int iObj;
581 Cba_NtkCleanObjCopies( p ); // -1 = not visited; 0 = on the path; 1 = finished
582 Cba_NtkForEachBox( p, iObj )
583 if ( !Cba_ObjIsSeq(p, iObj) )
584 if ( !Cba_NtkCheckComboLoop_rec( p, iObj ) )
585 {
586 printf( "Cyclic dependency of user boxes is detected.\n" );
587 return 0;
588 }
589 return 1;
590}
int Cba_NtkCheckComboLoop_rec(Cba_Ntk_t *p, int iObj)
Definition cbaNtk.c:560
#define Cba_NtkForEachBox(p, i)
Definition cba.h:328
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Cba_NtkCiFonNum()

int Cba_NtkCiFonNum ( Cba_Ntk_t * p)
extern

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

Synopsis [Returns the number of CI fons.]

Description []

SideEffects []

SeeAlso []

Definition at line 472 of file cbaNtk.c.

473{
474 int i, iObj, Count = Cba_NtkPiNum(p);
475 Cba_NtkForEachBoxSeq( p, iObj, i )
476 Count += Cba_ObjFonNum(p, iObj);
477 return Count;
478}
#define Cba_NtkForEachBoxSeq(p, iObj, i)
Definition cba.h:312

◆ Cba_NtkCoFinNum()

int Cba_NtkCoFinNum ( Cba_Ntk_t * p)
extern

Definition at line 479 of file cbaNtk.c.

480{
481 int i, iObj, Count = Cba_NtkPoNum(p);
482 Cba_NtkForEachBoxSeq( p, iObj, i )
483 Count += Cba_ObjFinNum(p, iObj);
484 return Count;
485}

◆ Cba_NtkCollectDfs()

Vec_Int_t * Cba_NtkCollectDfs ( Cba_Ntk_t * p)
extern

Definition at line 640 of file cbaNtk.c.

641{
642 int i, k, iObj, iFin, iFanin;
643 Vec_Int_t * vObjs = Vec_IntAlloc( Cba_NtkObjNum(p) );
644 // collect PIs and seq boxes
645 Cba_NtkForEachPi( p, iObj, i )
646 Vec_IntPush( vObjs, iObj );
647 Cba_NtkForEachBoxSeq( p, iObj, i )
648 Vec_IntPush( vObjs, iObj );
649 // prepare leaves
650 Cba_NtkCleanObjCopies( p );
651 Vec_IntForEachEntry( vObjs, iObj, i )
652 Cba_ObjSetCopy( p, iObj, 0 );
653 // collect internal
654 Cba_NtkForEachPo( p, iObj, i )
655 Cba_ObjForEachFinFaninReal( p, iObj, iFin, iFanin, k )
656 Cba_NtkCollectDfs_rec( p, iFanin, vObjs );
657 Cba_NtkForEachBoxSeq( p, iObj, i )
658 Cba_ObjForEachFinFaninReal( p, iObj, iFin, iFanin, k )
659 Cba_NtkCollectDfs_rec( p, iFanin, vObjs );
660 // collect POs
661 Cba_NtkForEachPo( p, iObj, i )
662 Vec_IntPush( vObjs, iObj );
663 assert( Vec_IntSize(vObjs) <= Cba_NtkObjNum(p) );
664 if ( Vec_IntSize(vObjs) != Cba_NtkObjNum(p) && !Abc_FrameReadFlag("silentmode") )
665 {
666 int iObj = Cba_NtkFindMissing( vObjs, Cba_NtkObjNum(p) );
667 printf( "Warning: DSF ordering for module \"%s\" collected %d out of %d objects.\n", Cba_NtkName(p), Vec_IntSize(vObjs), Cba_NtkObjNum(p) );
668 printf( " For example, object %d with name \"%s\" is not reachable from outputs.\n",
669 iObj, iObj > 0 ? Cba_FonNameStr( p, Cba_ObjFon0(p, iObj) ) : "<unknown>" );
670 }
671 return vObjs;
672}
ABC_DLL char * Abc_FrameReadFlag(char *pFlag)
Definition mainFrame.c:69
int Cba_NtkFindMissing(Vec_Int_t *vObjs, int nObjs)
Definition cbaNtk.c:603
void Cba_NtkCollectDfs_rec(Cba_Ntk_t *p, int iObj, Vec_Int_t *vObjs)
Definition cbaNtk.c:630
#define Cba_NtkForEachPo(p, iObj, i)
Definition cba.h:310
#define Cba_NtkForEachPi(p, iObj, i)
Definition cba.h:308
#define Cba_ObjForEachFinFaninReal(p, iObj, iFin, iFanin, k)
Definition cba.h:352
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Definition vecInt.h:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Cba_NtkObjOrder()

void Cba_NtkObjOrder ( Cba_Ntk_t * p,
Vec_Int_t * vObjs,
Vec_Int_t * vNameIds )
extern

Definition at line 428 of file cbaNtk.c.

429{
430 char Buffer[1000], * pName;
431 Vec_Ptr_t * vNames;
432 int i, iObj;
433 if ( Vec_IntSize(vObjs) < 2 )
434 return;
435 vNames = Vec_PtrAlloc( Vec_IntSize(vObjs) );
436 Vec_IntForEachEntry( vObjs, iObj, i )
437 {
438 char * pTypeName = Cba_NtkTypeName( p, Cba_ObjType(p, iObj) );
439 char * pInstName = vNameIds ? Cba_NtkStr(p, Vec_IntEntry(vNameIds, i)) : Cba_ObjNameStr(p, iObj);
440 sprintf( Buffer, "%s_%s_%d", pTypeName, pInstName, iObj );
441 Vec_PtrPush( vNames, Abc_UtilStrsav(Buffer) );
442 }
443 // print before
444// Vec_PtrForEachEntry( char *, vNames, pName, i )
445// printf( "%s \n", pName );
446// printf( "\n" );
447 // do the sorting
448 Vec_PtrSort( vNames, (int (*)(const void *, const void *))Cba_StrCmp );
449 // print after
450// Vec_PtrForEachEntry( char *, vNames, pName, i )
451// printf( "%s \n", pName );
452// printf( "\n" );
453 // reload in a new order
454 Vec_IntClear( vObjs );
455 Vec_PtrForEachEntry( char *, vNames, pName, i )
456 Vec_IntPush( vObjs, atoi(strrchr(pName, '_')+1) );
457 Vec_PtrFreeFree( vNames );
458}
int Cba_StrCmp(char **pp1, char **pp2)
Definition cbaNtk.c:418
char * strrchr()
char * sprintf()
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
Definition vecPtr.h:55
Here is the call graph for this function:

◆ Cba_NtkPrintDistribOld()

void Cba_NtkPrintDistribOld ( Cba_Ntk_t * p)
extern

Definition at line 332 of file cbaNtk.c.

333{
334 int pCounts[CBA_BOX_LAST] = {0};
335 int * pUserCounts = ABC_CALLOC( int, Cba_ManNtkNum(p->pDesign) + 1 );
336 Cba_ManCreatePrimMap( p->pDesign->pTypeNames );
337 Cba_NtkCollectDistrib( p, pCounts, pUserCounts );
338 Cba_NtkPrintDistribStat( p, pCounts, pUserCounts );
339 ABC_FREE( pUserCounts );
340}
void Cba_NtkPrintDistribStat(Cba_Ntk_t *p, int *pCounts, int *pUserCounts)
Definition cbaNtk.c:320
Here is the call graph for this function:

◆ Cba_NtkPrintNodes()

void Cba_NtkPrintNodes ( Cba_Ntk_t * p,
int Type )
extern

Definition at line 242 of file cbaNtk.c.

243{
244 int i, iFon0, iFon1, Counter = 0;
245 char * pTypeNames[CBA_BOX_LAST];
246 Cba_ManCreatePrimMap( pTypeNames );
247 printf( "Operation %s\n", pTypeNames[Type] );
248 Cba_NtkForEachObj( p, i )
249 {
250 if ( (int)Type != Type )
251 continue;
252 iFon0 = Cba_ObjFinFon(p, i, 0);
253 iFon1 = Cba_ObjFinFon(p, i, 1);
254
255 printf( "%8d :", Counter++ );
256 printf( "%8d : ", i );
257 printf( "%3d%s = ", Cba_ObjRangeSize(p, i), Cba_ObjSigned(p, i) ? "s" : " " );
258 printf( "%3d%s %s ", Cba_ObjRangeSize(p, Cba_ObjFinFon(p, i, 0)), Cba_ObjSigned(p, iFon0) ? "s" : " ", pTypeNames[Type] );
259 printf( "%3d%s ", Cba_ObjRangeSize(p, Cba_ObjFinFon(p, i, 1)), Cba_ObjSigned(p, iFon1) ? "s" : " " );
260 printf( " : " );
261 printf( "%-12s = ", Cba_ObjNameStr(p, i) );
262 printf( "%-12s %s ", Cba_FonIsConst(iFon0) ? Cba_NtkConst(p, Cba_FonConst(iFon0)) : Cba_FonNameStr(p, iFon0), pTypeNames[Type] );
263 printf( "%-12s ", Cba_FonIsConst(iFon1) ? Cba_NtkConst(p, Cba_FonConst(iFon1)) : Cba_FonNameStr(p, iFon1) );
264 printf( "\n" );
265 }
266}
#define Cba_NtkForEachObj(p, i)
Definition cba.h:324
Here is the call graph for this function:

◆ Cba_NtkPrintStatsFull()

void Cba_NtkPrintStatsFull ( Cba_Ntk_t * p,
int fDistrib,
int fVerbose )
extern

Definition at line 267 of file cbaNtk.c.

268{
269 int i;
270 char * pTypeNames[CBA_BOX_LAST];
271 Cba_ManCreatePrimMap( pTypeNames );
272 printf( "%-20s : ", Cba_NtkName(p) );
273 printf( "PI = %4d ", Cba_NtkPiNum(p) );
274 printf( "PO = %4d ", Cba_NtkPoNum(p) );
275 printf( "FF = %4d ", Cba_NtkBoxSeqNum(p) );
276 printf( "Obj = %6d ", Cba_NtkObjNum(p) );
277 printf( "Mem = %.3f MB", 1.0*Cba_NtkMemory(p)/(1<<20) );
278 printf( "\n" );
279 if ( fDistrib )
280 {
281 Cba_NtkPrintDistrib( p, fVerbose );
282 return;
283 }
284 if ( !fVerbose )
285 return;
286 printf( "Node type statistics:\n" );
287 for ( i = 1; i < CBA_BOX_LAST; i++ )
288 {
289 if ( !p->pDesign->nObjs[i] )
290 continue;
291 if ( p->pDesign->nAnds[0] && p->pDesign->nAnds[i] )
292 printf( "%2d : %-8s %6d %7.2f %%\n", i, pTypeNames[i], p->pDesign->nObjs[i], 100.0*p->pDesign->nAnds[i]/p->pDesign->nAnds[0] );
293 else
294 printf( "%2d : %-8s %6d\n", i, pTypeNames[i], p->pDesign->nObjs[i] );
295 }
296}
void Cba_NtkPrintDistrib(Cba_Ntk_t *p, int fVerbose)
Definition cbaNtk.c:89
Here is the call graph for this function:

◆ Prs_ManBuildCbaBlif()

Cba_Man_t * Prs_ManBuildCbaBlif ( char * pFileName,
Vec_Ptr_t * vDes )
extern

Definition at line 587 of file cbaReadBlif.c.

588{
589 Prs_Ntk_t * pPrsNtk; int i, fError = 0;
590 Prs_Ntk_t * pPrsRoot = Prs_ManRoot(vDes);
591 // start the manager
592 Abc_Nam_t * pStrs = Abc_NamRef(pPrsRoot->pStrs);
593 Abc_Nam_t * pFuns = Abc_NamRef(pPrsRoot->pFuns);
594 Abc_Nam_t * pMods = Abc_NamStart( 100, 24 );
595 Cba_Man_t * p = Cba_ManAlloc( pFileName, Vec_PtrSize(vDes), pStrs, pFuns, pMods, NULL );
596 // initialize networks
597 Vec_PtrForEachEntry( Prs_Ntk_t *, vDes, pPrsNtk, i )
598 {
599 Cba_Ntk_t * pNtk = Cba_NtkAlloc( p, Prs_NtkId(pPrsNtk), Prs_NtkPiNum(pPrsNtk), Prs_NtkPoNum(pPrsNtk), Prs_NtkObjNum(pPrsNtk), 100, 100 );
600 Prs_CreateBlifPio( pNtk, pPrsNtk );
601 Cba_NtkAdd( p, pNtk );
602 }
603 // create networks
604 Vec_PtrForEachEntry( Prs_Ntk_t *, vDes, pPrsNtk, i )
605 {
606 printf( "Elaboration module \"%s\"...\n", Prs_NtkName(pPrsNtk) );
607 fError = Prs_CreateBlifNtk( Cba_ManNtk(p, i+1), pPrsNtk );
608 if ( fError )
609 break;
610 }
611 if ( fError )
612 printf( "Quitting because of errors.\n" );
613 else
614 Cba_ManPrepareSeq( p );
615 return p;
616}
struct Prs_Ntk_t_ Prs_Ntk_t
BASIC TYPES ///.
Definition cbaPrs.h:73
int Prs_CreateBlifNtk(Cba_Ntk_t *p, Prs_Ntk_t *pNtk)
void Prs_CreateBlifPio(Cba_Ntk_t *p, Prs_Ntk_t *pNtk)
Abc_Nam_t * pStrs
Definition cbaPrs.h:84
Abc_Nam_t * pFuns
Definition cbaPrs.h:85
typedefABC_NAMESPACE_HEADER_START struct Abc_Nam_t_ Abc_Nam_t
INCLUDES ///.
Definition utilNam.h:39
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Prs_ManBuildCbaVerilog()

Cba_Man_t * Prs_ManBuildCbaVerilog ( char * pFileName,
Vec_Ptr_t * vDes )
extern

Definition at line 2123 of file cbaReadVer.c.

2124{
2125 Prs_Ntk_t * pPrsNtk; int i, fError = 0;
2126 Prs_Ntk_t * pPrsRoot = Prs_ManRoot(vDes);
2127 // start the manager
2128 Abc_Nam_t * pStrs = Abc_NamRef(pPrsRoot->pStrs);
2129 Abc_Nam_t * pFuns = Abc_NamRef(pPrsRoot->pFuns);
2130 Abc_Nam_t * pMods = Abc_NamStart( 100, 24 );
2131 Cba_Man_t * p = Cba_ManAlloc( pFileName, Vec_PtrSize(vDes), pStrs, pFuns, pMods, Hash_IntManRef(pPrsRoot->vHash) );
2132 // initialize networks
2133 Vec_PtrForEachEntry( Prs_Ntk_t *, vDes, pPrsNtk, i )
2134 {
2135 Cba_Ntk_t * pNtk = Cba_NtkAlloc( p, Prs_NtkId(pPrsNtk), Prs_NtkPiNum(pPrsNtk), Prs_NtkPoNum(pPrsNtk), Prs_NtkObjNum(pPrsNtk), 100, 100 );
2136 Prs_CreateVerilogPio( pNtk, pPrsNtk );
2137 Cba_NtkAdd( p, pNtk );
2138 }
2139 // create networks
2140 Vec_PtrForEachEntry( Prs_Ntk_t *, vDes, pPrsNtk, i )
2141 {
2142 printf( "Building module \"%s\"...\n", Prs_NtkName(pPrsNtk) );
2143 fError = Prs_CreateVerilogNtk( Cba_ManNtk(p, i+1), pPrsNtk );
2144 if ( fError )
2145 break;
2146 }
2147 if ( fError )
2148 printf( "Quitting because of errors.\n" );
2149 else
2150 Cba_ManPrepareSeq( p );
2151 return p;
2152}
void Prs_CreateVerilogPio(Cba_Ntk_t *p, Prs_Ntk_t *pNtk)
int Prs_CreateVerilogNtk(Cba_Ntk_t *p, Prs_Ntk_t *pNtk)
Hash_IntMan_t * vHash
Definition cbaPrs.h:86
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Prs_ManReadBlifTest()

void Prs_ManReadBlifTest ( char * pFileName)
extern

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

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 433 of file cbaReadBlif.c.

434{
435 abctime clk = Abc_Clock();
436 Vec_Ptr_t * vPrs = Prs_ManReadBlif( pFileName );
437 if ( !vPrs ) return;
438 printf( "Finished reading %d networks. ", Vec_PtrSize(vPrs) );
439 printf( "NameIDs = %d. ", Abc_NamObjNumMax(Prs_ManNameMan(vPrs)) );
440 printf( "Memory = %.2f MB. ", 1.0*Prs_ManMemory(vPrs)/(1<<20) );
441 Abc_PrintTime( 1, "Time", Abc_Clock() - clk );
442// Abc_NamPrint( p->pStrs );
443 Prs_ManWriteBlif( Extra_FileNameGenericAppend(pFileName, "_out.blif"), vPrs );
444 Prs_ManVecFree( vPrs );
445}
ABC_INT64_T abctime
Definition abc_global.h:332
void Prs_ManWriteBlif(char *pFileName, Vec_Ptr_t *p)
char * Extra_FileNameGenericAppend(char *pBase, char *pSuffix)
int Abc_NamObjNumMax(Abc_Nam_t *p)
Definition utilNam.c:231
Here is the call graph for this function:

◆ Prs_ManReadVerilogTest()

void Prs_ManReadVerilogTest ( char * pFileName)
extern

Definition at line 1394 of file cbaReadVer.c.

1395{
1396 abctime clk = Abc_Clock();
1397 Vec_Ptr_t * vPrs = Prs_ManReadVerilog( pFileName );
1398 if ( !vPrs ) return;
1399 printf( "Finished reading %d networks. ", Vec_PtrSize(vPrs) );
1400 printf( "NameIDs = %d. ", Abc_NamObjNumMax(Prs_ManNameMan(vPrs)) );
1401 printf( "Memory = %.2f MB. ", 1.0*Prs_ManMemory(vPrs)/(1<<20) );
1402 Abc_PrintTime( 1, "Time", Abc_Clock() - clk );
1403 Prs_ManWriteVerilog( Extra_FileNameGenericAppend(pFileName, "_out.v"), vPrs );
1404// Abc_NamPrint( Prs_ManNameMan(vPrs) );
1405 Prs_ManVecFree( vPrs );
1406}
void Prs_ManWriteVerilog(char *pFileName, Vec_Ptr_t *p)
Here is the call graph for this function:

◆ Prs_ManWriteBlif()

void Prs_ManWriteBlif ( char * pFileName,
Vec_Ptr_t * p )
extern

Definition at line 103 of file cbaWriteBlif.c.

104{
105 Prs_Ntk_t * pNtk = Prs_ManRoot(vPrs);
106 FILE * pFile = fopen( pFileName, "wb" ); int i;
107 if ( pFile == NULL )
108 {
109 printf( "Cannot open output file \"%s\".\n", pFileName );
110 return;
111 }
112 fprintf( pFile, "# Design \"%s\" written by ABC on %s\n\n", Prs_NtkStr(pNtk, pNtk->iModuleName), Extra_TimeStamp() );
113 Vec_PtrForEachEntry( Prs_Ntk_t *, vPrs, pNtk, i )
114 Prs_ManWriteBlifNtk( pFile, pNtk );
115 fclose( pFile );
116}
int iModuleName
Definition cbaPrs.h:77
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Prs_ManWriteVerilog()

void Prs_ManWriteVerilog ( char * pFileName,
Vec_Ptr_t * p )
extern

Definition at line 322 of file cbaWriteVer.c.

323{
324 char * pTypeNames[CBA_BOX_LAST];
325 Prs_Ntk_t * pNtk = Prs_ManRoot(vPrs); int i;
326 FILE * pFile = fopen( pFileName, "wb" );
327 if ( pFile == NULL )
328 {
329 printf( "Cannot open output file \"%s\".\n", pFileName );
330 return;
331 }
332 Cba_ManCreatePrimMap( pTypeNames );
333 fprintf( pFile, "// Design \"%s\" written by ABC on %s\n\n", Prs_NtkStr(pNtk, pNtk->iModuleName), Extra_TimeStamp() );
334 Vec_PtrForEachEntry( Prs_Ntk_t *, vPrs, pNtk, i )
335 Prs_ManWriteVerilogNtk( pFile, pNtk, pTypeNames );
336 fclose( pFile );
337}
Here is the call graph for this function:
Here is the caller graph for this function: