49 Acb_Man_t * pMan = Acb_ManAlloc( Abc_NtkSpec(
p), 1, NULL, NULL, NULL, NULL );
51 Acb_Ntk_t * pNtk = Acb_NtkAlloc( pMan, NameId, Abc_NtkCiNum(
p), Abc_NtkCoNum(
p), Abc_NtkObjNum(
p) );
63 Acb_ObjAddFanin( pNtk, pObj->
iTemp, pFanin->
iTemp );
65 Acb_ObjAddFanin( pNtk, pObj->
iTemp, Abc_ObjFanin(pObj, 0)->iTemp );
66 Acb_NtkCleanObjTruths( pNtk );
69 Acb_NtkSetRegNum( pNtk, Abc_NtkLatchNum(
p) );
70 Acb_NtkAdd( pMan, pNtk );
75 Acb_Man_t * pMan = Acb_ManAlloc( Abc_NtkSpec(
p), 1, NULL, NULL, NULL, NULL );
77 Acb_Ntk_t * pNtk = Acb_NtkAlloc( pMan, NameId, Abc_NtkCiNum(
p), Abc_NtkCoNum(
p), Abc_NtkObjNumMax(
p)-1 );
81 for ( i = 1; i < Abc_NtkObjNumMax(
p); i++ )
83 pObj = Abc_NtkObj(
p, i );
86 else if ( Abc_ObjIsCi(pObj) )
88 else if ( Abc_ObjIsCo(pObj) )
90 else if ( Abc_ObjIsNode(pObj) )
93 assert( pObj == NULL || pObj->
iTemp == (
int)Abc_ObjId(pObj) );
97 Acb_ObjAddFanin( pNtk, pObj->
iTemp, pFanin->
iTemp );
99 Acb_ObjAddFanin( pNtk, pObj->
iTemp, Abc_ObjFanin(pObj, 0)->iTemp );
100 Acb_NtkCleanObjTruths( pNtk );
103 Acb_NtkSetRegNum( pNtk, Abc_NtkLatchNum(
p) );
104 Acb_NtkAdd( pMan, pNtk );
121 int i, k, iObj, iFanin;
124 Vec_Int_t * vCover = Vec_IntAlloc( 1000 );
125 Acb_NtkCleanObjCopies(
p );
127 Acb_ObjSetCopy(
p, iObj, Abc_ObjId(Abc_NtkCi(pNtkNew, i)) );
130 Abc_Obj_t * pObjNew = Abc_NtkCreateNode( pNtkNew );
132 Acb_ObjSetCopy(
p, iObj, Abc_ObjId(pObjNew) );
134 Vec_IntFree( vCover );
137 Abc_Obj_t * pObjNew = Abc_NtkObj(pNtkNew, Acb_ObjCopy(
p, iObj));
143 Abc_ObjAddFanin( Abc_NtkCo(pNtkNew, i), Abc_NtkObj(pNtkNew, Acb_ObjCopy(
p, iFanin)) );
146 printf(
"Acb_NtkToAbc: The network check has failed.\n" );
169 int Mod = 2, Obj, Type, nArray, * pArray, ObjId;
171 Acb_Ntk_t * pNtk = Acb_NtkAlloc( pMan, NameId, Ndr_DataCiNum(
p, Mod), Ndr_DataCoNum(
p, Mod), Ndr_DataObjNum(
p, Mod) );
172 Vec_Int_t * vMap = Vec_IntStart( nNameIdMax );
173 Acb_NtkCleanObjWeights( pNtk );
174 Acb_NtkCleanObjNames( pNtk );
179 Vec_IntWriteEntry( vMap, NameId, ObjId );
180 Acb_ObjSetName( pNtk, ObjId, NameId );
181 Acb_ObjSetWeight( pNtk, ObjId, vWeights ? Vec_IntEntry(vWeights, NameId) : 1 );
185 NameId = Ndr_DataEntry(
p, Obj );
187 Vec_IntWriteEntry( vMap, NameId, ObjId );
188 Acb_ObjSetName( pNtk, ObjId, NameId );
189 Vec_IntPush( &pNtk->
vTargets, ObjId );
194 nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
196 ObjId = Acb_ObjAlloc( pNtk, (
Acb_ObjType_t) Type, nArray, 0 );
197 Vec_IntWriteEntry( vMap, NameId, ObjId );
198 Acb_ObjSetName( pNtk, ObjId, NameId );
202 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
204 ObjId = Vec_IntEntry( vMap, NameId );
205 nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
206 for ( k = 0; k < nArray; k++ )
208 if ( Vec_IntEntry(vMap, pArray[k]) == 0 )
209 printf(
"Cannot find fanin %d of node \"%s\".\n", k, pName );
210 Acb_ObjAddFanin( pNtk, ObjId, Vec_IntEntry(vMap, pArray[k]) );
212 Acb_ObjSetWeight( pNtk, ObjId, vWeights ? Vec_IntEntry(vWeights, NameId) : 1 );
216 int NameId = Ndr_ObjReadBody(
p, Obj,
NDR_OUTPUT );
218 nArray = Ndr_ObjReadArray(
p, Obj,
NDR_INPUT, &pArray );
221 if ( Vec_IntEntry(vMap, pArray[0]) == 0 )
223 printf(
"Adding constant 0 driver to non-driven PO \"%s\".\n", pName );
224 Vec_IntWriteEntry( vMap, pArray[0], Token0 );
226 Acb_ObjAddFanin( pNtk, ObjId, Vec_IntEntry(vMap, pArray[0]) );
227 Acb_ObjSetName( pNtk, ObjId, pArray[0] );
230 Acb_NtkSetRegNum( pNtk, 0 );
231 Acb_NtkAdd( pMan, pNtk );