summaryrefslogtreecommitdiffstats
path: root/src/map
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-11-11 23:12:05 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2015-11-11 23:12:05 -0800
commitf7c969ca66649627281510b8c63d867288faafd7 (patch)
treea0a1d8ae7f60272378cf9c83b4c7b2c46cac7530 /src/map
parent71847b9d17c5b64ddc7abd4ff85f5637e2fe4a15 (diff)
downloadabc-f7c969ca66649627281510b8c63d867288faafd7.tar.gz
abc-f7c969ca66649627281510b8c63d867288faafd7.tar.bz2
abc-f7c969ca66649627281510b8c63d867288faafd7.zip
Improvements to timing optimization.
Diffstat (limited to 'src/map')
-rw-r--r--src/map/scl/scl.c2
-rw-r--r--src/map/scl/sclCon.h8
-rw-r--r--src/map/scl/sclLib.h8
-rw-r--r--src/map/scl/sclLibScl.c4
4 files changed, 12 insertions, 10 deletions
diff --git a/src/map/scl/scl.c b/src/map/scl/scl.c
index 24c45b6e..83eaa9f4 100644
--- a/src/map/scl/scl.c
+++ b/src/map/scl/scl.c
@@ -753,7 +753,7 @@ int Scl_CommandStime( Abc_Frame_t * pAbc, int argc, char **argv )
{
int c;
int fShowAll = 0;
- int fUseWireLoads = 1;
+ int fUseWireLoads = 0;
int fPrintPath = 0;
int fDumpStats = 0;
int nTreeCRatio = 0;
diff --git a/src/map/scl/sclCon.h b/src/map/scl/sclCon.h
index fd6ae273..ec911963 100644
--- a/src/map/scl/sclCon.h
+++ b/src/map/scl/sclCon.h
@@ -38,7 +38,8 @@ struct Scl_Con_t_
word tInLoadDef; // default input load
word tOutReqDef; // default output required time
word tOutLoadDef; // default output load
- Vec_Ptr_t vInCells; // input driving gates
+ Vec_Ptr_t vInCells; // input driving gate names
+ Vec_Ptr_t vInCellsPtr; // input driving gates
Vec_Wrd_t vInArrs; // input arrival times
Vec_Wrd_t vInSlews; // input slews
Vec_Wrd_t vInLoads; // input loads
@@ -58,8 +59,8 @@ struct Scl_Con_t_
#define SCL_DIRECTIVE(ITEM) "."ITEM
#define SCL_DEF_DIRECTIVE(ITEM) ".default_"ITEM
-#define SCL_NUM 1000000
-#define SCL_NUMINV 0.000001
+#define SCL_NUM 1000
+#define SCL_NUMINV 0.001
#define SCL_INFINITY (~(word)0)
static inline word Scl_Flt2Wrd( float w ) { return SCL_NUM*w; }
@@ -103,6 +104,7 @@ static inline Scl_Con_t * Scl_ConAlloc( char * pFileName, Abc_Nam_t * pNamI, Abc
}
static inline void Scl_ConFree( Scl_Con_t * p )
{
+ Vec_PtrErase( &p->vInCellsPtr );
Vec_PtrFreeData( &p->vInCells );
Vec_PtrErase( &p->vInCells );
Vec_WrdErase( &p->vInArrs );
diff --git a/src/map/scl/sclLib.h b/src/map/scl/sclLib.h
index 25e60a41..b54a726c 100644
--- a/src/map/scl/sclLib.h
+++ b/src/map/scl/sclLib.h
@@ -180,8 +180,8 @@ struct SC_Pin_
float cap; // -- this value is used if 'rise_cap' and 'fall_cap' is missing (copied by 'postProcess()'). (not used)
float rise_cap; // }- used for input pins ('cap' too).
float fall_cap; // }
- float rise_capI; // }- used for input pins ('cap' too).
- float fall_capI; // }
+ int rise_capI; // }- used for input pins ('cap' too).
+ int fall_capI; // }
float max_out_cap; // } (not used)
float max_out_slew; // }- used only for output pins (max values must not be exceeded or else mapping is illegal) (not used)
char * func_text; // }
@@ -199,8 +199,8 @@ struct SC_Cell_
int unsupp; // -- set to TRUE by parser if cell contains information we cannot handle
float area;
float leakage;
- float areaI;
- float leakageI;
+ int areaI;
+ int leakageI;
int drive_strength; // -- some library files provide this field (currently unused, but may be a good hint for sizing) (not used)
Vec_Ptr_t vPins; // NamedSet<SC_Pin>
int n_inputs; // -- 'pins[0 .. n_inputs-1]' are input pins
diff --git a/src/map/scl/sclLibScl.c b/src/map/scl/sclLibScl.c
index 59f8cbc6..f3a1b0ed 100644
--- a/src/map/scl/sclLibScl.c
+++ b/src/map/scl/sclLibScl.c
@@ -173,8 +173,8 @@ static int Abc_SclReadLibrary( Vec_Str_t * vOut, int * pPos, SC_Lib * p )
pPin->rise_cap = Vec_StrGetF(vOut, pPos);
pPin->fall_cap = Vec_StrGetF(vOut, pPos);
- pPin->rise_capI = (int)(MIO_NUM*pPin->rise_capI);
- pPin->fall_capI = (int)(MIO_NUM*pPin->fall_capI);
+ pPin->rise_capI = (int)(MIO_NUM*pPin->rise_cap);
+ pPin->fall_capI = (int)(MIO_NUM*pPin->fall_cap);
}
for ( j = 0; j < pCell->n_outputs; j++ )