ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
mvcApi.c
Go to the documentation of this file.
1
18
19#include "mvc.h"
20
22
23
27
31
43int Mvc_CoverReadWordNum( Mvc_Cover_t * pCover ) { return pCover->nWords; }
44int Mvc_CoverReadBitNum( Mvc_Cover_t * pCover ) { return pCover->nBits; }
45int Mvc_CoverReadCubeNum( Mvc_Cover_t * pCover ) { return pCover->lCubes.nItems; }
46Mvc_Cube_t * Mvc_CoverReadCubeHead( Mvc_Cover_t * pCover ) { return pCover->lCubes.pHead; }
47Mvc_Cube_t * Mvc_CoverReadCubeTail( Mvc_Cover_t * pCover ) { return pCover->lCubes.pTail; }
48Mvc_List_t * Mvc_CoverReadCubeList( Mvc_Cover_t * pCover ) { return &pCover->lCubes; }
49
50
62int Mvc_ListReadCubeNum( Mvc_List_t * pList ) { return pList->nItems; }
63Mvc_Cube_t * Mvc_ListReadCubeHead( Mvc_List_t * pList ) { return pList->pHead; }
64Mvc_Cube_t * Mvc_ListReadCubeTail( Mvc_List_t * pList ) { return pList->pTail; }
65
77void Mvc_CoverSetCubeNum( Mvc_Cover_t * pCover,int nItems ) { pCover->lCubes.nItems = nItems; }
78void Mvc_CoverSetCubeHead( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pHead = pCube; }
79void Mvc_CoverSetCubeTail( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { pCover->lCubes.pTail = pCube; }
80void Mvc_CoverSetCubeList( Mvc_Cover_t * pCover, Mvc_List_t * pList ) { pCover->lCubes = *pList; }
81
94{
95 return Mvc_CoverReadCubeNum(pCover) == 0;
96}
97
110{
111 Mvc_Cube_t * pCube;
112 int iBit, Value;
113
114 if ( Mvc_CoverReadCubeNum(pCover) != 1 )
115 return 0;
116
117 pCube = Mvc_CoverReadCubeHead( pCover );
118 Mvc_CubeForEachBit( pCover, pCube, iBit, Value )
119 if ( Value == 0 )
120 return 0;
121 return 1;
122}
123
136{
137 Mvc_Cube_t * pCube;
138 if ( pCover->nBits != 2 )
139 return 0;
140 if ( Mvc_CoverReadCubeNum(pCover) != 1 )
141 return 0;
142 pCube = pCover->lCubes.pHead;
143 if ( Mvc_CubeBitValue(pCube, 0) == 0 && Mvc_CubeBitValue(pCube, 1) == 1 )
144 return 1;
145 return 0;
146}
147
148
161{
162 Mvc_Cube_t * pCube, * pCube2;
163 Mvc_CoverForEachCubeSafe( pCover, pCube, pCube2 )
164 Mvc_CubeFree( pCover, pCube );
165 pCover->lCubes.nItems = 0;
166 pCover->lCubes.pHead = NULL;
167 pCover->lCubes.pTail = NULL;
168}
169
182{
183 Mvc_Cube_t * pCubeNew;
184 Mvc_CoverMakeEmpty( pCover );
185 pCubeNew = Mvc_CubeAlloc( pCover );
186 Mvc_CubeBitFill( pCubeNew );
187 Mvc_CoverAddCubeTail( pCover, pCubeNew );
188}
189
190
203{
204 Mvc_Cover_t * pCoverNew;
205 pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits );
206 return pCoverNew;
207}
208
221{
222 Mvc_Cube_t * pCubeNew;
223 Mvc_Cover_t * pCoverNew;
224 pCoverNew = Mvc_CoverAlloc( pCover->pMem, pCover->nBits );
225 pCubeNew = Mvc_CubeAlloc( pCoverNew );
226 Mvc_CubeBitFill( pCubeNew );
227 Mvc_CoverAddCubeTail( pCoverNew, pCubeNew );
228 return pCoverNew;
229}
230
231
235
236
238
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Mvc_ListReadCubeNum(Mvc_List_t *pList)
Definition mvcApi.c:62
void Mvc_CoverSetCubeNum(Mvc_Cover_t *pCover, int nItems)
Definition mvcApi.c:77
void Mvc_CoverSetCubeHead(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition mvcApi.c:78
void Mvc_CoverMakeTautology(Mvc_Cover_t *pCover)
Definition mvcApi.c:181
Mvc_Cube_t * Mvc_ListReadCubeHead(Mvc_List_t *pList)
Definition mvcApi.c:63
ABC_NAMESPACE_IMPL_START int Mvc_CoverReadWordNum(Mvc_Cover_t *pCover)
DECLARATIONS ///.
Definition mvcApi.c:43
void Mvc_CoverSetCubeTail(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition mvcApi.c:79
int Mvc_CoverIsEmpty(Mvc_Cover_t *pCover)
Definition mvcApi.c:93
int Mvc_CoverIsTautology(Mvc_Cover_t *pCover)
Definition mvcApi.c:109
Mvc_List_t * Mvc_CoverReadCubeList(Mvc_Cover_t *pCover)
Definition mvcApi.c:48
Mvc_Cover_t * Mvc_CoverCreateTautology(Mvc_Cover_t *pCover)
Definition mvcApi.c:220
Mvc_Cube_t * Mvc_ListReadCubeTail(Mvc_List_t *pList)
Definition mvcApi.c:64
void Mvc_CoverSetCubeList(Mvc_Cover_t *pCover, Mvc_List_t *pList)
Definition mvcApi.c:80
int Mvc_CoverReadBitNum(Mvc_Cover_t *pCover)
Definition mvcApi.c:44
void Mvc_CoverMakeEmpty(Mvc_Cover_t *pCover)
Definition mvcApi.c:160
Mvc_Cube_t * Mvc_CoverReadCubeTail(Mvc_Cover_t *pCover)
Definition mvcApi.c:47
Mvc_Cube_t * Mvc_CoverReadCubeHead(Mvc_Cover_t *pCover)
Definition mvcApi.c:46
int Mvc_CoverReadCubeNum(Mvc_Cover_t *pCover)
Definition mvcApi.c:45
Mvc_Cover_t * Mvc_CoverCreateEmpty(Mvc_Cover_t *pCover)
Definition mvcApi.c:202
int Mvc_CoverIsBinaryBuffer(Mvc_Cover_t *pCover)
Definition mvcApi.c:135
#define Mvc_CoverAddCubeTail(pCover, pCube)
Definition mvc.h:501
struct MvcCubeStruct Mvc_Cube_t
Definition mvc.h:56
Mvc_Cover_t * Mvc_CoverAlloc(Mvc_Manager_t *pMem, int nBits)
DECLARATIONS ///.
Definition mvcCover.c:43
#define Mvc_CubeBitFill(Cube)
Definition mvc.h:385
#define Mvc_CubeBitValue(Cube, Bit)
Definition mvc.h:138
Mvc_Cube_t * Mvc_CubeAlloc(Mvc_Cover_t *pCover)
DECLARATIONS ///.
Definition mvcCube.c:43
struct MvcCoverStruct Mvc_Cover_t
Definition mvc.h:58
#define Mvc_CubeForEachBit(Cover, Cube, iBit, Value)
Definition mvc.h:553
struct MvcListStruct Mvc_List_t
Definition mvc.h:57
void Mvc_CubeFree(Mvc_Cover_t *pCover, Mvc_Cube_t *pCube)
Definition mvcCube.c:114
#define Mvc_CoverForEachCubeSafe(Cover, Cube, Cube2)
Definition mvc.h:536
int nBits
Definition mvc.h:87
int nWords
Definition mvc.h:85
Mvc_List_t lCubes
Definition mvc.h:88
Mvc_Manager_t * pMem
Definition mvc.h:93
Mvc_Cube_t * pHead
Definition mvc.h:77
Mvc_Cube_t * pTail
Definition mvc.h:78
int nItems
Definition mvc.h:79