#include "mainInt.h"
#include "cmdInt.h"
#include "abc.h"
Go to the source code of this file.
Functions | |
static int | CmdCommandTime (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandEcho (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandQuit (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandWhich (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandHistory (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandAlias (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandUnalias (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandHelp (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandSource (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandSetVariable (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandUnsetVariable (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandUndo (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandRecall (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandEmpty (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandSis (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandMvsis (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | CmdCommandCapo (Abc_Frame_t *pAbc, int argc, char **argv) |
void | Cmd_Init (Abc_Frame_t *pAbc) |
void | Cmd_End (Abc_Frame_t *pAbc) |
void Cmd_End | ( | Abc_Frame_t * | pAbc | ) |
Function********************************************************************
Synopsis [Ends the command package.]
Description [Ends the command package. Tables are freed.]
SideEffects []
SeeAlso []
Definition at line 107 of file cmd.c.
00108 { 00109 st_generator * gen; 00110 char * pKey, * pValue; 00111 int i; 00112 00113 // st_free_table( pAbc->tCommands, (void (*)()) 0, CmdCommandFree ); 00114 // st_free_table( pAbc->tAliases, (void (*)()) 0, CmdCommandAliasFree ); 00115 // st_free_table( pAbc->tFlags, free, free ); 00116 00117 st_foreach_item( pAbc->tCommands, gen, (char **)&pKey, (char **)&pValue ) 00118 CmdCommandFree( (Abc_Command *)pValue ); 00119 st_free_table( pAbc->tCommands ); 00120 00121 st_foreach_item( pAbc->tAliases, gen, (char **)&pKey, (char **)&pValue ) 00122 CmdCommandAliasFree( (Abc_Alias *)pValue ); 00123 st_free_table( pAbc->tAliases ); 00124 00125 st_foreach_item( pAbc->tFlags, gen, (char **)&pKey, (char **)&pValue ) 00126 free( pKey ), free( pValue ); 00127 st_free_table( pAbc->tFlags ); 00128 00129 for ( i = 0; i < pAbc->aHistory->nSize; i++ ) 00130 free( pAbc->aHistory->pArray[i] ); 00131 Vec_PtrFree( pAbc->aHistory ); 00132 }
void Cmd_Init | ( | Abc_Frame_t * | pAbc | ) |
FUNCTION DEFINITIONS ///Function********************************************************************
Synopsis [Initializes the command package.]
SideEffects [Commands are added to the command table.]
SeeAlso [Cmd_End]
Definition at line 67 of file cmd.c.
00068 { 00069 pAbc->tCommands = st_init_table(strcmp, st_strhash); 00070 pAbc->tAliases = st_init_table(strcmp, st_strhash); 00071 pAbc->tFlags = st_init_table(strcmp, st_strhash); 00072 pAbc->aHistory = Vec_PtrAlloc( 100 ); 00073 00074 Cmd_CommandAdd( pAbc, "Basic", "time", CmdCommandTime, 0); 00075 Cmd_CommandAdd( pAbc, "Basic", "echo", CmdCommandEcho, 0); 00076 Cmd_CommandAdd( pAbc, "Basic", "quit", CmdCommandQuit, 0); 00077 Cmd_CommandAdd( pAbc, "Basic", "history", CmdCommandHistory, 0); 00078 Cmd_CommandAdd( pAbc, "Basic", "alias", CmdCommandAlias, 0); 00079 Cmd_CommandAdd( pAbc, "Basic", "unalias", CmdCommandUnalias, 0); 00080 Cmd_CommandAdd( pAbc, "Basic", "help", CmdCommandHelp, 0); 00081 Cmd_CommandAdd( pAbc, "Basic", "source", CmdCommandSource, 0); 00082 Cmd_CommandAdd( pAbc, "Basic", "set", CmdCommandSetVariable, 0); 00083 Cmd_CommandAdd( pAbc, "Basic", "unset", CmdCommandUnsetVariable, 0); 00084 Cmd_CommandAdd( pAbc, "Basic", "undo", CmdCommandUndo, 0); 00085 Cmd_CommandAdd( pAbc, "Basic", "recall", CmdCommandRecall, 0); 00086 Cmd_CommandAdd( pAbc, "Basic", "empty", CmdCommandEmpty, 0); 00087 #ifdef WIN32 00088 Cmd_CommandAdd( pAbc, "Basic", "ls", CmdCommandLs, 0 ); 00089 #endif 00090 00091 Cmd_CommandAdd( pAbc, "Various", "sis", CmdCommandSis, 1); 00092 Cmd_CommandAdd( pAbc, "Various", "mvsis", CmdCommandMvsis, 1); 00093 Cmd_CommandAdd( pAbc, "Various", "capo", CmdCommandCapo, 0); 00094 }
int CmdCommandAlias | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 354 of file cmd.c.
00355 { 00356 char *key, *value; 00357 int c; 00358 00359 Extra_UtilGetoptReset(); 00360 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00361 { 00362 switch ( c ) 00363 { 00364 case 'h': 00365 goto usage; 00366 break; 00367 default: 00368 goto usage; 00369 } 00370 } 00371 00372 00373 if ( argc == 1 ) 00374 { 00375 CmdPrintTable( pAbc->tAliases, 1 ); 00376 return 0; 00377 00378 } 00379 else if ( argc == 2 ) 00380 { 00381 if ( st_lookup( pAbc->tAliases, argv[1], &value ) ) 00382 CmdCommandAliasPrint( pAbc, ( Abc_Alias * ) value ); 00383 return 0; 00384 } 00385 00386 // delete any existing alias 00387 key = argv[1]; 00388 if ( st_delete( pAbc->tAliases, &key, &value ) ) 00389 CmdCommandAliasFree( ( Abc_Alias * ) value ); 00390 CmdCommandAliasAdd( pAbc, argv[1], argc - 2, argv + 2 ); 00391 return 0; 00392 00393 usage: 00394 fprintf( pAbc->Err, "usage: alias [-h] [command [string]]\n" ); 00395 fprintf( pAbc->Err, " -h \t\tprint the command usage\n" ); 00396 return ( 1 ); 00397 }
int CmdCommandCapo | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis [Calls Capo internally.]
Description []
SideEffects []
SeeAlso []
Definition at line 1495 of file cmd.c.
01496 { 01497 FILE * pFile; 01498 FILE * pOut, * pErr; 01499 Abc_Ntk_t * pNtk, * pNetlist; 01500 char Command[1000], Buffer[100]; 01501 char * pProgNameCapoWin = "capo.exe"; 01502 char * pProgNameCapoUnix = "capo"; 01503 char * pProgNameGnuplotWin = "wgnuplot.exe"; 01504 char * pProgNameGnuplotUnix = "gnuplot"; 01505 char * pProgNameCapo; 01506 char * pProgNameGnuplot; 01507 char * pPlotFileName; 01508 int i; 01509 01510 pNtk = Abc_FrameReadNtk(pAbc); 01511 pOut = Abc_FrameReadOut(pAbc); 01512 pErr = Abc_FrameReadErr(pAbc); 01513 01514 if ( pNtk == NULL ) 01515 { 01516 fprintf( pErr, "Empty network.\n" ); 01517 goto usage; 01518 } 01519 01520 if ( strcmp( argv[0], "capo" ) != 0 ) 01521 { 01522 fprintf( pErr, "Wrong command: \"%s\".\n", argv[0] ); 01523 goto usage; 01524 } 01525 01526 if ( argc > 1 ) 01527 { 01528 if ( strcmp( argv[1], "-h" ) == 0 ) 01529 goto usage; 01530 if ( strcmp( argv[1], "-?" ) == 0 ) 01531 goto usage; 01532 } 01533 01534 // get the names from the resource file 01535 if ( Cmd_FlagReadByName(pAbc, "capowin") ) 01536 pProgNameCapoWin = Cmd_FlagReadByName(pAbc, "capowin"); 01537 if ( Cmd_FlagReadByName(pAbc, "capounix") ) 01538 pProgNameCapoUnix = Cmd_FlagReadByName(pAbc, "capounix"); 01539 01540 // check if capo is available 01541 if ( (pFile = fopen( pProgNameCapoWin, "r" )) ) 01542 pProgNameCapo = pProgNameCapoWin; 01543 else if ( (pFile = fopen( pProgNameCapoUnix, "r" )) ) 01544 pProgNameCapo = pProgNameCapoUnix; 01545 else if ( pFile == NULL ) 01546 { 01547 fprintf( pErr, "Cannot find \"%s\" or \"%s\" in the current directory.\n", pProgNameCapoWin, pProgNameCapoUnix ); 01548 goto usage; 01549 } 01550 fclose( pFile ); 01551 01552 if ( Abc_NtkIsMappedLogic(pNtk) ) 01553 { 01554 Abc_NtkMapToSop(pNtk); 01555 printf( "The current network is unmapped before calling Capo.\n" ); 01556 } 01557 01558 // write out the current network 01559 if ( Abc_NtkIsLogic(pNtk) ) 01560 Abc_NtkToSop(pNtk, 0); 01561 pNetlist = Abc_NtkToNetlist(pNtk); 01562 if ( pNetlist == NULL ) 01563 { 01564 fprintf( pErr, "Cannot produce the intermediate network.\n" ); 01565 goto usage; 01566 } 01567 Io_WriteBlif( pNetlist, "_capo_in.blif", 1 ); 01568 Abc_NtkDelete( pNetlist ); 01569 01570 // create the file for Capo 01571 sprintf( Command, "%s -f _capo_in.blif -log out.txt ", pProgNameCapo ); 01572 pPlotFileName = NULL; 01573 for ( i = 1; i < argc; i++ ) 01574 { 01575 sprintf( Buffer, " %s", argv[i] ); 01576 strcat( Command, Buffer ); 01577 if ( !strcmp( argv[i], "-plot" ) ) 01578 pPlotFileName = argv[i+1]; 01579 } 01580 01581 // call Capo 01582 if ( system( Command ) ) 01583 { 01584 fprintf( pErr, "The following command has returned non-zero exit status:\n" ); 01585 fprintf( pErr, "\"%s\"\n", Command ); 01586 unlink( "_capo_in.blif" ); 01587 goto usage; 01588 } 01589 // remove temporary networks 01590 unlink( "_capo_in.blif" ); 01591 if ( pPlotFileName == NULL ) 01592 return 0; 01593 01594 // get the file name 01595 sprintf( Buffer, "%s.plt", pPlotFileName ); 01596 pPlotFileName = Buffer; 01597 01598 // read in the Capo plotting output 01599 if ( (pFile = fopen( pPlotFileName, "r" )) == NULL ) 01600 { 01601 fprintf( pErr, "Cannot open the plot file \"%s\".\n\n", pPlotFileName ); 01602 goto usage; 01603 } 01604 fclose( pFile ); 01605 01606 // get the names from the plotting software 01607 if ( Cmd_FlagReadByName(pAbc, "gnuplotwin") ) 01608 pProgNameGnuplotWin = Cmd_FlagReadByName(pAbc, "gnuplotwin"); 01609 if ( Cmd_FlagReadByName(pAbc, "gnuplotunix") ) 01610 pProgNameGnuplotUnix = Cmd_FlagReadByName(pAbc, "gnuplotunix"); 01611 01612 // check if Gnuplot is available 01613 if ( (pFile = fopen( pProgNameGnuplotWin, "r" )) ) 01614 pProgNameGnuplot = pProgNameGnuplotWin; 01615 else if ( (pFile = fopen( pProgNameGnuplotUnix, "r" )) ) 01616 pProgNameGnuplot = pProgNameGnuplotUnix; 01617 else if ( pFile == NULL ) 01618 { 01619 fprintf( pErr, "Cannot find \"%s\" or \"%s\" in the current directory.\n", pProgNameGnuplotWin, pProgNameGnuplotUnix ); 01620 goto usage; 01621 } 01622 fclose( pFile ); 01623 01624 // spawn the viewer 01625 #ifdef WIN32 01626 if ( _spawnl( _P_NOWAIT, pProgNameGnuplot, pProgNameGnuplot, pPlotFileName, NULL ) == -1 ) 01627 { 01628 fprintf( stdout, "Cannot find \"%s\".\n", pProgNameGnuplot ); 01629 goto usage; 01630 } 01631 #else 01632 { 01633 sprintf( Command, "%s %s ", pProgNameGnuplot, pPlotFileName ); 01634 if ( system( Command ) == -1 ) 01635 { 01636 fprintf( stdout, "Cannot execute \"%s\".\n", Command ); 01637 goto usage; 01638 } 01639 } 01640 #endif 01641 01642 // remove temporary networks 01643 // unlink( pPlotFileName ); 01644 return 0; 01645 01646 usage: 01647 fprintf( pErr, "\n" ); 01648 fprintf( pErr, "Usage: capo [-h] <com>\n"); 01649 fprintf( pErr, " peforms placement of the current network using Capo\n" ); 01650 fprintf( pErr, " a Capo binary should be present in the same directory\n" ); 01651 fprintf( pErr, " (if plotting, the Gnuplot binary should also be present)\n" ); 01652 fprintf( pErr, " -h : print the command usage\n" ); 01653 fprintf( pErr, " <com> : a Capo command\n" ); 01654 fprintf( pErr, " Example 1: capo\n" ); 01655 fprintf( pErr, " (performs placement with default options)\n" ); 01656 fprintf( pErr, " Example 2: capo -AR <aspec_ratio> -WS <whitespace_percentage> -save\n" ); 01657 fprintf( pErr, " (specifies the aspect ratio [default = 1.0] and\n" ); 01658 fprintf( pErr, " the whitespace percentage [0%%; 100%%) [default = 15%%])\n" ); 01659 fprintf( pErr, " Example 3: capo -plot <base_fileName>\n" ); 01660 fprintf( pErr, " (produces <base_fileName.plt> and visualize it using Gnuplot)\n" ); 01661 fprintf( pErr, " Example 4: capo -help\n" ); 01662 fprintf( pErr, " (prints the default usage message of the Capo binary)\n" ); 01663 fprintf( pErr, " Please refer to the Capo webpage for additional information:\n" ); 01664 fprintf( pErr, " http://vlsicad.eecs.umich.edu/BK/PDtools/\n" ); 01665 return 1; // error exit 01666 }
int CmdCommandEcho | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 199 of file cmd.c.
00200 { 00201 int i; 00202 int c; 00203 int n = 1; 00204 00205 Extra_UtilGetoptReset(); 00206 while ( ( c = Extra_UtilGetopt( argc, argv, "hn" ) ) != EOF ) 00207 { 00208 switch ( c ) 00209 { 00210 case 'n': 00211 n = 0; 00212 break; 00213 case 'h': 00214 goto usage; 00215 break; 00216 default: 00217 goto usage; 00218 } 00219 } 00220 00221 for ( i = globalUtilOptind; i < argc; i++ ) 00222 fprintf( pAbc->Out, "%s ", argv[i] ); 00223 if ( n ) 00224 fprintf( pAbc->Out, "\n" ); 00225 else 00226 fflush ( pAbc->Out ); 00227 return 0; 00228 00229 usage: 00230 fprintf( pAbc->Err, "usage: echo [-h] string \n" ); 00231 fprintf( pAbc->Err, " -n \t\tsuppress newline at the end\n" ); 00232 fprintf( pAbc->Err, " -h \t\tprint the command usage\n" ); 00233 return ( 1 ); 00234 }
int CmdCommandEmpty | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 985 of file cmd.c.
00986 { 00987 int c; 00988 00989 if ( pAbc->pNtkCur == NULL ) 00990 { 00991 fprintf( pAbc->Out, "Empty network.\n" ); 00992 return 0; 00993 } 00994 00995 Extra_UtilGetoptReset(); 00996 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00997 { 00998 switch ( c ) 00999 { 01000 case 'h': 01001 goto usage; 01002 default: 01003 goto usage; 01004 } 01005 } 01006 01007 Abc_FrameDeleteAllNetworks( pAbc ); 01008 Abc_FrameRestart( pAbc ); 01009 return 0; 01010 usage: 01011 01012 fprintf( pAbc->Err, "usage: empty [-h]\n" ); 01013 fprintf( pAbc->Err, " removes all the currently stored networks\n" ); 01014 fprintf( pAbc->Err, " -h : print the command usage\n"); 01015 return 1; 01016 }
int CmdCommandHelp | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 461 of file cmd.c.
00462 { 00463 bool fPrintAll; 00464 int c; 00465 00466 fPrintAll = 0; 00467 Extra_UtilGetoptReset(); 00468 while ( ( c = Extra_UtilGetopt( argc, argv, "ah" ) ) != EOF ) 00469 { 00470 switch ( c ) 00471 { 00472 case 'a': 00473 case 'v': 00474 fPrintAll ^= 1; 00475 break; 00476 break; 00477 case 'h': 00478 goto usage; 00479 break; 00480 default: 00481 goto usage; 00482 } 00483 } 00484 00485 if ( argc != globalUtilOptind ) 00486 goto usage; 00487 00488 CmdCommandPrint( pAbc, fPrintAll ); 00489 return 0; 00490 00491 usage: 00492 fprintf( pAbc->Err, "usage: help [-a] [-h]\n" ); 00493 fprintf( pAbc->Err, " prints the list of available commands by group\n" ); 00494 fprintf( pAbc->Err, " -a toggle printing hidden commands [default = %s]\n", fPrintAll? "yes": "no" ); 00495 fprintf( pAbc->Err, " -h print the command usage\n" ); 00496 return 1; 00497 }
int CmdCommandHistory | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 306 of file cmd.c.
00307 { 00308 int i, c, num, size; 00309 00310 num = 20; 00311 Extra_UtilGetoptReset(); 00312 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00313 { 00314 switch ( c ) 00315 { 00316 case 'h': 00317 goto usage; 00318 default : 00319 goto usage; 00320 } 00321 } 00322 if ( argc > 2 ) 00323 goto usage; 00324 00325 // get the number of commands to print 00326 if ( argc == globalUtilOptind + 1 ) 00327 num = atoi(argv[globalUtilOptind]); 00328 // print the commands 00329 size = pAbc->aHistory->nSize; 00330 num = ( num < size ) ? num : size; 00331 for ( i = size - num; i < size; i++ ) 00332 fprintf( pAbc->Out, "%s", pAbc->aHistory->pArray[i] ); 00333 return 0; 00334 00335 usage: 00336 fprintf( pAbc->Err, "usage: history [-h] <num>\n" ); 00337 fprintf( pAbc->Err, " prints the latest command entered on the command line\n" ); 00338 fprintf( pAbc->Err, " -h : print the command usage\n" ); 00339 fprintf( pAbc->Err, "num : print the last num commands\n" ); 00340 return ( 1 ); 00341 }
int CmdCommandMvsis | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis [Calls SIS internally.]
Description []
SideEffects []
SeeAlso []
Definition at line 1352 of file cmd.c.
01353 { 01354 FILE * pFile; 01355 FILE * pOut, * pErr; 01356 Abc_Ntk_t * pNtk, * pNtkNew, * pNetlist; 01357 char Command[1000], Buffer[100]; 01358 char * pNameWin = "mvsis.exe"; 01359 char * pNameUnix = "mvsis"; 01360 char * pMvsisName; 01361 int i; 01362 01363 pNtk = Abc_FrameReadNtk(pAbc); 01364 pOut = Abc_FrameReadOut(pAbc); 01365 pErr = Abc_FrameReadErr(pAbc); 01366 01367 if ( pNtk == NULL ) 01368 { 01369 fprintf( pErr, "Empty network.\n" ); 01370 goto usage; 01371 } 01372 01373 if ( strcmp( argv[0], "mvsis" ) != 0 ) 01374 { 01375 fprintf( pErr, "Wrong command: \"%s\".\n", argv[0] ); 01376 goto usage; 01377 } 01378 01379 if ( argc == 1 ) 01380 goto usage; 01381 if ( strcmp( argv[1], "-h" ) == 0 ) 01382 goto usage; 01383 if ( strcmp( argv[1], "-?" ) == 0 ) 01384 goto usage; 01385 01386 // get the names from the resource file 01387 if ( Cmd_FlagReadByName(pAbc, "mvsiswin") ) 01388 pNameWin = Cmd_FlagReadByName(pAbc, "mvsiswin"); 01389 if ( Cmd_FlagReadByName(pAbc, "mvsisunix") ) 01390 pNameUnix = Cmd_FlagReadByName(pAbc, "mvsisunix"); 01391 01392 // check if MVSIS is available 01393 if ( (pFile = fopen( pNameWin, "r" )) ) 01394 pMvsisName = pNameWin; 01395 else if ( (pFile = fopen( pNameUnix, "r" )) ) 01396 pMvsisName = pNameUnix; 01397 else if ( pFile == NULL ) 01398 { 01399 fprintf( pErr, "Cannot find \"%s\" or \"%s\" in the current directory.\n", pNameWin, pNameUnix ); 01400 goto usage; 01401 } 01402 fclose( pFile ); 01403 01404 if ( Abc_NtkIsMappedLogic(pNtk) ) 01405 { 01406 Abc_NtkMapToSop(pNtk); 01407 printf( "The current network is unmapped before calling MVSIS.\n" ); 01408 } 01409 01410 // write out the current network 01411 if ( Abc_NtkIsLogic(pNtk) ) 01412 Abc_NtkToSop(pNtk, 0); 01413 pNetlist = Abc_NtkToNetlist(pNtk); 01414 if ( pNetlist == NULL ) 01415 { 01416 fprintf( pErr, "Cannot produce the intermediate network.\n" ); 01417 goto usage; 01418 } 01419 Io_WriteBlif( pNetlist, "_mvsis_in.blif", 1 ); 01420 Abc_NtkDelete( pNetlist ); 01421 01422 // create the file for MVSIS 01423 sprintf( Command, "%s -x -c ", pMvsisName ); 01424 strcat ( Command, "\"" ); 01425 strcat ( Command, "read_blif _mvsis_in.blif" ); 01426 strcat ( Command, "; " ); 01427 for ( i = 1; i < argc; i++ ) 01428 { 01429 sprintf( Buffer, " %s", argv[i] ); 01430 strcat( Command, Buffer ); 01431 } 01432 strcat( Command, "; " ); 01433 strcat( Command, "write_blif _mvsis_out.blif" ); 01434 strcat( Command, "\"" ); 01435 01436 // call MVSIS 01437 if ( system( Command ) ) 01438 { 01439 fprintf( pErr, "The following command has returned non-zero exit status:\n" ); 01440 fprintf( pErr, "\"%s\"\n", Command ); 01441 unlink( "_mvsis_in.blif" ); 01442 goto usage; 01443 } 01444 01445 // read in the MVSIS output 01446 if ( (pFile = fopen( "_mvsis_out.blif", "r" )) == NULL ) 01447 { 01448 fprintf( pErr, "Cannot open MVSIS output file \"%s\".\n", "_mvsis_out.blif" ); 01449 unlink( "_mvsis_in.blif" ); 01450 goto usage; 01451 } 01452 fclose( pFile ); 01453 01454 // set the new network 01455 pNtkNew = Io_Read( "_mvsis_out.blif", IO_FILE_BLIF, 1 ); 01456 // set the original spec of the new network 01457 if ( pNtk->pSpec ) 01458 { 01459 FREE( pNtkNew->pSpec ); 01460 pNtkNew->pSpec = Extra_UtilStrsav( pNtk->pSpec ); 01461 } 01462 // replace the current network 01463 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkNew ); 01464 01465 // remove temporary networks 01466 unlink( "_mvsis_in.blif" ); 01467 unlink( "_mvsis_out.blif" ); 01468 return 0; 01469 01470 usage: 01471 fprintf( pErr, "\n" ); 01472 fprintf( pErr, "Usage: mvsis [-h] <com>\n"); 01473 fprintf( pErr, " invokes MVSIS command for the current ABC network\n" ); 01474 fprintf( pErr, " (the executable of MVSIS should be in the same directory)\n" ); 01475 fprintf( pErr, " -h : print the command usage\n" ); 01476 fprintf( pErr, " <com> : a MVSIS command (or a semicolon-separated list of commands in quotes)\n" ); 01477 fprintf( pErr, " Example 1: mvsis fraig_sweep\n" ); 01478 fprintf( pErr, " Example 2: mvsis \"ps; fxu; ps\"\n" ); 01479 fprintf( pErr, " Example 3: mvsis source mvsis.rugged\n" ); 01480 return 1; // error exit 01481 }
int CmdCommandQuit | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 247 of file cmd.c.
00248 { 00249 int c; 00250 00251 Extra_UtilGetoptReset(); 00252 while ( ( c = Extra_UtilGetopt( argc, argv, "hs" ) ) != EOF ) 00253 { 00254 switch ( c ) 00255 { 00256 case 'h': 00257 goto usage; 00258 break; 00259 case 's': 00260 return -2; 00261 break; 00262 default: 00263 goto usage; 00264 } 00265 } 00266 00267 if ( argc != globalUtilOptind ) 00268 goto usage; 00269 return -1; 00270 00271 usage: 00272 fprintf( pAbc->Err, "usage: quit [-h] [-s]\n" ); 00273 fprintf( pAbc->Err, " -h print the command usage\n" ); 00274 fprintf( pAbc->Err, 00275 " -s frees all the memory before quitting\n" ); 00276 return 1; 00277 }
int CmdCommandRecall | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 868 of file cmd.c.
00869 { 00870 Abc_Ntk_t * pNtk; 00871 int iStep, iStepFound; 00872 int nNetsToSave, c; 00873 char * pValue; 00874 int iStepStart, iStepStop; 00875 00876 if ( pAbc->pNtkCur == NULL ) 00877 { 00878 fprintf( pAbc->Out, "Empty network.\n" ); 00879 return 0; 00880 } 00881 00882 00883 Extra_UtilGetoptReset(); 00884 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00885 { 00886 switch ( c ) 00887 { 00888 case 'h': 00889 goto usage; 00890 default: 00891 goto usage; 00892 } 00893 } 00894 00895 // get the number of networks to save 00896 pValue = Cmd_FlagReadByName( pAbc, "savesteps" ); 00897 // if the value of steps to save is not set, assume 1-level undo 00898 if ( pValue == NULL ) 00899 nNetsToSave = 1; 00900 else 00901 nNetsToSave = atoi(pValue); 00902 00903 // if there are no arguments on the command line 00904 // set the current network to be the network from the previous step 00905 if ( argc == 1 ) 00906 { 00907 // get the previously saved network 00908 pNtk = Abc_NtkBackup(pAbc->pNtkCur); 00909 if ( pNtk == NULL ) 00910 fprintf( pAbc->Out, "There is no previously saved network.\n" ); 00911 else // set the current network to be the copy of the previous one 00912 Abc_FrameSetCurrentNetwork( pAbc, Abc_NtkDup(pNtk) ); 00913 return 0; 00914 } 00915 if ( argc == 2 ) // the second argument is the number of the step to return to 00916 { 00917 // read the number of the step to return to 00918 iStep = atoi(argv[1]); 00919 // check whether it is reasonable 00920 if ( iStep >= pAbc->nSteps ) 00921 { 00922 iStepStart = pAbc->nSteps - nNetsToSave; 00923 if ( iStepStart <= 0 ) 00924 iStepStart = 1; 00925 iStepStop = pAbc->nSteps; 00926 if ( iStepStop <= 0 ) 00927 iStepStop = 1; 00928 if ( iStepStart == iStepStop ) 00929 fprintf( pAbc->Out, "Can only recall step %d.\n", iStepStop ); 00930 else 00931 fprintf( pAbc->Out, "Can only recall steps %d-%d.\n", iStepStart, iStepStop ); 00932 } 00933 else if ( iStep < 0 ) 00934 fprintf( pAbc->Out, "Cannot recall step %d.\n", iStep ); 00935 else if ( iStep == 0 ) 00936 Abc_FrameDeleteAllNetworks( pAbc ); 00937 else 00938 { 00939 // scroll backward through the list of networks 00940 // to determine if such a network exist 00941 iStepFound = 0; 00942 for ( pNtk = pAbc->pNtkCur; pNtk; pNtk = Abc_NtkBackup(pNtk) ) 00943 if ( (iStepFound = Abc_NtkStep(pNtk)) == iStep ) 00944 break; 00945 if ( pNtk == NULL ) 00946 { 00947 iStepStart = iStepFound; 00948 if ( iStepStart <= 0 ) 00949 iStepStart = 1; 00950 iStepStop = pAbc->nSteps; 00951 if ( iStepStop <= 0 ) 00952 iStepStop = 1; 00953 if ( iStepStart == iStepStop ) 00954 fprintf( pAbc->Out, "Can only recall step %d.\n", iStepStop ); 00955 else 00956 fprintf( pAbc->Out, "Can only recall steps %d-%d.\n", iStepStart, iStepStop ); 00957 } 00958 else 00959 Abc_FrameSetCurrentNetwork( pAbc, Abc_NtkDup(pNtk) ); 00960 } 00961 return 0; 00962 } 00963 00964 usage: 00965 00966 fprintf( pAbc->Err, "usage: recall -h <num>\n" ); 00967 fprintf( pAbc->Err, " set the current network to be one of the previous networks\n" ); 00968 fprintf( pAbc->Err, "<num> : level to return to [default = previous]\n" ); 00969 fprintf( pAbc->Err, " -h : print the command usage\n"); 00970 return 1; 00971 }
int CmdCommandSetVariable | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 685 of file cmd.c.
00686 { 00687 char *flag_value, *key, *value; 00688 int c; 00689 00690 Extra_UtilGetoptReset(); 00691 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00692 { 00693 switch ( c ) 00694 { 00695 case 'h': 00696 goto usage; 00697 default: 00698 goto usage; 00699 } 00700 } 00701 if ( argc == 0 || argc > 3 ) 00702 { 00703 goto usage; 00704 } 00705 else if ( argc == 1 ) 00706 { 00707 CmdPrintTable( pAbc->tFlags, 0 ); 00708 return 0; 00709 } 00710 else 00711 { 00712 key = argv[1]; 00713 if ( st_delete( pAbc->tFlags, &key, &value ) ) 00714 { 00715 FREE( key ); 00716 FREE( value ); 00717 } 00718 00719 flag_value = argc == 2 ? Extra_UtilStrsav( "" ) : Extra_UtilStrsav( argv[2] ); 00720 // flag_value = argc == 2 ? NULL : Extra_UtilStrsav(argv[2]); 00721 st_insert( pAbc->tFlags, Extra_UtilStrsav(argv[1]), flag_value ); 00722 00723 if ( strcmp( argv[1], "abcout" ) == 0 ) 00724 { 00725 if ( pAbc->Out != stdout ) 00726 fclose( pAbc->Out ); 00727 if ( strcmp( flag_value, "" ) == 0 ) 00728 flag_value = "-"; 00729 pAbc->Out = CmdFileOpen( pAbc, flag_value, "w", NULL, 0 ); 00730 if ( pAbc->Out == NULL ) 00731 pAbc->Out = stdout; 00732 #if HAVE_SETVBUF 00733 setvbuf( pAbc->Out, ( char * ) NULL, _IOLBF, 0 ); 00734 #endif 00735 } 00736 if ( strcmp( argv[1], "abcerr" ) == 0 ) 00737 { 00738 if ( pAbc->Err != stderr ) 00739 fclose( pAbc->Err ); 00740 if ( strcmp( flag_value, "" ) == 0 ) 00741 flag_value = "-"; 00742 pAbc->Err = CmdFileOpen( pAbc, flag_value, "w", NULL, 0 ); 00743 if ( pAbc->Err == NULL ) 00744 pAbc->Err = stderr; 00745 #if HAVE_SETVBUF 00746 setvbuf( pAbc->Err, ( char * ) NULL, _IOLBF, 0 ); 00747 #endif 00748 } 00749 if ( strcmp( argv[1], "history" ) == 0 ) 00750 { 00751 if ( pAbc->Hst != NULL ) 00752 fclose( pAbc->Hst ); 00753 if ( strcmp( flag_value, "" ) == 0 ) 00754 pAbc->Hst = NULL; 00755 else 00756 { 00757 pAbc->Hst = CmdFileOpen( pAbc, flag_value, "w", NULL, 0 ); 00758 if ( pAbc->Hst == NULL ) 00759 pAbc->Hst = NULL; 00760 } 00761 } 00762 return 0; 00763 } 00764 00765 usage: 00766 fprintf( pAbc->Err, "usage: set [-h] <name> <value>\n" ); 00767 fprintf( pAbc->Err, "\t sets the value of parameter <name>\n" ); 00768 fprintf( pAbc->Err, "\t-h : print the command usage\n" ); 00769 return 1; 00770 00771 }
int CmdCommandSis | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis [Calls SIS internally.]
Description []
SideEffects []
SeeAlso []
Definition at line 1209 of file cmd.c.
01210 { 01211 FILE * pFile; 01212 FILE * pOut, * pErr; 01213 Abc_Ntk_t * pNtk, * pNtkNew, * pNetlist; 01214 char * pNameWin = "sis.exe"; 01215 char * pNameUnix = "sis"; 01216 char Command[1000], Buffer[100]; 01217 char * pSisName; 01218 int i; 01219 01220 pNtk = Abc_FrameReadNtk(pAbc); 01221 pOut = Abc_FrameReadOut(pAbc); 01222 pErr = Abc_FrameReadErr(pAbc); 01223 01224 if ( pNtk == NULL ) 01225 { 01226 fprintf( pErr, "Empty network.\n" ); 01227 goto usage; 01228 } 01229 01230 if ( strcmp( argv[0], "sis" ) != 0 ) 01231 { 01232 fprintf( pErr, "Wrong command: \"%s\".\n", argv[0] ); 01233 goto usage; 01234 } 01235 01236 if ( argc == 1 ) 01237 goto usage; 01238 if ( strcmp( argv[1], "-h" ) == 0 ) 01239 goto usage; 01240 if ( strcmp( argv[1], "-?" ) == 0 ) 01241 goto usage; 01242 01243 // get the names from the resource file 01244 if ( Cmd_FlagReadByName(pAbc, "siswin") ) 01245 pNameWin = Cmd_FlagReadByName(pAbc, "siswin"); 01246 if ( Cmd_FlagReadByName(pAbc, "sisunix") ) 01247 pNameUnix = Cmd_FlagReadByName(pAbc, "sisunix"); 01248 01249 // check if SIS is available 01250 if ( (pFile = fopen( pNameWin, "r" )) ) 01251 pSisName = pNameWin; 01252 else if ( (pFile = fopen( pNameUnix, "r" )) ) 01253 pSisName = pNameUnix; 01254 else if ( pFile == NULL ) 01255 { 01256 fprintf( pErr, "Cannot find \"%s\" or \"%s\" in the current directory.\n", pNameWin, pNameUnix ); 01257 goto usage; 01258 } 01259 fclose( pFile ); 01260 01261 if ( Abc_NtkIsMappedLogic(pNtk) ) 01262 { 01263 Abc_NtkMapToSop(pNtk); 01264 printf( "The current network is unmapped before calling SIS.\n" ); 01265 } 01266 01267 // write out the current network 01268 if ( Abc_NtkIsLogic(pNtk) ) 01269 Abc_NtkToSop(pNtk, 0); 01270 pNetlist = Abc_NtkToNetlist(pNtk); 01271 if ( pNetlist == NULL ) 01272 { 01273 fprintf( pErr, "Cannot produce the intermediate network.\n" ); 01274 goto usage; 01275 } 01276 Io_WriteBlif( pNetlist, "_sis_in.blif", 1 ); 01277 Abc_NtkDelete( pNetlist ); 01278 01279 // create the file for sis 01280 sprintf( Command, "%s -x -c ", pSisName ); 01281 strcat ( Command, "\"" ); 01282 strcat ( Command, "read_blif _sis_in.blif" ); 01283 strcat ( Command, "; " ); 01284 for ( i = 1; i < argc; i++ ) 01285 { 01286 sprintf( Buffer, " %s", argv[i] ); 01287 strcat( Command, Buffer ); 01288 } 01289 strcat( Command, "; " ); 01290 strcat( Command, "write_blif _sis_out.blif" ); 01291 strcat( Command, "\"" ); 01292 01293 // call SIS 01294 if ( system( Command ) ) 01295 { 01296 fprintf( pErr, "The following command has returned non-zero exit status:\n" ); 01297 fprintf( pErr, "\"%s\"\n", Command ); 01298 unlink( "_sis_in.blif" ); 01299 goto usage; 01300 } 01301 01302 // read in the SIS output 01303 if ( (pFile = fopen( "_sis_out.blif", "r" )) == NULL ) 01304 { 01305 fprintf( pErr, "Cannot open SIS output file \"%s\".\n", "_sis_out.blif" ); 01306 unlink( "_sis_in.blif" ); 01307 goto usage; 01308 } 01309 fclose( pFile ); 01310 01311 // set the new network 01312 pNtkNew = Io_Read( "_sis_out.blif", IO_FILE_BLIF, 1 ); 01313 // set the original spec of the new network 01314 if ( pNtk->pSpec ) 01315 { 01316 FREE( pNtkNew->pSpec ); 01317 pNtkNew->pSpec = Extra_UtilStrsav( pNtk->pSpec ); 01318 } 01319 // replace the current network 01320 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkNew ); 01321 01322 // remove temporary networks 01323 unlink( "_sis_in.blif" ); 01324 unlink( "_sis_out.blif" ); 01325 return 0; 01326 01327 usage: 01328 fprintf( pErr, "\n" ); 01329 fprintf( pErr, "Usage: sis [-h] <com>\n"); 01330 fprintf( pErr, " invokes SIS command for the current ABC network\n" ); 01331 fprintf( pErr, " (the executable of SIS should be in the same directory)\n" ); 01332 fprintf( pErr, " -h : print the command usage\n" ); 01333 fprintf( pErr, " <com> : a SIS command (or a semicolon-separated list of commands in quotes)\n" ); 01334 fprintf( pErr, " Example 1: sis eliminate 0\n" ); 01335 fprintf( pErr, " Example 2: sis \"ps; rd; fx; ps\"\n" ); 01336 fprintf( pErr, " Example 3: sis source script.rugged\n" ); 01337 return 1; // error exit 01338 }
int CmdCommandSource | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 510 of file cmd.c.
00511 { 00512 int c, echo, prompt, silent, interactive, quit_count, lp_count; 00513 int status = 0; /* initialize so that lint doesn't complain */ 00514 int lp_file_index, did_subst; 00515 char *prompt_string, *real_filename, line[MAX_STR], *command; 00516 FILE *fp; 00517 00518 interactive = silent = prompt = echo = 0; 00519 00520 Extra_UtilGetoptReset(); 00521 while ( ( c = Extra_UtilGetopt( argc, argv, "ipsxh" ) ) != EOF ) 00522 { 00523 switch ( c ) 00524 { 00525 case 'i': /* a hack to distinguish EOF from stdin */ 00526 interactive = 1; 00527 break; 00528 case 'p': 00529 prompt ^= 1; 00530 break; 00531 case 's': 00532 silent ^= 1; 00533 break; 00534 case 'x': 00535 echo ^= 1; 00536 break; 00537 case 'h': 00538 goto usage; 00539 default: 00540 goto usage; 00541 } 00542 } 00543 00544 /* added to avoid core-dumping when no script file is specified */ 00545 if ( argc == globalUtilOptind ) 00546 { 00547 goto usage; 00548 } 00549 00550 lp_file_index = globalUtilOptind; 00551 lp_count = 0; 00552 00553 /* 00554 * FIX (Tom, 5/7/95): I'm not sure what the purpose of this outer do loop 00555 * is. In particular, lp_file_index is never modified in the loop, so it 00556 * looks it would just read the same file over again. Also, SIS had 00557 * lp_count initialized to -1, and hence, any file sourced by SIS (if -l or 00558 * -t options on "source" were used in SIS) would actually be executed 00559 * twice. 00560 */ 00561 do 00562 { 00563 lp_count++; /* increment the loop counter */ 00564 00565 fp = CmdFileOpen( pAbc, argv[lp_file_index], "r", &real_filename, silent ); 00566 if ( fp == NULL ) 00567 { 00568 FREE( real_filename ); 00569 return !silent; /* error return if not silent */ 00570 } 00571 00572 quit_count = 0; 00573 do 00574 { 00575 if ( prompt ) 00576 { 00577 prompt_string = Cmd_FlagReadByName( pAbc, "prompt" ); 00578 if ( prompt_string == NULL ) 00579 prompt_string = "abc> "; 00580 00581 } 00582 else 00583 { 00584 prompt_string = NULL; 00585 } 00586 00587 /* clear errors -- e.g., EOF reached from stdin */ 00588 clearerr( fp ); 00589 00590 /* read another command line */ 00591 // if (CmdFgetsFilec(line, MAX_STR, fp, prompt_string) == NULL) { 00592 // Abc_UtilsPrintPrompt(prompt_string); 00593 // fflush(stdout); 00594 if ( fgets( line, MAX_STR, fp ) == NULL ) 00595 { 00596 if ( interactive ) 00597 { 00598 if ( quit_count++ < 5 ) 00599 { 00600 fprintf( pAbc->Err, "\nUse \"quit\" to leave ABC.\n" ); 00601 continue; 00602 } 00603 status = -1; /* fake a 'quit' */ 00604 } 00605 else 00606 { 00607 status = 0; /* successful end of 'source' ; loop? */ 00608 } 00609 break; 00610 } 00611 quit_count = 0; 00612 00613 if ( echo ) 00614 { 00615 fprintf( pAbc->Out, "abc - > %s", line ); 00616 } 00617 command = CmdHistorySubstitution( pAbc, line, &did_subst ); 00618 if ( command == NULL ) 00619 { 00620 status = 1; 00621 break; 00622 } 00623 if ( did_subst ) 00624 { 00625 if ( interactive ) 00626 { 00627 fprintf( pAbc->Out, "%s\n", command ); 00628 } 00629 } 00630 if ( command != line ) 00631 { 00632 ( void ) strcpy( line, command ); 00633 } 00634 if ( interactive && *line != '\0' ) 00635 { 00636 Cmd_HistoryAddCommand( pAbc, Extra_UtilStrsav(line) ); 00637 if ( pAbc->Hst != NULL ) 00638 { 00639 fprintf( pAbc->Hst, "%s\n", line ); 00640 ( void ) fflush( pAbc->Hst ); 00641 } 00642 } 00643 00644 status = Cmd_CommandExecute( pAbc, line ); 00645 } 00646 while ( status == 0 ); 00647 00648 if ( fp != stdin ) 00649 { 00650 if ( status > 0 ) 00651 { 00652 fprintf( pAbc->Err, 00653 "** cmd error: aborting 'source %s'\n", 00654 real_filename ); 00655 } 00656 ( void ) fclose( fp ); 00657 } 00658 FREE( real_filename ); 00659 00660 } 00661 while ( ( status == 0 ) && ( lp_count <= 0 ) ); 00662 00663 return status; 00664 00665 usage: 00666 fprintf( pAbc->Err, "usage: source [-psxh] <file_name>\n" ); 00667 fprintf( pAbc->Err, "\t-p supply prompt before reading each line [default = %s]\n", prompt? "yes": "no" ); 00668 fprintf( pAbc->Err, "\t-s silently ignore nonexistant file [default = %s]\n", silent? "yes": "no" ); 00669 fprintf( pAbc->Err, "\t-x echo each line as it is executed [default = %s]\n", echo? "yes": "no" ); 00670 fprintf( pAbc->Err, "\t-h print the command usage\n" ); 00671 return 1; 00672 }
int CmdCommandTime | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
CFile****************************************************************
FileName [cmd.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [Command processing package.]
Synopsis [Command file.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - June 20, 2005.]
Revision [
] DECLARATIONS ///
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 147 of file cmd.c.
00148 { 00149 int c; 00150 00151 Extra_UtilGetoptReset(); 00152 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00153 { 00154 switch ( c ) 00155 { 00156 case 'h': 00157 goto usage; 00158 default: 00159 goto usage; 00160 } 00161 } 00162 00163 if ( argc != globalUtilOptind ) 00164 { 00165 goto usage; 00166 } 00167 00168 pAbc->TimeTotal += pAbc->TimeCommand; 00169 fprintf( pAbc->Out, "elapse: %3.2f seconds, total: %3.2f seconds\n", 00170 (float)pAbc->TimeCommand / CLOCKS_PER_SEC, (float)pAbc->TimeTotal / CLOCKS_PER_SEC ); 00171 /* 00172 { 00173 FILE * pTable; 00174 pTable = fopen( "runtimes.txt", "a+" ); 00175 fprintf( pTable, "%4.2f\n", (float)pAbc->TimeCommand / CLOCKS_PER_SEC ); 00176 fclose( pTable ); 00177 } 00178 */ 00179 pAbc->TimeCommand = 0; 00180 return 0; 00181 00182 usage: 00183 fprintf( pAbc->Err, "usage: time [-h]\n" ); 00184 fprintf( pAbc->Err, " -h \t\tprint the command usage\n" ); 00185 return 1; 00186 }
int CmdCommandUnalias | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 410 of file cmd.c.
00411 { 00412 int i; 00413 char *key, *value; 00414 int c; 00415 00416 Extra_UtilGetoptReset(); 00417 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00418 { 00419 switch ( c ) 00420 { 00421 case 'h': 00422 goto usage; 00423 break; 00424 default: 00425 goto usage; 00426 } 00427 } 00428 00429 if ( argc < 2 ) 00430 { 00431 goto usage; 00432 } 00433 00434 for ( i = 1; i < argc; i++ ) 00435 { 00436 key = argv[i]; 00437 if ( st_delete( pAbc->tAliases, &key, &value ) ) 00438 { 00439 CmdCommandAliasFree( ( Abc_Alias * ) value ); 00440 } 00441 } 00442 return 0; 00443 00444 usage: 00445 fprintf( pAbc->Err, "usage: unalias [-h] alias_names\n" ); 00446 fprintf( pAbc->Err, " -h \t\tprint the command usage\n" ); 00447 return 1; 00448 }
int CmdCommandUndo | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 838 of file cmd.c.
00839 { 00840 if ( pAbc->pNtkCur == NULL ) 00841 { 00842 fprintf( pAbc->Out, "Empty network.\n" ); 00843 return 0; 00844 } 00845 00846 // if there are no arguments on the command line 00847 // set the current network to be the network from the previous step 00848 if ( argc == 1 ) 00849 return CmdCommandRecall( pAbc, argc, argv ); 00850 00851 fprintf( pAbc->Err, "usage: undo\n" ); 00852 fprintf( pAbc->Err, " sets the current network to be the previously saved network\n" ); 00853 return 1; 00854 00855 }
int CmdCommandUnsetVariable | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function********************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 784 of file cmd.c.
00785 { 00786 int i; 00787 char *key, *value; 00788 int c; 00789 00790 Extra_UtilGetoptReset(); 00791 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00792 { 00793 switch ( c ) 00794 { 00795 case 'h': 00796 goto usage; 00797 break; 00798 default: 00799 goto usage; 00800 } 00801 } 00802 00803 if ( argc < 2 ) 00804 { 00805 goto usage; 00806 } 00807 00808 for ( i = 1; i < argc; i++ ) 00809 { 00810 key = argv[i]; 00811 if ( st_delete( pAbc->tFlags, &key, &value ) ) 00812 { 00813 FREE( key ); 00814 FREE( value ); 00815 } 00816 } 00817 return 0; 00818 00819 00820 usage: 00821 fprintf( pAbc->Err, "usage: unset [-h] <name> \n" ); 00822 fprintf( pAbc->Err, "\t removes the value of parameter <name>\n" ); 00823 fprintf( pAbc->Err, "\t-h : print the command usage\n" ); 00824 return 1; 00825 }
int CmdCommandWhich | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |