ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
covCore.c File Reference
#include "cov.h"
Include dependency graph for covCore.c:

Go to the source code of this file.

Functions

Abc_Ntk_tAbc_NtkSopEsopCover (Abc_Ntk_t *pNtk, int nFaninMax, int nCubesMax, int fUseEsop, int fUseSop, int fUseInvs, int fVerbose)
 FUNCTION DEFINITIONS ///.
 
Vec_Int_tAbc_NodeCovSupport (Cov_Man_t *p, Vec_Int_t *vSupp0, Vec_Int_t *vSupp1)
 

Function Documentation

◆ Abc_NodeCovSupport()

Vec_Int_t * Abc_NodeCovSupport ( Cov_Man_t * p,
Vec_Int_t * vSupp0,
Vec_Int_t * vSupp1 )

Function*************************************************************

Synopsis []

Description []

SideEffects []

SeeAlso []

Definition at line 282 of file covCore.c.

283{
284 Vec_Int_t * vSupp;
285 int k0, k1;
286
287 assert( vSupp0 && vSupp1 );
288 Vec_IntFill( p->vComTo0, vSupp0->nSize + vSupp1->nSize, -1 );
289 Vec_IntFill( p->vComTo1, vSupp0->nSize + vSupp1->nSize, -1 );
290 Vec_IntClear( p->vPairs0 );
291 Vec_IntClear( p->vPairs1 );
292
293 vSupp = Vec_IntAlloc( vSupp0->nSize + vSupp1->nSize );
294 for ( k0 = k1 = 0; k0 < vSupp0->nSize && k1 < vSupp1->nSize; )
295 {
296 if ( vSupp0->pArray[k0] == vSupp1->pArray[k1] )
297 {
298 Vec_IntWriteEntry( p->vComTo0, vSupp->nSize, k0 );
299 Vec_IntWriteEntry( p->vComTo1, vSupp->nSize, k1 );
300 Vec_IntPush( p->vPairs0, k0 );
301 Vec_IntPush( p->vPairs1, k1 );
302 Vec_IntPush( vSupp, vSupp0->pArray[k0] );
303 k0++; k1++;
304 }
305 else if ( vSupp0->pArray[k0] < vSupp1->pArray[k1] )
306 {
307 Vec_IntWriteEntry( p->vComTo0, vSupp->nSize, k0 );
308 Vec_IntPush( vSupp, vSupp0->pArray[k0] );
309 k0++;
310 }
311 else
312 {
313 Vec_IntWriteEntry( p->vComTo1, vSupp->nSize, k1 );
314 Vec_IntPush( vSupp, vSupp1->pArray[k1] );
315 k1++;
316 }
317 }
318 for ( ; k0 < vSupp0->nSize; k0++ )
319 {
320 Vec_IntWriteEntry( p->vComTo0, vSupp->nSize, k0 );
321 Vec_IntPush( vSupp, vSupp0->pArray[k0] );
322 }
323 for ( ; k1 < vSupp1->nSize; k1++ )
324 {
325 Vec_IntWriteEntry( p->vComTo1, vSupp->nSize, k1 );
326 Vec_IntPush( vSupp, vSupp1->pArray[k1] );
327 }
328/*
329 printf( "Zero : " );
330 for ( k0 = 0; k0 < vSupp0->nSize; k0++ )
331 printf( "%d ", vSupp0->pArray[k0] );
332 printf( "\n" );
333
334 printf( "One : " );
335 for ( k1 = 0; k1 < vSupp1->nSize; k1++ )
336 printf( "%d ", vSupp1->pArray[k1] );
337 printf( "\n" );
338
339 printf( "Sum : " );
340 for ( k0 = 0; k0 < vSupp->nSize; k0++ )
341 printf( "%d ", vSupp->pArray[k0] );
342 printf( "\n" );
343 printf( "\n" );
344*/
345 return vSupp;
346}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Cube * p
Definition exorList.c:222
#define assert(ex)
Definition util_old.h:213

◆ Abc_NtkSopEsopCover()

Abc_Ntk_t * Abc_NtkSopEsopCover ( Abc_Ntk_t * pNtk,
int nFaninMax,
int nCubesMax,
int fUseEsop,
int fUseSop,
int fUseInvs,
int fVerbose )

FUNCTION DEFINITIONS ///.

Function*************************************************************

Synopsis [Performs decomposition.]

Description []

SideEffects []

SeeAlso []

Definition at line 60 of file covCore.c.

61{
62 Abc_Ntk_t * pNtkNew;
63 Cov_Man_t * p;
64
65 assert( Abc_NtkIsStrash(pNtk) );
66
67 // create the manager
68 p = Cov_ManAlloc( pNtk, nFaninMax, nCubesMax );
69 p->fUseEsop = fUseEsop;
70 p->fUseSop = fUseSop;
71 pNtk->pManCut = p;
72
73 // perform mapping
74 Abc_NtkCovCovers( p, pNtk, fVerbose );
75
76 // derive the final network
77// if ( fUseInvs )
78// pNtkNew = Abc_NtkCovDeriveClean( p, pNtk );
79// else
80// pNtkNew = Abc_NtkCovDerive( p, pNtk );
81// pNtkNew = NULL;
82 pNtkNew = Abc_NtkCovDeriveRegular( p, pNtk );
83
84 Cov_ManFree( p );
85 pNtk->pManCut = NULL;
86
87 // make sure that everything is okay
88 if ( pNtkNew && !Abc_NtkCheck( pNtkNew ) )
89 {
90 printf( "Abc_NtkCov: The network check has failed.\n" );
91 Abc_NtkDelete( pNtkNew );
92 return NULL;
93 }
94 return pNtkNew;
95}
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
Definition abcCheck.c:64
struct Abc_Ntk_t_ Abc_Ntk_t
Definition abc.h:115
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
Definition abcNtk.c:1421
void Cov_ManFree(Cov_Man_t *p)
Definition covMan.c:92
Abc_Ntk_t * Abc_NtkCovDeriveRegular(Cov_Man_t *p, Abc_Ntk_t *pNtk)
Definition covBuild.c:503
typedefABC_NAMESPACE_HEADER_START struct Cov_Man_t_ Cov_Man_t
DECLARATIONS ///.
Definition cov.h:34
Cov_Man_t * Cov_ManAlloc(Abc_Ntk_t *pNtk, int nFaninMax, int nCubesMax)
DECLARATIONS ///.
Definition covMan.c:45
void * pManCut
Definition abc.h:193
Here is the call graph for this function: