summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-12-22 14:58:04 -1000
committerAlan Mishchenko <alanmi@berkeley.edu>2015-12-22 14:58:04 -1000
commit68bc46be0ea380d3b9df72e04ab8d6cc06d5da1d (patch)
treee7e6b9ceb3b6fa2fed8b57eca435452f12f44591 /src/base
parent617055f5a2c8f85b145cf273888583e62a160315 (diff)
downloadabc-68bc46be0ea380d3b9df72e04ab8d6cc06d5da1d.tar.gz
abc-68bc46be0ea380d3b9df72e04ab8d6cc06d5da1d.tar.bz2
abc-68bc46be0ea380d3b9df72e04ab8d6cc06d5da1d.zip
Adding names to GIA inputs/outputs (addressing x-valued flops).
Diffstat (limited to 'src/base')
-rw-r--r--src/base/wlc/wlcBlast.c52
1 files changed, 51 insertions, 1 deletions
diff --git a/src/base/wlc/wlcBlast.c b/src/base/wlc/wlcBlast.c
index fac1ff45..426d9bbf 100644
--- a/src/base/wlc/wlcBlast.c
+++ b/src/base/wlc/wlcBlast.c
@@ -551,7 +551,7 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds )
int nRange, nRange0, nRange1, nRange2;
int i, k, b, iFanin, iLit, nAndPrev, * pFans0, * pFans1, * pFans2;
int nFFins = 0, nFFouts = 0, curPi = 0, curPo = 0;
- int nBitCis = 0, nBitCos = 0;
+ int nBitCis = 0, nBitCos = 0, fAdded = 0;
Vec_IntClear( vBits );
Vec_IntGrow( vBits, nBits );
vTemp0 = Vec_IntAlloc( 1000 );
@@ -1027,6 +1027,36 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds )
// create input names
pNew->vNamesIn = Vec_PtrAlloc( Gia_ManCiNum(pNew) );
Wlc_NtkForEachCi( p, pObj, i )
+ if ( Wlc_ObjIsPi(pObj) )
+ {
+ char * pName = Wlc_ObjName(p, Wlc_ObjId(p, pObj));
+ nRange = Wlc_ObjRange( pObj );
+ if ( nRange == 1 )
+ Vec_PtrPush( pNew->vNamesIn, Abc_UtilStrsav(pName) );
+ else
+ for ( k = 0; k < nRange; k++ )
+ {
+ char Buffer[1000];
+ sprintf( Buffer, "%s[%d]", pName, k );
+ Vec_PtrPush( pNew->vNamesIn, Abc_UtilStrsav(Buffer) );
+ }
+ }
+ if ( p->pInits )
+ {
+ int Length = strlen(p->pInits);
+ for ( i = 0; i < Length; i++ )
+ if ( p->pInits[i] == 'x' || p->pInits[i] == 'X' )
+ {
+ char Buffer[100];
+ sprintf( Buffer, "%s%d", "init", i );
+ Vec_PtrPush( pNew->vNamesIn, Abc_UtilStrsav(Buffer) );
+ fAdded = 1;
+ }
+ if ( fAdded )
+ Vec_PtrPush( pNew->vNamesIn, Abc_UtilStrsav("abc_reset_flop") );
+ }
+ Wlc_NtkForEachCi( p, pObj, i )
+ if ( !Wlc_ObjIsPi(pObj) )
{
char * pName = Wlc_ObjName(p, Wlc_ObjId(p, pObj));
nRange = Wlc_ObjRange( pObj );
@@ -1042,8 +1072,27 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds )
}
assert( Vec_PtrSize(pNew->vNamesIn) == Gia_ManCiNum(pNew) );
// create output names
+/*
pNew->vNamesOut = Vec_PtrAlloc( Gia_ManCoNum(pNew) );
Wlc_NtkForEachCo( p, pObj, i )
+ if ( Wlc_ObjIsPo(pObj) )
+ {
+ char * pName = Wlc_ObjName(p, Wlc_ObjId(p, pObj));
+ nRange = Wlc_ObjRange( pObj );
+ if ( nRange == 1 )
+ Vec_PtrPush( pNew->vNamesOut, Abc_UtilStrsav(pName) );
+ else
+ for ( k = 0; k < nRange; k++ )
+ {
+ char Buffer[1000];
+ sprintf( Buffer, "%s[%d]", pName, k );
+ Vec_PtrPush( pNew->vNamesOut, Abc_UtilStrsav(Buffer) );
+ }
+ }
+ if ( fAdded )
+ Vec_PtrPush( pNew->vNamesOut, Abc_UtilStrsav("abc_reset_flop_in") );
+ Wlc_NtkForEachCo( p, pObj, i )
+ if ( !Wlc_ObjIsPo(pObj) )
{
char * pName = Wlc_ObjName(p, Wlc_ObjId(p, pObj));
nRange = Wlc_ObjRange( pObj );
@@ -1058,6 +1107,7 @@ Gia_Man_t * Wlc_NtkBitBlast( Wlc_Ntk_t * p, Vec_Int_t * vBoxIds )
}
}
assert( Vec_PtrSize(pNew->vNamesOut) == Gia_ManCoNum(pNew) );
+*/
return pNew;
}