summaryrefslogtreecommitdiffstats
path: root/src/base/io/ioWriteEqn.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2007-09-30 08:01:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2007-09-30 08:01:00 -0700
commite54d9691616b9a0326e2fdb3156bb4eeb8abfcd7 (patch)
treede3ffe87c3e17950351e3b7d97fa18318bd5ea9a /src/base/io/ioWriteEqn.c
parent7d7e60f2dc84393cd4c5db22d2eaf7b1fb1a79b2 (diff)
downloadabc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.gz
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.bz2
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.zip
Version abc70930
Diffstat (limited to 'src/base/io/ioWriteEqn.c')
-rw-r--r--src/base/io/ioWriteEqn.c252
1 files changed, 0 insertions, 252 deletions
diff --git a/src/base/io/ioWriteEqn.c b/src/base/io/ioWriteEqn.c
deleted file mode 100644
index 95c54577..00000000
--- a/src/base/io/ioWriteEqn.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/**CFile****************************************************************
-
- FileName [ioWriteEqn.c]
-
- SystemName [ABC: Logic synthesis and verification system.]
-
- PackageName [Command processing package.]
-
- Synopsis [Procedures to write equation representation of the network.]
-
- Author [Alan Mishchenko]
-
- Affiliation [UC Berkeley]
-
- Date [Ver. 1.0. Started - June 20, 2005.]
-
- Revision [$Id: ioWriteEqn.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
-
-***********************************************************************/
-
-#include "io.h"
-
-////////////////////////////////////////////////////////////////////////
-/// DECLARATIONS ///
-////////////////////////////////////////////////////////////////////////
-
-static void Io_NtkWriteEqnOne( FILE * pFile, Abc_Ntk_t * pNtk );
-static void Io_NtkWriteEqnCis( FILE * pFile, Abc_Ntk_t * pNtk );
-static void Io_NtkWriteEqnCos( FILE * pFile, Abc_Ntk_t * pNtk );
-static int Io_NtkWriteEqnCheck( Abc_Ntk_t * pNtk );
-
-////////////////////////////////////////////////////////////////////////
-/// FUNCTION DEFINITIONS ///
-////////////////////////////////////////////////////////////////////////
-
-/**Function*************************************************************
-
- Synopsis [Writes the logic network in the equation format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Io_WriteEqn( Abc_Ntk_t * pNtk, char * pFileName )
-{
- FILE * pFile;
-
- assert( Abc_NtkIsAigNetlist(pNtk) );
- if ( Abc_NtkLatchNum(pNtk) > 0 )
- printf( "Warning: only combinational portion is being written.\n" );
-
- // check that the names are fine for the EQN format
- if ( !Io_NtkWriteEqnCheck(pNtk) )
- return;
-
- // start the output stream
- pFile = fopen( pFileName, "w" );
- if ( pFile == NULL )
- {
- fprintf( stdout, "Io_WriteEqn(): Cannot open the output file \"%s\".\n", pFileName );
- return;
- }
- fprintf( pFile, "# Equations for \"%s\" written by ABC on %s\n", pNtk->pName, Extra_TimeStamp() );
-
- // write the equations for the network
- Io_NtkWriteEqnOne( pFile, pNtk );
- fprintf( pFile, "\n" );
- fclose( pFile );
-}
-
-/**Function*************************************************************
-
- Synopsis [Write one network.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Io_NtkWriteEqnOne( FILE * pFile, Abc_Ntk_t * pNtk )
-{
- Vec_Vec_t * vLevels;
- ProgressBar * pProgress;
- Abc_Obj_t * pNode, * pFanin;
- int i, k;
-
- // write the PIs
- fprintf( pFile, "INORDER =" );
- Io_NtkWriteEqnCis( pFile, pNtk );
- fprintf( pFile, ";\n" );
-
- // write the POs
- fprintf( pFile, "OUTORDER =" );
- Io_NtkWriteEqnCos( pFile, pNtk );
- fprintf( pFile, ";\n" );
-
- // write each internal node
- vLevels = Vec_VecAlloc( 10 );
- pProgress = Extra_ProgressBarStart( stdout, Abc_NtkObjNumMax(pNtk) );
- Abc_NtkForEachNode( pNtk, pNode, i )
- {
- Extra_ProgressBarUpdate( pProgress, i, NULL );
- fprintf( pFile, "%s = ", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- // set the input names
- Abc_ObjForEachFanin( pNode, pFanin, k )
- Hop_IthVar(pNtk->pManFunc, k)->pData = Abc_ObjName(pFanin);
- // write the formula
- Hop_ObjPrintEqn( pFile, pNode->pData, vLevels, 0 );
- fprintf( pFile, ";\n" );
- }
- Extra_ProgressBarStop( pProgress );
- Vec_VecFree( vLevels );
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Writes the primary input list.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Io_NtkWriteEqnCis( FILE * pFile, Abc_Ntk_t * pNtk )
-{
- Abc_Obj_t * pTerm, * pNet;
- int LineLength;
- int AddedLength;
- int NameCounter;
- int i;
-
- LineLength = 9;
- NameCounter = 0;
-
- Abc_NtkForEachCi( pNtk, pTerm, i )
- {
- pNet = Abc_ObjFanout0(pTerm);
- // get the line length after this name is written
- AddedLength = strlen(Abc_ObjName(pNet)) + 1;
- if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
- { // write the line extender
- fprintf( pFile, " \n" );
- // reset the line length
- LineLength = 0;
- NameCounter = 0;
- }
- fprintf( pFile, " %s", Abc_ObjName(pNet) );
- LineLength += AddedLength;
- NameCounter++;
- }
-}
-
-/**Function*************************************************************
-
- Synopsis [Writes the primary input list.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-void Io_NtkWriteEqnCos( FILE * pFile, Abc_Ntk_t * pNtk )
-{
- Abc_Obj_t * pTerm, * pNet;
- int LineLength;
- int AddedLength;
- int NameCounter;
- int i;
-
- LineLength = 10;
- NameCounter = 0;
-
- Abc_NtkForEachCo( pNtk, pTerm, i )
- {
- pNet = Abc_ObjFanin0(pTerm);
- // get the line length after this name is written
- AddedLength = strlen(Abc_ObjName(pNet)) + 1;
- if ( NameCounter && LineLength + AddedLength + 3 > IO_WRITE_LINE_LENGTH )
- { // write the line extender
- fprintf( pFile, " \n" );
- // reset the line length
- LineLength = 0;
- NameCounter = 0;
- }
- fprintf( pFile, " %s", Abc_ObjName(pNet) );
- LineLength += AddedLength;
- NameCounter++;
- }
-}
-
-/**Function*************************************************************
-
- Synopsis [Make sure the network does not have offending names.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_NtkWriteEqnCheck( Abc_Ntk_t * pNtk )
-{
- Abc_Obj_t * pObj;
- char * pName;
- int i, k, Length;
- int RetValue = 1;
-
- // make sure the network does not have proper names, such as "0" or "1" or containing parantheses
- Abc_NtkForEachObj( pNtk, pObj, i )
- {
- pName = Nm_ManFindNameById(pNtk->pManName, i);
- if ( pName == NULL )
- continue;
- Length = strlen(pName);
- if ( pName[0] == '0' || pName[0] == '1' )
- {
- RetValue = 0;
- break;
- }
- for ( k = 0; k < Length; k++ )
- if ( pName[k] == '(' || pName[k] == ')' || pName[k] == '!' || pName[k] == '*' || pName[k] == '+' )
- {
- RetValue = 0;
- break;
- }
- if ( k < Length )
- break;
- }
- if ( RetValue == 0 )
- {
- printf( "The network cannot be written in the EQN format because object %d has name \"%s\".\n", i, pName );
- printf( "Consider renaming the objects using command \"short_names\" and trying again.\n" );
- }
- return RetValue;
-}
-
-////////////////////////////////////////////////////////////////////////
-/// END OF FILE ///
-////////////////////////////////////////////////////////////////////////
-
-