85 Aig_Obj_t * pObj, * pTemp0, * pTemp1, * pTemp2, * pTemp3, * pCare, * pMiter;
87 assert( Saig_ManPoNum(pAig) > 0 );
88 assert( nDualPis >= 0 && nDualPis <= Saig_ManPiNum(pAig) );
89 assert( vDcFlops == NULL || Vec_IntSize(vDcFlops) == Aig_ManRegNum(pAig) );
90 vCopies = Vec_PtrStart( 2*Aig_ManObjNum(pAig) );
93 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
95 Saig_ObjSetDual( vCopies, 0, 0, Aig_ManConst0(pAigNew) );
96 Saig_ObjSetDual( vCopies, 0, 1, Aig_ManConst1(pAigNew) );
105 else if ( i < Saig_ManPiNum(pAig) )
108 pTemp0 = Aig_Not( pTemp1 );
115 pTemp0 = Aig_NotCond( pTemp0, !Vec_IntEntry(vDcFlops, i-Saig_ManPiNum(pAig)) );
117 pTemp0 = Aig_NotCond( pTemp0, !fDualFfs );
119 Saig_ObjSetDual( vCopies, Aig_ObjId(pObj), 0,
Aig_And(pAigNew, pTemp0, Aig_Not(pTemp1)) );
120 Saig_ObjSetDual( vCopies, Aig_ObjId(pObj), 1,
Aig_And(pAigNew, pTemp1, Aig_Not(pTemp0)) );
125 Saig_ObjDualFanin( pAigNew, vCopies, pObj, 0, &pTemp0, &pTemp1 );
126 Saig_ObjDualFanin( pAigNew, vCopies, pObj, 1, &pTemp2, &pTemp3 );
127 Saig_ObjSetDual( vCopies, Aig_ObjId(pObj), 0,
Aig_Or (pAigNew, pTemp0, pTemp2) );
128 Saig_ObjSetDual( vCopies, Aig_ObjId(pObj), 1,
Aig_And(pAigNew, pTemp1, pTemp3) );
131 pMiter = Aig_ManConst0(pAigNew);
136 Saig_ObjDualFanin( pAigNew, vCopies, pObj, 0, &pTemp0, &pTemp1 );
139 pCare =
Aig_And( pAigNew, pTemp0, Aig_Not(pTemp1) );
140 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
142 else if ( fCheckOne )
144 pCare =
Aig_And( pAigNew, Aig_Not(pTemp0), pTemp1 );
145 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
149 pCare =
Aig_And( pAigNew, Aig_Not(pTemp0), Aig_Not(pTemp1) );
150 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
158 Saig_ObjDualFanin( pAigNew, vCopies, pObj, 0, &pTemp0, &pTemp1 );
161 pCare =
Aig_And( pAigNew, pTemp0, Aig_Not(pTemp1) );
162 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
164 else if ( fCheckOne )
166 pCare =
Aig_And( pAigNew, Aig_Not(pTemp0), pTemp1 );
167 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
171 pCare =
Aig_And( pAigNew, Aig_Not(pTemp0), Aig_Not(pTemp1) );
172 pMiter =
Aig_Or( pAigNew, pMiter, pCare );
177 pMiter = Aig_NotCond( pMiter, fComplPo );
182 Saig_ObjDualFanin( pAigNew, vCopies, pObj, 0, &pTemp0, &pTemp1 );
184 pTemp0 = Aig_NotCond( pTemp0, !Vec_IntEntry(vDcFlops, i) );
186 pTemp0 = Aig_NotCond( pTemp0, !fDualFfs );
193 Vec_PtrFree( vCopies );