ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
dsd.h
Go to the documentation of this file.
1
27
28#ifndef ABC__bdd__dsd__dsd_h
29#define ABC__bdd__dsd__dsd_h
30
31
35
39
40
41
43
44
45// types of DSD nodes
54
58
60typedef struct Dsd_Node_t_ Dsd_Node_t;
62
66
67// complementation and testing for pointers for decomposition entries
68#define Dsd_IsComplement(p) (((int)((ABC_PTRUINT_T) (p) & 01)))
69#define Dsd_Regular(p) ((Dsd_Node_t *)((ABC_PTRUINT_T)(p) & ~01))
70#define Dsd_Not(p) ((Dsd_Node_t *)((ABC_PTRUINT_T)(p) ^ 01))
71#define Dsd_NotCond(p,c) ((Dsd_Node_t *)((ABC_PTRUINT_T)(p) ^ (c)))
72
76
77// iterator through the transitions
78#define Dsd_NodeForEachChild( Node, Index, Child ) \
79 for ( Index = 0; \
80 Index < Dsd_NodeReadDecsNum(Node) && \
81 ((Child = Dsd_NodeReadDec(Node,Index))!=0); \
82 Index++ )
83
87
88/*=== dsdApi.c =======================================================*/
90extern DdNode * Dsd_NodeReadFunc( Dsd_Node_t * p );
91extern DdNode * Dsd_NodeReadSupp( Dsd_Node_t * p );
93extern Dsd_Node_t * Dsd_NodeReadDec ( Dsd_Node_t * p, int i );
94extern int Dsd_NodeReadDecsNum( Dsd_Node_t * p );
96extern void Dsd_NodeSetMark( Dsd_Node_t * p, word Mark );
97extern DdManager * Dsd_ManagerReadDd( Dsd_Manager_t * pMan );
98extern Dsd_Node_t * Dsd_ManagerReadRoot( Dsd_Manager_t * pMan, int i );
99extern Dsd_Node_t * Dsd_ManagerReadInput( Dsd_Manager_t * pMan, int i );
101/*=== dsdMan.c =======================================================*/
102extern Dsd_Manager_t * Dsd_ManagerStart( DdManager * dd, int nSuppMax, int fVerbose );
103extern void Dsd_ManagerStop( Dsd_Manager_t * dMan );
104/*=== dsdProc.c =======================================================*/
105extern void Dsd_Decompose( Dsd_Manager_t * dMan, DdNode ** pbFuncs, int nFuncs );
106extern Dsd_Node_t * Dsd_DecomposeOne( Dsd_Manager_t * pDsdMan, DdNode * bFunc );
107/*=== dsdTree.c =======================================================*/
108extern void Dsd_TreeNodeGetInfo( Dsd_Manager_t * dMan, int * DepthMax, int * GateSizeMax );
109extern void Dsd_TreeNodeGetInfoOne( Dsd_Node_t * pNode, int * DepthMax, int * GateSizeMax );
110extern int Dsd_TreeGetAigCost( Dsd_Node_t * pNode );
112extern int Dsd_TreeCountNonTerminalNodesOne( Dsd_Node_t * pRoot );
113extern int Dsd_TreeCountPrimeNodes( Dsd_Manager_t * pDsdMan );
114extern int Dsd_TreeCountPrimeNodesOne( Dsd_Node_t * pRoot );
115extern int Dsd_TreeCollectDecomposableVars( Dsd_Manager_t * dMan, int * pVars );
116extern Dsd_Node_t ** Dsd_TreeCollectNodesDfs( Dsd_Manager_t * dMan, int * pnNodes );
117extern Dsd_Node_t ** Dsd_TreeCollectNodesDfsOne( Dsd_Manager_t * pDsdMan, Dsd_Node_t * pNode, int * pnNodes );
118extern void Dsd_TreePrint( FILE * pFile, Dsd_Manager_t * dMan, char * pInputNames[], char * pOutputNames[], int fShortNames, int Output, int OffSet );
119extern void Dsd_TreePrint2( FILE * pFile, Dsd_Manager_t * dMan, char * pInputNames[], char * pOutputNames[], int Output );
120extern void Dsd_TreePrint3( void * pStr, Dsd_Manager_t * pDsdMan, int Output );
121extern void Dsd_TreePrint4( void * pStr, Dsd_Manager_t * pDsdMan, int Output );
122extern void Dsd_NodePrint( FILE * pFile, Dsd_Node_t * pNode );
123extern int Dsd_TreeNonDsdMax( Dsd_Manager_t * pDsdMan, int Output );
124extern int Dsd_TreeSuppSize( Dsd_Manager_t * pDsdMan, int Output );
125/*=== dsdLocal.c =======================================================*/
126extern DdNode * Dsd_TreeGetPrimeFunction( DdManager * dd, Dsd_Node_t * pNode );
127
128
129
131
132
133
134#endif
135
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
int Dsd_TreeCountPrimeNodesOne(Dsd_Node_t *pRoot)
Definition dsdTree.c:410
Dsd_Manager_t * Dsd_ManagerStart(DdManager *dd, int nSuppMax, int fVerbose)
FUNCTION DECLARATIONS ///.
Definition dsdMan.c:47
Dsd_Node_t ** Dsd_TreeCollectNodesDfsOne(Dsd_Manager_t *pDsdMan, Dsd_Node_t *pNode, int *pnNodes)
Definition dsdTree.c:585
void Dsd_TreeNodeGetInfoOne(Dsd_Node_t *pNode, int *DepthMax, int *GateSizeMax)
Definition dsdTree.c:183
int Dsd_TreeCountPrimeNodes(Dsd_Manager_t *pDsdMan)
Definition dsdTree.c:389
void Dsd_NodeSetMark(Dsd_Node_t *p, word Mark)
Definition dsdApi.c:77
DdNode * Dsd_NodeReadFunc(Dsd_Node_t *p)
Definition dsdApi.c:54
void Dsd_TreePrint(FILE *pFile, Dsd_Manager_t *dMan, char *pInputNames[], char *pOutputNames[], int fShortNames, int Output, int OffSet)
Definition dsdTree.c:830
Dsd_Node_t * Dsd_ManagerReadConst1(Dsd_Manager_t *pMan)
Definition dsdApi.c:95
Dsd_Node_t * Dsd_NodeReadDec(Dsd_Node_t *p, int i)
Definition dsdApi.c:57
enum Dsd_Type_t_ Dsd_Type_t
Definition dsd.h:61
void Dsd_TreeNodeGetInfo(Dsd_Manager_t *dMan, int *DepthMax, int *GateSizeMax)
Definition dsdTree.c:156
struct Dsd_Manager_t_ Dsd_Manager_t
TYPEDEF DEFINITIONS ///.
Definition dsd.h:59
word Dsd_NodeReadMark(Dsd_Node_t *p)
Definition dsdApi.c:59
Dsd_Node_t * Dsd_ManagerReadRoot(Dsd_Manager_t *pMan, int i)
Definition dsdApi.c:93
void Dsd_TreePrint2(FILE *pFile, Dsd_Manager_t *dMan, char *pInputNames[], char *pOutputNames[], int Output)
Definition dsdTree.c:1106
Dsd_Node_t ** Dsd_NodeReadDecs(Dsd_Node_t *p)
Definition dsdApi.c:56
int Dsd_TreeCountNonTerminalNodesOne(Dsd_Node_t *pRoot)
Definition dsdTree.c:331
DdNode * Dsd_NodeReadSupp(Dsd_Node_t *p)
Definition dsdApi.c:55
Dsd_Node_t * Dsd_DecomposeOne(Dsd_Manager_t *pDsdMan, DdNode *bFunc)
Definition dsdProc.c:230
int Dsd_TreeSuppSize(Dsd_Manager_t *pDsdMan, int Output)
Definition dsdTree.c:693
int Dsd_TreeCountNonTerminalNodes(Dsd_Manager_t *dMan)
Definition dsdTree.c:310
void Dsd_ManagerStop(Dsd_Manager_t *dMan)
Definition dsdMan.c:100
struct Dsd_Node_t_ Dsd_Node_t
Definition dsd.h:60
DdNode * Dsd_TreeGetPrimeFunction(DdManager *dd, Dsd_Node_t *pNode)
FUNCTION DEFINITIONS ///.
Definition dsdLocal.c:54
DdManager * Dsd_ManagerReadDd(Dsd_Manager_t *pMan)
Definition dsdApi.c:96
Dsd_Node_t * Dsd_ManagerReadInput(Dsd_Manager_t *pMan, int i)
Definition dsdApi.c:94
void Dsd_TreePrint4(void *pStr, Dsd_Manager_t *pDsdMan, int Output)
Definition dsdTree.c:803
int Dsd_NodeReadDecsNum(Dsd_Node_t *p)
Definition dsdApi.c:58
int Dsd_TreeGetAigCost(Dsd_Node_t *pNode)
Definition dsdTree.c:291
Dsd_Node_t ** Dsd_TreeCollectNodesDfs(Dsd_Manager_t *dMan, int *pnNodes)
Definition dsdTree.c:555
int Dsd_TreeCollectDecomposableVars(Dsd_Manager_t *dMan, int *pVars)
Definition dsdTree.c:470
void Dsd_TreePrint3(void *pStr, Dsd_Manager_t *pDsdMan, int Output)
Definition dsdTree.c:748
void Dsd_NodePrint(FILE *pFile, Dsd_Node_t *pNode)
Definition dsdTree.c:1138
Dsd_Type_t Dsd_NodeReadType(Dsd_Node_t *p)
FUNCTION DEFINITIONS ///.
Definition dsdApi.c:53
Dsd_Type_t_
STRUCTURE DEFINITIONS ///.
Definition dsd.h:46
@ DSD_NODE_EXOR
Definition dsd.h:51
@ DSD_NODE_OR
Definition dsd.h:50
@ DSD_NODE_PRIME
Definition dsd.h:52
@ DSD_NODE_CONST1
Definition dsd.h:48
@ DSD_NODE_NONE
Definition dsd.h:47
@ DSD_NODE_BUF
Definition dsd.h:49
int Dsd_TreeNonDsdMax(Dsd_Manager_t *pDsdMan, int Output)
Definition dsdTree.c:655
void Dsd_Decompose(Dsd_Manager_t *dMan, DdNode **pbFuncs, int nFuncs)
DECOMPOSITION FUNCTIONS ///.
Definition dsdProc.c:113
Cube * p
Definition exorList.c:222
unsigned __int64 word
DECLARATIONS ///.
Definition kitPerm.c:36
int nSuppMax
Definition llb3Image.c:83
STRUCTURE DEFINITIONS ///.
Definition dsdInt.h:41
word Mark
Definition dsdInt.h:60