1158{
1159 int fVerbose = 0;
1164 word * pTruth, * pCare;
1165 int i, g, k, nInputs;
1166 Vec_Wrd_t * vSimI = Vec_WrdReadBin( pFileName, fVerbose );
1169 pNew->
pName = Abc_UtilStrsav(
p->pName );
1170 pNew->
pSpec = Abc_UtilStrsav(
p->pSpec );
1172 Gia_ManAppendCi( pNew );
1175 for ( g = 0; g < Gia_ManCoNum(
p); g += nOuts )
1176 {
1178 nInputs = Vec_IntSize( vSupp );
1179 if ( nInputs == 0 )
1180 {
1181 for ( k = 0; k < nOuts; k++ )
1182 {
1183 pObj = Gia_ManCo(
p, g+k );
1185 Gia_ManAppendCo( pNew, pTruth[0] & 1 );
1186 }
1187 Vec_IntFree( vSupp );
1188 continue;
1189 }
1191 for ( k = 0; k < nOuts; k++ )
1192 {
1193 pObj = Gia_ManCo(
p, g+k );
1195 if ( nInputs >= 6 )
1196 for ( i = 0; i < tt.nSize; i++ )
1197 tt.t[i + tt.nSize * k] = Gia_ObjFaninC0(pObj)? ~pTruth[i]: pTruth[i];
1198 else
1199 {
1200 i = k * (1 << nInputs);
1201 v = (Gia_ObjFaninC0(pObj)? ~pTruth[0]: pTruth[0]) & tt.ones[nInputs];
1202 tt.t[i / tt.ww] |= v << (i % tt.ww);
1203 }
1204 }
1205 i = 1 << Vec_IntSize( vSupp );
1207 tt.care[0] = pCare[0];
1208 for ( i = 1; i < tt.nSize; i++ )
1209 tt.care[i] = pCare[i];
1211 tt.RandomSiftReo( nRounds );
1212 tt.Optimize();
1213 tt.BDDGenerateAig( pNew, vSupp );
1214 Vec_IntFree( vSupp );
1215 }
1219 Vec_WrdFreeP( &vSimI );
1220 return pNew;
1221}
word * Gia_ManCountFraction(Gia_Man_t *p, Vec_Wrd_t *vSimI, Vec_Int_t *vSupp, int Thresh, int fVerbose, int *pCare)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wrd_t_ Vec_Wrd_t
INCLUDES ///.