summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/base/abci/abcMap.c44
-rw-r--r--src/map/scl/scl.c1
-rw-r--r--src/map/scl/sclUtil.c6
3 files changed, 47 insertions, 4 deletions
diff --git a/src/base/abci/abcMap.c b/src/base/abci/abcMap.c
index 8ceb463e..9a97b35f 100644
--- a/src/base/abci/abcMap.c
+++ b/src/base/abci/abcMap.c
@@ -167,6 +167,46 @@ ABC_PRT( "Total runtime", Abc_Clock() - clkTotal );
SeeAlso []
***********************************************************************/
+Map_Time_t * Abc_NtkMapCopyCiArrival( Abc_Ntk_t * pNtk, Abc_Time_t * ppTimes )
+{
+ Map_Time_t * p;
+ int i;
+ p = ABC_CALLOC( Map_Time_t, Abc_NtkCiNum(pNtk) );
+ for ( i = 0; i < Abc_NtkCiNum(pNtk); i++ )
+ {
+ p->Fall = ppTimes[i].Fall;
+ p->Rise = ppTimes[i].Rise;
+ p->Worst = Abc_MaxFloat( p->Fall, p->Rise );
+ }
+ ABC_FREE( ppTimes );
+ return p;
+}
+Map_Time_t * Abc_NtkMapCopyCoRequired( Abc_Ntk_t * pNtk, Abc_Time_t * ppTimes )
+{
+ Map_Time_t * p;
+ int i;
+ p = ABC_CALLOC( Map_Time_t, Abc_NtkCoNum(pNtk) );
+ for ( i = 0; i < Abc_NtkCoNum(pNtk); i++ )
+ {
+ p->Fall = ppTimes[i].Fall;
+ p->Rise = ppTimes[i].Rise;
+ p->Worst = Abc_MaxFloat( p->Fall, p->Rise );
+ }
+ ABC_FREE( ppTimes );
+ return p;
+}
+
+/**Function*************************************************************
+
+ Synopsis [Load the network into manager.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
Map_Man_t * Abc_NtkToMap( Abc_Ntk_t * pNtk, double DelayTarget, int fRecovery, float * pSwitching, int fVerbose )
{
Map_Man_t * pMan;
@@ -185,8 +225,8 @@ Map_Man_t * Abc_NtkToMap( Abc_Ntk_t * pNtk, double DelayTarget, int fRecovery, f
Map_ManSetAreaRecovery( pMan, fRecovery );
Map_ManSetOutputNames( pMan, Abc_NtkCollectCioNames(pNtk, 1) );
Map_ManSetDelayTarget( pMan, (float)DelayTarget );
- Map_ManSetInputArrivals( pMan, (Map_Time_t *)Abc_NtkGetCiArrivalTimes(pNtk) );
- Map_ManSetOutputRequireds( pMan, (Map_Time_t *)Abc_NtkGetCoRequiredTimes(pNtk) );
+ Map_ManSetInputArrivals( pMan, Abc_NtkMapCopyCiArrival(pNtk, Abc_NtkGetCiArrivalTimes(pNtk)) );
+ Map_ManSetOutputRequireds( pMan, Abc_NtkMapCopyCoRequired(pNtk, Abc_NtkGetCoRequiredTimes(pNtk)) );
// create PIs and remember them in the old nodes
Abc_NtkCleanCopy( pNtk );
diff --git a/src/map/scl/scl.c b/src/map/scl/scl.c
index 16923f8e..cd0d3154 100644
--- a/src/map/scl/scl.c
+++ b/src/map/scl/scl.c
@@ -992,7 +992,6 @@ usage:
***********************************************************************/
int Scl_CommandDumpGen( Abc_Frame_t * pAbc, int argc, char **argv )
{
- Abc_Ntk_t * pNtk = Abc_FrameReadNtk(pAbc);
char * pFileName;
float Slew = 100;
float Gain = 2;
diff --git a/src/map/scl/sclUtil.c b/src/map/scl/sclUtil.c
index 4da1dd03..a28ef0cd 100644
--- a/src/map/scl/sclUtil.c
+++ b/src/map/scl/sclUtil.c
@@ -63,15 +63,19 @@ Vec_Int_t * Abc_SclManFindGates( SC_Lib * pLib, Abc_Ntk_t * p )
void Abc_SclManSetGates( SC_Lib * pLib, Abc_Ntk_t * p, Vec_Int_t * vGates )
{
Abc_Obj_t * pObj;
- int i;
+ int i, Counter = 0, CounterAll = 0;
Abc_NtkForEachNode1( p, pObj, i )
{
SC_Cell * pCell = SC_LibCell( pLib, Vec_IntEntry(vGates, Abc_ObjId(pObj)) );
assert( pCell->n_inputs == Abc_ObjFaninNum(pObj) );
pObj->pData = Mio_LibraryReadGateByName( (Mio_Library_t *)p->pManFunc, pCell->pName, NULL );
+ Counter += (pObj->pData == NULL);
assert( pObj->fMarkA == 0 && pObj->fMarkB == 0 );
+ CounterAll++;
//printf( "Found gate %s\n", pCell->name );
}
+ if ( Counter )
+ printf( "Could not find %d (out of %d) gates in the current library.\n", Counter, CounterAll );
}
/**Function*************************************************************