src/opt/rwr/rwrPrint.c File Reference

#include "rwr.h"
Include dependency graph for rwrPrint.c:

Go to the source code of this file.

Functions

void Rwr_Trav2_rec (Rwr_Man_t *p, Rwr_Node_t *pNode, int *pVolume)
void Rwr_GetBushVolume (Rwr_Man_t *p, int Entry, int *pVolume, int *pnFuncs)
int Rwr_GetBushSumOfVolumes (Rwr_Man_t *p, int Entry)
void Rwr_NodePrint_rec (FILE *pFile, Rwr_Node_t *pNode)
void Rwr_NodePrint (FILE *pFile, Rwr_Man_t *p, Rwr_Node_t *pNode)
void Rwr_ManPrint (Rwr_Man_t *p)

Function Documentation

int Rwr_GetBushSumOfVolumes ( Rwr_Man_t p,
int  Entry 
)

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

Synopsis [Adds the node to the end of the list.]

Description []

SideEffects []

SeeAlso []

Definition at line 91 of file rwrPrint.c.

00092 {
00093     Rwr_Node_t * pNode;
00094     int Volume, VolumeTotal = 0;
00095     for ( pNode = p->pTable[Entry]; pNode; pNode = pNode->pNext )
00096     {
00097         if ( pNode->uTruth != p->puCanons[pNode->uTruth] )
00098             continue;
00099         Volume = 0;
00100         Rwr_ManIncTravId( p );
00101         Rwr_Trav2_rec( p, pNode, &Volume );
00102         VolumeTotal += Volume;
00103     }
00104     return VolumeTotal;
00105 }

void Rwr_GetBushVolume ( Rwr_Man_t p,
int  Entry,
int *  pVolume,
int *  pnFuncs 
)

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

Synopsis [Adds the node to the end of the list.]

Description []

SideEffects []

SeeAlso []

Definition at line 63 of file rwrPrint.c.

00064 {
00065     Rwr_Node_t * pNode;
00066     int Volume = 0;
00067     int nFuncs = 0;
00068     Rwr_ManIncTravId( p );
00069     for ( pNode = p->pTable[Entry]; pNode; pNode = pNode->pNext )
00070     {
00071         if ( pNode->uTruth != p->puCanons[pNode->uTruth] )
00072             continue;
00073         nFuncs++;
00074         Rwr_Trav2_rec( p, pNode, &Volume );
00075     }
00076     *pVolume = Volume;
00077     *pnFuncs = nFuncs;
00078 }

void Rwr_ManPrint ( Rwr_Man_t p  ) 

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

Synopsis [Prints one rwr node.]

Description []

SideEffects []

SeeAlso []

Definition at line 234 of file rwrPrint.c.

00235 {
00236     FILE * pFile;
00237     Rwr_Node_t * pNode;
00238     unsigned uTruth;
00239     int Limit, Counter, Volume, nFuncs, i;
00240     pFile = fopen( "graph_lib.txt", "w" );
00241     Counter = 0;
00242     Limit = (1 << 16);
00243     for ( i = 0; i < Limit; i++ )
00244     {
00245         if ( p->pTable[i] == NULL )
00246             continue;
00247         if ( i != p->puCanons[i] )
00248             continue;
00249         fprintf( pFile, "\nClass %3d. Func %6d.  ", p->pMap[i], Counter++ );
00250         Rwr_GetBushVolume( p, i, &Volume, &nFuncs );
00251         fprintf( pFile, "Roots = %3d. Vol = %3d. Sum = %3d.  ", nFuncs, Volume, Rwr_GetBushSumOfVolumes(p, i) );
00252         uTruth = i;
00253         Extra_PrintBinary( pFile, &uTruth, 16 );
00254         fprintf( pFile, "\n" );
00255         for ( pNode = p->pTable[i]; pNode; pNode = pNode->pNext )
00256             if ( pNode->uTruth == p->puCanons[pNode->uTruth] )
00257                 Rwr_NodePrint( pFile, p, pNode );
00258     }
00259     fclose( pFile );
00260 }

void Rwr_NodePrint ( FILE *  pFile,
Rwr_Man_t p,
Rwr_Node_t pNode 
)

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

Synopsis [Prints one rwr node.]

Description []

SideEffects []

SeeAlso []

Definition at line 205 of file rwrPrint.c.

00206 {
00207     unsigned uTruth;
00208     fprintf( pFile, "%5d : ", pNode->Id );
00209     Extra_PrintHex( pFile, pNode->uTruth, 4 );
00210     fprintf( pFile, " tt=" );
00211     uTruth = pNode->uTruth;
00212     Extra_PrintBinary( pFile, &uTruth, 16 );
00213 //    fprintf( pFile, " cn=", pNode->Id );
00214 //    uTruth = p->puCanons[pNode->uTruth];
00215 //    Extra_PrintBinary( pFile, &uTruth, 16 );
00216     fprintf( pFile, " lev=%d", pNode->Level );
00217     fprintf( pFile, " vol=%d", pNode->Volume );
00218     fprintf( pFile, "  " );
00219     Rwr_NodePrint_rec( pFile, pNode );
00220     fprintf( pFile, "\n" );
00221 }

void Rwr_NodePrint_rec ( FILE *  pFile,
Rwr_Node_t pNode 
)

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

Synopsis [Prints one rwr node.]

Description []

SideEffects []

SeeAlso []

Definition at line 118 of file rwrPrint.c.

00119 {
00120     assert( !Rwr_IsComplement(pNode) );
00121 
00122     if ( pNode->Id == 0 )
00123     {
00124         fprintf( pFile, "Const1" );
00125         return;
00126     }
00127 
00128     if ( pNode->Id < 5 )
00129     {
00130         fprintf( pFile, "%c", 'a' + pNode->Id - 1 );
00131         return;
00132     }
00133 
00134     if ( Rwr_IsComplement(pNode->p0) )
00135     {
00136         if ( Rwr_Regular(pNode->p0)->Id < 5 )
00137         {
00138             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p0) );
00139             fprintf( pFile, "\'" );
00140         }
00141         else
00142         {
00143             fprintf( pFile, "(" );
00144             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p0) );
00145             fprintf( pFile, ")\'" );
00146         }
00147     }
00148     else
00149     {
00150         if ( Rwr_Regular(pNode->p0)->Id < 5 )
00151         {
00152             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p0) );
00153         }
00154         else
00155         {
00156             fprintf( pFile, "(" );
00157             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p0) );
00158             fprintf( pFile, ")" );
00159         }
00160     }
00161 
00162     if ( pNode->fExor )
00163         fprintf( pFile, "+" );
00164 
00165     if ( Rwr_IsComplement(pNode->p1) )
00166     {
00167         if ( Rwr_Regular(pNode->p1)->Id < 5 )
00168         {
00169             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p1) );
00170             fprintf( pFile, "\'" );
00171         }
00172         else
00173         {
00174             fprintf( pFile, "(" );
00175             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p1) );
00176             fprintf( pFile, ")\'" );
00177         }
00178     }
00179     else
00180     {
00181         if ( Rwr_Regular(pNode->p1)->Id < 5 )
00182         {
00183             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p1) );
00184         }
00185         else
00186         {
00187             fprintf( pFile, "(" );
00188             Rwr_NodePrint_rec( pFile, Rwr_Regular(pNode->p1) );
00189             fprintf( pFile, ")" );
00190         }
00191     }
00192 }

void Rwr_Trav2_rec ( Rwr_Man_t p,
Rwr_Node_t pNode,
int *  pVolume 
)

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

FileName [rwrCut.c]

SystemName [ABC: Logic synthesis and verification system.]

PackageName [DAG-aware AIG rewriting package.]

Synopsis [Cut computation.]

Author [Alan Mishchenko]

Affiliation [UC Berkeley]

Date [Ver. 1.0. Started - June 20, 2005.]

Revision [

Id
rwrCut.c,v 1.00 2005/06/20 00:00:00 alanmi Exp

] DECLARATIONS /// FUNCTION DEFINITIONS ///Function*************************************************************

Synopsis [Adds one node.]

Description []

SideEffects []

SeeAlso []

Definition at line 42 of file rwrPrint.c.

00043 {
00044     if ( pNode->fUsed || pNode->TravId == p->nTravIds )
00045         return;
00046     pNode->TravId = p->nTravIds;
00047     (*pVolume)++;
00048     Rwr_Trav2_rec( p, Rwr_Regular(pNode->p0), pVolume );
00049     Rwr_Trav2_rec( p, Rwr_Regular(pNode->p1), pVolume );
00050 }


Generated on Tue Jan 5 12:19:34 2010 for abc70930 by  doxygen 1.6.1