summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2013-07-23 16:15:03 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2013-07-23 16:15:03 -0700
commit84c0b9d69bda7382730d20608a515bb09c1e0872 (patch)
tree69845062ee744e4c20257f22522b0fc390dc842b /src/base
parent038f2964531fc3e1e59ad3d98eebf8722edbef72 (diff)
downloadabc-84c0b9d69bda7382730d20608a515bb09c1e0872.tar.gz
abc-84c0b9d69bda7382730d20608a515bb09c1e0872.tar.bz2
abc-84c0b9d69bda7382730d20608a515bb09c1e0872.zip
Tuning standard-cell mapping flow.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/abci/abcTiming.c44
-rw-r--r--src/base/io/ioWriteBlif.c2
2 files changed, 29 insertions, 17 deletions
diff --git a/src/base/abci/abcTiming.c b/src/base/abci/abcTiming.c
index c85f5677..53730a9b 100644
--- a/src/base/abci/abcTiming.c
+++ b/src/base/abci/abcTiming.c
@@ -300,8 +300,8 @@ void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkOld )
Abc_Time_t ** ppTimes, * pTime;
int i;
assert( pNtkOld == NULL || pNtkOld->pManTime != NULL );
- assert( pNtkOld == NULL || Abc_NtkPiNum(pNtk) == Abc_NtkPiNum(pNtkOld) );
- assert( pNtkOld == NULL || Abc_NtkPoNum(pNtk) == Abc_NtkPoNum(pNtkOld) );
+ assert( pNtkOld == NULL || Abc_NtkCiNum(pNtk) == Abc_NtkCiNum(pNtkOld) );
+ assert( pNtkOld == NULL || Abc_NtkCoNum(pNtk) == Abc_NtkCoNum(pNtkOld) );
if ( pNtk->pManTime == NULL )
return;
Abc_ManTimeExpand( pNtk->pManTime, Abc_NtkObjNumMax(pNtk), 0 );
@@ -314,7 +314,7 @@ void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkOld )
}
// set the default timing
ppTimes = (Abc_Time_t **)pNtk->pManTime->vArrs->pArray;
- Abc_NtkForEachPi( pNtk, pObj, i )
+ Abc_NtkForEachCi( pNtk, pObj, i )
{
pTime = ppTimes[pObj->Id];
if ( Abc_MaxFloat(pTime->Fall, pTime->Rise) != -ABC_INFINITY )
@@ -323,10 +323,10 @@ void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkOld )
}
// set the default timing
ppTimes = (Abc_Time_t **)pNtk->pManTime->vReqs->pArray;
- Abc_NtkForEachPo( pNtk, pObj, i )
+ Abc_NtkForEachCo( pNtk, pObj, i )
{
pTime = ppTimes[pObj->Id];
- if ( Abc_MaxFloat(pTime->Fall, pTime->Rise) != -ABC_INFINITY )
+ if ( Abc_MaxFloat(pTime->Fall, pTime->Rise) != ABC_INFINITY )
continue;
*pTime = pNtkOld ? *Abc_NodeReadRequired(Abc_NtkPo(pNtkOld, i)) : pNtk->pManTime->tReqDef;
}
@@ -371,7 +371,7 @@ void Abc_NtkTimePrepare( Abc_Ntk_t * pNtk )
pTime = ppTimes[pObj->Id];
pTime->Fall = pTime->Rise = -ABC_INFINITY;
}
- Abc_NtkForEachPo( pNtk, pObj, i )
+ Abc_NtkForEachCo( pNtk, pObj, i )
{
pTime = ppTimes[pObj->Id];
pTime->Fall = pTime->Rise = -ABC_INFINITY;
@@ -381,12 +381,12 @@ void Abc_NtkTimePrepare( Abc_Ntk_t * pNtk )
Abc_NtkForEachNode( pNtk, pObj, i )
{
pTime = ppTimes[pObj->Id];
- pTime->Fall = pTime->Rise = -ABC_INFINITY;
+ pTime->Fall = pTime->Rise = ABC_INFINITY;
}
- Abc_NtkForEachPi( pNtk, pObj, i )
+ Abc_NtkForEachCi( pNtk, pObj, i )
{
pTime = ppTimes[pObj->Id];
- pTime->Fall = pTime->Rise = -ABC_INFINITY;
+ pTime->Fall = pTime->Rise = ABC_INFINITY;
}
}
@@ -411,6 +411,8 @@ Abc_ManTime_t * Abc_ManTimeStart()
memset( p, 0, sizeof(Abc_ManTime_t) );
p->vArrs = Vec_PtrAlloc( 0 );
p->vReqs = Vec_PtrAlloc( 0 );
+ p->tReqDef.Rise = ABC_INFINITY;
+ p->tReqDef.Fall = ABC_INFINITY;
return p;
}
@@ -540,8 +542,8 @@ void Abc_ManTimeExpand( Abc_ManTime_t * p, int nSize, int fProgressive )
for ( i = nSizeOld; i < nSizeNew; i++ )
{
pTime = (Abc_Time_t *)vTimes->pArray[i];
- pTime->Rise = -ABC_INFINITY;
- pTime->Fall = -ABC_INFINITY;
+ pTime->Rise = ABC_INFINITY;
+ pTime->Fall = ABC_INFINITY;
}
}
@@ -571,7 +573,7 @@ void Abc_NtkSetNodeLevelsArrival( Abc_Ntk_t * pNtkOld )
if ( Abc_FrameReadLibGen() == NULL || Mio_LibraryReadNand2((Mio_Library_t *)Abc_FrameReadLibGen()) == NULL )
return;
tAndDelay = Mio_LibraryReadDelayNand2Max((Mio_Library_t *)Abc_FrameReadLibGen());
- Abc_NtkForEachPi( pNtkOld, pNodeOld, i )
+ Abc_NtkForEachCi( pNtkOld, pNodeOld, i )
{
pNodeNew = pNodeOld->pCopy;
pNodeNew->Level = (int)(Abc_NodeReadArrivalWorst(pNodeOld) / tAndDelay);
@@ -598,7 +600,7 @@ Abc_Time_t * Abc_NtkGetCiArrivalTimes( Abc_Ntk_t * pNtk )
if ( pNtk->pManTime == NULL )
return p;
// set the PI arrival times
- Abc_NtkForEachPi( pNtk, pNode, i )
+ Abc_NtkForEachCi( pNtk, pNode, i )
p[i] = *Abc_NodeArrival(pNode);
return p;
}
@@ -611,7 +613,7 @@ Abc_Time_t * Abc_NtkGetCoRequiredTimes( Abc_Ntk_t * pNtk )
if ( pNtk->pManTime == NULL )
return p;
// set the PO required times
- Abc_NtkForEachPo( pNtk, pNode, i )
+ Abc_NtkForEachCo( pNtk, pNode, i )
p[i] = *Abc_NodeRequired(pNode);
return p;
}
@@ -636,8 +638,13 @@ float * Abc_NtkGetCiArrivalFloats( Abc_Ntk_t * pNtk )
p = ABC_CALLOC( float, Abc_NtkCiNum(pNtk) );
if ( pNtk->pManTime == NULL )
return p;
+ Abc_NtkForEachCi( pNtk, pNode, i )
+ if ( Abc_NodeReadArrivalWorst(pNode) != 0 )
+ break;
+ if ( i == Abc_NtkCiNum(pNtk) )
+ return NULL;
// set the PI arrival times
- Abc_NtkForEachPi( pNtk, pNode, i )
+ Abc_NtkForEachCi( pNtk, pNode, i )
p[i] = Abc_NodeReadArrivalWorst(pNode);
return p;
}
@@ -648,9 +655,14 @@ float * Abc_NtkGetCoRequiredFloats( Abc_Ntk_t * pNtk )
int i;
if ( pNtk->pManTime == NULL )
return NULL;
+ Abc_NtkForEachCo( pNtk, pNode, i )
+ if ( Abc_NodeReadRequiredWorst(pNode) != ABC_INFINITY )
+ break;
+ if ( i == Abc_NtkCoNum(pNtk) )
+ return NULL;
// set the PO required times
p = ABC_CALLOC( float, Abc_NtkCoNum(pNtk) );
- Abc_NtkForEachPo( pNtk, pNode, i )
+ Abc_NtkForEachCo( pNtk, pNode, i )
p[i] = Abc_NodeReadRequiredWorst(pNode);
return p;
}
diff --git a/src/base/io/ioWriteBlif.c b/src/base/io/ioWriteBlif.c
index a455dc76..1e76fa50 100644
--- a/src/base/io/ioWriteBlif.c
+++ b/src/base/io/ioWriteBlif.c
@@ -703,7 +703,7 @@ void Io_WriteTimingInfo( FILE * pFile, Abc_Ntk_t * pNtk )
}
pTimeDef = Abc_NtkReadDefaultRequired( pNtk );
- if ( pTimeDef->Rise != 0.0 || pTimeDef->Fall != 0.0 )
+ if ( pTimeDef->Rise != ABC_INFINITY || pTimeDef->Fall != ABC_INFINITY )
fprintf( pFile, ".default_output_required %g %g\n", pTimeDef->Rise, pTimeDef->Fall );
Abc_NtkForEachPo( pNtk, pNode, i )
{