summaryrefslogtreecommitdiffstats
path: root/src/opt/dar/dar.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/opt/dar/dar.h')
-rw-r--r--src/opt/dar/dar.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/opt/dar/dar.h b/src/opt/dar/dar.h
new file mode 100644
index 00000000..5c2c9bcc
--- /dev/null
+++ b/src/opt/dar/dar.h
@@ -0,0 +1,116 @@
+/**CFile****************************************************************
+
+ FileName [dar.h]
+
+ SystemName [ABC: Logic synthesis and verification system.]
+
+ PackageName [DAG-aware AIG rewriting.]
+
+ Synopsis [External declarations.]
+
+ Author [Alan Mishchenko]
+
+ Affiliation [UC Berkeley]
+
+ Date [Ver. 1.0. Started - April 28, 2007.]
+
+ Revision [$Id: dar.h,v 1.00 2007/04/28 00:00:00 alanmi Exp $]
+
+***********************************************************************/
+
+#ifndef ABC__aig__dar__dar_h
+#define ABC__aig__dar__dar_h
+
+
+////////////////////////////////////////////////////////////////////////
+/// INCLUDES ///
+////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////
+/// PARAMETERS ///
+////////////////////////////////////////////////////////////////////////
+
+
+
+ABC_NAMESPACE_HEADER_START
+
+
+////////////////////////////////////////////////////////////////////////
+/// BASIC TYPES ///
+////////////////////////////////////////////////////////////////////////
+
+typedef struct Dar_RwrPar_t_ Dar_RwrPar_t;
+typedef struct Dar_RefPar_t_ Dar_RefPar_t;
+
+struct Dar_RwrPar_t_
+{
+ int nCutsMax; // the maximum number of cuts to try
+ int nSubgMax; // the maximum number of subgraphs to try
+ int fFanout; // support fanout representation
+ int fUpdateLevel; // update level
+ int fUseZeros; // performs zero-cost replacement
+ int fPower; // enables power-aware rewriting
+ int fRecycle; // enables cut recycling
+ int fVerbose; // enables verbose output
+ int fVeryVerbose; // enables very verbose output
+};
+
+struct Dar_RefPar_t_
+{
+ int nMffcMin; // the min MFFC size for which refactoring is used
+ int nLeafMax; // the max number of leaves of a cut
+ int nCutsMax; // the max number of cuts to consider
+ int fExtend; // extends the cut below MFFC
+ int fUpdateLevel; // updates the level after each move
+ int fUseZeros; // perform zero-cost replacements
+ int fVerbose; // verbosity level
+ int fVeryVerbose; // enables very verbose output
+};
+
+////////////////////////////////////////////////////////////////////////
+/// MACRO DEFINITIONS ///
+////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////
+/// ITERATORS ///
+////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////
+/// FUNCTION DECLARATIONS ///
+////////////////////////////////////////////////////////////////////////
+
+/*=== darLib.c ========================================================*/
+extern void Dar_LibStart();
+extern void Dar_LibStop();
+extern void Dar_LibPrepare( int nSubgraphs );
+extern int Dar_LibReturnClass( unsigned uTruth );
+/*=== darBalance.c ========================================================*/
+extern Aig_Man_t * Dar_ManBalance( Aig_Man_t * p, int fUpdateLevel );
+extern Aig_Man_t * Dar_ManBalanceXor( Aig_Man_t * pAig, int fExor, int fUpdateLevel, int fVerbose );
+extern void Dar_BalancePrintStats( Aig_Man_t * p );
+/*=== darCore.c ========================================================*/
+extern void Dar_ManDefaultRwrParams( Dar_RwrPar_t * pPars );
+extern int Dar_ManRewrite( Aig_Man_t * pAig, Dar_RwrPar_t * pPars );
+extern Aig_MmFixed_t * Dar_ManComputeCuts( Aig_Man_t * pAig, int nCutsMax, int fVerbose );
+/*=== darRefact.c ========================================================*/
+extern void Dar_ManDefaultRefParams( Dar_RefPar_t * pPars );
+extern int Dar_ManRefactor( Aig_Man_t * pAig, Dar_RefPar_t * pPars );
+/*=== darScript.c ========================================================*/
+extern Aig_Man_t * Dar_ManRewriteDefault( Aig_Man_t * pAig );
+extern Aig_Man_t * Dar_ManRwsat( Aig_Man_t * pAig, int fBalance, int fVerbose );
+extern Aig_Man_t * Dar_ManCompress( Aig_Man_t * pAig, int fBalance, int fUpdateLevel, int fPower, int fVerbose );
+extern Aig_Man_t * Dar_ManCompress2( Aig_Man_t * pAig, int fBalance, int fUpdateLevel, int fFanout, int fPower, int fVerbose );
+extern Aig_Man_t * Dar_ManChoice( Aig_Man_t * pAig, int fBalance, int fUpdateLevel, int fConstruct, int nConfMax, int nLevelMax, int fVerbose );
+
+
+
+ABC_NAMESPACE_HEADER_END
+
+
+
+#endif
+
+////////////////////////////////////////////////////////////////////////
+/// END OF FILE ///
+////////////////////////////////////////////////////////////////////////
+