2118{
2123 int nNodesOld = Gia_ManObjNum(pGia);
2124 int k, Pivot;
2125 assert( pPars->nLutSize <= 6 );
2126
2129
2132 {
2136
2139 {
2140 Pivot = Gia_ObjId( pGia, pObj );
2141 if ( Pivot >= nNodesOld )
2142 break;
2143 if ( Gia_ObjIsAnd(pObj) )
2144 {
2148 p->timeCut += Abc_Clock() - clk;
2149 Vec_IntWriteEntry(
p->vLutLevs, Pivot, Delay );
2150 if ( Delay > 1 && (!vPath || Vec_BitEntry(vPath, Pivot)) )
2152 }
2153 else if ( Gia_ObjIsCi(pObj) )
2154 {
2156 Vec_IntWriteEntry(
p->vLutLevs, Pivot, arrTime );
2158 }
2159 else if ( Gia_ObjIsCo(pObj) )
2160 {
2161 int arrTime = Vec_IntEntry(
p->vLutLevs, Gia_ObjFaninId0(pObj, Pivot) );
2163 }
2164 else if ( Gia_ObjIsConst0(pObj) )
2167 }
2169 pGia->pManTime = pTimOld;
2170 Vec_IntFree( vNodes );
2171 }
2172 else
2173 {
2176 {
2177 if ( Pivot >= nNodesOld )
2178 break;
2179 if ( Gia_ObjIsCi(pObj) )
2181 else if ( Gia_ObjIsAnd(pObj) )
2182 {
2186 p->timeCut += Abc_Clock() - clk;
2187 Vec_IntWriteEntry(
p->vLutLevs, Pivot, Delay );
2188 if ( Delay > 1 && (!vPath || Vec_BitEntry(vPath, Pivot)) )
2190 }
2191
2192
2193 }
2194 }
2195 Vec_BitFreeP( &vPath );
2196 p->timeTotal = Abc_Clock() -
p->timeTotal;
2197 if (
p->pPars->fVerbose )
2198 {
2199 printf( "K = %d. S = %d. N = %d. P = %d. ",
2200 p->pPars->nLutSize,
p->pPars->nLutNum,
p->pPars->nCutSize,
p->pPars->nCutNum );
2201 printf( "Try = %d. Use = %d. C = %d. 1 = %d. 2 = %d. 3a = %d. 3b = %d. Lev = %d. ",
2202 p->nTried,
p->nUsed,
p->nLuts[0],
p->nLuts[1],
p->nLuts[2],
p->nLuts[3],
p->nLuts[4],
Sbd_ManDelay(
p) );
2203 Abc_PrintTime( 1,
"Time",
p->timeTotal );
2204 }
2206
2207 p->timeOther =
p->timeTotal -
p->timeWin -
p->timeCut -
p->timeCov -
p->timeCnf -
p->timeSat -
p->timeQbf;
2208 if (
p->pPars->fVerbose )
2209 {
2210 ABC_PRTP(
"Win",
p->timeWin ,
p->timeTotal );
2211 ABC_PRTP(
"Cut",
p->timeCut ,
p->timeTotal );
2212 ABC_PRTP(
"Cov",
p->timeCov ,
p->timeTotal );
2213 ABC_PRTP(
"Cnf",
p->timeCnf ,
p->timeTotal );
2214 ABC_PRTP(
"Sat",
p->timeSat ,
p->timeTotal );
2215 ABC_PRTP(
"Qbf",
p->timeQbf ,
p->timeTotal );
2216 ABC_PRTP(
"Oth",
p->timeOther,
p->timeTotal );
2217 ABC_PRTP(
"ALL",
p->timeTotal,
p->timeTotal );
2218 }
2220 return pNew;
2221}
#define ABC_PRTP(a, t, T)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
Vec_Int_t * Gia_ManOrderWithBoxes(Gia_Man_t *p)
Sbd_Man_t * Sbd_ManStart(Gia_Man_t *pGia, Sbd_Par_t *pPars)
int Sbd_ManDelay(Sbd_Man_t *p)
void Sbd_NtkPerformOne(Sbd_Man_t *p, int Pivot)
void Sbd_ManStop(Sbd_Man_t *p)
struct Sbd_Man_t_ Sbd_Man_t
Gia_Man_t * Sbd_ManDerive(Sbd_Man_t *pMan, Gia_Man_t *p, Vec_Int_t *vMirrors)
int Sbd_StoComputeCutsNode(Sbd_Sto_t *p, int iObj)
void Sbd_StoSaveBestDelayCut(Sbd_Sto_t *p, int iObj, int *pCut)
void Sbd_StoComputeCutsConst0(Sbd_Sto_t *p, int iObj)
void Sbd_StoRefObj(Sbd_Sto_t *p, int iObj, int iMirror)
void Sbd_StoComputeCutsCi(Sbd_Sto_t *p, int iObj, int Delay, int Level)
Vec_Bit_t * Sbc_ManCriticalPath(Gia_Man_t *p)
void Tim_ManSetCoArrival(Tim_Man_t *p, int iCo, float Delay)
int Tim_ManBoxNum(Tim_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
void Tim_ManIncrementTravId(Tim_Man_t *p)
DECLARATIONS ///.
void Tim_ManStop(Tim_Man_t *p)
Tim_Man_t * Tim_ManDup(Tim_Man_t *p, int fUnitDelay)
float Tim_ManGetCiArrival(Tim_Man_t *p, int iCi)
typedefABC_NAMESPACE_HEADER_START struct Vec_Bit_t_ Vec_Bit_t
INCLUDES ///.