Go to the source code of this file.
◆ Ssc_GiaClassesCheckPairs()
Function*************************************************************
Synopsis [Check if the pairs have been disproved.]
Description []
SideEffects []
SeeAlso []
Definition at line 309 of file sscClass.c.
310{
311 int i, iRepr, iObj, Result = 1;
313 if ( iRepr == Gia_ObjRepr(
p, iObj) )
314 printf( "Pair (%d, %d) are still equivalent.\n", iRepr, iObj ), Result = 0;
315
316
317}
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
◆ Ssc_GiaClassesInit()
FUNCTION DECLARATIONS ///.
Function*************************************************************
Synopsis [Refines equivalence classes.]
Description []
SideEffects []
SeeAlso []
Definition at line 265 of file sscClass.c.
266{
268 int i;
273 Gia_ObjSetRepr(
p, i, Gia_ObjIsCand(pObj) ? 0 :
GIA_VOID );
274 if (
p->vClassOld == NULL )
275 p->vClassOld = Vec_IntAlloc( 100 );
276 if (
p->vClassNew == NULL )
277 p->vClassNew = Vec_IntAlloc( 100 );
278}
#define ABC_CALLOC(type, num)
struct Gia_Rpr_t_ Gia_Rpr_t
struct Gia_Obj_t_ Gia_Obj_t
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
◆ Ssc_GiaClassesRefine()
Definition at line 279 of file sscClass.c.
280{
283 int i, Counter = 0;
285 vRefinedC = Vec_IntAlloc( 100 );
287 if ( Gia_ObjIsTail(
p, i) )
289 else if ( Gia_ObjIsConst(
p, i) && !Ssc_GiaSimIsConst0(
p, i) )
290 Vec_IntPush( vRefinedC, i );
292 Counter += Vec_IntSize( vRefinedC );
293 Vec_IntFree( vRefinedC );
294 return Counter;
295}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define Gia_ManForEachCand(p, pObj, i)
void Ssc_GiaSimProcessRefined(Gia_Man_t *p, Vec_Int_t *vRefined)
int Ssc_GiaSimClassRefineOne(Gia_Man_t *p, int i)
◆ Ssc_GiaSimClassCreate()
Function*************************************************************
Synopsis [Refines one equivalence class.]
Description []
SideEffects []
SeeAlso []
Definition at line 128 of file sscClass.c.
129{
130 int Repr =
GIA_VOID, EntPrev = -1, Ent, i;
131 assert( Vec_IntSize(vClass) > 0 );
133 {
134 if ( i == 0 )
135 {
136 Repr = Ent;
138 EntPrev = Ent;
139 }
140 else
141 {
143 Gia_ObjSetRepr(
p, Ent, Repr );
144 Gia_ObjSetNext(
p, EntPrev, Ent );
145 EntPrev = Ent;
146 }
147 }
148 Gia_ObjSetNext(
p, EntPrev, 0 );
149}
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
◆ Ssc_GiaSimClassRefineOne()
| int Ssc_GiaSimClassRefineOne |
( |
Gia_Man_t * | p, |
|
|
int | i ) |
Function*************************************************************
Synopsis [Refines one class using simulation patterns.]
Description []
SideEffects []
SeeAlso []
Definition at line 197 of file sscClass.c.
198{
200 int Ent;
201 assert( Gia_ObjIsHead(
p, i ) );
202 Vec_IntClear(
p->vClassOld );
203 Vec_IntClear(
p->vClassNew );
204 Vec_IntPush(
p->vClassOld, i );
205 pObj = Gia_ManObj(
p, i);
207 {
208 if ( Ssc_GiaSimAreEqual(
p, i, Ent ) )
209 Vec_IntPush(
p->vClassOld, Ent );
210 else
211 Vec_IntPush(
p->vClassNew, Ent );
212 }
213 if ( Vec_IntSize(
p->vClassNew ) == 0 )
214 return 0;
217 if ( Vec_IntSize(
p->vClassNew) > 1 )
219 return 1;
220}
#define Gia_ClassForEachObj1(p, i, iObj)
void Ssc_GiaSimClassCreate(Gia_Man_t *p, Vec_Int_t *vClass)
◆ Ssc_GiaSimClassRefineOneBit()
| int Ssc_GiaSimClassRefineOneBit |
( |
Gia_Man_t * | p, |
|
|
int | i ) |
Function*************************************************************
Synopsis [Refines one equivalence class using individual bit-pattern.]
Description []
SideEffects []
SeeAlso []
Definition at line 162 of file sscClass.c.
163{
165 int Ent;
166 assert( Gia_ObjIsHead(
p, i ) );
167 Vec_IntClear(
p->vClassOld );
168 Vec_IntClear(
p->vClassNew );
169 Vec_IntPush(
p->vClassOld, i );
170 pObj = Gia_ManObj(
p, i);
172 {
173 if ( Ssc_GiaSimAreEqualBit(
p, i, Ent ) )
174 Vec_IntPush(
p->vClassOld, Ent );
175 else
176 Vec_IntPush(
p->vClassNew, Ent );
177 }
178 if ( Vec_IntSize(
p->vClassNew ) == 0 )
179 return 0;
182 return 1;
183}
◆ Ssc_GiaSimProcessRefined()
Definition at line 221 of file sscClass.c.
222{
223 int * pTable, nTableSize, i, k, Key;
224 if ( Vec_IntSize(vRefined) == 0 )
225 return;
226 nTableSize = Abc_PrimeCudd( 100 + Vec_IntSize(vRefined) / 3 );
229 {
230 assert( !Ssc_GiaSimIsConst0(
p, i ) );
231 Key = Ssc_GiaSimHashKey(
p, i, nTableSize );
232 if ( pTable[Key] == 0 )
233 {
234 assert( Gia_ObjRepr(
p, i) == 0 );
235 assert( Gia_ObjNext(
p, i) == 0 );
237 }
238 else
239 {
240 Gia_ObjSetNext(
p, pTable[Key], i );
241 Gia_ObjSetRepr(
p, i, Gia_ObjRepr(
p, pTable[Key]) );
243 Gia_ObjSetRepr(
p, i, pTable[Key] );
244 assert( Gia_ObjRepr(
p, i) > 0 );
245 }
246 pTable[Key] = i;
247 }
249 if ( Gia_ObjIsHead(
p, i ) )
252}