summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaGen.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2021-05-08 20:10:44 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2021-05-08 20:10:44 -0700
commit76bed2055cc171109a86bf56c6da00aa4d251a30 (patch)
treed4453ed54592f0836e8a4af12188bcb25299eb16 /src/aig/gia/giaGen.c
parent17476146caa0184f908cfc908520375d788a8ba1 (diff)
downloadabc-76bed2055cc171109a86bf56c6da00aa4d251a30.tar.gz
abc-76bed2055cc171109a86bf56c6da00aa4d251a30.tar.bz2
abc-76bed2055cc171109a86bf56c6da00aa4d251a30.zip
Updating LUT synthesis code.
Diffstat (limited to 'src/aig/gia/giaGen.c')
-rw-r--r--src/aig/gia/giaGen.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/aig/gia/giaGen.c b/src/aig/gia/giaGen.c
index 3c0d2235..3c813d5c 100644
--- a/src/aig/gia/giaGen.c
+++ b/src/aig/gia/giaGen.c
@@ -195,6 +195,36 @@ int Gia_ManSimulateWordsInit( Gia_Man_t * p, Vec_Wrd_t * vSimsIn )
return 1;
}
+Vec_Wrd_t * Gia_ManSimulateWordsOut( Gia_Man_t * p, Vec_Wrd_t * vSimsIn )
+{
+ Gia_Obj_t * pObj; int i, Id;
+ int nWords = Vec_WrdSize(vSimsIn) / Gia_ManCiNum(p);
+ Vec_Wrd_t * vSimsOut = Vec_WrdStart( nWords * Gia_ManCoNum(p) );
+ assert( Vec_WrdSize(vSimsIn) == nWords * Gia_ManCiNum(p) );
+ // allocate simulation info for one timeframe
+ Vec_WrdFreeP( &p->vSims );
+ p->vSims = Vec_WrdStart( Gia_ManObjNum(p) * nWords );
+ p->nSimWords = nWords;
+ // set input sim info
+ Gia_ManForEachCiId( p, Id, i )
+ memcpy( Vec_WrdEntryP(p->vSims, Id*nWords), Vec_WrdEntryP(vSimsIn, i*nWords), sizeof(word)*nWords );
+ // perform simulation
+ Gia_ManForEachObj1( p, pObj, i )
+ {
+ if ( Gia_ObjIsAnd(pObj) )
+ Gia_ManObjSimAnd( p, i );
+ else if ( Gia_ObjIsCi(pObj) )
+ continue;
+ else if ( Gia_ObjIsCo(pObj) )
+ Gia_ManObjSimPo( p, i );
+ else assert( 0 );
+ }
+ // set output sim info
+ Gia_ManForEachCoId( p, Id, i )
+ memcpy( Vec_WrdEntryP(vSimsOut, i*nWords), Vec_WrdEntryP(p->vSims, Id*nWords), sizeof(word)*nWords );
+ return vSimsOut;
+}
+
/**Function*************************************************************
Synopsis [Dump data files.]