diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-05-15 22:36:11 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-05-15 22:36:11 -0700 |
commit | 14b7a520a14eba14aeb8ae63f692e23add5c660f (patch) | |
tree | 061147c2f98676be89dc43aecc61bd02f4c5910b /src/map/if | |
parent | 37b6b5f1f8a46d6f233a352b8874352fc5097dbe (diff) | |
download | abc-14b7a520a14eba14aeb8ae63f692e23add5c660f.tar.gz abc-14b7a520a14eba14aeb8ae63f692e23add5c660f.tar.bz2 abc-14b7a520a14eba14aeb8ae63f692e23add5c660f.zip |
Bug fix in 'dsd_tune' when processing cells with 0-input LUTs.
Diffstat (limited to 'src/map/if')
-rw-r--r-- | src/map/if/ifTune.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/map/if/ifTune.c b/src/map/if/ifTune.c index d4e336ed..7fe7a4bb 100644 --- a/src/map/if/ifTune.c +++ b/src/map/if/ifTune.c @@ -1111,9 +1111,10 @@ int Ifn_NtkAddClauses( Ifn_Ntk_t * p, int * pValues, sat_solver * pSat ) int i, f, v, nLits, pLits[IFN_INS+2], pLits2[IFN_INS+2]; // assign new variables int nSatVars = sat_solver_nvars(pSat); - for ( i = 0; i < p->nObjs-1; i++ ) +// for ( i = 0; i < p->nObjs-1; i++ ) + for ( i = 0; i < p->nObjs; i++ ) p->Nodes[i].Var = nSatVars++; - p->Nodes[p->nObjs-1].Var = 0xFFFF; + //p->Nodes[p->nObjs-1].Var = 0xFFFF; sat_solver_setnvars( pSat, nSatVars ); // verify variable values for ( i = 0; i < p->nVars; i++ ) @@ -1237,6 +1238,10 @@ int Ifn_NtkAddClauses( Ifn_Ntk_t * p, int * pValues, sat_solver * pSat ) else assert( 0 ); //printf( "\n" ); } + // add last clause (not needed if the root node is IFN_DSD_PRIME) + pLits[0] = Abc_Var2Lit( p->Nodes[p->nObjs-1].Var, pValues[p->nObjs-1]==0 ); + if ( !Ifn_AddClause( pSat, pLits, pLits + 1 ) ) + return 0; return 1; } |