mirror of https://github.com/YosysHQ/abc.git
Serious bug fix in 'scorr -F <num>' with <num> > 1.
This commit is contained in:
parent
9895f30d95
commit
1bb918167e
|
|
@ -199,6 +199,20 @@ void Aig_ManDfsAll_rec( Aig_Man_t * p, Aig_Obj_t * pObj, Vec_Ptr_t * vNodes )
|
||||||
Aig_ManDfsAll_rec( p, Aig_ObjFanin1(pObj), vNodes );
|
Aig_ManDfsAll_rec( p, Aig_ObjFanin1(pObj), vNodes );
|
||||||
Vec_PtrPush( vNodes, pObj );
|
Vec_PtrPush( vNodes, pObj );
|
||||||
}
|
}
|
||||||
|
Vec_Ptr_t * Aig_ManDfsArray( Aig_Man_t * p, Aig_Obj_t ** pNodes, int nNodes )
|
||||||
|
{
|
||||||
|
Vec_Ptr_t * vNodes;
|
||||||
|
int i;
|
||||||
|
Aig_ManIncrementTravId( p );
|
||||||
|
vNodes = Vec_PtrAlloc( Aig_ManObjNumMax(p) );
|
||||||
|
// add constant
|
||||||
|
Aig_ObjSetTravIdCurrent( p, Aig_ManConst1(p) );
|
||||||
|
Vec_PtrPush( vNodes, Aig_ManConst1(p) );
|
||||||
|
// collect nodes reachable in the DFS order
|
||||||
|
for ( i = 0; i < nNodes; i++ )
|
||||||
|
Aig_ManDfsAll_rec( p, pNodes[i], vNodes );
|
||||||
|
return vNodes;
|
||||||
|
}
|
||||||
|
|
||||||
/**Function*************************************************************
|
/**Function*************************************************************
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -653,23 +653,36 @@ void Aig_ObjPrintVerilog( FILE * pFile, Aig_Obj_t * pObj, Vec_Vec_t * vLevels, i
|
||||||
void Aig_ObjPrintVerbose( Aig_Obj_t * pObj, int fHaig )
|
void Aig_ObjPrintVerbose( Aig_Obj_t * pObj, int fHaig )
|
||||||
{
|
{
|
||||||
assert( !Aig_IsComplement(pObj) );
|
assert( !Aig_IsComplement(pObj) );
|
||||||
printf( "Node %p : ", pObj );
|
printf( "Node %d : ", pObj->Id );
|
||||||
if ( Aig_ObjIsConst1(pObj) )
|
if ( Aig_ObjIsConst1(pObj) )
|
||||||
printf( "constant 1" );
|
printf( "constant 1" );
|
||||||
else if ( Aig_ObjIsCi(pObj) )
|
else if ( Aig_ObjIsCi(pObj) )
|
||||||
printf( "PI" );
|
printf( "CI" );
|
||||||
else if ( Aig_ObjIsCo(pObj) )
|
else if ( Aig_ObjIsCo(pObj) )
|
||||||
{
|
{
|
||||||
printf( "PO" );
|
printf( "CO( " );
|
||||||
printf( "%p%s",
|
printf( "%d%s )",
|
||||||
Aig_ObjFanin0(pObj), (Aig_ObjFaninC0(pObj)? "\'" : " ") );
|
Aig_ObjFanin0(pObj)->Id, (Aig_ObjFaninC0(pObj)? "\'" : " ") );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
printf( "AND( %p%s, %p%s )",
|
printf( "AND( %d%s, %d%s )",
|
||||||
Aig_ObjFanin0(pObj), (Aig_ObjFaninC0(pObj)? "\'" : " "),
|
Aig_ObjFanin0(pObj)->Id, (Aig_ObjFaninC0(pObj)? "\'" : " "),
|
||||||
Aig_ObjFanin1(pObj), (Aig_ObjFaninC1(pObj)? "\'" : " ") );
|
Aig_ObjFanin1(pObj)->Id, (Aig_ObjFaninC1(pObj)? "\'" : " ") );
|
||||||
printf( " (refs = %3d)", Aig_ObjRefs(pObj) );
|
printf( " (refs = %3d)", Aig_ObjRefs(pObj) );
|
||||||
}
|
}
|
||||||
|
void Aig_ObjPrintVerboseCone( Aig_Man_t * p, Aig_Obj_t * pRoot, int fHaig )
|
||||||
|
{
|
||||||
|
extern Vec_Ptr_t * Aig_ManDfsArray( Aig_Man_t * p, Aig_Obj_t ** pNodes, int nNodes );
|
||||||
|
Vec_Ptr_t * vNodes;
|
||||||
|
Aig_Obj_t * pObj;
|
||||||
|
int i;
|
||||||
|
vNodes = Aig_ManDfsArray( p, &pRoot, 1 );
|
||||||
|
Vec_PtrForEachEntry( Aig_Obj_t *, vNodes, pObj, i )
|
||||||
|
Aig_ObjPrintVerbose( pObj, fHaig ), printf( "\n" );
|
||||||
|
printf( "\n" );
|
||||||
|
Vec_PtrFree( vNodes );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**Function*************************************************************
|
/**Function*************************************************************
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -287,6 +287,9 @@ clk = Abc_Clock();
|
||||||
Ssw_ObjSetFrame( p, Aig_ManConst1(p->pAig), f, Aig_ManConst1(p->pFrames) );
|
Ssw_ObjSetFrame( p, Aig_ManConst1(p->pAig), f, Aig_ManConst1(p->pFrames) );
|
||||||
Saig_ManForEachPi( p->pAig, pObj, i )
|
Saig_ManForEachPi( p->pAig, pObj, i )
|
||||||
Ssw_ObjSetFrame( p, pObj, f, Aig_ObjCreateCi(p->pFrames) );
|
Ssw_ObjSetFrame( p, pObj, f, Aig_ObjCreateCi(p->pFrames) );
|
||||||
|
// sweep flops
|
||||||
|
Saig_ManForEachLo( p->pAig, pObj, i )
|
||||||
|
p->fRefined |= Ssw_ManSweepNode( p, pObj, f, 1, NULL );
|
||||||
// sweep internal nodes
|
// sweep internal nodes
|
||||||
Aig_ManForEachNode( p->pAig, pObj, i )
|
Aig_ManForEachNode( p->pAig, pObj, i )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue