ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
relationGeneration.cpp File Reference
#include <cassert>
#include "misc/vec/vec.h"
#include "sat/cnf/cnf.h"
#include "sat/bsat/satSolver.h"
#include "relationGeneration.hpp"
Include dependency graph for relationGeneration.cpp:

Go to the source code of this file.

Namespaces

namespace  eSLIM
 

Functions

ABC_NAMESPACE_HEADER_START void * Mf_ManGenerateCnf (Gia_Man_t *pGia, int nLutSize, int fCnfObjIds, int fAddOrCla, int fMapping, int fVerbose)
 
void * Cnf_DataWriteIntoSolver (Cnf_Dat_t *p, int nFrames, int fInit)
 
Vec_Int_tGia_ManCollectNodeTfos (Gia_Man_t *p, int *pNodes, int nNodes)
 
Vec_Int_tGia_ManCollectNodeTfis (Gia_Man_t *p, Vec_Int_t *vNodes)
 

Function Documentation

◆ Cnf_DataWriteIntoSolver()

void * Cnf_DataWriteIntoSolver ( Cnf_Dat_t * p,
int nFrames,
int fInit )

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

Synopsis [Writes CNF into a file.]

Description []

SideEffects []

SeeAlso []

Definition at line 579 of file cnfMan.c.

580{
581 return Cnf_DataWriteIntoSolverInt( sat_solver_new(), p, nFrames, fInit );
582}
void * Cnf_DataWriteIntoSolverInt(void *pSolver, Cnf_Dat_t *p, int nFrames, int fInit)
Definition cnfMan.c:486
Cube * p
Definition exorList.c:222
sat_solver * sat_solver_new(void)
Definition satSolver.c:1137
Here is the call graph for this function:

◆ Gia_ManCollectNodeTfis()

Vec_Int_t * Gia_ManCollectNodeTfis ( Gia_Man_t * p,
Vec_Int_t * vNodes )

Definition at line 1093 of file giaQbf.c.

1094{
1095 Vec_Int_t * vTfi = Vec_IntAlloc( 100 );
1096 Gia_Obj_t * pObj; int i, Id;
1098 Gia_ManForEachObjVec( vNodes, p, pObj, i )
1099 if ( Gia_ObjIsCo(pObj) )
1100 Gia_ObjSetTravIdCurrentId( p, Gia_ObjFaninId0p(p, pObj) );
1101 Gia_ManForEachAndReverse( p, pObj, i ) {
1102 if ( !Gia_ObjIsTravIdCurrentId(p, i) )
1103 continue;
1104 Gia_ObjSetTravIdCurrentId(p, Gia_ObjFaninId0(pObj, i));
1105 Gia_ObjSetTravIdCurrentId(p, Gia_ObjFaninId1(pObj, i));
1106 }
1107 Gia_ManForEachCiId( p, Id, i )
1108 if ( Gia_ObjIsTravIdCurrentId(p, Id) )
1109 Vec_IntPush( vTfi, Id );
1110 Gia_ManForEachAnd( p, pObj, i )
1111 if ( Gia_ObjIsTravIdCurrentId(p, i) )
1112 Vec_IntPush( vTfi, i );
1113 return vTfi;
1114}
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
#define Gia_ManForEachAnd(p, pObj, i)
Definition gia.h:1214
#define Gia_ManForEachAndReverse(p, pObj, i)
Definition gia.h:1222
struct Gia_Obj_t_ Gia_Obj_t
Definition gia.h:76
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
Definition gia.h:1194
void Gia_ManIncrementTravId(Gia_Man_t *p)
Definition giaUtil.c:190
#define Gia_ManForEachCiId(p, Id, i)
Definition gia.h:1230
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Gia_ManCollectNodeTfos()

Vec_Int_t * Gia_ManCollectNodeTfos ( Gia_Man_t * p,
int * pNodes,
int nNodes )

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

Synopsis [Derive the SAT solver.]

Description []

SideEffects []

SeeAlso []

Definition at line 1075 of file giaQbf.c.

1076{
1077 Vec_Int_t * vTfo = Vec_IntAlloc( 100 );
1078 Gia_Obj_t * pObj; int i;
1080 for ( i = 0; i < nNodes; i++ )
1081 Gia_ObjSetTravIdCurrentId( p, pNodes[i] );
1082 Gia_ManForEachAnd( p, pObj, i ) {
1083 if ( Gia_ObjIsTravIdCurrentId(p, i) )
1084 continue;
1085 if ( Gia_ObjIsTravIdCurrentId(p, Gia_ObjFaninId0(pObj, i)) || Gia_ObjIsTravIdCurrentId(p, Gia_ObjFaninId1(pObj, i)) )
1086 Gia_ObjSetTravIdCurrentId( p, i ), Vec_IntPush( vTfo, i );
1087 }
1088 Gia_ManForEachCo( p, pObj, i )
1089 if ( Gia_ObjIsTravIdCurrentId(p, Gia_ObjFaninId0p(p, pObj)) )
1090 Vec_IntPush( vTfo, Gia_ObjId(p, pObj) );
1091 return vTfo;
1092}
#define Gia_ManForEachCo(p, pObj, i)
Definition gia.h:1236
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Mf_ManGenerateCnf()

ABC_NAMESPACE_HEADER_START void * Mf_ManGenerateCnf ( Gia_Man_t * pGia,
int nLutSize,
int fCnfObjIds,
int fAddOrCla,
int fMapping,
int fVerbose )

CFile****************************************************************

FileName [relationGeneration.cpp]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [Using Exact Synthesis with the SAT-based Local Improvement Method (eSLIM).]

Synopsis [Procedures for computing Boolean relations.]

Author [Franz-Xaver Reichl]

Affiliation [University of Freiburg]

Date [Ver. 1.0. Started - March 2025.]

Revision [

Id
relationGeneration.cpp,v 1.00 2025/03/17 00:00:00 Exp

]

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

Synopsis [CNF generation]

Description []

SideEffects []

SeeAlso []

Definition at line 1877 of file giaMf.c.

1878{
1879 Gia_Man_t * pNew;
1880 Jf_Par_t Pars, * pPars = &Pars;
1881 assert( nLutSize >= 3 && nLutSize <= 8 );
1882 Mf_ManSetDefaultPars( pPars );
1883 pPars->fGenCnf = 1;
1884 pPars->fCoarsen = !fCnfObjIds;
1885 pPars->nLutSize = nLutSize;
1886 pPars->fCnfObjIds = fCnfObjIds;
1887 pPars->fAddOrCla = fAddOrCla;
1888 pPars->fCnfMapping = fMapping;
1889 pPars->fVerbose = fVerbose;
1890 pNew = Mf_ManPerformMapping( pGia, pPars );
1891 Gia_ManStopP( &pNew );
1892// Cnf_DataPrint( (Cnf_Dat_t *)pGia->pData, 1 );
1893 return pGia->pData;
1894}
Gia_Man_t * Mf_ManPerformMapping(Gia_Man_t *pGia, Jf_Par_t *pPars)
Definition giaMf.c:1822
void Mf_ManSetDefaultPars(Jf_Par_t *pPars)
Definition giaMf.c:1441
void Gia_ManStopP(Gia_Man_t **p)
Definition giaMan.c:224
struct Gia_Man_t_ Gia_Man_t
Definition gia.h:96
struct Jf_Par_t_ Jf_Par_t
Definition gia.h:333
void * pData
Definition gia.h:198
int fGenCnf
Definition gia.h:360
int fCnfObjIds
Definition gia.h:362
int fCnfMapping
Definition gia.h:364
int fCoarsen
Definition gia.h:357
int nLutSize
Definition gia.h:336
int fVerbose
Definition gia.h:370
int fAddOrCla
Definition gia.h:363
#define assert(ex)
Definition util_old.h:213
Here is the caller graph for this function: