349 static int Counter = 0;
353 int piCofVar[4], pPrios[16], pFreqs[16] = {0}, piLits[16];
354 int i, k, nCBars, nSize, nMemSize;
355 unsigned * ppCofs[4][8], uSupport;
356 char pTable[16][16] = {
357 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
358 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
359 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
360 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
361 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
362 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
363 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
364 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
365 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
366 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
367 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
368 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
369 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
370 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
371 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
372 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
374 int fVerbose =
p->pPars->fVeryVerbose;
380 nMemSize = Kit_TruthWordNum(nVars);
381 ppCofs[0][0] =
ABC_ALLOC(
unsigned, 32 * nMemSize );
383 for ( i = 0; i < 4; i++ )
384 for ( k = 0; k < 8; k++ )
385 ppCofs[i][k] = ppCofs[0][0] + nMemSize * nSize++;
396 Kit_TruthCopy( ppCofs[0][0], pTruth, nVars );
399 for ( k = 0; k < nCBars; k++ )
402 for ( i = 0; i < nSize; i++ )
408 nSize = (1 << nCBars);
410 for ( i = 0; i < nSize; i++ )
417 printf(
"Cof%d%d: ", nCBars, i );
423 for ( i = 0; i < nSize; i++ )
426 for ( k = 0; k < nVars; k++ )
427 if ( uSupport & (1<<k) )
432 for ( i = 0; i < nSize; i++ )
439 for ( i = 0; i < nVars; i++ )
440 pPrios[i] = pPrios[i] * 256 + (16 - pFreqs[i]) * 16 + i;
443 printf(
"After restructuring with priority:\n" );
446 for ( i = 0; i < nSize; i++ )
451 assert( ppNtks[i]->pSupps[0] <= 0xFFFF );
457 printf(
"Cof%d%d: ", nCBars, i );
462 for ( i = 0; i < nSize; i++ )
465 pRoot = Kit_DsdNtkRoot(ppNtks[i]);
467 piLits[i] = Abc_LitIsCompl(ppNtks[i]->Root)? -2: -1;
469 piLits[i] = Abc_LitNotCond( pRoot->
pFans[0], Abc_LitIsCompl(ppNtks[i]->Root) );
471 piLits[i] = ppNtks[i]->
Root;
484 nSize = (1 << nCBars);
485 for ( i = 0; i < nSize; i++ )
488 for ( k = nCBars-1; k >= 0; k-- )
491 for ( i = 0; i < nSize; i++ )
492 Kit_TruthMuxVar( ppCofs[k][i], ppCofs[k+1][2*i+0], ppCofs[k+1][2*i+1], nVars, piCofVar[k] );
494 if ( !Extra_TruthIsEqual( pTruth, ppCofs[0][0], nVars ) )
495 printf(
"Verification failed.\n" );
499 for ( i = 0; i < 8; i++ )