summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaTruth.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2016-10-21 17:50:05 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2016-10-21 17:50:05 -0700
commitf5069d667579db639d45fe7f357a7cf72bc3fcbd (patch)
treef124e60d1df75d5939a313a11851ff64adc466f9 /src/aig/gia/giaTruth.c
parent5e4e815d107de3b24de7804e31d4411f005ee995 (diff)
downloadabc-f5069d667579db639d45fe7f357a7cf72bc3fcbd.tar.gz
abc-f5069d667579db639d45fe7f357a7cf72bc3fcbd.tar.bz2
abc-f5069d667579db639d45fe7f357a7cf72bc3fcbd.zip
Code for profiling arithmetic circuits.
Diffstat (limited to 'src/aig/gia/giaTruth.c')
-rw-r--r--src/aig/gia/giaTruth.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/aig/gia/giaTruth.c b/src/aig/gia/giaTruth.c
index 56cf8785..ce06fa0b 100644
--- a/src/aig/gia/giaTruth.c
+++ b/src/aig/gia/giaTruth.c
@@ -109,13 +109,15 @@ void Gia_ObjComputeTruthTable6Lut_rec( Gia_Man_t * p, int iObj, Vec_Wrd_t * vTem
{
word uTruth0, uTruth1;
Gia_Obj_t * pObj = Gia_ManObj( p, iObj );
- if ( !Gia_ObjIsAnd(pObj) )
+ if ( Gia_ObjIsTravIdCurrentId(p, iObj) )
return;
+ Gia_ObjSetTravIdCurrentId(p, iObj);
+ assert( Gia_ObjIsAnd(pObj) );
Gia_ObjComputeTruthTable6Lut_rec( p, Gia_ObjFaninId0p(p, pObj), vTemp );
Gia_ObjComputeTruthTable6Lut_rec( p, Gia_ObjFaninId1p(p, pObj), vTemp );
- uTruth0 = Vec_WrdEntry( vTemp, Gia_ObjFanin0(pObj)->Value );
+ uTruth0 = Vec_WrdEntry( vTemp, Gia_ObjFaninId0p(p, pObj) );
uTruth0 = Gia_ObjFaninC0(pObj) ? ~uTruth0 : uTruth0;
- uTruth1 = Vec_WrdEntry( vTemp, Gia_ObjFanin1(pObj)->Value );
+ uTruth1 = Vec_WrdEntry( vTemp, Gia_ObjFaninId1p(p, pObj) );
uTruth1 = Gia_ObjFaninC1(pObj) ? ~uTruth1 : uTruth1;
Vec_WrdWriteEntry( vTemp, iObj, uTruth0 & uTruth1 );
}
@@ -124,8 +126,12 @@ word Gia_ObjComputeTruthTable6Lut( Gia_Man_t * p, int iObj, Vec_Wrd_t * vTemp )
int i, Fanin;
assert( Vec_WrdSize(vTemp) == Gia_ManObjNum(p) );
assert( Gia_ObjIsLut(p, iObj) );
+ Gia_ManIncrementTravId( p );
Gia_LutForEachFanin( p, iObj, Fanin, i )
+ {
+ Gia_ObjSetTravIdCurrentId( p, Fanin );
Vec_WrdWriteEntry( vTemp, Fanin, s_Truth6[i] );
+ }
assert( i <= 6 );
Gia_ObjComputeTruthTable6Lut_rec( p, iObj, vTemp );
return Vec_WrdEntry( vTemp, iObj );