mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-04 08:33:58 +02:00
Version abc80404_2
This commit is contained in:
+26
-3
@@ -215,6 +215,7 @@ static int Abc_CommandAbc8Mfs ( Abc_Frame_t * pAbc, int argc, char ** arg
|
||||
static int Abc_CommandAbc8Lutpack ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Balance ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Speedup ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Fraig ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Cec ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Scl ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
static int Abc_CommandAbc8Lcorr ( Abc_Frame_t * pAbc, int argc, char ** argv );
|
||||
@@ -450,6 +451,7 @@ void Abc_Init( Abc_Frame_t * pAbc )
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*lp", Abc_CommandAbc8Lutpack, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*b", Abc_CommandAbc8Balance, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*speedup", Abc_CommandAbc8Speedup, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*fraig", Abc_CommandAbc8Fraig, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*cec", Abc_CommandAbc8Cec, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*scl", Abc_CommandAbc8Scl, 0 );
|
||||
Cmd_CommandAdd( pAbc, "ABC8", "*lcorr", Abc_CommandAbc8Lcorr, 0 );
|
||||
@@ -15674,9 +15676,14 @@ int Abc_CommandAbc8Speedup( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
int Degree;
|
||||
int fVerbose;
|
||||
int fVeryVerbose;
|
||||
extern Aig_Man_t * Nwk_ManSpeedup( void * pNtk );
|
||||
extern Aig_Man_t * Nwk_ManSpeedup( void * pNtk, int fUseLutLib, int Percentage, int Degree, int fVerbose, int fVeryVerbose );
|
||||
|
||||
// set defaults
|
||||
fUseLutLib = 0;
|
||||
Percentage = 3;
|
||||
Degree = 2;
|
||||
fVerbose = 0;
|
||||
fVeryVerbose = 0;
|
||||
Extra_UtilGetoptReset();
|
||||
while ( ( c = Extra_UtilGetopt( argc, argv, "PNlvwh" ) ) != EOF )
|
||||
{
|
||||
@@ -15724,8 +15731,8 @@ int Abc_CommandAbc8Speedup( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
printf( "Abc_CommandAbc8DChoice(): There is no mapped network to strash.\n" );
|
||||
return 1;
|
||||
}
|
||||
|
||||
pAigNew = Nwk_ManSpeedup( pAbc->pAbc8Nwk );
|
||||
|
||||
pAigNew = Nwk_ManSpeedup( pAbc->pAbc8Nwk, fUseLutLib, Percentage, Degree, fVerbose, fVeryVerbose );
|
||||
if ( pAigNew == NULL )
|
||||
{
|
||||
printf( "Abc_CommandAbc8Speedup(): Tranformation of the AIG has failed.\n" );
|
||||
@@ -15748,6 +15755,22 @@ usage:
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
int Abc_CommandAbc8Fraig( Abc_Frame_t * pAbc, int argc, char ** argv )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis []
|
||||
|
||||
+46
-46
@@ -227,52 +227,6 @@ float Abc_NtkDelayTraceLut( Abc_Ntk_t * pNtk, int fUseLutLib )
|
||||
return tArrival;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Determines timing-critical edges of the node.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
unsigned Abc_NtkDelayTraceTCEdges( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, float tDelta, int fUseLutLib )
|
||||
{
|
||||
int pPinPerm[32];
|
||||
float pPinDelays[32];
|
||||
If_Lib_t * pLutLib;
|
||||
Abc_Obj_t * pFanin;
|
||||
unsigned uResult = 0;
|
||||
float tRequired, * pDelays;
|
||||
int k;
|
||||
pLutLib = fUseLutLib? Abc_FrameReadLibLut() : NULL;
|
||||
tRequired = Abc_ObjRequired(pNode);
|
||||
if ( pLutLib == NULL )
|
||||
{
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(pFanin) + 1.0 + tDelta )
|
||||
uResult |= (1 << k);
|
||||
}
|
||||
else if ( !pLutLib->fVarPinDelays )
|
||||
{
|
||||
pDelays = pLutLib->pLutDelays[Abc_ObjFaninNum(pNode)];
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(pFanin) + pDelays[0] + tDelta )
|
||||
uResult |= (1 << k);
|
||||
}
|
||||
else
|
||||
{
|
||||
pDelays = pLutLib->pLutDelays[Abc_ObjFaninNum(pNode)];
|
||||
Abc_NtkDelayTraceSortPins( pNode, pPinPerm, pPinDelays );
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(Abc_ObjFanin(pNode,pPinPerm[k])) + pDelays[k] + tDelta )
|
||||
uResult |= (1 << pPinPerm[k]);
|
||||
}
|
||||
return uResult;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Delay tracing of the LUT mapped network.]
|
||||
@@ -495,6 +449,52 @@ void Abc_NtkSpeedupNode( Abc_Ntk_t * pNtk, Abc_Ntk_t * pAig, Abc_Obj_t * pNode,
|
||||
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Determines timing-critical edges of the node.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
unsigned Abc_NtkDelayTraceTCEdges( Abc_Ntk_t * pNtk, Abc_Obj_t * pNode, float tDelta, int fUseLutLib )
|
||||
{
|
||||
int pPinPerm[32];
|
||||
float pPinDelays[32];
|
||||
If_Lib_t * pLutLib;
|
||||
Abc_Obj_t * pFanin;
|
||||
unsigned uResult = 0;
|
||||
float tRequired, * pDelays;
|
||||
int k;
|
||||
pLutLib = fUseLutLib? Abc_FrameReadLibLut() : NULL;
|
||||
tRequired = Abc_ObjRequired(pNode);
|
||||
if ( pLutLib == NULL )
|
||||
{
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(pFanin) + 1.0 + tDelta )
|
||||
uResult |= (1 << k);
|
||||
}
|
||||
else if ( !pLutLib->fVarPinDelays )
|
||||
{
|
||||
pDelays = pLutLib->pLutDelays[Abc_ObjFaninNum(pNode)];
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(pFanin) + pDelays[0] + tDelta )
|
||||
uResult |= (1 << k);
|
||||
}
|
||||
else
|
||||
{
|
||||
pDelays = pLutLib->pLutDelays[Abc_ObjFaninNum(pNode)];
|
||||
Abc_NtkDelayTraceSortPins( pNode, pPinPerm, pPinDelays );
|
||||
Abc_ObjForEachFanin( pNode, pFanin, k )
|
||||
if ( tRequired < Abc_ObjArrival(Abc_ObjFanin(pNode,pPinPerm[k])) + pDelays[k] + tDelta )
|
||||
uResult |= (1 << pPinPerm[k]);
|
||||
}
|
||||
return uResult;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Adds choices to speed up the network by the given percentage.]
|
||||
|
||||
Reference in New Issue
Block a user