/**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Bus_Man_t * Bus_ManStart( Abc_Ntk_t * pNtk, SC_Lib * pLib, SC_BusPars * pPars ) { Bus_Man_t * p; p = ABC_CALLOC( Bus_Man_t, 1 ); p->pPars = pPars; p->pNtk = pNtk; p->pLib = pLib; p->pInv = Abc_SclFindInvertor(pLib, pPars->fAddBufs)->pRepr->pPrev;//->pAve; if ( pPars->fUseWireLoads ) { if ( pNtk->pWLoadUsed == NULL ) { p->pWLoadUsed = Abc_SclFindWireLoadModel( pLib, Abc_SclGetTotalArea(pNtk) ); pNtk->pWLoadUsed = Abc_UtilStrsav( p->pWLoadUsed->pName ); } else p->pWLoadUsed = Abc_SclFetchWireLoadModel( pLib, pNtk->pWLoadUsed ); } if ( p->pWLoadUsed ) p->vWireCaps = Abc_SclFindWireCaps( p->pWLoadUsed ); p->vFanouts = Vec_PtrAlloc( 100 ); p->vCins = Vec_FltAlloc( 2*Abc_NtkObjNumMax(pNtk) + 1000 ); p->vETimes = Vec_FltAlloc( 2*Abc_NtkObjNumMax(pNtk) + 1000 ); p->vLoads = Vec_FltAlloc( 2*Abc_NtkObjNumMax(pNtk) + 1000 ); p->vDepts = Vec_FltAlloc( 2*Abc_NtkObjNumMax(pNtk) + 1000 ); Vec_FltFill( p->vCins, Abc_NtkObjNumMax(pNtk), 0 ); Vec_FltFill( p->vETimes, Abc_NtkObjNumMax(pNtk), 0 ); Vec_FltFill( p->vLoads, Abc_NtkObjNumMax(pNtk), 0 ); Vec_FltFill( p->vDepts, Abc_NtkObjNumMax(pNtk), 0 ); pNtk->pBSMan = p; return p; }
/**Function************************************************************* Synopsis [Reading library from file.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ static void Abc_SclReadSurface( Vec_Str_t * vOut, int * pPos, SC_Surface * p ) { Vec_Flt_t * vVec; int i, j; for ( i = Vec_StrGetI(vOut, pPos); i != 0; i-- ) Vec_FltPush( p->vIndex0, Vec_StrGetF(vOut, pPos) ); for ( i = Vec_StrGetI(vOut, pPos); i != 0; i-- ) Vec_FltPush( p->vIndex1, Vec_StrGetF(vOut, pPos) ); for ( i = 0; i < Vec_FltSize(p->vIndex0); i++ ) { vVec = Vec_FltAlloc( Vec_FltSize(p->vIndex1) ); Vec_PtrPush( p->vData, vVec ); for ( j = 0; j < Vec_FltSize(p->vIndex1); j++ ) Vec_FltPush( vVec, Vec_StrGetF(vOut, pPos) ); } for ( i = 0; i < 3; i++ ) p->approx[0][i] = Vec_StrGetF( vOut, pPos ); for ( i = 0; i < 4; i++ ) p->approx[1][i] = Vec_StrGetF( vOut, pPos ); for ( i = 0; i < 6; i++ ) p->approx[2][i] = Vec_StrGetF( vOut, pPos ); }
Vec_Flt_t * Abc_NtkTestCreateRequired( int nOutputs ) { Vec_Flt_t * p; int i; p = Vec_FltAlloc( nOutputs ); for ( i = 0; i < nOutputs; i++ ) Vec_FltPush( p, 100.0 + 1.0*i ); return p; }
/**Function************************************************************* Synopsis [Create arrival times] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Vec_Flt_t * Abc_NtkTestCreateArrivals( int nInputs ) { Vec_Flt_t * p; int i; p = Vec_FltAlloc( nInputs ); for ( i = 0; i < nInputs; i++ ) Vec_FltPush( p, 1.0*(i % 10) ); return p; }
ABC_NAMESPACE_IMPL_START //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// /**Function************************************************************* Synopsis [Reading library from file.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ static void Abc_SclReadSurface( Vec_Str_t * vOut, int * pPos, SC_Surface * p ) { Vec_Flt_t * vVec; int i, j; for ( i = Vec_StrGetI(vOut, pPos); i != 0; i-- ) Vec_FltPush( p->vIndex0, Vec_StrGetF(vOut, pPos) ); for ( i = Vec_StrGetI(vOut, pPos); i != 0; i-- ) Vec_FltPush( p->vIndex1, Vec_StrGetF(vOut, pPos) ); for ( i = 0; i < Vec_FltSize(p->vIndex0); i++ ) { vVec = Vec_FltAlloc( Vec_FltSize(p->vIndex1) ); Vec_PtrPush( p->vData, vVec ); for ( j = 0; j < Vec_FltSize(p->vIndex1); j++ ) Vec_FltPush( vVec, Vec_StrGetF(vOut, pPos) ); } for ( i = 0; i < 3; i++ ) p->approx[0][i] = Vec_StrGetF( vOut, pPos ); for ( i = 0; i < 4; i++ ) p->approx[1][i] = Vec_StrGetF( vOut, pPos ); for ( i = 0; i < 6; i++ ) p->approx[2][i] = Vec_StrGetF( vOut, pPos ); }