mirror of https://github.com/YosysHQ/abc.git
Allowing more aggressive restructuring in "stochmap".
This commit is contained in:
parent
1626a337a1
commit
3a063c5901
|
|
@ -1219,7 +1219,7 @@ void Abc_NtkFraigPartitionedTime( Abc_Ntk_t * pNtk, void * pParams )
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
Vec_Int_t * Abc_NtkStochSynthesis( Vec_Ptr_t * vWins, char * pScript )
|
Vec_Int_t * Abc_NtkStochSynthesis( Vec_Ptr_t * vWins, char * pScript )
|
||||||
{
|
{
|
||||||
Vec_Int_t * vGains = Vec_IntStart( Vec_PtrSize(vWins) );
|
Vec_Int_t * vGains = Vec_IntStartFull( Vec_PtrSize(vWins) );
|
||||||
Abc_Ntk_t * pNtk, * pNew; int i;
|
Abc_Ntk_t * pNtk, * pNew; int i;
|
||||||
Vec_PtrForEachEntry( Abc_Ntk_t *, vWins, pNtk, i )
|
Vec_PtrForEachEntry( Abc_Ntk_t *, vWins, pNtk, i )
|
||||||
{
|
{
|
||||||
|
|
@ -1248,7 +1248,7 @@ Vec_Int_t * Abc_NtkStochSynthesis( Vec_Ptr_t * vWins, char * pScript )
|
||||||
{
|
{
|
||||||
double Before = Abc_NtkGetMappedArea(pNtk);
|
double Before = Abc_NtkGetMappedArea(pNtk);
|
||||||
double After = Abc_NtkGetMappedArea(pNew);
|
double After = Abc_NtkGetMappedArea(pNew);
|
||||||
if ( After < Before )
|
if ( Before >= After )
|
||||||
{
|
{
|
||||||
Vec_IntWriteEntry( vGains, i, (int)(Before - After) );
|
Vec_IntWriteEntry( vGains, i, (int)(Before - After) );
|
||||||
Abc_NtkDelete( pNtk );
|
Abc_NtkDelete( pNtk );
|
||||||
|
|
@ -1257,7 +1257,7 @@ Vec_Int_t * Abc_NtkStochSynthesis( Vec_Ptr_t * vWins, char * pScript )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( Abc_NtkNodeNum(pNew) < Abc_NtkNodeNum(pNtk) )
|
if ( Abc_NtkNodeNum(pNtk) >= Abc_NtkNodeNum(pNew) )
|
||||||
{
|
{
|
||||||
Vec_IntWriteEntry( vGains, i, Abc_NtkNodeNum(pNtk) - Abc_NtkNodeNum(pNew) );
|
Vec_IntWriteEntry( vGains, i, Abc_NtkNodeNum(pNtk) - Abc_NtkNodeNum(pNew) );
|
||||||
Abc_NtkDelete( pNtk );
|
Abc_NtkDelete( pNtk );
|
||||||
|
|
@ -1320,7 +1320,7 @@ Abc_Ntk_t * Abc_NtkStochProcessOne( Abc_Ntk_t * p, char * pScript0, int Rand, in
|
||||||
ABC_FREE( pScript );
|
ABC_FREE( pScript );
|
||||||
pNew = Abc_NtkReadFromFile( FileName );
|
pNew = Abc_NtkReadFromFile( FileName );
|
||||||
unlink( FileName );
|
unlink( FileName );
|
||||||
if ( pNew && Abc_NtkGetMappedArea(pNew) < Abc_NtkGetMappedArea(p) ) {
|
if ( pNew && Abc_NtkGetMappedArea(pNew) <= Abc_NtkGetMappedArea(p) ) {
|
||||||
pNew = Abc_NtkDupDfs( pTemp = pNew );
|
pNew = Abc_NtkDupDfs( pTemp = pNew );
|
||||||
Abc_NtkDelete( pTemp );
|
Abc_NtkDelete( pTemp );
|
||||||
return pNew;
|
return pNew;
|
||||||
|
|
@ -1343,7 +1343,7 @@ Vec_Int_t * Abc_NtkStochProcess( Vec_Ptr_t * vWins, char * pScript, int nProcs,
|
||||||
if ( nProcs <= 2 ) {
|
if ( nProcs <= 2 ) {
|
||||||
return Abc_NtkStochSynthesis( vWins, pScript );
|
return Abc_NtkStochSynthesis( vWins, pScript );
|
||||||
}
|
}
|
||||||
Vec_Int_t * vGains = Vec_IntStart( Vec_PtrSize(vWins) );
|
Vec_Int_t * vGains = Vec_IntStartFull( Vec_PtrSize(vWins) );
|
||||||
StochSynData_t * pData = ABC_CALLOC( StochSynData_t, Vec_PtrSize(vWins) );
|
StochSynData_t * pData = ABC_CALLOC( StochSynData_t, Vec_PtrSize(vWins) );
|
||||||
Vec_Ptr_t * vData = Vec_PtrAlloc( Vec_PtrSize(vWins) );
|
Vec_Ptr_t * vData = Vec_PtrAlloc( Vec_PtrSize(vWins) );
|
||||||
Abc_Ntk_t * pNtk; int i;
|
Abc_Ntk_t * pNtk; int i;
|
||||||
|
|
@ -1481,7 +1481,7 @@ Abc_Ntk_t * Abc_NtkInsertPartitions( Abc_Ntk_t * p, Vec_Ptr_t * vvIns, Vec_Ptr_t
|
||||||
Abc_NtkIncrementTravId( p );
|
Abc_NtkIncrementTravId( p );
|
||||||
while ( 1 ) {
|
while ( 1 ) {
|
||||||
int i, Gain, iEntry = Vec_IntArgMax(vGains);
|
int i, Gain, iEntry = Vec_IntArgMax(vGains);
|
||||||
if ( iEntry == -1 || Vec_IntEntry(vGains, iEntry) <= 0 )
|
if ( iEntry == -1 || Vec_IntEntry(vGains, iEntry) < 0 )
|
||||||
break;
|
break;
|
||||||
//printf( "Selecting partition %d with gain %d.\n", iEntry, Vec_IntEntry(vGains, iEntry) );
|
//printf( "Selecting partition %d with gain %d.\n", iEntry, Vec_IntEntry(vGains, iEntry) );
|
||||||
Vec_IntWriteEntry( vGains, iEntry, -1 );
|
Vec_IntWriteEntry( vGains, iEntry, -1 );
|
||||||
|
|
@ -1491,7 +1491,7 @@ Abc_Ntk_t * Abc_NtkInsertPartitions( Abc_Ntk_t * p, Vec_Ptr_t * vvIns, Vec_Ptr_t
|
||||||
extern void Abc_NtKMarkTfiTfo( Vec_Int_t * vOne, Abc_Ntk_t * pNtk );
|
extern void Abc_NtKMarkTfiTfo( Vec_Int_t * vOne, Abc_Ntk_t * pNtk );
|
||||||
Abc_NtKMarkTfiTfo( (Vec_Int_t *)Vec_PtrEntryLast(vvInsNew), p );
|
Abc_NtKMarkTfiTfo( (Vec_Int_t *)Vec_PtrEntryLast(vvInsNew), p );
|
||||||
Vec_IntForEachEntry( vGains, Gain, i ) {
|
Vec_IntForEachEntry( vGains, Gain, i ) {
|
||||||
if ( Gain <= 0 )
|
if ( Gain < 0 )
|
||||||
continue;
|
continue;
|
||||||
Vec_Int_t * vNodes = (Vec_Int_t *)Vec_PtrEntry(vvNodes, i);
|
Vec_Int_t * vNodes = (Vec_Int_t *)Vec_PtrEntry(vvNodes, i);
|
||||||
Abc_Obj_t * pNode; int j;
|
Abc_Obj_t * pNode; int j;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue