ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
cutInt.h
Go to the documentation of this file.
1
20
21#ifndef ABC__opt__cut__cutInt_h
22#define ABC__opt__cut__cutInt_h
23
24
28
29#include <stdio.h>
30#include "misc/extra/extra.h"
31#include "misc/vec/vec.h"
32#include "cut.h"
33#include "cutList.h"
34
36
37
41
45
46typedef struct Cut_HashTableStruct_t_ Cut_HashTable_t;
47
49{
50 // user preferences
51 Cut_Params_t * pParams; // computation parameters
52 Vec_Int_t * vFanCounts; // the array of fanout counters
53 Vec_Int_t * vNodeAttrs; // node attributes (1 = global; 0 = local)
54 // storage for cuts
55 Vec_Ptr_t * vCutsNew; // new cuts by node ID
56 Vec_Ptr_t * vCutsOld; // old cuts by node ID
57 Vec_Ptr_t * vCutsTemp; // temp cuts for cutset nodes by cutset node number
58 // memory management
62 // temporary variables
67 int fSimul;
73 unsigned * puTemp[4];
74 // record of the cut computation
75 Vec_Int_t * vNodeCuts; // the number of cuts for each node
76 Vec_Int_t * vNodeStarts; // the number of the starting cut of each node
77 Vec_Int_t * vCutPairs; // the pairs of parent cuts for each cut
78 // minimum delay mapping with the given cuts
83 // statistics
91 int nNodes;
94 // runtime
101};
102
103// iterator through all the cuts of the list
104#define Cut_ListForEachCut( pList, pCut ) \
105 for ( pCut = pList; \
106 pCut; \
107 pCut = pCut->pNext )
108#define Cut_ListForEachCutStop( pList, pCut, pStop ) \
109 for ( pCut = pList; \
110 pCut != pStop; \
111 pCut = pCut->pNext )
112#define Cut_ListForEachCutSafe( pList, pCut, pCut2 ) \
113 for ( pCut = pList, \
114 pCut2 = pCut? pCut->pNext: NULL; \
115 pCut; \
116 pCut = pCut2, \
117 pCut2 = pCut? pCut->pNext: NULL )
118
122
123// computes signature of the node
124static inline unsigned Cut_NodeSign( int Node ) { return (1 << (Node % 31)); }
125static inline int Cut_TruthWords( int nVarsMax ) { return nVarsMax <= 5 ? 1 : (1 << (nVarsMax - 5)); }
126
130
131/*=== cutCut.c ==========================================================*/
132extern Cut_Cut_t * Cut_CutAlloc( Cut_Man_t * p );
133extern void Cut_CutRecycle( Cut_Man_t * p, Cut_Cut_t * pCut );
134extern int Cut_CutCompare( Cut_Cut_t * pCut1, Cut_Cut_t * pCut2 );
135extern Cut_Cut_t * Cut_CutDupList( Cut_Man_t * p, Cut_Cut_t * pList );
136extern void Cut_CutRecycleList( Cut_Man_t * p, Cut_Cut_t * pList );
137extern Cut_Cut_t * Cut_CutMergeLists( Cut_Cut_t * pList1, Cut_Cut_t * pList2 );
138extern void Cut_CutNumberList( Cut_Cut_t * pList );
139extern Cut_Cut_t * Cut_CutCreateTriv( Cut_Man_t * p, int Node );
140extern void Cut_CutPrintMerge( Cut_Cut_t * pCut, Cut_Cut_t * pCut0, Cut_Cut_t * pCut1 );
141/*=== cutMerge.c ==========================================================*/
142extern Cut_Cut_t * Cut_CutMergeTwo( Cut_Man_t * p, Cut_Cut_t * pCut0, Cut_Cut_t * pCut1 );
143/*=== cutNode.c ==========================================================*/
144extern void Cut_NodeDoComputeCuts( Cut_Man_t * p, Cut_List_t * pSuper, int Node, int fCompl0, int fCompl1, Cut_Cut_t * pList0, Cut_Cut_t * pList1, int fTriv, int TreeCode );
145extern int Cut_CutListVerify( Cut_Cut_t * pList );
146/*=== cutTable.c ==========================================================*/
147extern Cut_HashTable_t * Cut_TableStart( int Size );
148extern void Cut_TableStop( Cut_HashTable_t * pTable );
149extern int Cut_TableLookup( Cut_HashTable_t * pTable, Cut_Cut_t * pCut, int fStore );
150extern void Cut_TableClear( Cut_HashTable_t * pTable );
151extern int Cut_TableReadTime( Cut_HashTable_t * pTable );
152/*=== cutTruth.c ==========================================================*/
153extern void Cut_TruthComputeOld( Cut_Cut_t * pCut, Cut_Cut_t * pCut0, Cut_Cut_t * pCut1, int fCompl0, int fCompl1 );
154extern void Cut_TruthCompute( Cut_Man_t * p, Cut_Cut_t * pCut, Cut_Cut_t * pCut0, Cut_Cut_t * pCut1, int fCompl0, int fCompl1 );
155
156
157
159
160#endif
161
165
ABC_INT64_T abctime
Definition abc_global.h:332
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
void Cut_CutRecycleList(Cut_Man_t *p, Cut_Cut_t *pList)
Definition cutCut.c:148
typedefABC_NAMESPACE_HEADER_START struct Cut_HashTableStruct_t_ Cut_HashTable_t
INCLUDES ///.
Definition cutInt.h:46
Cut_Cut_t * Cut_CutMergeTwo(Cut_Man_t *p, Cut_Cut_t *pCut0, Cut_Cut_t *pCut1)
Definition cutMerge.c:170
Cut_Cut_t * Cut_CutAlloc(Cut_Man_t *p)
FUNCTION DECLARATIONS ///.
Definition cutCut.c:45
Cut_HashTable_t * Cut_TableStart(int Size)
Cut_Cut_t * Cut_CutDupList(Cut_Man_t *p, Cut_Cut_t *pList)
Definition cutCut.c:120
int Cut_TableReadTime(Cut_HashTable_t *pTable)
void Cut_NodeDoComputeCuts(Cut_Man_t *p, Cut_List_t *pSuper, int Node, int fCompl0, int fCompl1, Cut_Cut_t *pList0, Cut_Cut_t *pList1, int fTriv, int TreeCode)
Definition cutNode.c:572
void Cut_CutNumberList(Cut_Cut_t *pList)
Definition cutCut.c:219
void Cut_CutPrintMerge(Cut_Cut_t *pCut, Cut_Cut_t *pCut0, Cut_Cut_t *pCut1)
Definition cutCut.c:326
Cut_Cut_t * Cut_CutMergeLists(Cut_Cut_t *pList1, Cut_Cut_t *pList2)
Definition cutCut.c:185
void Cut_TruthComputeOld(Cut_Cut_t *pCut, Cut_Cut_t *pCut0, Cut_Cut_t *pCut1, int fCompl0, int fCompl1)
Definition cutTruth.c:126
int Cut_CutListVerify(Cut_Cut_t *pList)
Definition cutNode.c:979
void Cut_TruthCompute(Cut_Man_t *p, Cut_Cut_t *pCut, Cut_Cut_t *pCut0, Cut_Cut_t *pCut1, int fCompl0, int fCompl1)
Definition cutTruth.c:177
Cut_Cut_t * Cut_CutCreateTriv(Cut_Man_t *p, int Node)
Definition cutCut.c:238
int Cut_CutCompare(Cut_Cut_t *pCut1, Cut_Cut_t *pCut2)
Definition cutCut.c:92
int Cut_TableLookup(Cut_HashTable_t *pTable, Cut_Cut_t *pCut, int fStore)
void Cut_TableClear(Cut_HashTable_t *pTable)
void Cut_TableStop(Cut_HashTable_t *pTable)
void Cut_CutRecycle(Cut_Man_t *p, Cut_Cut_t *pCut)
Definition cutCut.c:72
typedefABC_NAMESPACE_HEADER_START struct Cut_ListStruct_t_ Cut_List_t
INCLUDES ///.
Definition cutList.h:40
struct Cut_ParamsStruct_t_ Cut_Params_t
Definition cut.h:51
struct Cut_ManStruct_t_ Cut_Man_t
BASIC TYPES ///.
Definition cut.h:48
struct Cut_CutStruct_t_ Cut_Cut_t
Definition cut.h:50
Cube * p
Definition exorList.c:222
struct Extra_MmFixed_t_ Extra_MmFixed_t
Definition extra.h:147
unsigned * puTemp[4]
Definition cutInt.h:73
Vec_Int_t * vNodeCuts
Definition cutInt.h:75
Vec_Int_t * vNodeAttrs
Definition cutInt.h:53
abctime timeMerge
Definition cutInt.h:95
Vec_Ptr_t * vTemp
Definition cutInt.h:64
abctime timeUnion
Definition cutInt.h:96
Vec_Ptr_t * vCutsOld
Definition cutInt.h:56
Cut_Cut_t * pCompareOld
Definition cutInt.h:71
abctime timeTruth
Definition cutInt.h:97
Cut_Cut_t * pStore0[2]
Definition cutInt.h:69
Vec_Int_t * vCutPairs
Definition cutInt.h:77
Extra_MmFixed_t * pMmCuts
Definition cutInt.h:59
Vec_Int_t * vDelays2
Definition cutInt.h:81
Vec_Int_t * vFanCounts
Definition cutInt.h:52
Vec_Int_t * vDelays
Definition cutInt.h:80
Cut_Cut_t * pCompareNew
Definition cutInt.h:72
Vec_Ptr_t * vCutsMax
Definition cutInt.h:79
abctime timeHash
Definition cutInt.h:99
Vec_Ptr_t * vCutsTemp
Definition cutInt.h:57
Cut_Params_t * pParams
Definition cutInt.h:51
abctime timeMap
Definition cutInt.h:100
abctime timeFilter
Definition cutInt.h:98
Vec_Int_t * vNodeStarts
Definition cutInt.h:76
Vec_Ptr_t * vCutsNew
Definition cutInt.h:55
Cut_Cut_t * pReady
Definition cutInt.h:63
Cut_Cut_t * pStore1[2]
Definition cutInt.h:70
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42