summaryrefslogtreecommitdiffstats
path: root/src/base/io/ioWriteBench.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/ioWriteBench.c
parent7d7e60f2dc84393cd4c5db22d2eaf7b1fb1a79b2 (diff)
downloadabc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.gz
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.tar.bz2
abc-e54d9691616b9a0326e2fdb3156bb4eeb8abfcd7.zip
Version abc70930
Diffstat (limited to 'src/base/io/ioWriteBench.c')
-rw-r--r--src/base/io/ioWriteBench.c335
1 files changed, 0 insertions, 335 deletions
diff --git a/src/base/io/ioWriteBench.c b/src/base/io/ioWriteBench.c
deleted file mode 100644
index 4b766a47..00000000
--- a/src/base/io/ioWriteBench.c
+++ /dev/null
@@ -1,335 +0,0 @@
-/**CFile****************************************************************
-
- FileName [ioWriteBench.c]
-
- SystemName [ABC: Logic synthesis and verification system.]
-
- PackageName [Command processing package.]
-
- Synopsis [Procedures to write the network in BENCH format.]
-
- Author [Alan Mishchenko]
-
- Affiliation [UC Berkeley]
-
- Date [Ver. 1.0. Started - June 20, 2005.]
-
- Revision [$Id: ioWriteBench.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
-
-***********************************************************************/
-
-#include "io.h"
-
-////////////////////////////////////////////////////////////////////////
-/// DECLARATIONS ///
-////////////////////////////////////////////////////////////////////////
-
-static int Io_WriteBenchCheckNames( Abc_Ntk_t * pNtk );
-
-static int Io_WriteBenchOne( FILE * pFile, Abc_Ntk_t * pNtk );
-static int Io_WriteBenchOneNode( FILE * pFile, Abc_Obj_t * pNode );
-
-static int Io_WriteBenchLutOne( FILE * pFile, Abc_Ntk_t * pNtk );
-static int Io_WriteBenchLutOneNode( FILE * pFile, Abc_Obj_t * pNode, Vec_Int_t * vTruth );
-
-////////////////////////////////////////////////////////////////////////
-/// FUNCTION DEFINITIONS ///
-////////////////////////////////////////////////////////////////////////
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBench( Abc_Ntk_t * pNtk, char * pFileName )
-{
- Abc_Ntk_t * pExdc;
- FILE * pFile;
- assert( Abc_NtkIsSopNetlist(pNtk) );
- if ( !Io_WriteBenchCheckNames(pNtk) )
- {
- fprintf( stdout, "Io_WriteBench(): Signal names in this benchmark contain parantheses making them impossible to reproduce in the BENCH format. Use \"short_names\".\n" );
- return 0;
- }
- pFile = fopen( pFileName, "w" );
- if ( pFile == NULL )
- {
- fprintf( stdout, "Io_WriteBench(): Cannot open the output file.\n" );
- return 0;
- }
- fprintf( pFile, "# Benchmark \"%s\" written by ABC on %s\n", pNtk->pName, Extra_TimeStamp() );
- // write the network
- Io_WriteBenchOne( pFile, pNtk );
- // write EXDC network if it exists
- pExdc = Abc_NtkExdc( pNtk );
- if ( pExdc )
- printf( "Io_WriteBench: EXDC is not written (warning).\n" );
- // finalize the file
- fclose( pFile );
- return 1;
-}
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchOne( FILE * pFile, Abc_Ntk_t * pNtk )
-{
- ProgressBar * pProgress;
- Abc_Obj_t * pNode;
- int i;
-
- // write the PIs/POs/latches
- Abc_NtkForEachPi( pNtk, pNode, i )
- fprintf( pFile, "INPUT(%s)\n", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- Abc_NtkForEachPo( pNtk, pNode, i )
- fprintf( pFile, "OUTPUT(%s)\n", Abc_ObjName(Abc_ObjFanin0(pNode)) );
- Abc_NtkForEachLatch( pNtk, pNode, i )
- fprintf( pFile, "%-11s = DFF(%s)\n",
- Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout0(pNode))), Abc_ObjName(Abc_ObjFanin0(Abc_ObjFanin0(pNode))) );
-
- // write internal nodes
- pProgress = Extra_ProgressBarStart( stdout, Abc_NtkObjNumMax(pNtk) );
- Abc_NtkForEachNode( pNtk, pNode, i )
- {
- Extra_ProgressBarUpdate( pProgress, i, NULL );
- Io_WriteBenchOneNode( pFile, pNode );
- }
- Extra_ProgressBarStop( pProgress );
- return 1;
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchOneNode( FILE * pFile, Abc_Obj_t * pNode )
-{
- int nFanins;
-
- assert( Abc_ObjIsNode(pNode) );
- nFanins = Abc_ObjFaninNum(pNode);
- if ( nFanins == 0 )
- { // write the constant 1 node
- assert( Abc_NodeIsConst1(pNode) );
- fprintf( pFile, "%-11s", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- fprintf( pFile, " = vdd\n" );
- }
- else if ( nFanins == 1 )
- { // write the interver/buffer
- if ( Abc_NodeIsBuf(pNode) )
- {
- fprintf( pFile, "%-11s = BUFF(", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- fprintf( pFile, "%s)\n", Abc_ObjName(Abc_ObjFanin0(pNode)) );
- }
- else
- {
- fprintf( pFile, "%-11s = NOT(", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- fprintf( pFile, "%s)\n", Abc_ObjName(Abc_ObjFanin0(pNode)) );
- }
- }
- else
- { // write the AND gate
- fprintf( pFile, "%-11s", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- fprintf( pFile, " = AND(%s, ", Abc_ObjName(Abc_ObjFanin0(pNode)) );
- fprintf( pFile, "%s)\n", Abc_ObjName(Abc_ObjFanin1(pNode)) );
- }
- return 1;
-}
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format with LUTs and DFFRSE.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchLut( Abc_Ntk_t * pNtk, char * pFileName )
-{
- Abc_Ntk_t * pExdc;
- FILE * pFile;
- assert( Abc_NtkIsAigNetlist(pNtk) );
- if ( !Io_WriteBenchCheckNames(pNtk) )
- {
- fprintf( stdout, "Io_WriteBenchLut(): Signal names in this benchmark contain parantheses making them impossible to reproduce in the BENCH format. Use \"short_names\".\n" );
- return 0;
- }
- pFile = fopen( pFileName, "w" );
- if ( pFile == NULL )
- {
- fprintf( stdout, "Io_WriteBench(): Cannot open the output file.\n" );
- return 0;
- }
- fprintf( pFile, "# Benchmark \"%s\" written by ABC on %s\n", pNtk->pName, Extra_TimeStamp() );
- // write the network
- Io_WriteBenchLutOne( pFile, pNtk );
- // write EXDC network if it exists
- pExdc = Abc_NtkExdc( pNtk );
- if ( pExdc )
- printf( "Io_WriteBench: EXDC is not written (warning).\n" );
- // finalize the file
- fclose( pFile );
- return 1;
-}
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchLutOne( FILE * pFile, Abc_Ntk_t * pNtk )
-{
- ProgressBar * pProgress;
- Abc_Obj_t * pNode;
- Vec_Int_t * vMemory;
- int i;
-
- // write the PIs/POs/latches
- Abc_NtkForEachPi( pNtk, pNode, i )
- fprintf( pFile, "INPUT(%s)\n", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- Abc_NtkForEachPo( pNtk, pNode, i )
- fprintf( pFile, "OUTPUT(%s)\n", Abc_ObjName(Abc_ObjFanin0(pNode)) );
- Abc_NtkForEachLatch( pNtk, pNode, i )
- fprintf( pFile, "%-11s = DFFRSE( %s, gnd, gnd, gnd, gnd )\n",
- Abc_ObjName(Abc_ObjFanout0(Abc_ObjFanout0(pNode))), Abc_ObjName(Abc_ObjFanin0(Abc_ObjFanin0(pNode))) );
-//Abc_NtkLevel(pNtk);
- // write internal nodes
- vMemory = Vec_IntAlloc( 10000 );
- pProgress = Extra_ProgressBarStart( stdout, Abc_NtkObjNumMax(pNtk) );
- Abc_NtkForEachNode( pNtk, pNode, i )
- {
- Extra_ProgressBarUpdate( pProgress, i, NULL );
- Io_WriteBenchLutOneNode( pFile, pNode, vMemory );
- }
- Extra_ProgressBarStop( pProgress );
- Vec_IntFree( vMemory );
- return 1;
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Writes the network in BENCH format.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchLutOneNode( FILE * pFile, Abc_Obj_t * pNode, Vec_Int_t * vTruth )
-{
- Abc_Obj_t * pFanin;
- unsigned * pTruth;
- int i, nFanins;
- assert( Abc_ObjIsNode(pNode) );
- nFanins = Abc_ObjFaninNum(pNode);
- assert( nFanins <= 8 );
- // compute the truth table
- pTruth = Abc_ConvertAigToTruth( pNode->pNtk->pManFunc, Hop_Regular(pNode->pData), nFanins, vTruth, 0 );
- if ( Hop_IsComplement(pNode->pData) )
- Extra_TruthNot( pTruth, pTruth, nFanins );
- // consider simple cases
- if ( Extra_TruthIsConst0(pTruth, nFanins) )
- {
- fprintf( pFile, "%-11s = gnd\n", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- return 1;
- }
- if ( Extra_TruthIsConst1(pTruth, nFanins) )
- {
- fprintf( pFile, "%-11s = vdd\n", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- return 1;
- }
- if ( nFanins == 1 )
- {
- fprintf( pFile, "%-11s = LUT 0x%d ( %s )\n",
- Abc_ObjName(Abc_ObjFanout0(pNode)),
- Abc_NodeIsBuf(pNode)? 2 : 1,
- Abc_ObjName(Abc_ObjFanin0(pNode)) );
- return 1;
- }
- // write it in the hexadecimal form
- fprintf( pFile, "%-11s = LUT 0x", Abc_ObjName(Abc_ObjFanout0(pNode)) );
- Extra_PrintHexadecimal( pFile, pTruth, nFanins );
-/*
- {
-extern void Kit_DsdTest( unsigned * pTruth, int nVars );
-Abc_ObjForEachFanin( pNode, pFanin, i )
-printf( "%c%d ", 'a'+i, Abc_ObjFanin0(pFanin)->Level );
-printf( "\n" );
-Kit_DsdTest( pTruth, nFanins );
- }
- if ( pNode->Id % 1000 == 0 )
- {
- int x = 0;
- }
-*/
- // write the fanins
- fprintf( pFile, " (" );
- Abc_ObjForEachFanin( pNode, pFanin, i )
- fprintf( pFile, " %s%s", Abc_ObjName(pFanin), ((i==nFanins-1)? "" : ",") );
- fprintf( pFile, " )\n" );
- return 1;
-}
-
-
-/**Function*************************************************************
-
- Synopsis [Returns 1 if the names cannot be written into the bench file.]
-
- Description []
-
- SideEffects []
-
- SeeAlso []
-
-***********************************************************************/
-int Io_WriteBenchCheckNames( Abc_Ntk_t * pNtk )
-{
- Abc_Obj_t * pObj;
- char * pName;
- int i;
- Abc_NtkForEachObj( pNtk, pObj, i )
- for ( pName = Nm_ManFindNameById(pNtk->pManName, i); pName && *pName; pName++ )
- if ( *pName == '(' || *pName == ')' )
- return 0;
- return 1;
-}
-
-////////////////////////////////////////////////////////////////////////
-/// END OF FILE ///
-////////////////////////////////////////////////////////////////////////
-
-