summaryrefslogtreecommitdiffstats
path: root/src/aig
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2021-06-08 11:39:42 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2021-06-08 11:39:42 -0700
commitdb3f5b6d0bac98b9123681a1189acf738cae83d6 (patch)
treeada84874f727495112edaecdc8c8a2ec2bc1fdd4 /src/aig
parent7d18d6b7aad526ba73b761f3c2f9292f7546b611 (diff)
downloadabc-db3f5b6d0bac98b9123681a1189acf738cae83d6.tar.gz
abc-db3f5b6d0bac98b9123681a1189acf738cae83d6.tar.bz2
abc-db3f5b6d0bac98b9123681a1189acf738cae83d6.zip
Experiments with cut computation.
Diffstat (limited to 'src/aig')
-rw-r--r--src/aig/gia/giaCut.c4
-rw-r--r--src/aig/gia/giaResub2.c42
2 files changed, 44 insertions, 2 deletions
diff --git a/src/aig/gia/giaCut.c b/src/aig/gia/giaCut.c
index fc5396c9..7ee795b6 100644
--- a/src/aig/gia/giaCut.c
+++ b/src/aig/gia/giaCut.c
@@ -767,7 +767,9 @@ void Gia_ManPrintWinStats( Vec_Wec_t * vCuts )
}
void Gia_ManExtractTest( Gia_Man_t * pGia )
{
- Vec_Wec_t * vCutsSel = Gia_ManExtractCuts( pGia, 8, 10000, 1 );
+ extern Vec_Wec_t * Gia_ManExtractCuts2( Gia_Man_t * p, int nCutSize, int nCuts, int fVerbose );
+ Vec_Wec_t * vCutsSel = Gia_ManExtractCuts2( pGia, 8, 10000, 1 );
+ //Vec_Wec_t * vCutsSel = Gia_ManExtractCuts( pGia, 8, 10000, 1 );
abctime clk = Abc_Clock();
Gia_ManCreateWins( pGia, vCutsSel );
//Gia_ManPrintWins( vCutsSel );
diff --git a/src/aig/gia/giaResub2.c b/src/aig/gia/giaResub2.c
index 89ddaf33..be527d4f 100644
--- a/src/aig/gia/giaResub2.c
+++ b/src/aig/gia/giaResub2.c
@@ -1498,10 +1498,50 @@ void Gia_RsbTestArray()
Vec_IntFree( vArray );
}
+/**Function*************************************************************
+
+ Synopsis [Computing cuts of the nodes.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+Vec_Wec_t * Gia_ManExtractCuts2( Gia_Man_t * p, int nCutSize, int nCuts, int fVerbose )
+{
+ int c, nLevelMax = 8;
+ abctime clk = Abc_Clock();
+ Vec_Wec_t * vCuts = Vec_WecStart( nCuts );
+ Vec_Int_t * vPaths = Vec_IntStart( Gia_ManObjNum(p) );
+ srand( time(NULL) );
+ for ( c = 0; c < nCuts; )
+ {
+ Vec_Int_t * vCut, * vWin = NULL;
+ while ( vWin == NULL )
+ {
+ int iPivot = 1 + Gia_ManCiNum(p) + rand() % Gia_ManAndNum(p);
+ assert( Gia_ObjIsAnd(Gia_ManObj(p, iPivot)) );
+ vWin = Gia_RsbWindowInit( p, vPaths, iPivot, nLevelMax );
+ }
+ vCut = Gia_RsbCreateWindowInputs( p, vWin );
+ if ( Vec_IntSize(vCut) >= nCutSize - 2 && Vec_IntSize(vCut) <= nCutSize )
+ {
+ Vec_IntPush( Vec_WecEntry(vCuts, c), Vec_IntSize(vCut) );
+ Vec_IntAppend( Vec_WecEntry(vCuts, c++), vCut );
+ }
+ Vec_IntFree( vCut );
+ Vec_IntFree( vWin );
+ }
+ Vec_IntFree( vPaths );
+ Abc_PrintTime( 0, "Computing cuts ", Abc_Clock() - clk );
+ return vCuts;
+}
+
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
-
ABC_NAMESPACE_IMPL_END