ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
ioWriteBblif.c
Go to the documentation of this file.
1
20
21#include "ioAbc.h"
22#include "misc/bbl/bblif.h"
23
25
26
27// For description of Binary BLIF format, refer to "abc/src/aig/bbl/bblif.h"
28
32
36
55{
56 Bbl_Man_t * p;
57 Vec_Ptr_t * vNodes;
58 Abc_Obj_t * pObj, * pFanin;
59 int i, k;
60 assert( Abc_NtkIsSopLogic(pNtk) );
61 // start the data manager
62 p = Bbl_ManStart( Abc_NtkName(pNtk) );
63 // collect internal nodes to be added
64 vNodes = Abc_NtkDfs( pNtk, 0 );
65 // create combinational inputs
66 Abc_NtkForEachCi( pNtk, pObj, i )
67 Bbl_ManCreateObject( p, BBL_OBJ_CI, Abc_ObjId(pObj), 0, NULL );
68 // create internal nodes
69 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
70 Bbl_ManCreateObject( p, BBL_OBJ_NODE, Abc_ObjId(pObj), Abc_ObjFaninNum(pObj), (char *)pObj->pData );
71 // create combinational outputs
72 Abc_NtkForEachCo( pNtk, pObj, i )
73 Bbl_ManCreateObject( p, BBL_OBJ_CO, Abc_ObjId(pObj), 1, NULL );
74 // create fanin/fanout connections for internal nodes
75 Vec_PtrForEachEntry( Abc_Obj_t *, vNodes, pObj, i )
76 Abc_ObjForEachFanin( pObj, pFanin, k )
77 Bbl_ManAddFanin( p, Abc_ObjId(pObj), Abc_ObjId(pFanin) );
78 // create fanin/fanout connections for combinational outputs
79 Abc_NtkForEachCo( pNtk, pObj, i )
80 Abc_ObjForEachFanin( pObj, pFanin, k )
81 Bbl_ManAddFanin( p, Abc_ObjId(pObj), Abc_ObjId(pFanin) );
82 Vec_PtrFree( vNodes );
83 // sanity check
84 Bbl_ManCheck( p );
85 return p;
86}
87
99void Io_WriteBblif( Abc_Ntk_t * pNtk, char * pFileName )
100{
101 Bbl_Man_t * p;
102 p = Bbl_ManFromAbc( pNtk );
103//Bbl_ManPrintStats( p );
104//Bbl_ManDumpBlif( p, "test_bbl.blif" );
105 Bbl_ManDumpBinaryBlif( p, pFileName );
106 Bbl_ManStop( p );
107}
108
109
113
114
116
struct Abc_Obj_t_ Abc_Obj_t
Definition abc.h:116
#define Abc_NtkForEachCo(pNtk, pCo, i)
Definition abc.h:522
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
Definition abcDfs.c:82
#define Abc_ObjForEachFanin(pObj, pFanin, i)
Definition abc.h:527
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
#define Abc_NtkForEachCi(pNtk, pCi, i)
Definition abc.h:518
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Bbl_ManAddFanin(Bbl_Man_t *p, int ObjId, int FaninId)
Definition bblif.c:1023
int Bbl_ManCheck(Bbl_Man_t *p)
Definition bblif.c:1062
void Bbl_ManDumpBinaryBlif(Bbl_Man_t *p, char *pFileName)
Definition bblif.c:691
Bbl_Man_t * Bbl_ManStart(char *pName)
MACRO DEFINITIONS ///.
Definition bblif.c:806
void Bbl_ManCreateObject(Bbl_Man_t *p, Bbl_Type_t Type, int ObjId, int nFanins, char *pSop)
Definition bblif.c:988
void Bbl_ManStop(Bbl_Man_t *p)
Definition bblif.c:775
@ BBL_OBJ_CI
Definition bblif.h:206
@ BBL_OBJ_NODE
Definition bblif.h:208
@ BBL_OBJ_CO
Definition bblif.h:207
struct Bbl_Man_t_ Bbl_Man_t
Definition bblif.h:213
Cube * p
Definition exorList.c:222
void Io_WriteBblif(Abc_Ntk_t *pNtk, char *pFileName)
ABC_NAMESPACE_IMPL_START Bbl_Man_t * Bbl_ManFromAbc(Abc_Ntk_t *pNtk)
DECLARATIONS ///.
void * pData
Definition abc.h:145
#define assert(ex)
Definition util_old.h:213
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