summaryrefslogtreecommitdiffstats
path: root/src/map/if/ifCom.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-12-10 00:59:54 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2012-12-10 00:59:54 -0800
commit5eedc74a153fd2242a56f06f208bee7e3b0dfaf7 (patch)
tree318e31a46f319a30ae79b1286158d344fc56bce7 /src/map/if/ifCom.c
parent8355eb1d41cde28c5acca0790124bd15790d906f (diff)
downloadabc-5eedc74a153fd2242a56f06f208bee7e3b0dfaf7.tar.gz
abc-5eedc74a153fd2242a56f06f208bee7e3b0dfaf7.tar.bz2
abc-5eedc74a153fd2242a56f06f208bee7e3b0dfaf7.zip
Adding box library.
Diffstat (limited to 'src/map/if/ifCom.c')
-rw-r--r--src/map/if/ifCom.c366
1 files changed, 366 insertions, 0 deletions
diff --git a/src/map/if/ifCom.c b/src/map/if/ifCom.c
new file mode 100644
index 00000000..a6af038f
--- /dev/null
+++ b/src/map/if/ifCom.c
@@ -0,0 +1,366 @@
+/**CFile****************************************************************
+
+ FileName [ifCom.c]
+
+ SystemName [ABC: Logic synthesis and verification system.]
+
+ PackageName [FPGA mapping based on priority cuts.]
+
+ Synopsis [Command handlers.]
+
+ Author [Alan Mishchenko]
+
+ Affiliation [UC Berkeley]
+
+ Date [Ver. 1.0. Started - November 21, 2006.]
+
+ Revision [$Id: ifCom.c,v 1.00 2006/11/21 00:00:00 alanmi Exp $]
+
+***********************************************************************/
+
+#include "if.h"
+#include "base/main/main.h"
+
+ABC_NAMESPACE_IMPL_START
+
+
+////////////////////////////////////////////////////////////////////////
+/// DECLARATIONS ///
+////////////////////////////////////////////////////////////////////////
+
+static int If_CommandReadLut ( Abc_Frame_t * pAbc, int argc, char **argv );
+static int If_CommandPrintLut( Abc_Frame_t * pAbc, int argc, char **argv );
+static int If_CommandReadBox ( Abc_Frame_t * pAbc, int argc, char **argv );
+static int If_CommandPrintBox( Abc_Frame_t * pAbc, int argc, char **argv );
+
+////////////////////////////////////////////////////////////////////////
+/// FUNCTION DEFINITIONS ///
+////////////////////////////////////////////////////////////////////////
+
+/**Function*************************************************************
+
+ Synopsis [Package initialization procedure.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void If_Init( Abc_Frame_t * pAbc )
+{
+ // set the default library
+ If_Lib_t s_LutLib = { "lutlib", 4, 0, {0,1,1,1,1}, {{0},{1},{1},{1},{1}} };
+ Abc_FrameSetLibLut( If_LutLibDup(&s_LutLib) );
+
+ Cmd_CommandAdd( pAbc, "FPGA mapping", "read_lut", If_CommandReadLut, 0 );
+ Cmd_CommandAdd( pAbc, "FPGA mapping", "print_lut", If_CommandPrintLut, 0 );
+
+ Cmd_CommandAdd( pAbc, "FPGA mapping", "read_box", If_CommandReadBox, 0 );
+ Cmd_CommandAdd( pAbc, "FPGA mapping", "print_box", If_CommandPrintBox, 0 );
+}
+
+/**Function*************************************************************
+
+ Synopsis [Package ending procedure.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+void If_End( Abc_Frame_t * pAbc )
+{
+ If_LutLibFree( (If_Lib_t *) Abc_FrameReadLibLut() );
+ If_LibBoxFree( (If_LibBox_t *)Abc_FrameReadLibBox() );
+}
+
+/**Function*************************************************************
+
+ Synopsis [Command procedure to read LUT libraries.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int If_CommandReadLut( Abc_Frame_t * pAbc, int argc, char **argv )
+{
+ FILE * pFile;
+ FILE * pOut, * pErr;
+ If_Lib_t * pLib;
+ Abc_Ntk_t * pNet;
+ char * FileName;
+ int fVerbose;
+ int c;
+
+ pNet = Abc_FrameReadNtk(pAbc);
+ pOut = Abc_FrameReadOut(pAbc);
+ pErr = Abc_FrameReadErr(pAbc);
+
+ // set the defaults
+ fVerbose = 1;
+ Extra_UtilGetoptReset();
+ while ( (c = Extra_UtilGetopt(argc, argv, "vh")) != EOF )
+ {
+ switch (c)
+ {
+ case 'v':
+ fVerbose ^= 1;
+ break;
+ case 'h':
+ goto usage;
+ break;
+ default:
+ goto usage;
+ }
+ }
+
+ if ( argc != globalUtilOptind + 1 )
+ goto usage;
+
+ // get the input file name
+ FileName = argv[globalUtilOptind];
+ if ( (pFile = fopen( FileName, "r" )) == NULL )
+ {
+ fprintf( pErr, "Cannot open input file \"%s\". ", FileName );
+ if ( (FileName = Extra_FileGetSimilarName( FileName, ".genlib", ".lib", ".gen", ".g", NULL )) )
+ fprintf( pErr, "Did you mean \"%s\"?", FileName );
+ fprintf( pErr, "\n" );
+ return 1;
+ }
+ fclose( pFile );
+
+ // set the new network
+ pLib = If_LutLibRead( FileName );
+ if ( pLib == NULL )
+ {
+ fprintf( pErr, "Reading LUT library has failed.\n" );
+ goto usage;
+ }
+ // replace the current library
+ If_LutLibFree( (If_Lib_t *)Abc_FrameReadLibLut() );
+ Abc_FrameSetLibLut( pLib );
+ return 0;
+
+usage:
+ fprintf( pErr, "\nusage: read_lut [-vh]\n");
+ fprintf( pErr, "\t read the LUT library from the file\n" );
+ fprintf( pErr, "\t-v : toggles enabling of verbose output [default = %s]\n", (fVerbose? "yes" : "no") );
+ fprintf( pErr, "\t-h : print the command usage\n");
+ fprintf( pErr, "\t \n");
+ fprintf( pErr, "\t File format for a LUT library:\n");
+ fprintf( pErr, "\t (the default library is shown)\n");
+ fprintf( pErr, "\t \n");
+ fprintf( pErr, "\t # The area/delay of k-variable LUTs:\n");
+ fprintf( pErr, "\t # k area delay\n");
+ fprintf( pErr, "\t 1 1 1\n");
+ fprintf( pErr, "\t 2 2 2\n");
+ fprintf( pErr, "\t 3 4 3\n");
+ fprintf( pErr, "\t 4 8 4\n");
+ fprintf( pErr, "\t 5 16 5\n");
+ fprintf( pErr, "\t 6 32 6\n");
+ return 1; /* error exit */
+}
+
+/**Function*************************************************************
+
+ Synopsis [Command procedure to read LUT libraries.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int If_CommandPrintLut( Abc_Frame_t * pAbc, int argc, char **argv )
+{
+ FILE * pOut, * pErr;
+ Abc_Ntk_t * pNet;
+ int fVerbose;
+ int c;
+
+ pNet = Abc_FrameReadNtk(pAbc);
+ pOut = Abc_FrameReadOut(pAbc);
+ pErr = Abc_FrameReadErr(pAbc);
+
+ // set the defaults
+ fVerbose = 1;
+ Extra_UtilGetoptReset();
+ while ( (c = Extra_UtilGetopt(argc, argv, "vh")) != EOF )
+ {
+ switch (c)
+ {
+ case 'v':
+ fVerbose ^= 1;
+ break;
+ case 'h':
+ goto usage;
+ break;
+ default:
+ goto usage;
+ }
+ }
+
+ if ( argc != globalUtilOptind )
+ goto usage;
+
+ // set the new network
+ If_LutLibPrint( (If_Lib_t *)Abc_FrameReadLibLut() );
+ return 0;
+
+usage:
+ fprintf( pErr, "\nusage: print_lut [-vh]\n");
+ fprintf( pErr, "\t print the current LUT library\n" );
+ fprintf( pErr, "\t-v : toggles enabling of verbose output [default = %s]\n", (fVerbose? "yes" : "no") );
+ fprintf( pErr, "\t-h : print the command usage\n");
+ return 1; /* error exit */
+}
+
+/**Function*************************************************************
+
+ Synopsis []
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int If_CommandReadBox( Abc_Frame_t * pAbc, int argc, char **argv )
+{
+ FILE * pFile;
+ FILE * pOut, * pErr;
+ If_LibBox_t * pLib;
+ Abc_Ntk_t * pNet;
+ char * FileName;
+ int fVerbose;
+ int c;
+
+ pNet = Abc_FrameReadNtk(pAbc);
+ pOut = Abc_FrameReadOut(pAbc);
+ pErr = Abc_FrameReadErr(pAbc);
+
+ // set the defaults
+ fVerbose = 1;
+ Extra_UtilGetoptReset();
+ while ( (c = Extra_UtilGetopt(argc, argv, "vh")) != EOF )
+ {
+ switch (c)
+ {
+ case 'v':
+ fVerbose ^= 1;
+ break;
+ case 'h':
+ goto usage;
+ break;
+ default:
+ goto usage;
+ }
+ }
+
+ if ( argc != globalUtilOptind + 1 )
+ goto usage;
+
+ // get the input file name
+ FileName = argv[globalUtilOptind];
+ if ( (pFile = fopen( FileName, "r" )) == NULL )
+ {
+ fprintf( pErr, "Cannot open input file \"%s\". ", FileName );
+ if ( (FileName = Extra_FileGetSimilarName( FileName, ".genlib", ".lib", ".gen", ".g", NULL )) )
+ fprintf( pErr, "Did you mean \"%s\"?", FileName );
+ fprintf( pErr, "\n" );
+ return 1;
+ }
+ fclose( pFile );
+
+ // set the new network
+ pLib = If_LibBoxRead( FileName );
+ if ( pLib == NULL )
+ {
+ fprintf( pErr, "Reading LUT library has failed.\n" );
+ goto usage;
+ }
+ // replace the current library
+ If_LibBoxFree( (If_LibBox_t *)Abc_FrameReadLibBox() );
+ Abc_FrameSetLibBox( pLib );
+ return 0;
+
+usage:
+ fprintf( pErr, "\nusage: read_box [-vh]\n");
+ fprintf( pErr, "\t read the box library from the file\n" );
+ fprintf( pErr, "\t-v : toggles enabling of verbose output [default = %s]\n", (fVerbose? "yes" : "no") );
+ fprintf( pErr, "\t-h : print the command usage\n");
+ return 1; /* error exit */
+}
+
+/**Function*************************************************************
+
+ Synopsis [Command procedure to read LUT libraries.]
+
+ Description []
+
+ SideEffects []
+
+ SeeAlso []
+
+***********************************************************************/
+int If_CommandPrintBox( Abc_Frame_t * pAbc, int argc, char **argv )
+{
+ FILE * pOut, * pErr;
+ Abc_Ntk_t * pNet;
+ int fVerbose;
+ int c;
+
+ pNet = Abc_FrameReadNtk(pAbc);
+ pOut = Abc_FrameReadOut(pAbc);
+ pErr = Abc_FrameReadErr(pAbc);
+
+ // set the defaults
+ fVerbose = 1;
+ Extra_UtilGetoptReset();
+ while ( (c = Extra_UtilGetopt(argc, argv, "vh")) != EOF )
+ {
+ switch (c)
+ {
+ case 'v':
+ fVerbose ^= 1;
+ break;
+ case 'h':
+ goto usage;
+ break;
+ default:
+ goto usage;
+ }
+ }
+
+ if ( argc != globalUtilOptind )
+ goto usage;
+
+ // set the new network
+ If_LibBoxPrint( stdout, (If_LibBox_t *)Abc_FrameReadLibBox() );
+ return 0;
+
+usage:
+ fprintf( pErr, "\nusage: print_box [-vh]\n");
+ fprintf( pErr, "\t print the current box library\n" );
+ fprintf( pErr, "\t-v : toggles enabling of verbose output [default = %s]\n", (fVerbose? "yes" : "no") );
+ fprintf( pErr, "\t-h : print the command usage\n");
+ return 1; /* error exit */
+}
+
+
+////////////////////////////////////////////////////////////////////////
+/// END OF FILE ///
+////////////////////////////////////////////////////////////////////////
+
+
+ABC_NAMESPACE_IMPL_END
+