summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaSim.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2021-07-25 14:11:34 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2021-07-25 14:11:34 -0700
commita162b1f47aa4d3c38439d779c7ad943102c63bc5 (patch)
tree34b94cf9e9322a84fabea7f6a000dfd6df3fed55 /src/aig/gia/giaSim.c
parent62180f357678df2be0b678bec33ac8e8b36945b8 (diff)
downloadabc-a162b1f47aa4d3c38439d779c7ad943102c63bc5.tar.gz
abc-a162b1f47aa4d3c38439d779c7ad943102c63bc5.tar.bz2
abc-a162b1f47aa4d3c38439d779c7ad943102c63bc5.zip
Experimental simulation commands.
Diffstat (limited to 'src/aig/gia/giaSim.c')
-rw-r--r--src/aig/gia/giaSim.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/src/aig/gia/giaSim.c b/src/aig/gia/giaSim.c
index a0a65112..ecad182f 100644
--- a/src/aig/gia/giaSim.c
+++ b/src/aig/gia/giaSim.c
@@ -1246,11 +1246,17 @@ void Gia_ManSimOneBit( Gia_Man_t * p, Vec_Int_t * vValues )
Gia_ManForEachCo( p, pObj, k )
pObj->fMark0 = Gia_ObjFanin0(pObj)->fMark0 ^ Gia_ObjFaninC0(pObj);
- Gia_ManForEachCo( p, pObj, k )
+ Gia_ManForEachCi( p, pObj, k )
printf( "%d", k % 10 );
printf( "\n" );
+ Gia_ManForEachCi( p, pObj, k )
+ printf( "%d", Vec_IntEntry(vValues, k) );
+ printf( "\n" );
Gia_ManForEachCo( p, pObj, k )
+ printf( "%d", k % 10 );
+ printf( "\n" );
+ Gia_ManForEachCo( p, pObj, k )
printf( "%d", pObj->fMark0 );
printf( "\n" );
printf( "\n" );
@@ -1309,6 +1315,66 @@ void Gia_ManSimOneBitTest2( Gia_Man_t * p )
Vec_IntFree( vValues );
}
+void Gia_ManSimOneBitTest3( Gia_Man_t * p )
+{
+ Vec_Int_t * vValues = Vec_IntStart( Gia_ManCiNum(p) );
+
+ Vec_IntWriteEntry( vValues, 0, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, 0, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, 0, 1 );
+ Vec_IntWriteEntry( vValues, 1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2+2, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -1, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -2, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -2, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-3, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -1, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -3, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p)/2-3, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -2, 1 );
+ Vec_IntWriteEntry( vValues, Gia_ManCiNum(p) -3, 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 1 );
+ Gia_ManSimOneBit( p, vValues );
+ Vec_IntFill( vValues, Vec_IntSize(vValues), 0 );
+
+ Vec_IntFree( vValues );
+}
+
+
void Gia_ManSimOneBitTest( Gia_Man_t * p )
{
Vec_Int_t * vValues = Vec_IntStart( Gia_ManCiNum(p) );