75 int i, j, n, Type, iFanin, iOutId, iBit = 0;
77 Vec_Int_t * vInits = Vec_IntAlloc( Wlc_NtkFfNum(
p) );
80 if (
p->pSpec ) pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
82 Wlc_NtkCleanCopy(
p );
83 Wln_NtkCleanNameId( pNew );
89 Wlc_ObjSetCopy(
p, Wlc_ObjId(
p, pObj), iOutId );
94 assert( i == Wlc_ObjCiId(pObj) );
97 for ( j = 0; j < Wlc_ObjRange(pObj); j++ )
98 if (
p->pInits[iBit+j] ==
'x' )
103 printf(
"Flop %3d init state: %d\'b", i-Wlc_NtkPiNum(
p), Wlc_ObjRange(pObj) );
104 if ( j == Wlc_ObjRange(pObj) )
107 for ( n = 0; n < Wlc_ObjRange(pObj); n++ )
108 Count +=
p->pInits[iBit+n] ==
'0';
109 if ( Count == Wlc_ObjRange(pObj) )
112 for ( n = 0; n < Wlc_ObjRange(pObj); n++ )
113 printf(
"%c",
p->pInits[iBit+n] );
118 for ( n = 0; n < Wlc_ObjRange(pObj); n++ )
119 Count +=
p->pInits[iBit+n] ==
'x';
121 if ( Count != Wlc_ObjRange(pObj) )
122 printf(
" (range %d)", Wlc_ObjRange(pObj) );
128 if ( j == Wlc_ObjRange(pObj) )
134 sprintf( Buffer,
"ff_init_%d", Vec_IntSize(vInits) );
136 Vec_IntPush( vInits, iOutId );
137 iBit += Wlc_ObjRange(pObj);
143 assert( i == Wlc_ObjCiId(pObj) );
148 Wlc_ObjSetCopy(
p, Wlc_ObjId(
p, pObj), iOutId );
153 if ( Wlc_ObjIsCi(pObj) || pObj->
Type == 0 )
156 Vec_IntClear( vFanins );
158 Vec_IntPush( vFanins, Wlc_ObjCopy(
p, iFanin) );
171 Wlc_ObjSetCopy(
p, i, iOutId );
179 assert( Vec_IntSize(vInits) == Wlc_NtkCoNum(
p) - Wlc_NtkPoNum(
p) );
182 if ( i < Wlc_NtkPoNum(
p) )
185 Vec_IntClear( vFanins );
186 Vec_IntPush( vFanins, Wlc_ObjCopy(
p, Wlc_ObjFaninId0(pObj)) );
187 for ( n = 0; n < 6; n++ )
188 Vec_IntPush( vFanins, 0 );
189 Vec_IntPush( vFanins, Vec_IntEntry(vInits, i-Wlc_NtkPoNum(
p)) );
192 Vec_IntFree( vFanins );
193 Vec_IntFree( vInits );