diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2007-09-30 08:01:00 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2007-09-30 08:01:00 -0700 |
commit | e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7 (patch) | |
tree | de3ffe87c3e17950351e3b7d97fa18318bd5ea9a /src/base/io/ioWriteEqn.c | |
parent | 7d7e60f2dc84393cd4c5db22d2eaf7b1fb1a79b2 (diff) | |
download | abc-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.c | 252 |
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 /// -//////////////////////////////////////////////////////////////////////// - - |