51 unsigned char * pStop;
52 int i, Item, fProved, iRepr, iNode;
54 pStop += Gia_AigerReadInt( *ppPos ); *ppPos += 4;
56 for ( i = 0; i < nSize; i++ )
59 while ( *ppPos < pStop )
61 Item = Gia_AigerReadUnsigned( ppPos );
72 pReprs[iNode].
fProved = fProved;
73 pReprs[iNode].
iRepr = iRepr;
80 unsigned char * pBuffer;
81 int iRepr, iNode, iPrevRepr, iPrevNode, iLit, nItems, iPos;
85 for ( iRepr = 1; iRepr < Gia_ManObjNum(
p); iRepr++ )
87 nItems += Gia_ObjIsConst(
p, iRepr );
88 if ( !Gia_ObjIsHead(
p, iRepr) )
93 pBuffer =
ABC_ALLOC(
unsigned char,
sizeof(
int) * (nItems + 10) );
95 iPos = Gia_AigerWriteUnsignedBuffer( pBuffer, 4, Abc_Var2Lit(0, 1) );
97 for ( iNode = 1; iNode < Gia_ManObjNum(
p); iNode++ )
98 if ( Gia_ObjIsConst(
p, iNode) )
100 iLit = Abc_Var2Lit( iNode - iPrevNode, Gia_ObjProved(
p, iNode) );
102 iPos = Gia_AigerWriteUnsignedBuffer( pBuffer, iPos, Abc_Var2Lit(iLit, 0) );
108 iPos = Gia_AigerWriteUnsignedBuffer( pBuffer, iPos, Abc_Var2Lit(iRepr - iPrevRepr, 1) );
109 iPrevRepr = iPrevNode = iRepr;
112 iLit = Abc_Var2Lit( iNode - iPrevNode, Gia_ObjProved(
p, iNode) );
114 iPos = Gia_AigerWriteUnsignedBuffer( pBuffer, iPos, Abc_Var2Lit(iLit, 0) );
117 Gia_AigerWriteInt( pBuffer, iPos );
125 return Vec_StrAllocArray( (
char *)pBuffer, nEquivSize );
139static inline unsigned Gia_AigerReadDiffValue(
unsigned char ** ppPos,
int iPrev )
141 int Item = Gia_AigerReadUnsigned( ppPos );
143 return iPrev + (Item >> 1);
144 return iPrev - (Item >> 1);
149 unsigned char * pStop;
150 int k, j, nFanins, nAlloc, iNode = 0, iOffset = nSize;
152 pStop += Gia_AigerReadInt( *ppPos ); *ppPos += 4;
153 nAlloc = nSize + pStop - *ppPos;
155 while ( *ppPos < pStop )
158 pMapping[k++] = nFanins = Gia_AigerReadUnsigned( ppPos );
159 for ( j = 0; j <= nFanins; j++ )
160 pMapping[k++] = iNode = Gia_AigerReadDiffValue( ppPos, iNode );
161 pMapping[iNode] = iOffset;
164 assert( iOffset <= nAlloc );
167static inline int Gia_AigerWriteDiffValue(
unsigned char * pPos,
int iPos,
int iPrev,
int iThis )
170 return Gia_AigerWriteUnsignedBuffer( pPos, iPos, Abc_Var2Lit(iThis - iPrev, 1) );
171 return Gia_AigerWriteUnsignedBuffer( pPos, iPos, Abc_Var2Lit(iPrev - iThis, 0) );
175 unsigned char * pBuffer;
176 int i, k, iPrev, iFan, nItems, iPos = 4;
177 assert( Gia_ManHasMapping(
p) );
181 nItems += 2 + Gia_ObjLutSize(
p, i );
182 pBuffer =
ABC_ALLOC(
unsigned char,
sizeof(
int) * (nItems + 1) );
188 iPos = Gia_AigerWriteUnsignedBuffer( pBuffer, iPos, Gia_ObjLutSize(
p, i) );
192 iPos = Gia_AigerWriteDiffValue( pBuffer, iPos, iPrev, iFan );
195 iPos = Gia_AigerWriteDiffValue( pBuffer, iPos, iPrev, i );
200 Gia_AigerWriteInt( pBuffer, iPos );
208 return Vec_StrAllocArray( (
char *)pBuffer, nMapSize );
224 int * pMapping =
ABC_ALLOC(
int, (
size_t)nSize/4 );
225 memcpy( pMapping, *ppPos, nSize );
231 unsigned char * pBuffer =
ABC_ALLOC(
unsigned char, 4*Vec_IntSize(
p->vMapping) );
232 memcpy( pBuffer, Vec_IntArray(
p->vMapping), (
size_t)4*Vec_IntSize(
p->vMapping) );
233 assert( Vec_IntSize(
p->vMapping) >= Gia_ManObjNum(
p) );
234 return Vec_StrAllocArray( (
char *)pBuffer, 4*Vec_IntSize(
p->vMapping) );
250 int * pMapping, nLuts, LutSize, iRoot, nFanins, i, k, nOffset;
251 nLuts = Gia_AigerReadInt( *ppPos ); *ppPos += 4;
252 LutSize = Gia_AigerReadInt( *ppPos ); *ppPos += 4;
253 pMapping =
ABC_CALLOC(
int, nObjs + (LutSize + 2) * nLuts );
255 for ( i = 0; i < nLuts; i++ )
257 iRoot = Gia_AigerReadInt( *ppPos ); *ppPos += 4;
258 nFanins = Gia_AigerReadInt( *ppPos ); *ppPos += 4;
259 pMapping[iRoot] = nOffset;
261 pMapping[ nOffset++ ] = nFanins;
262 for ( k = 0; k < nFanins; k++ )
264 pMapping[ nOffset++ ] = Gia_AigerReadInt( *ppPos ); *ppPos += 4;
266 pMapping[ nOffset++ ] = iRoot;
268 return Vec_IntAllocArray( pMapping, nOffset );
272 unsigned char * pBuffer;
273 int i, k, iFan, nLuts = 0, LutSize = 0, nSize = 2, nSize2 = 0;
277 nSize += Gia_ObjLutSize(
p, i) + 2;
278 LutSize = Abc_MaxInt( LutSize, Gia_ObjLutSize(
p, i) );
280 pBuffer =
ABC_ALLOC(
unsigned char, 4 * nSize );
281 Gia_AigerWriteInt( pBuffer + 4 * nSize2++, nLuts );
282 Gia_AigerWriteInt( pBuffer + 4 * nSize2++, LutSize );
285 Gia_AigerWriteInt( pBuffer + 4 * nSize2++, i );
286 Gia_AigerWriteInt( pBuffer + 4 * nSize2++, Gia_ObjLutSize(
p, i) );
288 Gia_AigerWriteInt( pBuffer + 4 * nSize2++, iFan );
290 assert( nSize2 == nSize );
291 return Vec_StrAllocArray( (
char *)pBuffer, 4*nSize );
297 if ( !Gia_ObjIsCellInv(
p, i) ) {
298 Gia_AigerWriteInt( pBuffer + nSize2, Gia_ObjCellId(
p, i) ); nSize2 += 4;
299 Gia_AigerWriteInt( pBuffer + nSize2, i ); nSize2 += 4;
302 Gia_AigerWriteInt( pBuffer + nSize2, iFan );
306 Gia_AigerWriteInt( pBuffer + nSize2, 3 ); nSize2 += 4;
307 Gia_AigerWriteInt( pBuffer + nSize2, i ); nSize2 += 4;
308 Gia_AigerWriteInt( pBuffer + nSize2, Abc_LitNot(i) ); nSize2 += 4;
316 unsigned char * pBuffer;
317 int i, nCells = 0, nInstances = 0, nSize = 8, nSize2 = 0;
321 for (
int i = 0; i < nCells; i++)
333 assert ( !Gia_ObjIsCellBuf(
p, i) );
335 if ( Gia_ObjIsCellInv(
p, i) )
338 nSize += Gia_ObjCellSize(
p, i) * 4 + 8;
341 pBuffer =
ABC_ALLOC(
unsigned char, nSize );
342 Gia_AigerWriteInt( pBuffer + nSize2, nCells ); nSize2 += 4;
343 Gia_AigerWriteInt( pBuffer + nSize2, nInstances ); nSize2 += 4;
345 for (
int i = 0; i < nCells; i++)
358 Gia_AigerWriteInt( pBuffer + nSize2, nPins ); nSize2 += 4;
369 if ( Gia_ObjIsCellBuf(
p, i) )
372 if ( Gia_ObjIsCellInv(
p, i) && !Abc_LitIsCompl(i) ) {
384 assert( nSize2 == nSize );
386 return Vec_StrAllocArray( (
char *)pBuffer, nSize );
402 Vec_Int_t * vPacking = Vec_IntAlloc( nSize/4 );
405 for ( i = 0; i < nSize/4; i++, *ppPos += 4 )
406 Vec_IntPush( vPacking, Gia_AigerReadInt( *ppPos ) );
411 unsigned char * pBuffer =
ABC_ALLOC(
unsigned char, 4*Vec_IntSize(vPacking) );
412 int i, Entry, nSize = 0;
414 Gia_AigerWriteInt( pBuffer + 4 * nSize++, Entry );
415 return Vec_StrAllocArray( (
char *)pBuffer, 4*Vec_IntSize(vPacking) );
#define ABC_ALLOC(type, num)
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
struct Vec_Str_t_ Vec_Str_t
Vec_Str_t * Gia_AigerWriteMappingSimple(Gia_Man_t *p)
unsigned char * Gia_AigerWriteMappingInt(Gia_Man_t *p, int *pMapSize)
Vec_Str_t * Gia_AigerWriteMapping(Gia_Man_t *p)
unsigned char * Gia_WriteEquivClassesInt(Gia_Man_t *p, int *pEquivSize)
Vec_Str_t * Gia_WritePacking(Vec_Int_t *vPacking)
ABC_NAMESPACE_IMPL_START Gia_Rpr_t * Gia_AigerReadEquivClasses(unsigned char **ppPos, int nSize)
DECLARATIONS ///.
int * Gia_AigerReadMappingSimple(unsigned char **ppPos, int nSize)
int Gia_AigerWriteCellMappingInstance(Gia_Man_t *p, unsigned char *pBuffer, int nSize2, int i)
Vec_Int_t * Gia_AigerReadMappingDoc(unsigned char **ppPos, int nObjs)
Vec_Str_t * Gia_AigerWriteCellMappingDoc(Gia_Man_t *p)
int * Gia_AigerReadMapping(unsigned char **ppPos, int nSize)
Vec_Int_t * Gia_AigerReadPacking(unsigned char **ppPos, int nSize)
Vec_Str_t * Gia_AigerWriteMappingDoc(Gia_Man_t *p)
Vec_Str_t * Gia_WriteEquivClasses(Gia_Man_t *p)
struct Gia_Rpr_t_ Gia_Rpr_t
#define Gia_ManForEachCell(p, i)
#define Gia_ClassForEachObj1(p, i, iObj)
#define Gia_ManForEachLut(p, i)
#define Gia_LutForEachFanin(p, i, iFan, k)
#define Gia_ClassForEachObj(p, i, iObj)
struct Gia_Man_t_ Gia_Man_t
#define Gia_ManForEachClass(p, i)
#define Gia_CellForEachFanin(p, i, iFanLit, k)
Mio_Cell2_t * Mio_CollectRootsNewDefault2(int nInputs, int *pnGates, int fVerbose)
struct Mio_Cell2_t_ Mio_Cell2_t
char * Mio_PinReadName(Mio_Pin_t *pPin)
char * Mio_GateReadName(Mio_Gate_t *pGate)
struct Mio_PinStruct_t_ Mio_Pin_t
char * Mio_GateReadOutName(Mio_Gate_t *pGate)
#define Mio_GateForEachPin(Gate, Pin)
struct Mio_GateStruct_t_ Mio_Gate_t
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.