Commit ff89090d by Alan Mishchenko

Supporting CO attributes in GIA.

parent ccdc974f
...@@ -166,6 +166,7 @@ struct Gia_Man_t_ ...@@ -166,6 +166,7 @@ struct Gia_Man_t_
Vec_Int_t * vCiArrs; // CI arrival times Vec_Int_t * vCiArrs; // CI arrival times
Vec_Int_t * vCoReqs; // CO required times Vec_Int_t * vCoReqs; // CO required times
Vec_Int_t * vCoArrs; // CO arrival times Vec_Int_t * vCoArrs; // CO arrival times
Vec_Int_t * vCoAttrs; // CO attributes
int And2Delay; // delay of the AND gate int And2Delay; // delay of the AND gate
float DefInArrs; // default PI arrival times float DefInArrs; // default PI arrival times
float DefOutReqs; // default PO required times float DefOutReqs; // default PO required times
......
...@@ -2118,11 +2118,12 @@ void Gia_ManTransferPacking( Gia_Man_t * p, Gia_Man_t * pGia ) ...@@ -2118,11 +2118,12 @@ void Gia_ManTransferPacking( Gia_Man_t * p, Gia_Man_t * pGia )
} }
void Gia_ManTransferTiming( Gia_Man_t * p, Gia_Man_t * pGia ) void Gia_ManTransferTiming( Gia_Man_t * p, Gia_Man_t * pGia )
{ {
if ( pGia->vCiArrs || pGia->vCoReqs || pGia->vCoArrs ) if ( pGia->vCiArrs || pGia->vCoReqs || pGia->vCoArrs || pGia->vCoAttrs )
{ {
p->vCiArrs = pGia->vCiArrs; pGia->vCiArrs = NULL; p->vCiArrs = pGia->vCiArrs; pGia->vCiArrs = NULL;
p->vCoReqs = pGia->vCoReqs; pGia->vCoReqs = NULL; p->vCoReqs = pGia->vCoReqs; pGia->vCoReqs = NULL;
p->vCoArrs = pGia->vCoArrs; pGia->vCoArrs = NULL; p->vCoArrs = pGia->vCoArrs; pGia->vCoArrs = NULL;
p->vCoAttrs = pGia->vCoAttrs; pGia->vCoAttrs = NULL;
p->And2Delay = pGia->And2Delay; p->And2Delay = pGia->And2Delay;
} }
if ( pGia->vInArrs || pGia->vOutReqs ) if ( pGia->vInArrs || pGia->vOutReqs )
...@@ -2277,6 +2278,12 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars ) ...@@ -2277,6 +2278,12 @@ Gia_Man_t * Gia_ManPerformMappingInt( Gia_Man_t * p, If_Par_t * pPars )
if ( p->pManTime ) if ( p->pManTime )
pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, pPars->fDelayOpt || pPars->fDelayOptLut || pPars->fDsdBalance || pPars->fUserRecLib || pPars->fUserSesLib ); pIfMan->pManTim = Tim_ManDup( (Tim_Man_t *)p->pManTime, pPars->fDelayOpt || pPars->fDelayOptLut || pPars->fDsdBalance || pPars->fUserRecLib || pPars->fUserSesLib );
// Tim_ManPrint( pIfMan->pManTim ); // Tim_ManPrint( pIfMan->pManTim );
if ( p->vCoAttrs )
{
assert( If_ManCoNum(pIfMan) == Vec_IntSize(p->vCoAttrs) );
Vec_IntForEachEntry( p->vCoAttrs, Entry, i )
If_ObjFanin0( If_ManCo(pIfMan, i) )->fSpec = (Entry != 0);
}
if ( !If_ManPerformMapping( pIfMan ) ) if ( !If_ManPerformMapping( pIfMan ) )
{ {
If_ManStop( pIfMan ); If_ManStop( pIfMan );
......
...@@ -131,6 +131,7 @@ void Gia_ManStop( Gia_Man_t * p ) ...@@ -131,6 +131,7 @@ void Gia_ManStop( Gia_Man_t * p )
Vec_IntFreeP( &p->vCiArrs ); Vec_IntFreeP( &p->vCiArrs );
Vec_IntFreeP( &p->vCoReqs ); Vec_IntFreeP( &p->vCoReqs );
Vec_IntFreeP( &p->vCoArrs ); Vec_IntFreeP( &p->vCoArrs );
Vec_IntFreeP( &p->vCoAttrs );
Gia_ManStopP( &p->pAigExtra ); Gia_ManStopP( &p->pAigExtra );
Vec_IntFree( p->vCis ); Vec_IntFree( p->vCis );
Vec_IntFree( p->vCos ); Vec_IntFree( p->vCos );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment