#include "abc.h"
#include "mainInt.h"
#include "fraig.h"
#include "fxu.h"
#include "cut.h"
#include "fpga.h"
#include "if.h"
#include "res.h"
#include "lpk.h"
#include "aig.h"
#include "dar.h"
Go to the source code of this file.
Functions | |
static int | Abc_CommandPrintStats (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintExdc (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintIo (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintLatch (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintFanio (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintMffc (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintFactor (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintLevel (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintSupport (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintSymms (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintUnate (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintAuto (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintKMap (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintGates (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintSharing (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintXCut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPrintDsd (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandShow (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandShowBdd (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandShowCut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCollapse (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandStrash (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandBalance (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandMulti (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRenode (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCleanup (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSweep (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFastExtract (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDisjoint (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandImfs (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandLutpack (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRewrite (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRefactor (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRestructure (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandResubstitute (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRr (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCascade (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandLogic (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandComb (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandMiter (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDemiter (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandOrPos (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandAndPos (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandAppend (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFrames (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSop (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandBdd (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandAig (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandReorder (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandOrder (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandMuxes (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandExtSeqDcs (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCone (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandNode (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandTopmost (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandTrim (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandShortNames (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandExdcFree (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandExdcGet (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandExdcSet (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandEspresso (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandGen (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDouble (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandTest (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandQuaVar (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandQuaRel (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandQuaReach (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIStrash (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandICut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIRewrite (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDRewrite (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDRefactor (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDCompress2 (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDChoice (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDrwsat (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIRewriteSeq (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIResyn (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandISat (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIFraig (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDFraig (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCSweep (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIProve (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDProve (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandHaig (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandMini (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandBmc (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandQbf (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraig (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigTrust (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigStore (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigRestore (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigClean (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigSweep (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFraigDress (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandHaigStart (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandHaigStop (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandHaigUse (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRecStart (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRecStop (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRecAdd (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRecPs (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRecUse (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandMap (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandUnmap (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandAttach (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSuperChoice (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSuperChoiceLut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFpga (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandFpgaFast (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandIf (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandScut (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandInit (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandZero (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandUndc (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandPipe (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSeq (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandUnseq (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandRetime (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSeqFpga (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSeqMap (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSeqSweep (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandLcorr (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSeqCleanup (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCycle (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandXsim (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandCec (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSec (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDSec (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandSat (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDSat (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandProve (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandDebug (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandTraceStart (Abc_Frame_t *pAbc, int argc, char **argv) |
static int | Abc_CommandTraceCheck (Abc_Frame_t *pAbc, int argc, char **argv) |
void | Abc_Init (Abc_Frame_t *pAbc) |
void | Abc_End () |
int | Abc_CommandXyz (Abc_Frame_t *pAbc, int argc, char **argv) |
int Abc_CommandAig | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4535 of file abc.c.
04536 { 04537 FILE * pOut, * pErr; 04538 Abc_Ntk_t * pNtk; 04539 int c; 04540 04541 pNtk = Abc_FrameReadNtk(pAbc); 04542 pOut = Abc_FrameReadOut(pAbc); 04543 pErr = Abc_FrameReadErr(pAbc); 04544 04545 // set defaults 04546 Extra_UtilGetoptReset(); 04547 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 04548 { 04549 switch ( c ) 04550 { 04551 case 'h': 04552 goto usage; 04553 default: 04554 goto usage; 04555 } 04556 } 04557 if ( pNtk == NULL ) 04558 { 04559 fprintf( pErr, "Empty network.\n" ); 04560 return 1; 04561 } 04562 if ( !Abc_NtkIsLogic(pNtk) ) 04563 { 04564 fprintf( pErr, "Converting to AIG is possible only for logic networks.\n" ); 04565 return 1; 04566 } 04567 if ( Abc_NtkIsAigLogic(pNtk) ) 04568 { 04569 fprintf( pOut, "The logic network is already in the AIG form.\n" ); 04570 return 0; 04571 } 04572 if ( !Abc_NtkToAig(pNtk) ) 04573 { 04574 fprintf( pErr, "Converting to AIG has failed.\n" ); 04575 return 1; 04576 } 04577 return 0; 04578 04579 usage: 04580 fprintf( pErr, "usage: aig [-h]\n" ); 04581 fprintf( pErr, "\t converts node functions to AIG\n" ); 04582 fprintf( pErr, "\t-h : print the command usage\n"); 04583 return 1; 04584 }
int Abc_CommandAndPos | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4165 of file abc.c.
04166 { 04167 FILE * pOut, * pErr; 04168 Abc_Ntk_t * pNtk;//, * pNtkRes; 04169 int fComb; 04170 int c; 04171 extern int Abc_NtkCombinePos( Abc_Ntk_t * pNtk, int fAnd ); 04172 04173 pNtk = Abc_FrameReadNtk(pAbc); 04174 pOut = Abc_FrameReadOut(pAbc); 04175 pErr = Abc_FrameReadErr(pAbc); 04176 04177 // set defaults 04178 Extra_UtilGetoptReset(); 04179 while ( ( c = Extra_UtilGetopt( argc, argv, "ch" ) ) != EOF ) 04180 { 04181 switch ( c ) 04182 { 04183 case 'c': 04184 fComb ^= 1; 04185 break; 04186 default: 04187 goto usage; 04188 } 04189 } 04190 04191 if ( !Abc_NtkIsStrash(pNtk) ) 04192 { 04193 fprintf( pErr, "The network is not strashed.\n" ); 04194 return 1; 04195 } 04196 04197 if ( Abc_NtkPoNum(pNtk) == 1 ) 04198 { 04199 fprintf( pErr, "The network already has one PO.\n" ); 04200 return 1; 04201 } 04202 04203 if ( Abc_NtkLatchNum(pNtk) ) 04204 { 04205 fprintf( pErr, "The miter has latches. ORing is not performed.\n" ); 04206 return 1; 04207 } 04208 04209 // get the new network 04210 if ( !Abc_NtkCombinePos( pNtk, 1 ) ) 04211 { 04212 fprintf( pErr, "ANDing the POs has failed.\n" ); 04213 return 1; 04214 } 04215 // replace the current network 04216 // Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04217 return 0; 04218 04219 usage: 04220 fprintf( pErr, "usage: andpos [-h]\n" ); 04221 fprintf( pErr, "\t creates single-output miter by ANDing the POs of the current network\n" ); 04222 // fprintf( pErr, "\t-c : computes combinational miter (latches as POs) [default = %s]\n", fComb? "yes": "no" ); 04223 fprintf( pErr, "\t-h : print the command usage\n"); 04224 return 1; 04225 }
int Abc_CommandAppend | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4238 of file abc.c.
04239 { 04240 FILE * pOut, * pErr; 04241 Abc_Ntk_t * pNtk, * pNtk2; 04242 char * FileName; 04243 int fComb; 04244 int c; 04245 04246 pNtk = Abc_FrameReadNtk(pAbc); 04247 pOut = Abc_FrameReadOut(pAbc); 04248 pErr = Abc_FrameReadErr(pAbc); 04249 04250 // set defaults 04251 Extra_UtilGetoptReset(); 04252 while ( ( c = Extra_UtilGetopt( argc, argv, "ch" ) ) != EOF ) 04253 { 04254 switch ( c ) 04255 { 04256 case 'c': 04257 fComb ^= 1; 04258 break; 04259 default: 04260 goto usage; 04261 } 04262 } 04263 04264 // get the second network 04265 if ( argc != globalUtilOptind + 1 ) 04266 { 04267 fprintf( pErr, "The network to append is not given.\n" ); 04268 return 1; 04269 } 04270 04271 if ( !Abc_NtkIsStrash(pNtk) ) 04272 { 04273 fprintf( pErr, "The base network should be strashed for the appending to work.\n" ); 04274 return 1; 04275 } 04276 04277 // read the second network 04278 FileName = argv[globalUtilOptind]; 04279 pNtk2 = Io_Read( FileName, Io_ReadFileType(FileName), 1 ); 04280 if ( pNtk2 == NULL ) 04281 return 1; 04282 04283 // check if the second network is combinational 04284 if ( Abc_NtkLatchNum(pNtk2) ) 04285 { 04286 fprintf( pErr, "The second network has latches. Appending does not work for such networks.\n" ); 04287 return 1; 04288 } 04289 04290 // get the new network 04291 if ( !Abc_NtkAppend( pNtk, pNtk2, 1 ) ) 04292 { 04293 Abc_NtkDelete( pNtk2 ); 04294 fprintf( pErr, "Appending the networks failed.\n" ); 04295 return 1; 04296 } 04297 Abc_NtkDelete( pNtk2 ); 04298 // sweep dangling logic 04299 Abc_AigCleanup( pNtk->pManFunc ); 04300 // replace the current network 04301 // Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04302 return 0; 04303 04304 usage: 04305 fprintf( pErr, "usage: append [-h] <file>\n" ); 04306 fprintf( pErr, "\t appends a combinational network on top of the current network\n" ); 04307 // fprintf( pErr, "\t-c : computes combinational miter (latches as POs) [default = %s]\n", fComb? "yes": "no" ); 04308 fprintf( pErr, "\t-h : print the command usage\n"); 04309 fprintf( pErr, "\t<file> : file name with the second network\n"); 04310 return 1; 04311 }
int Abc_CommandAttach | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9503 of file abc.c.
09504 { 09505 FILE * pOut, * pErr; 09506 Abc_Ntk_t * pNtk; 09507 int c; 09508 09509 pNtk = Abc_FrameReadNtk(pAbc); 09510 pOut = Abc_FrameReadOut(pAbc); 09511 pErr = Abc_FrameReadErr(pAbc); 09512 09513 // set defaults 09514 Extra_UtilGetoptReset(); 09515 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 09516 { 09517 switch ( c ) 09518 { 09519 case 'h': 09520 goto usage; 09521 default: 09522 goto usage; 09523 } 09524 } 09525 09526 if ( pNtk == NULL ) 09527 { 09528 fprintf( pErr, "Empty network.\n" ); 09529 return 1; 09530 } 09531 09532 if ( !Abc_NtkIsSopLogic(pNtk) ) 09533 { 09534 fprintf( pErr, "Can only attach gates if the nodes have SOP representations.\n" ); 09535 return 1; 09536 } 09537 09538 // get the new network 09539 if ( !Abc_NtkAttach( pNtk ) ) 09540 { 09541 fprintf( pErr, "Attaching gates has failed.\n" ); 09542 return 1; 09543 } 09544 return 0; 09545 09546 usage: 09547 fprintf( pErr, "usage: attach [-h]\n" ); 09548 fprintf( pErr, "\t replaces the SOP functions by the gates from the library\n" ); 09549 fprintf( pErr, "\t-h : print the command usage\n"); 09550 return 1; 09551 }
int Abc_CommandBalance | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2089 of file abc.c.
02090 { 02091 FILE * pOut, * pErr; 02092 Abc_Ntk_t * pNtk, * pNtkRes, * pNtkTemp; 02093 int c; 02094 bool fDuplicate; 02095 bool fSelective; 02096 bool fUpdateLevel; 02097 02098 pNtk = Abc_FrameReadNtk(pAbc); 02099 pOut = Abc_FrameReadOut(pAbc); 02100 pErr = Abc_FrameReadErr(pAbc); 02101 02102 // set defaults 02103 fDuplicate = 0; 02104 fSelective = 0; 02105 fUpdateLevel = 1; 02106 Extra_UtilGetoptReset(); 02107 while ( ( c = Extra_UtilGetopt( argc, argv, "ldsh" ) ) != EOF ) 02108 { 02109 switch ( c ) 02110 { 02111 case 'l': 02112 fUpdateLevel ^= 1; 02113 break; 02114 case 'd': 02115 fDuplicate ^= 1; 02116 break; 02117 case 's': 02118 fSelective ^= 1; 02119 break; 02120 case 'h': 02121 goto usage; 02122 default: 02123 goto usage; 02124 } 02125 } 02126 02127 if ( pNtk == NULL ) 02128 { 02129 fprintf( pErr, "Empty network.\n" ); 02130 return 1; 02131 } 02132 // get the new network 02133 if ( Abc_NtkIsStrash(pNtk) ) 02134 { 02135 pNtkRes = Abc_NtkBalance( pNtk, fDuplicate, fSelective, fUpdateLevel ); 02136 } 02137 else 02138 { 02139 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); 02140 if ( pNtkTemp == NULL ) 02141 { 02142 fprintf( pErr, "Strashing before balancing has failed.\n" ); 02143 return 1; 02144 } 02145 pNtkRes = Abc_NtkBalance( pNtkTemp, fDuplicate, fSelective, fUpdateLevel ); 02146 Abc_NtkDelete( pNtkTemp ); 02147 } 02148 02149 // check if balancing worked 02150 if ( pNtkRes == NULL ) 02151 { 02152 fprintf( pErr, "Balancing has failed.\n" ); 02153 return 1; 02154 } 02155 // replace the current network 02156 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 02157 return 0; 02158 02159 usage: 02160 fprintf( pErr, "usage: balance [-ldsh]\n" ); 02161 fprintf( pErr, "\t transforms the current network into a well-balanced AIG\n" ); 02162 fprintf( pErr, "\t-l : toggle minimizing the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 02163 fprintf( pErr, "\t-d : toggle duplication of logic [default = %s]\n", fDuplicate? "yes": "no" ); 02164 fprintf( pErr, "\t-s : toggle duplication on the critical paths [default = %s]\n", fSelective? "yes": "no" ); 02165 fprintf( pErr, "\t-h : print the command usage\n"); 02166 return 1; 02167 }
int Abc_CommandBdd | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4473 of file abc.c.
04474 { 04475 FILE * pOut, * pErr; 04476 Abc_Ntk_t * pNtk; 04477 int c; 04478 04479 pNtk = Abc_FrameReadNtk(pAbc); 04480 pOut = Abc_FrameReadOut(pAbc); 04481 pErr = Abc_FrameReadErr(pAbc); 04482 04483 // set defaults 04484 Extra_UtilGetoptReset(); 04485 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 04486 { 04487 switch ( c ) 04488 { 04489 case 'h': 04490 goto usage; 04491 default: 04492 goto usage; 04493 } 04494 } 04495 if ( pNtk == NULL ) 04496 { 04497 fprintf( pErr, "Empty network.\n" ); 04498 return 1; 04499 } 04500 if ( !Abc_NtkIsLogic(pNtk) ) 04501 { 04502 fprintf( pErr, "Converting to BDD is possible only for logic networks.\n" ); 04503 return 1; 04504 } 04505 if ( Abc_NtkIsBddLogic(pNtk) ) 04506 { 04507 fprintf( pOut, "The logic network is already in the BDD form.\n" ); 04508 return 0; 04509 } 04510 if ( !Abc_NtkToBdd(pNtk) ) 04511 { 04512 fprintf( pErr, "Converting to BDD has failed.\n" ); 04513 return 1; 04514 } 04515 return 0; 04516 04517 usage: 04518 fprintf( pErr, "usage: bdd [-h]\n" ); 04519 fprintf( pErr, "\t converts node functions to BDD\n" ); 04520 fprintf( pErr, "\t-h : print the command usage\n"); 04521 return 1; 04522 }
int Abc_CommandBmc | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8101 of file abc.c.
08102 { 08103 FILE * pOut, * pErr; 08104 Abc_Ntk_t * pNtk; 08105 int c; 08106 int nFrames; 08107 int fInit; 08108 int fVerbose; 08109 08110 extern void Abc_NtkBmc( Abc_Ntk_t * pNtk, int nFrames, int fInit, int fVerbose ); 08111 08112 pNtk = Abc_FrameReadNtk(pAbc); 08113 pOut = Abc_FrameReadOut(pAbc); 08114 pErr = Abc_FrameReadErr(pAbc); 08115 08116 // set defaults 08117 nFrames = 5; 08118 fInit = 0; 08119 fVerbose = 1; 08120 Extra_UtilGetoptReset(); 08121 while ( ( c = Extra_UtilGetopt( argc, argv, "Kivh" ) ) != EOF ) 08122 { 08123 switch ( c ) 08124 { 08125 case 'K': 08126 if ( globalUtilOptind >= argc ) 08127 { 08128 fprintf( pErr, "Command line switch \"-R\" should be followed by an integer.\n" ); 08129 goto usage; 08130 } 08131 nFrames = atoi(argv[globalUtilOptind]); 08132 globalUtilOptind++; 08133 if ( nFrames < 0 ) 08134 goto usage; 08135 break; 08136 case 'i': 08137 fInit ^= 1; 08138 break; 08139 case 'v': 08140 fVerbose ^= 1; 08141 break; 08142 case 'h': 08143 goto usage; 08144 default: 08145 goto usage; 08146 } 08147 } 08148 if ( pNtk == NULL ) 08149 { 08150 fprintf( pErr, "Empty network.\n" ); 08151 return 1; 08152 } 08153 if ( Abc_NtkIsStrash(pNtk) ) 08154 Abc_NtkBmc( pNtk, nFrames, fInit, fVerbose ); 08155 else 08156 { 08157 pNtk = Abc_NtkStrash( pNtk, 0, 1, 0 ); 08158 Abc_NtkBmc( pNtk, nFrames, fInit, fVerbose ); 08159 Abc_NtkDelete( pNtk ); 08160 } 08161 return 0; 08162 08163 usage: 08164 fprintf( pErr, "usage: _bmc [-K num] [-ivh]\n" ); 08165 fprintf( pErr, "\t perform bounded model checking\n" ); 08166 fprintf( pErr, "\t-K num : number of time frames [default = %d]\n", nFrames ); 08167 fprintf( pErr, "\t-i : toggle initialization of the first frame [default = %s]\n", fInit? "yes": "no" ); 08168 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 08169 fprintf( pErr, "\t-h : print the command usage\n"); 08170 return 1; 08171 }
int Abc_CommandCascade | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3698 of file abc.c.
03699 { 03700 FILE * pOut, * pErr; 03701 Abc_Ntk_t * pNtk, * pNtkRes; 03702 int c, nLutSize; 03703 int fCheck; 03704 int fVerbose; 03705 extern Abc_Ntk_t * Abc_NtkCascade( Abc_Ntk_t * pNtk, int nLutSize, int fCheck, int fVerbose ); 03706 03707 pNtk = Abc_FrameReadNtk(pAbc); 03708 pOut = Abc_FrameReadOut(pAbc); 03709 pErr = Abc_FrameReadErr(pAbc); 03710 03711 // set defaults 03712 nLutSize = 12; 03713 fCheck = 0; 03714 fVerbose = 0; 03715 Extra_UtilGetoptReset(); 03716 while ( ( c = Extra_UtilGetopt( argc, argv, "Kcvh" ) ) != EOF ) 03717 { 03718 switch ( c ) 03719 { 03720 case 'K': 03721 if ( globalUtilOptind >= argc ) 03722 { 03723 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 03724 goto usage; 03725 } 03726 nLutSize = atoi(argv[globalUtilOptind]); 03727 globalUtilOptind++; 03728 if ( nLutSize < 0 ) 03729 goto usage; 03730 break; 03731 case 'c': 03732 fCheck ^= 1; 03733 break; 03734 case 'v': 03735 fVerbose ^= 1; 03736 break; 03737 case 'h': 03738 goto usage; 03739 default: 03740 goto usage; 03741 } 03742 } 03743 03744 if ( pNtk == NULL ) 03745 { 03746 fprintf( pErr, "Empty network.\n" ); 03747 return 1; 03748 } 03749 03750 if ( !Abc_NtkIsLogic(pNtk) && !Abc_NtkIsStrash(pNtk) ) 03751 { 03752 fprintf( pErr, "Can only collapse a logic network or an AIG.\n" ); 03753 return 1; 03754 } 03755 03756 // get the new network 03757 if ( Abc_NtkIsStrash(pNtk) ) 03758 pNtkRes = Abc_NtkCascade( pNtk, nLutSize, fCheck, fVerbose ); 03759 else 03760 { 03761 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 03762 pNtkRes = Abc_NtkCascade( pNtk, nLutSize, fCheck, fVerbose ); 03763 Abc_NtkDelete( pNtk ); 03764 } 03765 if ( pNtkRes == NULL ) 03766 { 03767 fprintf( pErr, "Cascade synthesis has failed.\n" ); 03768 return 1; 03769 } 03770 // replace the current network 03771 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 03772 return 0; 03773 03774 usage: 03775 fprintf( pErr, "usage: cascade [-K <num>] [-cvh]\n" ); 03776 fprintf( pErr, "\t performs LUT cascade synthesis for the current network\n" ); 03777 fprintf( pErr, "\t-K num : the number of LUT inputs [default = %d]\n", nLutSize ); 03778 fprintf( pErr, "\t-c : check equivalence after synthesis [default = %s]\n", fCheck? "yes": "no" ); 03779 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03780 fprintf( pErr, "\t-h : print the command usage\n"); 03781 fprintf( pErr, "\t \n"); 03782 fprintf( pErr, " A lookup-table cascade is a programmable architecture developed by\n"); 03783 fprintf( pErr, " Professor Tsutomu Sasao (sasao@cse.kyutech.ac.jp) at Kyushu Institute\n"); 03784 fprintf( pErr, " of Technology. This work received Takeda Techno-Entrepreneurship Award:\n"); 03785 fprintf( pErr, " http://www.lsi-cad.com/sasao/photo/takeda.html\n"); 03786 fprintf( pErr, "\t \n"); 03787 return 1; 03788 }
int Abc_CommandCec | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11672 of file abc.c.
11673 { 11674 char Buffer[16]; 11675 FILE * pOut, * pErr; 11676 Abc_Ntk_t * pNtk, * pNtk1, * pNtk2; 11677 int fDelete1, fDelete2; 11678 char ** pArgvNew; 11679 int nArgcNew; 11680 int c; 11681 int fSat; 11682 int fVerbose; 11683 int nSeconds; 11684 int nPartSize; 11685 int nConfLimit; 11686 int nInsLimit; 11687 int fPartition; 11688 11689 extern void Abc_NtkCecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nConfLimit, int nInsLimit ); 11690 extern void Abc_NtkCecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fVerbose ); 11691 extern void Abc_NtkCecFraigPart( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nPartSize, int fVerbose ); 11692 extern void Abc_NtkCecFraigPartAuto( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int fVerbose ); 11693 11694 pNtk = Abc_FrameReadNtk(pAbc); 11695 pOut = Abc_FrameReadOut(pAbc); 11696 pErr = Abc_FrameReadErr(pAbc); 11697 11698 // set defaults 11699 fSat = 0; 11700 fVerbose = 0; 11701 nSeconds = 20; 11702 nPartSize = 0; 11703 nConfLimit = 10000; 11704 nInsLimit = 0; 11705 fPartition = 0; 11706 Extra_UtilGetoptReset(); 11707 while ( ( c = Extra_UtilGetopt( argc, argv, "TCIPpsvh" ) ) != EOF ) 11708 { 11709 switch ( c ) 11710 { 11711 case 'T': 11712 if ( globalUtilOptind >= argc ) 11713 { 11714 fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" ); 11715 goto usage; 11716 } 11717 nSeconds = atoi(argv[globalUtilOptind]); 11718 globalUtilOptind++; 11719 if ( nSeconds < 0 ) 11720 goto usage; 11721 break; 11722 case 'C': 11723 if ( globalUtilOptind >= argc ) 11724 { 11725 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 11726 goto usage; 11727 } 11728 nConfLimit = atoi(argv[globalUtilOptind]); 11729 globalUtilOptind++; 11730 if ( nConfLimit < 0 ) 11731 goto usage; 11732 break; 11733 case 'I': 11734 if ( globalUtilOptind >= argc ) 11735 { 11736 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 11737 goto usage; 11738 } 11739 nInsLimit = atoi(argv[globalUtilOptind]); 11740 globalUtilOptind++; 11741 if ( nInsLimit < 0 ) 11742 goto usage; 11743 break; 11744 case 'P': 11745 if ( globalUtilOptind >= argc ) 11746 { 11747 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 11748 goto usage; 11749 } 11750 nPartSize = atoi(argv[globalUtilOptind]); 11751 globalUtilOptind++; 11752 if ( nPartSize < 0 ) 11753 goto usage; 11754 break; 11755 case 'p': 11756 fPartition ^= 1; 11757 break; 11758 case 's': 11759 fSat ^= 1; 11760 break; 11761 case 'v': 11762 fVerbose ^= 1; 11763 break; 11764 default: 11765 goto usage; 11766 } 11767 } 11768 11769 pArgvNew = argv + globalUtilOptind; 11770 nArgcNew = argc - globalUtilOptind; 11771 if ( !Abc_NtkPrepareTwoNtks( pErr, pNtk, pArgvNew, nArgcNew, &pNtk1, &pNtk2, &fDelete1, &fDelete2 ) ) 11772 return 1; 11773 11774 // perform equivalence checking 11775 if ( fPartition ) 11776 Abc_NtkCecFraigPartAuto( pNtk1, pNtk2, nSeconds, fVerbose ); 11777 else if ( nPartSize ) 11778 Abc_NtkCecFraigPart( pNtk1, pNtk2, nSeconds, nPartSize, fVerbose ); 11779 else if ( fSat ) 11780 Abc_NtkCecSat( pNtk1, pNtk2, nConfLimit, nInsLimit ); 11781 else 11782 Abc_NtkCecFraig( pNtk1, pNtk2, nSeconds, fVerbose ); 11783 11784 if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); 11785 if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); 11786 return 0; 11787 11788 usage: 11789 if ( nPartSize == 0 ) 11790 strcpy( Buffer, "unused" ); 11791 else 11792 sprintf( Buffer, "%d", nPartSize ); 11793 fprintf( pErr, "usage: cec [-T num] [-C num] [-I num] [-P num] [-psvh] <file1> <file2>\n" ); 11794 fprintf( pErr, "\t performs combinational equivalence checking\n" ); 11795 fprintf( pErr, "\t-T num : approximate runtime limit in seconds [default = %d]\n", nSeconds ); 11796 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 11797 fprintf( pErr, "\t-I num : limit on the number of clause inspections [default = %d]\n", nInsLimit ); 11798 fprintf( pErr, "\t-P num : partition size for multi-output networks [default = %s]\n", Buffer ); 11799 fprintf( pErr, "\t-p : toggle automatic partitioning [default = %s]\n", fPartition? "yes": "no" ); 11800 fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" ); 11801 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11802 fprintf( pErr, "\t-h : print the command usage\n"); 11803 fprintf( pErr, "\tfile1 : (optional) the file with the first network\n"); 11804 fprintf( pErr, "\tfile2 : (optional) the file with the second network\n"); 11805 fprintf( pErr, "\t if no files are given, uses the current network and its spec\n"); 11806 fprintf( pErr, "\t if one file is given, uses the current network and the file\n"); 11807 return 1; 11808 }
int Abc_CommandCleanup | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2469 of file abc.c.
02470 { 02471 FILE * pOut, * pErr; 02472 Abc_Ntk_t * pNtk; 02473 int c; 02474 02475 pNtk = Abc_FrameReadNtk(pAbc); 02476 pOut = Abc_FrameReadOut(pAbc); 02477 pErr = Abc_FrameReadErr(pAbc); 02478 02479 // set defaults 02480 Extra_UtilGetoptReset(); 02481 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 02482 { 02483 switch ( c ) 02484 { 02485 case 'h': 02486 goto usage; 02487 default: 02488 goto usage; 02489 } 02490 } 02491 02492 if ( pNtk == NULL ) 02493 { 02494 fprintf( pErr, "Empty network.\n" ); 02495 return 1; 02496 } 02497 if ( Abc_NtkIsStrash(pNtk) ) 02498 { 02499 fprintf( pErr, "Cleanup cannot be performed on the AIG.\n" ); 02500 return 1; 02501 } 02502 // modify the current network 02503 Abc_NtkCleanup( pNtk, 1 ); 02504 return 0; 02505 02506 usage: 02507 fprintf( pErr, "usage: cleanup [-h]\n" ); 02508 fprintf( pErr, "\t removes dangling nodes\n" ); 02509 fprintf( pErr, "\t-h : print the command usage\n"); 02510 return 1; 02511 }
int Abc_CommandCollapse | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1909 of file abc.c.
01910 { 01911 FILE * pOut, * pErr; 01912 Abc_Ntk_t * pNtk, * pNtkRes; 01913 int fVerbose; 01914 int fBddSizeMax; 01915 int fDualRail; 01916 int fReorder; 01917 int c; 01918 01919 pNtk = Abc_FrameReadNtk(pAbc); 01920 pOut = Abc_FrameReadOut(pAbc); 01921 pErr = Abc_FrameReadErr(pAbc); 01922 01923 // set defaults 01924 fVerbose = 1; 01925 fReorder = 1; 01926 fDualRail = 0; 01927 fBddSizeMax = 50000000; 01928 Extra_UtilGetoptReset(); 01929 while ( ( c = Extra_UtilGetopt( argc, argv, "Brdvh" ) ) != EOF ) 01930 { 01931 switch ( c ) 01932 { 01933 case 'B': 01934 if ( globalUtilOptind >= argc ) 01935 { 01936 fprintf( pErr, "Command line switch \"-B\" should be followed by an integer.\n" ); 01937 goto usage; 01938 } 01939 fBddSizeMax = atoi(argv[globalUtilOptind]); 01940 globalUtilOptind++; 01941 if ( fBddSizeMax < 0 ) 01942 goto usage; 01943 break; 01944 case 'd': 01945 fDualRail ^= 1; 01946 break; 01947 case 'v': 01948 fVerbose ^= 1; 01949 break; 01950 case 'r': 01951 fReorder ^= 1; 01952 break; 01953 case 'h': 01954 goto usage; 01955 default: 01956 goto usage; 01957 } 01958 } 01959 01960 if ( pNtk == NULL ) 01961 { 01962 fprintf( pErr, "Empty network.\n" ); 01963 return 1; 01964 } 01965 01966 if ( !Abc_NtkIsLogic(pNtk) && !Abc_NtkIsStrash(pNtk) ) 01967 { 01968 fprintf( pErr, "Can only collapse a logic network or an AIG.\n" ); 01969 return 1; 01970 } 01971 01972 // get the new network 01973 if ( Abc_NtkIsStrash(pNtk) ) 01974 pNtkRes = Abc_NtkCollapse( pNtk, fBddSizeMax, fDualRail, fReorder, fVerbose ); 01975 else 01976 { 01977 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 01978 pNtkRes = Abc_NtkCollapse( pNtk, fBddSizeMax, fDualRail, fReorder, fVerbose ); 01979 Abc_NtkDelete( pNtk ); 01980 } 01981 if ( pNtkRes == NULL ) 01982 { 01983 fprintf( pErr, "Collapsing has failed.\n" ); 01984 return 1; 01985 } 01986 // replace the current network 01987 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 01988 return 0; 01989 01990 usage: 01991 fprintf( pErr, "usage: collapse [-B num] [-rdvh]\n" ); 01992 fprintf( pErr, "\t collapses the network by constructing global BDDs\n" ); 01993 fprintf( pErr, "\t-B num : limit on live BDD nodes during collapsing [default = %d]\n", fBddSizeMax ); 01994 fprintf( pErr, "\t-r : toggles dynamic variable reordering [default = %s]\n", fReorder? "yes": "no" ); 01995 fprintf( pErr, "\t-d : toggles dual-rail collapsing mode [default = %s]\n", fDualRail? "yes": "no" ); 01996 fprintf( pErr, "\t-v : print verbose information [default = %s]\n", fVerbose? "yes": "no" ); 01997 fprintf( pErr, "\t-h : print the command usage\n"); 01998 return 1; 01999 }
int Abc_CommandComb | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3866 of file abc.c.
03867 { 03868 FILE * pOut, * pErr; 03869 Abc_Ntk_t * pNtk, * pNtkRes; 03870 int c; 03871 03872 pNtk = Abc_FrameReadNtk(pAbc); 03873 pOut = Abc_FrameReadOut(pAbc); 03874 pErr = Abc_FrameReadErr(pAbc); 03875 03876 // set defaults 03877 Extra_UtilGetoptReset(); 03878 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 03879 { 03880 switch ( c ) 03881 { 03882 case 'h': 03883 goto usage; 03884 default: 03885 goto usage; 03886 } 03887 } 03888 03889 if ( pNtk == NULL ) 03890 { 03891 fprintf( pErr, "Empty network.\n" ); 03892 return 1; 03893 } 03894 if ( Abc_NtkIsComb(pNtk) ) 03895 { 03896 fprintf( pErr, "The network is already combinational.\n" ); 03897 return 0; 03898 } 03899 03900 // get the new network 03901 pNtkRes = Abc_NtkDup( pNtk ); 03902 Abc_NtkMakeComb( pNtkRes ); 03903 // replace the current network 03904 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 03905 return 0; 03906 03907 usage: 03908 fprintf( pErr, "usage: comb [-h]\n" ); 03909 fprintf( pErr, "\t makes the current network combinational by replacing latches by PI/PO pairs\n" ); 03910 fprintf( pErr, "\t-h : print the command usage\n"); 03911 return 1; 03912 }
int Abc_CommandCone | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4883 of file abc.c.
04884 { 04885 FILE * pOut, * pErr; 04886 Abc_Ntk_t * pNtk, * pNtkRes; 04887 Abc_Obj_t * pNode, * pNodeCo; 04888 int c; 04889 int fUseAllCis; 04890 int fUseMffc; 04891 int Output; 04892 04893 pNtk = Abc_FrameReadNtk(pAbc); 04894 pOut = Abc_FrameReadOut(pAbc); 04895 pErr = Abc_FrameReadErr(pAbc); 04896 04897 // set defaults 04898 fUseAllCis = 0; 04899 fUseMffc = 0; 04900 Output = -1; 04901 Extra_UtilGetoptReset(); 04902 while ( ( c = Extra_UtilGetopt( argc, argv, "Omah" ) ) != EOF ) 04903 { 04904 switch ( c ) 04905 { 04906 case 'O': 04907 if ( globalUtilOptind >= argc ) 04908 { 04909 fprintf( pErr, "Command line switch \"-O\" should be followed by an integer.\n" ); 04910 goto usage; 04911 } 04912 Output = atoi(argv[globalUtilOptind]); 04913 globalUtilOptind++; 04914 if ( Output < 0 ) 04915 goto usage; 04916 break; 04917 case 'm': 04918 fUseMffc ^= 1; 04919 case 'a': 04920 fUseAllCis ^= 1; 04921 break; 04922 case 'h': 04923 goto usage; 04924 default: 04925 goto usage; 04926 } 04927 } 04928 04929 if ( pNtk == NULL ) 04930 { 04931 fprintf( pErr, "Empty network.\n" ); 04932 return 1; 04933 } 04934 04935 if ( !Abc_NtkIsLogic(pNtk) && !Abc_NtkIsStrash(pNtk) ) 04936 { 04937 fprintf( pErr, "Currently can only be applied to the logic network or an AIG.\n" ); 04938 return 1; 04939 } 04940 04941 if ( argc > globalUtilOptind + 1 ) 04942 { 04943 fprintf( pErr, "Wrong number of auguments.\n" ); 04944 goto usage; 04945 } 04946 04947 pNodeCo = NULL; 04948 if ( argc == globalUtilOptind + 1 ) 04949 { 04950 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 04951 if ( pNode == NULL ) 04952 { 04953 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 04954 return 1; 04955 } 04956 if ( fUseMffc ) 04957 pNtkRes = Abc_NtkCreateMffc( pNtk, pNode, argv[globalUtilOptind] ); 04958 else 04959 pNtkRes = Abc_NtkCreateCone( pNtk, pNode, argv[globalUtilOptind], fUseAllCis ); 04960 } 04961 else 04962 { 04963 if ( Output == -1 ) 04964 { 04965 fprintf( pErr, "The node is not specified.\n" ); 04966 return 1; 04967 } 04968 if ( Output >= Abc_NtkCoNum(pNtk) ) 04969 { 04970 fprintf( pErr, "The 0-based output number (%d) is larger than the number of outputs (%d).\n", Output, Abc_NtkCoNum(pNtk) ); 04971 return 1; 04972 } 04973 pNodeCo = Abc_NtkCo( pNtk, Output ); 04974 if ( fUseMffc ) 04975 pNtkRes = Abc_NtkCreateMffc( pNtk, Abc_ObjFanin0(pNodeCo), Abc_ObjName(pNodeCo) ); 04976 else 04977 pNtkRes = Abc_NtkCreateCone( pNtk, Abc_ObjFanin0(pNodeCo), Abc_ObjName(pNodeCo), fUseAllCis ); 04978 } 04979 if ( pNodeCo && Abc_ObjFaninC0(pNodeCo) ) 04980 printf( "The extracted cone represents the complement function of the CO.\n" ); 04981 if ( pNtkRes == NULL ) 04982 { 04983 fprintf( pErr, "Writing the logic cone of one node has failed.\n" ); 04984 return 1; 04985 } 04986 // replace the current network 04987 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04988 return 0; 04989 04990 usage: 04991 fprintf( pErr, "usage: cone [-O num] [-amh] <name>\n" ); 04992 fprintf( pErr, "\t replaces the current network by one logic cone\n" ); 04993 fprintf( pErr, "\t-a : toggle writing all CIs or structral support only [default = %s]\n", fUseAllCis? "all": "structural" ); 04994 fprintf( pErr, "\t-m : toggle writing only MFFC or complete TFI cone [default = %s]\n", fUseMffc? "MFFC": "TFI cone" ); 04995 fprintf( pErr, "\t-h : print the command usage\n"); 04996 fprintf( pErr, "\t-O num : (optional) the 0-based number of the CO to extract\n"); 04997 fprintf( pErr, "\tname : (optional) the name of the node to extract\n"); 04998 return 1; 04999 }
int Abc_CommandCSweep | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7757 of file abc.c.
07758 { 07759 FILE * pOut, * pErr; 07760 Abc_Ntk_t * pNtk, * pNtkRes; 07761 int c, nCutsMax, nLeafMax, fVerbose; 07762 07763 extern Abc_Ntk_t * Abc_NtkCSweep( Abc_Ntk_t * pNtk, int nCutsMax, int nLeafMax, int fVerbose ); 07764 07765 pNtk = Abc_FrameReadNtk(pAbc); 07766 pOut = Abc_FrameReadOut(pAbc); 07767 pErr = Abc_FrameReadErr(pAbc); 07768 07769 // set defaults 07770 nCutsMax = 8; 07771 nLeafMax = 6; 07772 fVerbose = 0; 07773 Extra_UtilGetoptReset(); 07774 while ( ( c = Extra_UtilGetopt( argc, argv, "CKvh" ) ) != EOF ) 07775 { 07776 switch ( c ) 07777 { 07778 case 'C': 07779 if ( globalUtilOptind >= argc ) 07780 { 07781 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07782 goto usage; 07783 } 07784 nCutsMax = atoi(argv[globalUtilOptind]); 07785 globalUtilOptind++; 07786 if ( nCutsMax < 0 ) 07787 goto usage; 07788 break; 07789 case 'K': 07790 if ( globalUtilOptind >= argc ) 07791 { 07792 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 07793 goto usage; 07794 } 07795 nLeafMax = atoi(argv[globalUtilOptind]); 07796 globalUtilOptind++; 07797 if ( nLeafMax < 0 ) 07798 goto usage; 07799 break; 07800 case 'v': 07801 fVerbose ^= 1; 07802 break; 07803 case 'h': 07804 goto usage; 07805 default: 07806 goto usage; 07807 } 07808 } 07809 if ( pNtk == NULL ) 07810 { 07811 fprintf( pErr, "Empty network.\n" ); 07812 return 1; 07813 } 07814 07815 if ( nCutsMax < 2 ) 07816 { 07817 fprintf( pErr, "The number of cuts cannot be less than 2.\n" ); 07818 return 1; 07819 } 07820 07821 if ( nLeafMax < 3 || nLeafMax > 16 ) 07822 { 07823 fprintf( pErr, "The number of leaves is infeasible.\n" ); 07824 return 1; 07825 } 07826 if ( !Abc_NtkIsStrash(pNtk) ) 07827 { 07828 fprintf( pErr, "This command works only for strashed networks.\n" ); 07829 return 1; 07830 } 07831 07832 pNtkRes = Abc_NtkCSweep( pNtk, nCutsMax, nLeafMax, fVerbose ); 07833 if ( pNtkRes == NULL ) 07834 { 07835 fprintf( pErr, "Command has failed.\n" ); 07836 return 0; 07837 } 07838 // replace the current network 07839 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07840 return 0; 07841 07842 usage: 07843 fprintf( pErr, "usage: csweep [-C num] [-K num] [-vh]\n" ); 07844 fprintf( pErr, "\t performs cut sweeping using a new method\n" ); 07845 fprintf( pErr, "\t-C num : limit on the number of cuts (C >= 2) [default = %d]\n", nCutsMax ); 07846 fprintf( pErr, "\t-K num : limit on the cut size (3 <= K <= 16) [default = %d]\n", nLeafMax ); 07847 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07848 fprintf( pErr, "\t-h : print the command usage\n"); 07849 return 1; 07850 }
int Abc_CommandCut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5513 of file abc.c.
05514 { 05515 Cut_Params_t Params, * pParams = &Params; 05516 Cut_Man_t * pCutMan; 05517 Cut_Oracle_t * pCutOracle; 05518 FILE * pOut, * pErr; 05519 Abc_Ntk_t * pNtk; 05520 int c; 05521 int fOracle; 05522 extern Cut_Man_t * Abc_NtkCuts( Abc_Ntk_t * pNtk, Cut_Params_t * pParams ); 05523 extern void Abc_NtkCutsOracle( Abc_Ntk_t * pNtk, Cut_Oracle_t * pCutOracle ); 05524 05525 pNtk = Abc_FrameReadNtk(pAbc); 05526 pOut = Abc_FrameReadOut(pAbc); 05527 pErr = Abc_FrameReadErr(pAbc); 05528 05529 // set defaults 05530 fOracle = 0; 05531 memset( pParams, 0, sizeof(Cut_Params_t) ); 05532 pParams->nVarsMax = 5; // the max cut size ("k" of the k-feasible cuts) 05533 pParams->nKeepMax = 1000; // the max number of cuts kept at a node 05534 pParams->fTruth = 0; // compute truth tables 05535 pParams->fFilter = 1; // filter dominated cuts 05536 pParams->fDrop = 0; // drop cuts on the fly 05537 pParams->fDag = 0; // compute DAG cuts 05538 pParams->fTree = 0; // compute tree cuts 05539 pParams->fGlobal = 0; // compute global cuts 05540 pParams->fLocal = 0; // compute local cuts 05541 pParams->fFancy = 0; // compute something fancy 05542 pParams->fMap = 0; // compute mapping delay 05543 pParams->fVerbose = 0; // the verbosiness flag 05544 Extra_UtilGetoptReset(); 05545 while ( ( c = Extra_UtilGetopt( argc, argv, "KMtfdxyglzmvoh" ) ) != EOF ) 05546 { 05547 switch ( c ) 05548 { 05549 case 'K': 05550 if ( globalUtilOptind >= argc ) 05551 { 05552 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 05553 goto usage; 05554 } 05555 pParams->nVarsMax = atoi(argv[globalUtilOptind]); 05556 globalUtilOptind++; 05557 if ( pParams->nVarsMax < 0 ) 05558 goto usage; 05559 break; 05560 case 'M': 05561 if ( globalUtilOptind >= argc ) 05562 { 05563 fprintf( pErr, "Command line switch \"-M\" should be followed by an integer.\n" ); 05564 goto usage; 05565 } 05566 pParams->nKeepMax = atoi(argv[globalUtilOptind]); 05567 globalUtilOptind++; 05568 if ( pParams->nKeepMax < 0 ) 05569 goto usage; 05570 break; 05571 case 't': 05572 pParams->fTruth ^= 1; 05573 break; 05574 case 'f': 05575 pParams->fFilter ^= 1; 05576 break; 05577 case 'd': 05578 pParams->fDrop ^= 1; 05579 break; 05580 case 'x': 05581 pParams->fDag ^= 1; 05582 break; 05583 case 'y': 05584 pParams->fTree ^= 1; 05585 break; 05586 case 'g': 05587 pParams->fGlobal ^= 1; 05588 break; 05589 case 'l': 05590 pParams->fLocal ^= 1; 05591 break; 05592 case 'z': 05593 pParams->fFancy ^= 1; 05594 break; 05595 case 'm': 05596 pParams->fMap ^= 1; 05597 break; 05598 case 'v': 05599 pParams->fVerbose ^= 1; 05600 break; 05601 case 'o': 05602 fOracle ^= 1; 05603 break; 05604 case 'h': 05605 goto usage; 05606 default: 05607 goto usage; 05608 } 05609 } 05610 05611 if ( pNtk == NULL ) 05612 { 05613 fprintf( pErr, "Empty network.\n" ); 05614 return 1; 05615 } 05616 if ( !Abc_NtkIsStrash(pNtk) ) 05617 { 05618 fprintf( pErr, "Cut computation is available only for AIGs (run \"strash\").\n" ); 05619 return 1; 05620 } 05621 if ( pParams->nVarsMax < CUT_SIZE_MIN || pParams->nVarsMax > CUT_SIZE_MAX ) 05622 { 05623 fprintf( pErr, "Can only compute the cuts for %d <= K <= %d.\n", CUT_SIZE_MIN, CUT_SIZE_MAX ); 05624 return 1; 05625 } 05626 if ( pParams->fDag && pParams->fTree ) 05627 { 05628 fprintf( pErr, "Cannot compute both DAG cuts and tree cuts at the same time.\n" ); 05629 return 1; 05630 } 05631 05632 if ( fOracle ) 05633 pParams->fRecord = 1; 05634 pCutMan = Abc_NtkCuts( pNtk, pParams ); 05635 if ( fOracle ) 05636 pCutOracle = Cut_OracleStart( pCutMan ); 05637 Cut_ManStop( pCutMan ); 05638 if ( fOracle ) 05639 { 05640 Abc_NtkCutsOracle( pNtk, pCutOracle ); 05641 Cut_OracleStop( pCutOracle ); 05642 } 05643 return 0; 05644 05645 usage: 05646 fprintf( pErr, "usage: cut [-K num] [-M num] [-tfdxyzmvh]\n" ); 05647 fprintf( pErr, "\t computes k-feasible cuts for the AIG\n" ); 05648 fprintf( pErr, "\t-K num : max number of leaves (%d <= num <= %d) [default = %d]\n", CUT_SIZE_MIN, CUT_SIZE_MAX, pParams->nVarsMax ); 05649 fprintf( pErr, "\t-M num : max number of cuts stored at a node [default = %d]\n", pParams->nKeepMax ); 05650 fprintf( pErr, "\t-t : toggle truth table computation [default = %s]\n", pParams->fTruth? "yes": "no" ); 05651 fprintf( pErr, "\t-f : toggle filtering of duplicated/dominated [default = %s]\n", pParams->fFilter? "yes": "no" ); 05652 fprintf( pErr, "\t-d : toggle dropping when fanouts are done [default = %s]\n", pParams->fDrop? "yes": "no" ); 05653 fprintf( pErr, "\t-x : toggle computing only DAG cuts [default = %s]\n", pParams->fDag? "yes": "no" ); 05654 fprintf( pErr, "\t-y : toggle computing only tree cuts [default = %s]\n", pParams->fTree? "yes": "no" ); 05655 fprintf( pErr, "\t-g : toggle computing only global cuts [default = %s]\n", pParams->fGlobal? "yes": "no" ); 05656 fprintf( pErr, "\t-l : toggle computing only local cuts [default = %s]\n", pParams->fLocal? "yes": "no" ); 05657 fprintf( pErr, "\t-z : toggle fancy computations [default = %s]\n", pParams->fFancy? "yes": "no" ); 05658 fprintf( pErr, "\t-m : toggle delay-oriented FPGA mapping [default = %s]\n", pParams->fMap? "yes": "no" ); 05659 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", pParams->fVerbose? "yes": "no" ); 05660 fprintf( pErr, "\t-h : print the command usage\n"); 05661 return 1; 05662 }
int Abc_CommandCycle | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11492 of file abc.c.
11493 { 11494 FILE * pOut, * pErr; 11495 Abc_Ntk_t * pNtk; 11496 int c; 11497 int nFrames; 11498 int fVerbose; 11499 extern void Abc_NtkCycleInitState( Abc_Ntk_t * pNtk, int nFrames, int fVerbose ); 11500 extern void Abc_NtkCycleInitStateSop( Abc_Ntk_t * pNtk, int nFrames, int fVerbose ); 11501 11502 pNtk = Abc_FrameReadNtk(pAbc); 11503 pOut = Abc_FrameReadOut(pAbc); 11504 pErr = Abc_FrameReadErr(pAbc); 11505 11506 // set defaults 11507 nFrames = 100; 11508 fVerbose = 0; 11509 Extra_UtilGetoptReset(); 11510 while ( ( c = Extra_UtilGetopt( argc, argv, "Fvh" ) ) != EOF ) 11511 { 11512 switch ( c ) 11513 { 11514 case 'F': 11515 if ( globalUtilOptind >= argc ) 11516 { 11517 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 11518 goto usage; 11519 } 11520 nFrames = atoi(argv[globalUtilOptind]); 11521 globalUtilOptind++; 11522 if ( nFrames < 0 ) 11523 goto usage; 11524 break; 11525 case 'v': 11526 fVerbose ^= 1; 11527 break; 11528 case 'h': 11529 goto usage; 11530 default: 11531 goto usage; 11532 } 11533 } 11534 if ( pNtk == NULL ) 11535 { 11536 fprintf( pErr, "Empty network.\n" ); 11537 return 1; 11538 } 11539 11540 if ( !Abc_NtkIsStrash(pNtk) && !Abc_NtkIsSopLogic(pNtk) ) 11541 { 11542 fprintf( pErr, "Only works for strashed networks or logic SOP networks.\n" ); 11543 return 1; 11544 } 11545 if ( !Abc_NtkLatchNum(pNtk) ) 11546 { 11547 fprintf( pErr, "Only works for sequential networks.\n" ); 11548 return 1; 11549 } 11550 11551 if ( Abc_NtkIsStrash(pNtk) ) 11552 Abc_NtkCycleInitState( pNtk, nFrames, fVerbose ); 11553 else 11554 Abc_NtkCycleInitStateSop( pNtk, nFrames, fVerbose ); 11555 return 0; 11556 11557 usage: 11558 fprintf( pErr, "usage: cycle [-F num] [-vh]\n" ); 11559 fprintf( pErr, "\t cycles sequiential circuit for the given number of timeframes\n" ); 11560 fprintf( pErr, "\t to derive a new initial state (which may be on the envelope)\n" ); 11561 fprintf( pErr, "\t-F num : the number of frames to simulate [default = %d]\n", nFrames ); 11562 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 11563 fprintf( pErr, "\t-h : print the command usage\n"); 11564 return 1; 11565 }
int Abc_CommandDChoice | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7179 of file abc.c.
07180 { 07181 FILE * pOut, * pErr; 07182 Abc_Ntk_t * pNtk, * pNtkRes; 07183 int fBalance, fVerbose, fUpdateLevel, c; 07184 07185 extern Abc_Ntk_t * Abc_NtkDChoice( Abc_Ntk_t * pNtk, int fBalance, int fUpdateLevel, int fVerbose ); 07186 07187 pNtk = Abc_FrameReadNtk(pAbc); 07188 pOut = Abc_FrameReadOut(pAbc); 07189 pErr = Abc_FrameReadErr(pAbc); 07190 07191 // set defaults 07192 fBalance = 1; 07193 fUpdateLevel = 1; 07194 fVerbose = 0; 07195 Extra_UtilGetoptReset(); 07196 while ( ( c = Extra_UtilGetopt( argc, argv, "blvh" ) ) != EOF ) 07197 { 07198 switch ( c ) 07199 { 07200 case 'b': 07201 fBalance ^= 1; 07202 break; 07203 case 'l': 07204 fUpdateLevel ^= 1; 07205 break; 07206 case 'v': 07207 fVerbose ^= 1; 07208 break; 07209 case 'h': 07210 goto usage; 07211 default: 07212 goto usage; 07213 } 07214 } 07215 if ( pNtk == NULL ) 07216 { 07217 fprintf( pErr, "Empty network.\n" ); 07218 return 1; 07219 } 07220 if ( !Abc_NtkIsStrash(pNtk) ) 07221 { 07222 fprintf( pErr, "This command works only for strashed networks.\n" ); 07223 return 1; 07224 } 07225 pNtkRes = Abc_NtkDChoice( pNtk, fBalance, fUpdateLevel, fVerbose ); 07226 if ( pNtkRes == NULL ) 07227 { 07228 fprintf( pErr, "Command has failed.\n" ); 07229 return 0; 07230 } 07231 // replace the current network 07232 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07233 return 0; 07234 07235 usage: 07236 fprintf( pErr, "usage: dchoice [-blvh]\n" ); 07237 fprintf( pErr, "\t performs partitioned choicing using a new AIG package\n" ); 07238 fprintf( pErr, "\t-b : toggle internal balancing [default = %s]\n", fBalance? "yes": "no" ); 07239 fprintf( pErr, "\t-l : toggle updating level [default = %s]\n", fUpdateLevel? "yes": "no" ); 07240 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07241 fprintf( pErr, "\t-h : print the command usage\n"); 07242 return 1; 07243 }
int Abc_CommandDCompress2 | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7101 of file abc.c.
07102 { 07103 FILE * pOut, * pErr; 07104 Abc_Ntk_t * pNtk, * pNtkRes; 07105 int fBalance, fVerbose, fUpdateLevel, c; 07106 07107 extern Abc_Ntk_t * Abc_NtkDCompress2( Abc_Ntk_t * pNtk, int fBalance, int fUpdateLevel, int fVerbose ); 07108 07109 pNtk = Abc_FrameReadNtk(pAbc); 07110 pOut = Abc_FrameReadOut(pAbc); 07111 pErr = Abc_FrameReadErr(pAbc); 07112 07113 // set defaults 07114 fBalance = 0; 07115 fVerbose = 0; 07116 fUpdateLevel = 0; 07117 Extra_UtilGetoptReset(); 07118 while ( ( c = Extra_UtilGetopt( argc, argv, "blvh" ) ) != EOF ) 07119 { 07120 switch ( c ) 07121 { 07122 case 'b': 07123 fBalance ^= 1; 07124 break; 07125 case 'l': 07126 fUpdateLevel ^= 1; 07127 break; 07128 case 'v': 07129 fVerbose ^= 1; 07130 break; 07131 case 'h': 07132 goto usage; 07133 default: 07134 goto usage; 07135 } 07136 } 07137 if ( pNtk == NULL ) 07138 { 07139 fprintf( pErr, "Empty network.\n" ); 07140 return 1; 07141 } 07142 if ( !Abc_NtkIsStrash(pNtk) ) 07143 { 07144 fprintf( pErr, "This command works only for strashed networks.\n" ); 07145 return 1; 07146 } 07147 pNtkRes = Abc_NtkDCompress2( pNtk, fBalance, fUpdateLevel, fVerbose ); 07148 if ( pNtkRes == NULL ) 07149 { 07150 fprintf( pErr, "Command has failed.\n" ); 07151 return 0; 07152 } 07153 // replace the current network 07154 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07155 return 0; 07156 07157 usage: 07158 fprintf( pErr, "usage: dcompress2 [-blvh]\n" ); 07159 fprintf( pErr, "\t performs combinational AIG optimization\n" ); 07160 fprintf( pErr, "\t-b : toggle internal balancing [default = %s]\n", fBalance? "yes": "no" ); 07161 fprintf( pErr, "\t-l : toggle updating level [default = %s]\n", fUpdateLevel? "yes": "no" ); 07162 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07163 fprintf( pErr, "\t-h : print the command usage\n"); 07164 return 1; 07165 }
int Abc_CommandDebug | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12589 of file abc.c.
12590 { 12591 FILE * pOut, * pErr; 12592 Abc_Ntk_t * pNtk; 12593 int c; 12594 extern void Abc_NtkAutoDebug( Abc_Ntk_t * pNtk, int (*pFuncError) (Abc_Ntk_t *) ); 12595 extern int Abc_NtkRetimeDebug( Abc_Ntk_t * pNtk ); 12596 12597 pNtk = Abc_FrameReadNtk(pAbc); 12598 pOut = Abc_FrameReadOut(pAbc); 12599 pErr = Abc_FrameReadErr(pAbc); 12600 12601 // set defaults 12602 Extra_UtilGetoptReset(); 12603 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 12604 { 12605 switch ( c ) 12606 { 12607 case 'h': 12608 goto usage; 12609 default: 12610 goto usage; 12611 } 12612 } 12613 12614 if ( pNtk == NULL ) 12615 { 12616 fprintf( pErr, "Empty network.\n" ); 12617 return 1; 12618 } 12619 if ( !Abc_NtkIsLogic(pNtk) ) 12620 { 12621 fprintf( pErr, "This command is applicable to logic networks.\n" ); 12622 return 1; 12623 } 12624 12625 Abc_NtkAutoDebug( pNtk, Abc_NtkRetimeDebug ); 12626 return 0; 12627 12628 usage: 12629 fprintf( pErr, "usage: debug [-h]\n" ); 12630 fprintf( pErr, "\t performs automated debugging of the given procedure\n" ); 12631 fprintf( pErr, "\t-h : print the command usage\n"); 12632 return 1; 12633 }
int Abc_CommandDemiter | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4018 of file abc.c.
04019 { 04020 FILE * pOut, * pErr; 04021 Abc_Ntk_t * pNtk;//, * pNtkRes; 04022 int fComb; 04023 int c; 04024 extern int Abc_NtkDemiter( Abc_Ntk_t * pNtk ); 04025 04026 pNtk = Abc_FrameReadNtk(pAbc); 04027 pOut = Abc_FrameReadOut(pAbc); 04028 pErr = Abc_FrameReadErr(pAbc); 04029 04030 // set defaults 04031 Extra_UtilGetoptReset(); 04032 while ( ( c = Extra_UtilGetopt( argc, argv, "ch" ) ) != EOF ) 04033 { 04034 switch ( c ) 04035 { 04036 case 'c': 04037 fComb ^= 1; 04038 break; 04039 default: 04040 goto usage; 04041 } 04042 } 04043 04044 if ( !Abc_NtkIsStrash(pNtk) ) 04045 { 04046 fprintf( pErr, "The network is not strashed.\n" ); 04047 return 1; 04048 } 04049 04050 if ( Abc_NtkPoNum(pNtk) != 1 ) 04051 { 04052 fprintf( pErr, "The network is not a miter.\n" ); 04053 return 1; 04054 } 04055 04056 if ( !Abc_NodeIsExorType(Abc_ObjFanin0(Abc_NtkPo(pNtk,0))) ) 04057 { 04058 fprintf( pErr, "The miter's PO is not an EXOR.\n" ); 04059 return 1; 04060 } 04061 04062 // get the new network 04063 if ( !Abc_NtkDemiter( pNtk ) ) 04064 { 04065 fprintf( pErr, "Demitering has failed.\n" ); 04066 return 1; 04067 } 04068 // replace the current network 04069 // Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04070 return 0; 04071 04072 usage: 04073 fprintf( pErr, "usage: demiter [-h]\n" ); 04074 fprintf( pErr, "\t removes topmost EXOR from the miter to create two POs\n" ); 04075 // fprintf( pErr, "\t-c : computes combinational miter (latches as POs) [default = %s]\n", fComb? "yes": "no" ); 04076 fprintf( pErr, "\t-h : print the command usage\n"); 04077 return 1; 04078 }
int Abc_CommandDFraig | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7656 of file abc.c.
07657 { 07658 FILE * pOut, * pErr; 07659 Abc_Ntk_t * pNtk, * pNtkRes; 07660 int c, nConfLimit, fDoSparse, fProve, fSpeculate, fChoicing, fVerbose; 07661 07662 extern Abc_Ntk_t * Abc_NtkDarFraig( Abc_Ntk_t * pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fSpeculate, int fChoicing, int fVerbose ); 07663 07664 pNtk = Abc_FrameReadNtk(pAbc); 07665 pOut = Abc_FrameReadOut(pAbc); 07666 pErr = Abc_FrameReadErr(pAbc); 07667 07668 // set defaults 07669 nConfLimit = 100; 07670 fDoSparse = 1; 07671 fProve = 0; 07672 fSpeculate = 0; 07673 fChoicing = 0; 07674 fVerbose = 0; 07675 Extra_UtilGetoptReset(); 07676 while ( ( c = Extra_UtilGetopt( argc, argv, "Csprcvh" ) ) != EOF ) 07677 { 07678 switch ( c ) 07679 { 07680 case 'C': 07681 if ( globalUtilOptind >= argc ) 07682 { 07683 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07684 goto usage; 07685 } 07686 nConfLimit = atoi(argv[globalUtilOptind]); 07687 globalUtilOptind++; 07688 if ( nConfLimit < 0 ) 07689 goto usage; 07690 break; 07691 case 's': 07692 fDoSparse ^= 1; 07693 break; 07694 case 'p': 07695 fProve ^= 1; 07696 break; 07697 case 'r': 07698 fSpeculate ^= 1; 07699 break; 07700 case 'c': 07701 fChoicing ^= 1; 07702 break; 07703 case 'v': 07704 fVerbose ^= 1; 07705 break; 07706 case 'h': 07707 goto usage; 07708 default: 07709 goto usage; 07710 } 07711 } 07712 if ( pNtk == NULL ) 07713 { 07714 fprintf( pErr, "Empty network.\n" ); 07715 return 1; 07716 } 07717 if ( !Abc_NtkIsStrash(pNtk) ) 07718 { 07719 fprintf( pErr, "This command works only for strashed networks.\n" ); 07720 return 1; 07721 } 07722 07723 pNtkRes = Abc_NtkDarFraig( pNtk, nConfLimit, fDoSparse, fProve, 0, fSpeculate, fChoicing, fVerbose ); 07724 if ( pNtkRes == NULL ) 07725 { 07726 fprintf( pErr, "Command has failed.\n" ); 07727 return 0; 07728 } 07729 // replace the current network 07730 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07731 return 0; 07732 07733 usage: 07734 fprintf( pErr, "usage: dfraig [-C num] [-sprcvh]\n" ); 07735 fprintf( pErr, "\t performs fraiging using a new method\n" ); 07736 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 07737 fprintf( pErr, "\t-s : toggle considering sparse functions [default = %s]\n", fDoSparse? "yes": "no" ); 07738 fprintf( pErr, "\t-p : toggle proving the miter outputs [default = %s]\n", fProve? "yes": "no" ); 07739 fprintf( pErr, "\t-r : toggle speculative reduction [default = %s]\n", fSpeculate? "yes": "no" ); 07740 fprintf( pErr, "\t-c : toggle accumulation of choices [default = %s]\n", fChoicing? "yes": "no" ); 07741 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07742 fprintf( pErr, "\t-h : print the command usage\n"); 07743 return 1; 07744 }
int Abc_CommandDisjoint | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2720 of file abc.c.
02721 { 02722 FILE * pOut, * pErr; 02723 Abc_Ntk_t * pNtk, * pNtkRes, * pNtkNew; 02724 int fGlobal, fRecursive, fVerbose, fPrint, fShort, c; 02725 02726 extern Abc_Ntk_t * Abc_NtkDsdGlobal( Abc_Ntk_t * pNtk, bool fVerbose, bool fPrint, bool fShort ); 02727 extern int Abc_NtkDsdLocal( Abc_Ntk_t * pNtk, bool fVerbose, bool fRecursive ); 02728 02729 pNtk = Abc_FrameReadNtk(pAbc); 02730 pOut = Abc_FrameReadOut(pAbc); 02731 pErr = Abc_FrameReadErr(pAbc); 02732 02733 // set defaults 02734 fGlobal = 1; 02735 fRecursive = 0; 02736 fVerbose = 0; 02737 fPrint = 0; 02738 fShort = 0; 02739 Extra_UtilGetoptReset(); 02740 while ( ( c = Extra_UtilGetopt( argc, argv, "grvpsh" ) ) != EOF ) 02741 { 02742 switch ( c ) 02743 { 02744 case 'g': 02745 fGlobal ^= 1; 02746 break; 02747 case 'r': 02748 fRecursive ^= 1; 02749 break; 02750 case 'v': 02751 fVerbose ^= 1; 02752 break; 02753 case 'p': 02754 fPrint ^= 1; 02755 break; 02756 case 's': 02757 fShort ^= 1; 02758 break; 02759 case 'h': 02760 goto usage; 02761 break; 02762 default: 02763 goto usage; 02764 } 02765 } 02766 02767 if ( pNtk == NULL ) 02768 { 02769 fprintf( pErr, "Empty network.\n" ); 02770 return 1; 02771 } 02772 02773 if ( fGlobal ) 02774 { 02775 // fprintf( stdout, "Performing DSD of global functions of the network.\n" ); 02776 // get the new network 02777 if ( !Abc_NtkIsStrash(pNtk) ) 02778 { 02779 pNtkNew = Abc_NtkStrash( pNtk, 0, 0, 0 ); 02780 pNtkRes = Abc_NtkDsdGlobal( pNtkNew, fVerbose, fPrint, fShort ); 02781 Abc_NtkDelete( pNtkNew ); 02782 } 02783 else 02784 { 02785 pNtkRes = Abc_NtkDsdGlobal( pNtk, fVerbose, fPrint, fShort ); 02786 } 02787 if ( pNtkRes == NULL ) 02788 { 02789 fprintf( pErr, "Global DSD has failed.\n" ); 02790 return 1; 02791 } 02792 // replace the current network 02793 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 02794 } 02795 else if ( fRecursive ) 02796 { 02797 if ( !Abc_NtkIsBddLogic( pNtk ) ) 02798 { 02799 fprintf( pErr, "This command is only applicable to logic BDD networks.\n" ); 02800 return 1; 02801 } 02802 fprintf( stdout, "Performing recursive DSD and MUX decomposition of local functions.\n" ); 02803 if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) ) 02804 fprintf( pErr, "Recursive DSD has failed.\n" ); 02805 } 02806 else 02807 { 02808 if ( !Abc_NtkIsBddLogic( pNtk ) ) 02809 { 02810 fprintf( pErr, "This command is only applicable to logic BDD networks (run \"bdd\").\n" ); 02811 return 1; 02812 } 02813 fprintf( stdout, "Performing simple non-recursive DSD of local functions.\n" ); 02814 if ( !Abc_NtkDsdLocal( pNtk, fVerbose, fRecursive ) ) 02815 fprintf( pErr, "Simple DSD of local functions has failed.\n" ); 02816 } 02817 return 0; 02818 02819 usage: 02820 fprintf( pErr, "usage: dsd [-grvpsh]\n" ); 02821 fprintf( pErr, "\t decomposes the network using disjoint-support decomposition\n" ); 02822 fprintf( pErr, "\t-g : toggle DSD of global and local functions [default = %s]\n", fGlobal? "global": "local" ); 02823 fprintf( pErr, "\t-r : toggle recursive DSD/MUX and simple DSD [default = %s]\n", fRecursive? "recursive DSD/MUX": "simple DSD" ); 02824 fprintf( pErr, "\t-v : prints DSD statistics and runtime [default = %s]\n", fVerbose? "yes": "no" ); 02825 fprintf( pErr, "\t-p : prints DSD structure to the standard output [default = %s]\n", fPrint? "yes": "no" ); 02826 fprintf( pErr, "\t-s : use short PI names when printing DSD structure [default = %s]\n", fShort? "yes": "no" ); 02827 fprintf( pErr, "\t-h : print the command usage\n"); 02828 return 1; 02829 }
int Abc_CommandDouble | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6103 of file abc.c.
06104 { 06105 FILE * pOut, * pErr; 06106 Abc_Ntk_t * pNtk, * pNtkRes; 06107 int c; 06108 int nFrames; 06109 int fVerbose; 06110 extern Abc_Ntk_t * Abc_NtkDouble( Abc_Ntk_t * pNtk ); 06111 06112 pNtk = Abc_FrameReadNtk(pAbc); 06113 pOut = Abc_FrameReadOut(pAbc); 06114 pErr = Abc_FrameReadErr(pAbc); 06115 06116 // set defaults 06117 nFrames = 50; 06118 fVerbose = 0; 06119 Extra_UtilGetoptReset(); 06120 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF ) 06121 { 06122 switch ( c ) 06123 { 06124 case 'F': 06125 if ( globalUtilOptind >= argc ) 06126 { 06127 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 06128 goto usage; 06129 } 06130 nFrames = atoi(argv[globalUtilOptind]); 06131 globalUtilOptind++; 06132 if ( nFrames < 0 ) 06133 goto usage; 06134 break; 06135 case 'v': 06136 fVerbose ^= 1; 06137 break; 06138 case 'h': 06139 goto usage; 06140 default: 06141 goto usage; 06142 } 06143 } 06144 if ( pNtk == NULL ) 06145 { 06146 fprintf( pErr, "Empty network.\n" ); 06147 return 1; 06148 } 06149 06150 if ( !Abc_NtkIsSopLogic(pNtk) ) 06151 { 06152 fprintf( pErr, "Only works for logic SOP networks.\n" ); 06153 return 1; 06154 } 06155 06156 pNtkRes = Abc_NtkDouble( pNtk ); 06157 if ( pNtkRes == NULL ) 06158 { 06159 fprintf( pErr, "Command has failed.\n" ); 06160 return 0; 06161 } 06162 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06163 return 0; 06164 06165 usage: 06166 fprintf( pErr, "usage: double [-vh]\n" ); 06167 fprintf( pErr, "\t puts together two parallel copies of the current network\n" ); 06168 // fprintf( pErr, "\t-F num : the number of frames to simulate [default = %d]\n", nFrames ); 06169 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06170 fprintf( pErr, "\t-h : print the command usage\n"); 06171 return 1; 06172 }
int Abc_CommandDProve | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12067 of file abc.c.
12068 { 12069 FILE * pOut, * pErr; 12070 Abc_Ntk_t * pNtk; 12071 int c; 12072 int fRetimeFirst; 12073 int fVerbose; 12074 int fVeryVerbose; 12075 int nFrames; 12076 12077 extern int Abc_NtkDarProve( Abc_Ntk_t * pNtk, int nFrames, int fRetimeFirst, int fVerbose, int fVeryVerbose ); 12078 12079 pNtk = Abc_FrameReadNtk(pAbc); 12080 pOut = Abc_FrameReadOut(pAbc); 12081 pErr = Abc_FrameReadErr(pAbc); 12082 12083 // set defaults 12084 nFrames = 16; 12085 fRetimeFirst = 1; 12086 fVerbose = 0; 12087 fVeryVerbose = 0; 12088 Extra_UtilGetoptReset(); 12089 while ( ( c = Extra_UtilGetopt( argc, argv, "Krwvh" ) ) != EOF ) 12090 { 12091 switch ( c ) 12092 { 12093 case 'K': 12094 if ( globalUtilOptind >= argc ) 12095 { 12096 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 12097 goto usage; 12098 } 12099 nFrames = atoi(argv[globalUtilOptind]); 12100 globalUtilOptind++; 12101 if ( nFrames < 0 ) 12102 goto usage; 12103 break; 12104 case 'r': 12105 fRetimeFirst ^= 1; 12106 break; 12107 case 'w': 12108 fVeryVerbose ^= 1; 12109 break; 12110 case 'v': 12111 fVerbose ^= 1; 12112 break; 12113 default: 12114 goto usage; 12115 } 12116 } 12117 12118 if ( Abc_NtkLatchNum(pNtk) == 0 ) 12119 { 12120 printf( "The network has no latches. Used combinational command \"iprove\".\n" ); 12121 return 0; 12122 } 12123 if ( !Abc_NtkIsStrash(pNtk) ) 12124 { 12125 printf( "This command works only for structrally hashed networks. Run \"st\".\n" ); 12126 return 0; 12127 } 12128 12129 // perform verification 12130 Abc_NtkDarProve( pNtk, nFrames, fRetimeFirst, fVerbose, fVeryVerbose ); 12131 return 0; 12132 12133 usage: 12134 fprintf( pErr, "usage: dprove [-K num] [-rwvh]\n" ); 12135 fprintf( pErr, "\t performs SEC on the sequential miter\n" ); 12136 fprintf( pErr, "\t-K num : the limit on the depth of induction [default = %d]\n", nFrames ); 12137 fprintf( pErr, "\t-r : toggles forward retiming at the beginning [default = %s]\n", fRetimeFirst? "yes": "no" ); 12138 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 12139 fprintf( pErr, "\t-w : toggles additional verbose output [default = %s]\n", fVeryVerbose? "yes": "no" ); 12140 fprintf( pErr, "\t-h : print the command usage\n"); 12141 return 1; 12142 }
int Abc_CommandDRefactor | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6976 of file abc.c.
06977 { 06978 FILE * pOut, * pErr; 06979 Abc_Ntk_t * pNtk, * pNtkRes; 06980 Dar_RefPar_t Pars, * pPars = &Pars; 06981 int c; 06982 06983 extern Abc_Ntk_t * Abc_NtkDRefactor( Abc_Ntk_t * pNtk, Dar_RefPar_t * pPars ); 06984 06985 pNtk = Abc_FrameReadNtk(pAbc); 06986 pOut = Abc_FrameReadOut(pAbc); 06987 pErr = Abc_FrameReadErr(pAbc); 06988 06989 // set defaults 06990 Dar_ManDefaultRefParams( pPars ); 06991 Extra_UtilGetoptReset(); 06992 while ( ( c = Extra_UtilGetopt( argc, argv, "MKCelzvwh" ) ) != EOF ) 06993 { 06994 switch ( c ) 06995 { 06996 case 'M': 06997 if ( globalUtilOptind >= argc ) 06998 { 06999 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07000 goto usage; 07001 } 07002 pPars->nMffcMin = atoi(argv[globalUtilOptind]); 07003 globalUtilOptind++; 07004 if ( pPars->nMffcMin < 0 ) 07005 goto usage; 07006 break; 07007 case 'K': 07008 if ( globalUtilOptind >= argc ) 07009 { 07010 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 07011 goto usage; 07012 } 07013 pPars->nLeafMax = atoi(argv[globalUtilOptind]); 07014 globalUtilOptind++; 07015 if ( pPars->nLeafMax < 0 ) 07016 goto usage; 07017 break; 07018 case 'C': 07019 if ( globalUtilOptind >= argc ) 07020 { 07021 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07022 goto usage; 07023 } 07024 pPars->nCutsMax = atoi(argv[globalUtilOptind]); 07025 globalUtilOptind++; 07026 if ( pPars->nCutsMax < 0 ) 07027 goto usage; 07028 break; 07029 case 'e': 07030 pPars->fExtend ^= 1; 07031 break; 07032 case 'l': 07033 pPars->fUpdateLevel ^= 1; 07034 break; 07035 case 'z': 07036 pPars->fUseZeros ^= 1; 07037 break; 07038 case 'v': 07039 pPars->fVerbose ^= 1; 07040 break; 07041 case 'w': 07042 pPars->fVeryVerbose ^= 1; 07043 break; 07044 case 'h': 07045 goto usage; 07046 default: 07047 goto usage; 07048 } 07049 } 07050 if ( pNtk == NULL ) 07051 { 07052 fprintf( pErr, "Empty network.\n" ); 07053 return 1; 07054 } 07055 if ( !Abc_NtkIsStrash(pNtk) ) 07056 { 07057 fprintf( pErr, "This command works only for strashed networks.\n" ); 07058 return 1; 07059 } 07060 if ( pPars->nLeafMax < 4 || pPars->nLeafMax > 15 ) 07061 { 07062 fprintf( pErr, "This command only works for cut sizes 4 <= K <= 15.\n" ); 07063 return 1; 07064 } 07065 pNtkRes = Abc_NtkDRefactor( pNtk, pPars ); 07066 if ( pNtkRes == NULL ) 07067 { 07068 fprintf( pErr, "Command has failed.\n" ); 07069 return 0; 07070 } 07071 // replace the current network 07072 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07073 return 0; 07074 07075 usage: 07076 fprintf( pErr, "usage: drf [-M num] [-K num] [-C num] [-elzvwh]\n" ); 07077 fprintf( pErr, "\t performs combinational AIG refactoring\n" ); 07078 fprintf( pErr, "\t-M num : the min MFFC size to attempt refactoring [default = %d]\n", pPars->nMffcMin ); 07079 fprintf( pErr, "\t-K num : the max number of cuts leaves [default = %d]\n", pPars->nLeafMax ); 07080 fprintf( pErr, "\t-C num : the max number of cuts to try at a node [default = %d]\n", pPars->nCutsMax ); 07081 fprintf( pErr, "\t-e : toggle extending tbe cut below MFFC [default = %s]\n", pPars->fExtend? "yes": "no" ); 07082 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", pPars->fUpdateLevel? "yes": "no" ); 07083 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", pPars->fUseZeros? "yes": "no" ); 07084 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", pPars->fVerbose? "yes": "no" ); 07085 fprintf( pErr, "\t-w : toggle very verbose printout [default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); 07086 fprintf( pErr, "\t-h : print the command usage\n"); 07087 return 1; 07088 }
int Abc_CommandDRewrite | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6868 of file abc.c.
06869 { 06870 FILE * pOut, * pErr; 06871 Abc_Ntk_t * pNtk, * pNtkRes; 06872 Dar_RwrPar_t Pars, * pPars = &Pars; 06873 int c; 06874 06875 extern Abc_Ntk_t * Abc_NtkDRewrite( Abc_Ntk_t * pNtk, Dar_RwrPar_t * pPars ); 06876 06877 pNtk = Abc_FrameReadNtk(pAbc); 06878 pOut = Abc_FrameReadOut(pAbc); 06879 pErr = Abc_FrameReadErr(pAbc); 06880 06881 // set defaults 06882 Dar_ManDefaultRwrParams( pPars ); 06883 Extra_UtilGetoptReset(); 06884 while ( ( c = Extra_UtilGetopt( argc, argv, "CNflzvwh" ) ) != EOF ) 06885 { 06886 switch ( c ) 06887 { 06888 case 'C': 06889 if ( globalUtilOptind >= argc ) 06890 { 06891 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 06892 goto usage; 06893 } 06894 pPars->nCutsMax = atoi(argv[globalUtilOptind]); 06895 globalUtilOptind++; 06896 if ( pPars->nCutsMax < 0 ) 06897 goto usage; 06898 break; 06899 case 'N': 06900 if ( globalUtilOptind >= argc ) 06901 { 06902 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 06903 goto usage; 06904 } 06905 pPars->nSubgMax = atoi(argv[globalUtilOptind]); 06906 globalUtilOptind++; 06907 if ( pPars->nSubgMax < 0 ) 06908 goto usage; 06909 break; 06910 case 'f': 06911 pPars->fFanout ^= 1; 06912 break; 06913 case 'l': 06914 pPars->fUpdateLevel ^= 1; 06915 break; 06916 case 'z': 06917 pPars->fUseZeros ^= 1; 06918 break; 06919 case 'v': 06920 pPars->fVerbose ^= 1; 06921 break; 06922 case 'w': 06923 pPars->fVeryVerbose ^= 1; 06924 break; 06925 case 'h': 06926 goto usage; 06927 default: 06928 goto usage; 06929 } 06930 } 06931 if ( pNtk == NULL ) 06932 { 06933 fprintf( pErr, "Empty network.\n" ); 06934 return 1; 06935 } 06936 if ( !Abc_NtkIsStrash(pNtk) ) 06937 { 06938 fprintf( pErr, "This command works only for strashed networks.\n" ); 06939 return 1; 06940 } 06941 pNtkRes = Abc_NtkDRewrite( pNtk, pPars ); 06942 if ( pNtkRes == NULL ) 06943 { 06944 fprintf( pErr, "Command has failed.\n" ); 06945 return 0; 06946 } 06947 // replace the current network 06948 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06949 return 0; 06950 06951 usage: 06952 fprintf( pErr, "usage: drw [-C num] [-N num] [-flzvwh]\n" ); 06953 fprintf( pErr, "\t performs combinational AIG rewriting\n" ); 06954 fprintf( pErr, "\t-C num : the max number of cuts at a node [default = %d]\n", pPars->nCutsMax ); 06955 fprintf( pErr, "\t-N num : the max number of subgraphs tried [default = %d]\n", pPars->nSubgMax ); 06956 fprintf( pErr, "\t-f : toggle representing fanouts [default = %s]\n", pPars->fFanout? "yes": "no" ); 06957 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", pPars->fUpdateLevel? "yes": "no" ); 06958 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", pPars->fUseZeros? "yes": "no" ); 06959 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", pPars->fVerbose? "yes": "no" ); 06960 fprintf( pErr, "\t-w : toggle very verbose printout [default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); 06961 fprintf( pErr, "\t-h : print the command usage\n"); 06962 return 1; 06963 }
int Abc_CommandDrwsat | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7256 of file abc.c.
07257 { 07258 FILE * pOut, * pErr; 07259 Abc_Ntk_t * pNtk, * pNtkRes; 07260 int fBalance, fVerbose, c; 07261 07262 extern Abc_Ntk_t * Abc_NtkDrwsat( Abc_Ntk_t * pNtk, int fBalance, int fVerbose ); 07263 07264 pNtk = Abc_FrameReadNtk(pAbc); 07265 pOut = Abc_FrameReadOut(pAbc); 07266 pErr = Abc_FrameReadErr(pAbc); 07267 07268 // set defaults 07269 fBalance = 0; 07270 fVerbose = 0; 07271 Extra_UtilGetoptReset(); 07272 while ( ( c = Extra_UtilGetopt( argc, argv, "bvh" ) ) != EOF ) 07273 { 07274 switch ( c ) 07275 { 07276 case 'b': 07277 fBalance ^= 1; 07278 break; 07279 case 'v': 07280 fVerbose ^= 1; 07281 break; 07282 case 'h': 07283 goto usage; 07284 default: 07285 goto usage; 07286 } 07287 } 07288 if ( pNtk == NULL ) 07289 { 07290 fprintf( pErr, "Empty network.\n" ); 07291 return 1; 07292 } 07293 if ( !Abc_NtkIsStrash(pNtk) ) 07294 { 07295 fprintf( pErr, "This command works only for strashed networks.\n" ); 07296 return 1; 07297 } 07298 pNtkRes = Abc_NtkDrwsat( pNtk, fBalance, fVerbose ); 07299 if ( pNtkRes == NULL ) 07300 { 07301 fprintf( pErr, "Command has failed.\n" ); 07302 return 0; 07303 } 07304 // replace the current network 07305 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07306 return 0; 07307 07308 usage: 07309 fprintf( pErr, "usage: drwsat [-bvh]\n" ); 07310 fprintf( pErr, "\t performs combinational AIG optimization for SAT\n" ); 07311 fprintf( pErr, "\t-b : toggle internal balancing [default = %s]\n", fBalance? "yes": "no" ); 07312 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07313 fprintf( pErr, "\t-h : print the command usage\n"); 07314 return 1; 07315 }
int Abc_CommandDSat | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12287 of file abc.c.
12288 { 12289 FILE * pOut, * pErr; 12290 Abc_Ntk_t * pNtk; 12291 int c; 12292 int RetValue; 12293 int fVerbose; 12294 int nConfLimit; 12295 int nInsLimit; 12296 int clk; 12297 12298 extern int Abc_NtkDSat( Abc_Ntk_t * pNtk, sint64 nConfLimit, sint64 nInsLimit, int fVerbose ); 12299 12300 12301 pNtk = Abc_FrameReadNtk(pAbc); 12302 pOut = Abc_FrameReadOut(pAbc); 12303 pErr = Abc_FrameReadErr(pAbc); 12304 12305 // set defaults 12306 fVerbose = 0; 12307 nConfLimit = 100000; 12308 nInsLimit = 0; 12309 Extra_UtilGetoptReset(); 12310 while ( ( c = Extra_UtilGetopt( argc, argv, "CIvh" ) ) != EOF ) 12311 { 12312 switch ( c ) 12313 { 12314 case 'C': 12315 if ( globalUtilOptind >= argc ) 12316 { 12317 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 12318 goto usage; 12319 } 12320 nConfLimit = atoi(argv[globalUtilOptind]); 12321 globalUtilOptind++; 12322 if ( nConfLimit < 0 ) 12323 goto usage; 12324 break; 12325 case 'I': 12326 if ( globalUtilOptind >= argc ) 12327 { 12328 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 12329 goto usage; 12330 } 12331 nInsLimit = atoi(argv[globalUtilOptind]); 12332 globalUtilOptind++; 12333 if ( nInsLimit < 0 ) 12334 goto usage; 12335 break; 12336 case 'v': 12337 fVerbose ^= 1; 12338 break; 12339 case 'h': 12340 goto usage; 12341 default: 12342 goto usage; 12343 } 12344 } 12345 12346 if ( pNtk == NULL ) 12347 { 12348 fprintf( pErr, "Empty network.\n" ); 12349 return 1; 12350 } 12351 if ( Abc_NtkLatchNum(pNtk) > 0 ) 12352 { 12353 fprintf( stdout, "Currently can only solve the miter for combinational circuits.\n" ); 12354 return 0; 12355 } 12356 if ( Abc_NtkPoNum(pNtk) != 1 ) 12357 { 12358 fprintf( stdout, "Currently expects a single-output miter.\n" ); 12359 return 0; 12360 } 12361 12362 if ( !Abc_NtkIsStrash(pNtk) ) 12363 { 12364 fprintf( stdout, "Currently only works for structurally hashed circuits.\n" ); 12365 return 0; 12366 } 12367 12368 clk = clock(); 12369 RetValue = Abc_NtkDSat( pNtk, (sint64)nConfLimit, (sint64)nInsLimit, fVerbose ); 12370 // verify that the pattern is correct 12371 if ( RetValue == 0 && Abc_NtkPoNum(pNtk) == 1 ) 12372 { 12373 //int i; 12374 //Abc_Obj_t * pObj; 12375 int * pSimInfo = Abc_NtkVerifySimulatePattern( pNtk, pNtk->pModel ); 12376 if ( pSimInfo[0] != 1 ) 12377 printf( "ERROR in Abc_NtkMiterSat(): Generated counter example is invalid.\n" ); 12378 free( pSimInfo ); 12379 /* 12380 // print model 12381 Abc_NtkForEachPi( pNtk, pObj, i ) 12382 { 12383 printf( "%d", (int)(pNtk->pModel[i] > 0) ); 12384 if ( i == 70 ) 12385 break; 12386 } 12387 printf( "\n" ); 12388 */ 12389 } 12390 12391 if ( RetValue == -1 ) 12392 printf( "UNDECIDED " ); 12393 else if ( RetValue == 0 ) 12394 printf( "SATISFIABLE " ); 12395 else 12396 printf( "UNSATISFIABLE " ); 12397 //printf( "\n" ); 12398 PRT( "Time", clock() - clk ); 12399 return 0; 12400 12401 usage: 12402 fprintf( pErr, "usage: dsat [-C num] [-I num] [-vh]\n" ); 12403 fprintf( pErr, "\t solves the combinational miter using SAT solver MiniSat-1.14\n" ); 12404 fprintf( pErr, "\t derives CNF from the current network and leave it unchanged\n" ); 12405 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 12406 fprintf( pErr, "\t-I num : limit on the number of inspections [default = %d]\n", nInsLimit ); 12407 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 12408 fprintf( pErr, "\t-h : print the command usage\n"); 12409 return 1; 12410 }
int Abc_CommandDSec | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11969 of file abc.c.
11970 { 11971 FILE * pOut, * pErr; 11972 Abc_Ntk_t * pNtk, * pNtk1, * pNtk2; 11973 int fDelete1, fDelete2; 11974 char ** pArgvNew; 11975 int nArgcNew; 11976 int c; 11977 int fRetimeFirst; 11978 int fVerbose; 11979 int fVeryVerbose; 11980 int nFrames; 11981 11982 extern int Abc_NtkDarSec( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nFrames, int fRetimeFirst, int fVerbose, int fVeryVerbose ); 11983 11984 pNtk = Abc_FrameReadNtk(pAbc); 11985 pOut = Abc_FrameReadOut(pAbc); 11986 pErr = Abc_FrameReadErr(pAbc); 11987 11988 // set defaults 11989 nFrames =16; 11990 fRetimeFirst = 1; 11991 fVerbose = 0; 11992 fVeryVerbose = 0; 11993 Extra_UtilGetoptReset(); 11994 while ( ( c = Extra_UtilGetopt( argc, argv, "Krwvh" ) ) != EOF ) 11995 { 11996 switch ( c ) 11997 { 11998 case 'K': 11999 if ( globalUtilOptind >= argc ) 12000 { 12001 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 12002 goto usage; 12003 } 12004 nFrames = atoi(argv[globalUtilOptind]); 12005 globalUtilOptind++; 12006 if ( nFrames < 0 ) 12007 goto usage; 12008 break; 12009 case 'r': 12010 fRetimeFirst ^= 1; 12011 break; 12012 case 'w': 12013 fVeryVerbose ^= 1; 12014 break; 12015 case 'v': 12016 fVerbose ^= 1; 12017 break; 12018 default: 12019 goto usage; 12020 } 12021 } 12022 12023 pArgvNew = argv + globalUtilOptind; 12024 nArgcNew = argc - globalUtilOptind; 12025 if ( !Abc_NtkPrepareTwoNtks( pErr, pNtk, pArgvNew, nArgcNew, &pNtk1, &pNtk2, &fDelete1, &fDelete2 ) ) 12026 return 1; 12027 12028 if ( Abc_NtkLatchNum(pNtk1) == 0 || Abc_NtkLatchNum(pNtk2) == 0 ) 12029 { 12030 printf( "The network has no latches. Used combinational command \"cec\".\n" ); 12031 return 0; 12032 } 12033 12034 // perform verification 12035 Abc_NtkDarSec( pNtk1, pNtk2, nFrames, fRetimeFirst, fVerbose, fVeryVerbose ); 12036 12037 if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); 12038 if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); 12039 return 0; 12040 12041 usage: 12042 fprintf( pErr, "usage: dsec [-K num] [-rwvh] <file1> <file2>\n" ); 12043 fprintf( pErr, "\t performs inductive sequential equivalence checking\n" ); 12044 fprintf( pErr, "\t-K num : the limit on the depth of induction [default = %d]\n", nFrames ); 12045 fprintf( pErr, "\t-r : toggles forward retiming at the beginning [default = %s]\n", fRetimeFirst? "yes": "no" ); 12046 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 12047 fprintf( pErr, "\t-w : toggles additional verbose output [default = %s]\n", fVeryVerbose? "yes": "no" ); 12048 fprintf( pErr, "\t-h : print the command usage\n"); 12049 fprintf( pErr, "\tfile1 : (optional) the file with the first network\n"); 12050 fprintf( pErr, "\tfile2 : (optional) the file with the second network\n"); 12051 fprintf( pErr, "\t if no files are given, uses the current network and its spec\n"); 12052 fprintf( pErr, "\t if one file is given, uses the current network and the file\n"); 12053 return 1; 12054 }
int Abc_CommandEspresso | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5780 of file abc.c.
05781 { 05782 FILE * pOut, * pErr; 05783 Abc_Ntk_t * pNtk; 05784 int c; 05785 int fVerbose; 05786 extern void Abc_NtkEspresso( Abc_Ntk_t * pNtk, int fVerbose ); 05787 05788 pNtk = Abc_FrameReadNtk(pAbc); 05789 pOut = Abc_FrameReadOut(pAbc); 05790 pErr = Abc_FrameReadErr(pAbc); 05791 05792 // set defaults 05793 fVerbose = 0; 05794 Extra_UtilGetoptReset(); 05795 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF ) 05796 { 05797 switch ( c ) 05798 { 05799 case 'v': 05800 fVerbose ^= 1; 05801 break; 05802 case 'h': 05803 goto usage; 05804 default: 05805 goto usage; 05806 } 05807 } 05808 if ( pNtk == NULL ) 05809 { 05810 fprintf( pErr, "Empty network.\n" ); 05811 return 1; 05812 } 05813 if ( !Abc_NtkIsLogic(pNtk) ) 05814 { 05815 fprintf( pErr, "SOP minimization is possible for logic networks (run \"renode\").\n" ); 05816 return 1; 05817 } 05818 Abc_NtkEspresso( pNtk, fVerbose ); 05819 return 0; 05820 05821 usage: 05822 fprintf( pErr, "usage: espresso [-vh]\n" ); 05823 fprintf( pErr, "\t minimizes SOPs of the local functions using Espresso\n" ); 05824 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 05825 fprintf( pErr, "\t-h : print the command usage\n"); 05826 return 1; 05827 }
int Abc_CommandExdcFree | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5309 of file abc.c.
05310 { 05311 FILE * pOut, * pErr; 05312 Abc_Ntk_t * pNtk, * pNtkRes; 05313 int c; 05314 05315 pNtk = Abc_FrameReadNtk(pAbc); 05316 pOut = Abc_FrameReadOut(pAbc); 05317 pErr = Abc_FrameReadErr(pAbc); 05318 05319 // set defaults 05320 Extra_UtilGetoptReset(); 05321 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 05322 { 05323 switch ( c ) 05324 { 05325 case 'h': 05326 goto usage; 05327 default: 05328 goto usage; 05329 } 05330 } 05331 05332 if ( pNtk == NULL ) 05333 { 05334 fprintf( pErr, "Empty network.\n" ); 05335 return 1; 05336 } 05337 if ( pNtk->pExdc == NULL ) 05338 { 05339 fprintf( pErr, "The network has no EXDC.\n" ); 05340 return 1; 05341 } 05342 05343 Abc_NtkDelete( pNtk->pExdc ); 05344 pNtk->pExdc = NULL; 05345 05346 // replace the current network 05347 pNtkRes = Abc_NtkDup( pNtk ); 05348 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05349 return 0; 05350 05351 usage: 05352 fprintf( pErr, "usage: exdc_free [-h]\n" ); 05353 fprintf( pErr, "\t frees the EXDC network of the current network\n" ); 05354 fprintf( pErr, "\t-h : print the command usage\n"); 05355 return 1; 05356 }
int Abc_CommandExdcGet | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5369 of file abc.c.
05370 { 05371 FILE * pOut, * pErr; 05372 Abc_Ntk_t * pNtk, * pNtkRes; 05373 int c; 05374 05375 pNtk = Abc_FrameReadNtk(pAbc); 05376 pOut = Abc_FrameReadOut(pAbc); 05377 pErr = Abc_FrameReadErr(pAbc); 05378 05379 // set defaults 05380 Extra_UtilGetoptReset(); 05381 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 05382 { 05383 switch ( c ) 05384 { 05385 case 'h': 05386 goto usage; 05387 default: 05388 goto usage; 05389 } 05390 } 05391 05392 if ( pNtk == NULL ) 05393 { 05394 fprintf( pErr, "Empty network.\n" ); 05395 return 1; 05396 } 05397 if ( pNtk->pExdc == NULL ) 05398 { 05399 fprintf( pErr, "The network has no EXDC.\n" ); 05400 return 1; 05401 } 05402 05403 // replace the current network 05404 pNtkRes = Abc_NtkDup( pNtk->pExdc ); 05405 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05406 return 0; 05407 05408 usage: 05409 fprintf( pErr, "usage: exdc_get [-h]\n" ); 05410 fprintf( pErr, "\t replaces the current network by the EXDC of the current network\n" ); 05411 fprintf( pErr, "\t-h : print the command usage\n"); 05412 return 1; 05413 }
int Abc_CommandExdcSet | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5426 of file abc.c.
05427 { 05428 FILE * pOut, * pErr, * pFile; 05429 Abc_Ntk_t * pNtk, * pNtkNew, * pNtkRes; 05430 char * FileName; 05431 int c; 05432 05433 pNtk = Abc_FrameReadNtk(pAbc); 05434 pOut = Abc_FrameReadOut(pAbc); 05435 pErr = Abc_FrameReadErr(pAbc); 05436 05437 // set defaults 05438 Extra_UtilGetoptReset(); 05439 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 05440 { 05441 switch ( c ) 05442 { 05443 case 'h': 05444 goto usage; 05445 default: 05446 goto usage; 05447 } 05448 } 05449 05450 if ( pNtk == NULL ) 05451 { 05452 fprintf( pErr, "Empty network.\n" ); 05453 return 1; 05454 } 05455 05456 if ( argc != globalUtilOptind + 1 ) 05457 { 05458 goto usage; 05459 } 05460 05461 // get the input file name 05462 FileName = argv[globalUtilOptind]; 05463 if ( (pFile = fopen( FileName, "r" )) == NULL ) 05464 { 05465 fprintf( pAbc->Err, "Cannot open input file \"%s\". ", FileName ); 05466 if ( FileName = Extra_FileGetSimilarName( FileName, ".mv", ".blif", ".pla", ".eqn", ".bench" ) ) 05467 fprintf( pAbc->Err, "Did you mean \"%s\"?", FileName ); 05468 fprintf( pAbc->Err, "\n" ); 05469 return 1; 05470 } 05471 fclose( pFile ); 05472 05473 // set the new network 05474 pNtkNew = Io_Read( FileName, Io_ReadFileType(FileName), 1 ); 05475 if ( pNtkNew == NULL ) 05476 { 05477 fprintf( pAbc->Err, "Reading network from file has failed.\n" ); 05478 return 1; 05479 } 05480 05481 // replace the EXDC 05482 if ( pNtk->pExdc ) 05483 { 05484 Abc_NtkDelete( pNtk->pExdc ); 05485 pNtk->pExdc = NULL; 05486 } 05487 pNtkRes = Abc_NtkDup( pNtk ); 05488 pNtkRes->pExdc = pNtkNew; 05489 05490 // replace the current network 05491 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05492 return 0; 05493 05494 usage: 05495 fprintf( pErr, "usage: exdc_set [-h] <file>\n" ); 05496 fprintf( pErr, "\t sets the network from file as EXDC for the current network\n" ); 05497 fprintf( pErr, "\t-h : print the command usage\n"); 05498 fprintf( pErr, "\t<file> : file with the new EXDC network\n"); 05499 return 1; 05500 }
int Abc_CommandExtSeqDcs | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4813 of file abc.c.
04814 { 04815 FILE * pOut, * pErr; 04816 Abc_Ntk_t * pNtk; 04817 int c; 04818 int fVerbose; 04819 extern int Abc_NtkExtractSequentialDcs( Abc_Ntk_t * pNet, bool fVerbose ); 04820 04821 pNtk = Abc_FrameReadNtk(pAbc); 04822 pOut = Abc_FrameReadOut(pAbc); 04823 pErr = Abc_FrameReadErr(pAbc); 04824 04825 // set defaults 04826 fVerbose = 0; 04827 Extra_UtilGetoptReset(); 04828 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF ) 04829 { 04830 switch ( c ) 04831 { 04832 case 'v': 04833 fVerbose ^= 1; 04834 break; 04835 case 'h': 04836 goto usage; 04837 default: 04838 goto usage; 04839 } 04840 } 04841 04842 if ( pNtk == NULL ) 04843 { 04844 fprintf( pErr, "Empty network.\n" ); 04845 return 1; 04846 } 04847 if ( Abc_NtkLatchNum(pNtk) == 0 ) 04848 { 04849 fprintf( stdout, "The current network has no latches.\n" ); 04850 return 0; 04851 } 04852 if ( !Abc_NtkIsStrash(pNtk) ) 04853 { 04854 fprintf( stdout, "Extracting sequential don't-cares works only for AIGs (run \"strash\").\n" ); 04855 return 0; 04856 } 04857 if ( !Abc_NtkExtractSequentialDcs( pNtk, fVerbose ) ) 04858 { 04859 fprintf( stdout, "Extracting sequential don't-cares has failed.\n" ); 04860 return 1; 04861 } 04862 return 0; 04863 04864 usage: 04865 fprintf( pErr, "usage: ext_seq_dcs [-vh]\n" ); 04866 fprintf( pErr, "\t create EXDC network using unreachable states\n" ); 04867 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 04868 fprintf( pErr, "\t-h : print the command usage\n"); 04869 return 1; 04870 }
int Abc_CommandFastExtract | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2580 of file abc.c.
02581 { 02582 Abc_Ntk_t * pNtk; 02583 FILE * pOut, * pErr; 02584 Fxu_Data_t * p = NULL; 02585 int c; 02586 extern bool Abc_NtkFastExtract( Abc_Ntk_t * pNtk, Fxu_Data_t * p ); 02587 extern void Abc_NtkFxuFreeInfo( Fxu_Data_t * p ); 02588 02589 pNtk = Abc_FrameReadNtk(pAbc); 02590 pOut = Abc_FrameReadOut(pAbc); 02591 pErr = Abc_FrameReadErr(pAbc); 02592 02593 // allocate the structure 02594 p = ALLOC( Fxu_Data_t, 1 ); 02595 memset( p, 0, sizeof(Fxu_Data_t) ); 02596 // set the defaults 02597 p->nSingleMax = 20000; 02598 p->nPairsMax = 30000; 02599 p->nNodesExt = 10000; 02600 p->fOnlyS = 0; 02601 p->fOnlyD = 0; 02602 p->fUse0 = 0; 02603 p->fUseCompl = 1; 02604 p->fVerbose = 0; 02605 Extra_UtilGetoptReset(); 02606 while ( (c = Extra_UtilGetopt(argc, argv, "SDNsdzcvh")) != EOF ) 02607 { 02608 switch (c) 02609 { 02610 case 'S': 02611 if ( globalUtilOptind >= argc ) 02612 { 02613 fprintf( pErr, "Command line switch \"-S\" should be followed by an integer.\n" ); 02614 goto usage; 02615 } 02616 p->nSingleMax = atoi(argv[globalUtilOptind]); 02617 globalUtilOptind++; 02618 if ( p->nSingleMax < 0 ) 02619 goto usage; 02620 break; 02621 case 'D': 02622 if ( globalUtilOptind >= argc ) 02623 { 02624 fprintf( pErr, "Command line switch \"-D\" should be followed by an integer.\n" ); 02625 goto usage; 02626 } 02627 p->nPairsMax = atoi(argv[globalUtilOptind]); 02628 globalUtilOptind++; 02629 if ( p->nPairsMax < 0 ) 02630 goto usage; 02631 break; 02632 case 'N': 02633 if ( globalUtilOptind >= argc ) 02634 { 02635 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 02636 goto usage; 02637 } 02638 p->nNodesExt = atoi(argv[globalUtilOptind]); 02639 globalUtilOptind++; 02640 if ( p->nNodesExt < 0 ) 02641 goto usage; 02642 break; 02643 case 's': 02644 p->fOnlyS ^= 1; 02645 break; 02646 case 'd': 02647 p->fOnlyD ^= 1; 02648 break; 02649 case 'z': 02650 p->fUse0 ^= 1; 02651 break; 02652 case 'c': 02653 p->fUseCompl ^= 1; 02654 break; 02655 case 'v': 02656 p->fVerbose ^= 1; 02657 break; 02658 case 'h': 02659 goto usage; 02660 break; 02661 default: 02662 goto usage; 02663 } 02664 } 02665 02666 if ( pNtk == NULL ) 02667 { 02668 fprintf( pErr, "Empty network.\n" ); 02669 Abc_NtkFxuFreeInfo( p ); 02670 return 1; 02671 } 02672 02673 if ( Abc_NtkNodeNum(pNtk) == 0 ) 02674 { 02675 fprintf( pErr, "The network does not have internal nodes.\n" ); 02676 Abc_NtkFxuFreeInfo( p ); 02677 return 1; 02678 } 02679 02680 if ( !Abc_NtkIsLogic(pNtk) ) 02681 { 02682 fprintf( pErr, "Fast extract can only be applied to a logic network (run \"renode\").\n" ); 02683 Abc_NtkFxuFreeInfo( p ); 02684 return 1; 02685 } 02686 02687 02688 // the nodes to be merged are linked into the special linked list 02689 Abc_NtkFastExtract( pNtk, p ); 02690 Abc_NtkFxuFreeInfo( p ); 02691 return 0; 02692 02693 usage: 02694 fprintf( pErr, "usage: fx [-S num] [-D num] [-N num] [-sdzcvh]\n"); 02695 fprintf( pErr, "\t performs unate fast extract on the current network\n"); 02696 fprintf( pErr, "\t-S num : max number of single-cube divisors to consider [default = %d]\n", p->nSingleMax ); 02697 fprintf( pErr, "\t-D num : max number of double-cube divisors to consider [default = %d]\n", p->nPairsMax ); 02698 fprintf( pErr, "\t-N num : the maximum number of divisors to extract [default = %d]\n", p->nNodesExt ); 02699 fprintf( pErr, "\t-s : use only single-cube divisors [default = %s]\n", p->fOnlyS? "yes": "no" ); 02700 fprintf( pErr, "\t-d : use only double-cube divisors [default = %s]\n", p->fOnlyD? "yes": "no" ); 02701 fprintf( pErr, "\t-z : use zero-weight divisors [default = %s]\n", p->fUse0? "yes": "no" ); 02702 fprintf( pErr, "\t-c : use complement in the binary case [default = %s]\n", p->fUseCompl? "yes": "no" ); 02703 fprintf( pErr, "\t-v : print verbose information [default = %s]\n", p->fVerbose? "yes": "no" ); 02704 fprintf( pErr, "\t-h : print the command usage\n"); 02705 Abc_NtkFxuFreeInfo( p ); 02706 return 1; 02707 }
int Abc_CommandFpga | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9736 of file abc.c.
09737 { 09738 char Buffer[100]; 09739 char LutSize[100]; 09740 FILE * pOut, * pErr; 09741 Abc_Ntk_t * pNtk, * pNtkRes; 09742 int c; 09743 int fRecovery; 09744 int fSwitching; 09745 int fLatchPaths; 09746 int fVerbose; 09747 int nLutSize; 09748 float DelayTarget; 09749 09750 extern Abc_Ntk_t * Abc_NtkFpga( Abc_Ntk_t * pNtk, float DelayTarget, int fRecovery, int fSwitching, int fLatchPaths, int fVerbose ); 09751 09752 pNtk = Abc_FrameReadNtk(pAbc); 09753 pOut = Abc_FrameReadOut(pAbc); 09754 pErr = Abc_FrameReadErr(pAbc); 09755 09756 // set defaults 09757 fRecovery = 1; 09758 fSwitching = 0; 09759 fLatchPaths = 0; 09760 fVerbose = 0; 09761 DelayTarget =-1; 09762 nLutSize =-1; 09763 Extra_UtilGetoptReset(); 09764 while ( ( c = Extra_UtilGetopt( argc, argv, "aplvhDK" ) ) != EOF ) 09765 { 09766 switch ( c ) 09767 { 09768 case 'a': 09769 fRecovery ^= 1; 09770 break; 09771 case 'p': 09772 fSwitching ^= 1; 09773 break; 09774 case 'l': 09775 fLatchPaths ^= 1; 09776 break; 09777 case 'v': 09778 fVerbose ^= 1; 09779 break; 09780 case 'h': 09781 goto usage; 09782 case 'D': 09783 if ( globalUtilOptind >= argc ) 09784 { 09785 fprintf( pErr, "Command line switch \"-D\" should be followed by a floating point number.\n" ); 09786 goto usage; 09787 } 09788 DelayTarget = (float)atof(argv[globalUtilOptind]); 09789 globalUtilOptind++; 09790 if ( DelayTarget <= 0.0 ) 09791 goto usage; 09792 break; 09793 case 'K': 09794 if ( globalUtilOptind >= argc ) 09795 { 09796 fprintf( pErr, "Command line switch \"-K\" should be followed by a positive integer.\n" ); 09797 goto usage; 09798 } 09799 nLutSize = atoi(argv[globalUtilOptind]); 09800 globalUtilOptind++; 09801 if ( nLutSize < 0 ) 09802 goto usage; 09803 break; 09804 default: 09805 goto usage; 09806 } 09807 } 09808 09809 if ( pNtk == NULL ) 09810 { 09811 fprintf( pErr, "Empty network.\n" ); 09812 return 1; 09813 } 09814 09815 // create the new LUT library 09816 if ( nLutSize >= 3 && nLutSize <= 10 ) 09817 Fpga_SetSimpleLutLib( nLutSize ); 09818 /* 09819 else 09820 { 09821 fprintf( pErr, "Cannot perform FPGA mapping with LUT size %d.\n", nLutSize ); 09822 return 1; 09823 } 09824 */ 09825 if ( !Abc_NtkIsStrash(pNtk) ) 09826 { 09827 // strash and balance the network 09828 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 09829 if ( pNtk == NULL ) 09830 { 09831 fprintf( pErr, "Strashing before FPGA mapping has failed.\n" ); 09832 return 1; 09833 } 09834 pNtk = Abc_NtkBalance( pNtkRes = pNtk, 0, 0, 1 ); 09835 Abc_NtkDelete( pNtkRes ); 09836 if ( pNtk == NULL ) 09837 { 09838 fprintf( pErr, "Balancing before FPGA mapping has failed.\n" ); 09839 return 1; 09840 } 09841 fprintf( pOut, "The network was strashed and balanced before FPGA mapping.\n" ); 09842 // get the new network 09843 pNtkRes = Abc_NtkFpga( pNtk, DelayTarget, fRecovery, fSwitching, fLatchPaths, fVerbose ); 09844 if ( pNtkRes == NULL ) 09845 { 09846 Abc_NtkDelete( pNtk ); 09847 fprintf( pErr, "FPGA mapping has failed.\n" ); 09848 return 1; 09849 } 09850 Abc_NtkDelete( pNtk ); 09851 } 09852 else 09853 { 09854 // get the new network 09855 pNtkRes = Abc_NtkFpga( pNtk, DelayTarget, fRecovery, fSwitching, fLatchPaths, fVerbose ); 09856 if ( pNtkRes == NULL ) 09857 { 09858 fprintf( pErr, "FPGA mapping has failed.\n" ); 09859 return 1; 09860 } 09861 } 09862 // replace the current network 09863 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 09864 return 0; 09865 09866 usage: 09867 if ( DelayTarget == -1 ) 09868 sprintf( Buffer, "best possible" ); 09869 else 09870 sprintf( Buffer, "%.2f", DelayTarget ); 09871 if ( nLutSize == -1 ) 09872 sprintf( LutSize, "library" ); 09873 else 09874 sprintf( LutSize, "%d", nLutSize ); 09875 fprintf( pErr, "usage: fpga [-D float] [-K num] [-aplvh]\n" ); 09876 fprintf( pErr, "\t performs FPGA mapping of the current network\n" ); 09877 fprintf( pErr, "\t-a : toggles area recovery [default = %s]\n", fRecovery? "yes": "no" ); 09878 fprintf( pErr, "\t-p : optimizes power by minimizing switching activity [default = %s]\n", fSwitching? "yes": "no" ); 09879 fprintf( pErr, "\t-l : optimizes latch paths for delay, other paths for area [default = %s]\n", fLatchPaths? "yes": "no" ); 09880 fprintf( pErr, "\t-D float : sets the required time for the mapping [default = %s]\n", Buffer ); 09881 fprintf( pErr, "\t-K num : the number of LUT inputs (2 < num < 11) [default = %s]%s\n", LutSize, (nLutSize == -1 ? " (type \"print_lut\")" : "") ); 09882 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 09883 fprintf( pErr, "\t-h : prints the command usage\n"); 09884 return 1; 09885 }
int Abc_CommandFpgaFast | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9898 of file abc.c.
09899 { 09900 char Buffer[100]; 09901 FILE * pOut, * pErr; 09902 Abc_Ntk_t * pNtk, * pNtkRes; 09903 int c; 09904 int fRecovery; 09905 int fVerbose; 09906 int nLutSize; 09907 float DelayTarget; 09908 09909 extern Abc_Ntk_t * Abc_NtkFpgaFast( Abc_Ntk_t * pNtk, int nLutSize, int fRecovery, int fVerbose ); 09910 09911 pNtk = Abc_FrameReadNtk(pAbc); 09912 pOut = Abc_FrameReadOut(pAbc); 09913 pErr = Abc_FrameReadErr(pAbc); 09914 09915 // set defaults 09916 fRecovery = 1; 09917 fVerbose = 0; 09918 DelayTarget =-1; 09919 nLutSize = 5; 09920 Extra_UtilGetoptReset(); 09921 while ( ( c = Extra_UtilGetopt( argc, argv, "avhDK" ) ) != EOF ) 09922 { 09923 switch ( c ) 09924 { 09925 case 'a': 09926 fRecovery ^= 1; 09927 break; 09928 case 'v': 09929 fVerbose ^= 1; 09930 break; 09931 case 'h': 09932 goto usage; 09933 case 'D': 09934 if ( globalUtilOptind >= argc ) 09935 { 09936 fprintf( pErr, "Command line switch \"-D\" should be followed by a floating point number.\n" ); 09937 goto usage; 09938 } 09939 DelayTarget = (float)atof(argv[globalUtilOptind]); 09940 globalUtilOptind++; 09941 if ( DelayTarget <= 0.0 ) 09942 goto usage; 09943 break; 09944 case 'K': 09945 if ( globalUtilOptind >= argc ) 09946 { 09947 fprintf( pErr, "Command line switch \"-K\" should be followed by a positive integer.\n" ); 09948 goto usage; 09949 } 09950 nLutSize = atoi(argv[globalUtilOptind]); 09951 globalUtilOptind++; 09952 if ( nLutSize < 0 ) 09953 goto usage; 09954 break; 09955 default: 09956 goto usage; 09957 } 09958 } 09959 09960 if ( pNtk == NULL ) 09961 { 09962 fprintf( pErr, "Empty network.\n" ); 09963 return 1; 09964 } 09965 09966 if ( !Abc_NtkIsStrash(pNtk) ) 09967 { 09968 // strash and balance the network 09969 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 09970 if ( pNtk == NULL ) 09971 { 09972 fprintf( pErr, "Strashing before FPGA mapping has failed.\n" ); 09973 return 1; 09974 } 09975 pNtk = Abc_NtkBalance( pNtkRes = pNtk, 0, 0, 1 ); 09976 Abc_NtkDelete( pNtkRes ); 09977 if ( pNtk == NULL ) 09978 { 09979 fprintf( pErr, "Balancing before FPGA mapping has failed.\n" ); 09980 return 1; 09981 } 09982 fprintf( pOut, "The network was strashed and balanced before FPGA mapping.\n" ); 09983 // get the new network 09984 pNtkRes = Abc_NtkFpgaFast( pNtk, nLutSize, fRecovery, fVerbose ); 09985 if ( pNtkRes == NULL ) 09986 { 09987 Abc_NtkDelete( pNtk ); 09988 fprintf( pErr, "FPGA mapping has failed.\n" ); 09989 return 1; 09990 } 09991 Abc_NtkDelete( pNtk ); 09992 } 09993 else 09994 { 09995 // get the new network 09996 pNtkRes = Abc_NtkFpgaFast( pNtk, nLutSize, fRecovery, fVerbose ); 09997 if ( pNtkRes == NULL ) 09998 { 09999 fprintf( pErr, "FPGA mapping has failed.\n" ); 10000 return 1; 10001 } 10002 } 10003 // replace the current network 10004 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10005 return 0; 10006 10007 usage: 10008 if ( DelayTarget == -1 ) 10009 sprintf( Buffer, "not used" ); 10010 else 10011 sprintf( Buffer, "%.2f", DelayTarget ); 10012 fprintf( pErr, "usage: ffpga [-K num] [-avh]\n" ); 10013 fprintf( pErr, "\t performs fast FPGA mapping of the current network\n" ); 10014 fprintf( pErr, "\t-a : toggles area recovery [default = %s]\n", fRecovery? "yes": "no" ); 10015 // fprintf( pErr, "\t-D float : sets the required time for the mapping [default = %s]\n", Buffer ); 10016 fprintf( pErr, "\t-K num : the number of LUT inputs (2 < num < 32) [default = %d]\n", nLutSize ); 10017 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 10018 fprintf( pErr, "\t-h : prints the command usage\n"); 10019 return 1; 10020 }
int Abc_CommandFraig | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8277 of file abc.c.
08278 { 08279 char Buffer[100]; 08280 Fraig_Params_t Params, * pParams = &Params; 08281 FILE * pOut, * pErr; 08282 Abc_Ntk_t * pNtk, * pNtkRes; 08283 int fAllNodes; 08284 int fExdc; 08285 int c; 08286 int fPartition = 0; 08287 extern void Abc_NtkFraigPartitionedTime( Abc_Ntk_t * pNtk, void * pParams ); 08288 08289 pNtk = Abc_FrameReadNtk(pAbc); 08290 pOut = Abc_FrameReadOut(pAbc); 08291 pErr = Abc_FrameReadErr(pAbc); 08292 08293 // set defaults 08294 fExdc = 0; 08295 fAllNodes = 0; 08296 memset( pParams, 0, sizeof(Fraig_Params_t) ); 08297 pParams->nPatsRand = 2048; // the number of words of random simulation info 08298 pParams->nPatsDyna = 2048; // the number of words of dynamic simulation info 08299 pParams->nBTLimit = 100; // the max number of backtracks to perform 08300 pParams->fFuncRed = 1; // performs only one level hashing 08301 pParams->fFeedBack = 1; // enables solver feedback 08302 pParams->fDist1Pats = 1; // enables distance-1 patterns 08303 pParams->fDoSparse = 1; // performs equiv tests for sparse functions 08304 pParams->fChoicing = 0; // enables recording structural choices 08305 pParams->fTryProve = 0; // tries to solve the final miter 08306 pParams->fVerbose = 0; // the verbosiness flag 08307 pParams->fVerboseP = 0; // the verbosiness flag 08308 Extra_UtilGetoptReset(); 08309 while ( ( c = Extra_UtilGetopt( argc, argv, "RDCrscptvaeh" ) ) != EOF ) 08310 { 08311 switch ( c ) 08312 { 08313 case 'R': 08314 if ( globalUtilOptind >= argc ) 08315 { 08316 fprintf( pErr, "Command line switch \"-R\" should be followed by an integer.\n" ); 08317 goto usage; 08318 } 08319 pParams->nPatsRand = atoi(argv[globalUtilOptind]); 08320 globalUtilOptind++; 08321 if ( pParams->nPatsRand < 0 ) 08322 goto usage; 08323 break; 08324 case 'D': 08325 if ( globalUtilOptind >= argc ) 08326 { 08327 fprintf( pErr, "Command line switch \"-D\" should be followed by an integer.\n" ); 08328 goto usage; 08329 } 08330 pParams->nPatsDyna = atoi(argv[globalUtilOptind]); 08331 globalUtilOptind++; 08332 if ( pParams->nPatsDyna < 0 ) 08333 goto usage; 08334 break; 08335 case 'C': 08336 if ( globalUtilOptind >= argc ) 08337 { 08338 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 08339 goto usage; 08340 } 08341 pParams->nBTLimit = atoi(argv[globalUtilOptind]); 08342 globalUtilOptind++; 08343 if ( pParams->nBTLimit < 0 ) 08344 goto usage; 08345 break; 08346 08347 case 'r': 08348 pParams->fFuncRed ^= 1; 08349 break; 08350 case 's': 08351 pParams->fDoSparse ^= 1; 08352 break; 08353 case 'c': 08354 pParams->fChoicing ^= 1; 08355 break; 08356 case 'p': 08357 pParams->fTryProve ^= 1; 08358 break; 08359 case 'v': 08360 pParams->fVerbose ^= 1; 08361 break; 08362 case 't': 08363 fPartition ^= 1; 08364 break; 08365 case 'a': 08366 fAllNodes ^= 1; 08367 break; 08368 case 'e': 08369 fExdc ^= 1; 08370 break; 08371 case 'h': 08372 goto usage; 08373 default: 08374 goto usage; 08375 } 08376 } 08377 08378 if ( pNtk == NULL ) 08379 { 08380 fprintf( pErr, "Empty network.\n" ); 08381 return 1; 08382 } 08383 if ( !Abc_NtkIsLogic(pNtk) && !Abc_NtkIsStrash(pNtk) ) 08384 { 08385 fprintf( pErr, "Can only fraig a logic network or an AIG.\n" ); 08386 return 1; 08387 } 08388 08389 // report the proof 08390 pParams->fVerboseP = pParams->fTryProve; 08391 08392 // get the new network 08393 if ( fPartition ) 08394 { 08395 pNtkRes = Abc_NtkDup( pNtk ); 08396 if ( Abc_NtkIsStrash(pNtk) ) 08397 Abc_NtkFraigPartitionedTime( pNtk, &Params ); 08398 else 08399 { 08400 pNtk = Abc_NtkStrash( pNtk, fAllNodes, !fAllNodes, 0 ); 08401 Abc_NtkFraigPartitionedTime( pNtk, &Params ); 08402 Abc_NtkDelete( pNtk ); 08403 } 08404 } 08405 else 08406 { 08407 if ( Abc_NtkIsStrash(pNtk) ) 08408 pNtkRes = Abc_NtkFraig( pNtk, &Params, fAllNodes, fExdc ); 08409 else 08410 { 08411 pNtk = Abc_NtkStrash( pNtk, fAllNodes, !fAllNodes, 0 ); 08412 pNtkRes = Abc_NtkFraig( pNtk, &Params, fAllNodes, fExdc ); 08413 Abc_NtkDelete( pNtk ); 08414 } 08415 } 08416 if ( pNtkRes == NULL ) 08417 { 08418 fprintf( pErr, "Fraiging has failed.\n" ); 08419 return 1; 08420 } 08421 08422 if ( pParams->fTryProve ) // report the result 08423 Abc_NtkMiterReport( pNtkRes ); 08424 08425 // replace the current network 08426 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08427 return 0; 08428 08429 usage: 08430 sprintf( Buffer, "%d", pParams->nBTLimit ); 08431 fprintf( pErr, "usage: fraig [-R num] [-D num] [-C num] [-rscpvtah]\n" ); 08432 fprintf( pErr, "\t transforms a logic network into a functionally reduced AIG\n" ); 08433 fprintf( pErr, "\t-R num : number of random patterns (127 < num < 32769) [default = %d]\n", pParams->nPatsRand ); 08434 fprintf( pErr, "\t-D num : number of systematic patterns (127 < num < 32769) [default = %d]\n", pParams->nPatsDyna ); 08435 fprintf( pErr, "\t-C num : number of backtracks for one SAT problem [default = %s]\n", pParams->nBTLimit==-1? "infinity" : Buffer ); 08436 fprintf( pErr, "\t-r : toggle functional reduction [default = %s]\n", pParams->fFuncRed? "yes": "no" ); 08437 fprintf( pErr, "\t-s : toggle considering sparse functions [default = %s]\n", pParams->fDoSparse? "yes": "no" ); 08438 fprintf( pErr, "\t-c : toggle accumulation of choices [default = %s]\n", pParams->fChoicing? "yes": "no" ); 08439 fprintf( pErr, "\t-p : toggle proving the miter outputs [default = %s]\n", pParams->fTryProve? "yes": "no" ); 08440 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", pParams->fVerbose? "yes": "no" ); 08441 fprintf( pErr, "\t-e : toggle functional sweeping using EXDC [default = %s]\n", fExdc? "yes": "no" ); 08442 fprintf( pErr, "\t-a : toggle between all nodes and DFS nodes [default = %s]\n", fAllNodes? "all": "dfs" ); 08443 fprintf( pErr, "\t-t : toggle using partitioned representation [default = %s]\n", fPartition? "yes": "no" ); 08444 fprintf( pErr, "\t-h : print the command usage\n"); 08445 return 1; 08446 }
int Abc_CommandFraigClean | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8648 of file abc.c.
08649 { 08650 FILE * pOut, * pErr; 08651 Abc_Ntk_t * pNtk; 08652 int c; 08653 int fDuplicate; 08654 08655 pNtk = Abc_FrameReadNtk(pAbc); 08656 pOut = Abc_FrameReadOut(pAbc); 08657 pErr = Abc_FrameReadErr(pAbc); 08658 08659 // set defaults 08660 fDuplicate = 0; 08661 Extra_UtilGetoptReset(); 08662 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08663 { 08664 switch ( c ) 08665 { 08666 case 'd': 08667 fDuplicate ^= 1; 08668 break; 08669 case 'h': 08670 goto usage; 08671 default: 08672 goto usage; 08673 } 08674 } 08675 Abc_NtkFraigStoreClean(); 08676 return 0; 08677 08678 usage: 08679 fprintf( pErr, "usage: fraig_clean [-h]\n" ); 08680 fprintf( pErr, "\t cleans the internal FRAIG storage\n" ); 08681 // fprintf( pErr, "\t-d : toggle duplication of logic [default = %s]\n", fDuplicate? "yes": "no" ); 08682 fprintf( pErr, "\t-h : print the command usage\n"); 08683 return 1; 08684 }
int Abc_CommandFraigDress | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8785 of file abc.c.
08786 { 08787 FILE * pOut, * pErr; 08788 Abc_Ntk_t * pNtk; 08789 char * pFileName; 08790 int c; 08791 int fVerbose; 08792 extern void Abc_NtkDress( Abc_Ntk_t * pNtk, char * pFileName, int fVerbose ); 08793 08794 pNtk = Abc_FrameReadNtk(pAbc); 08795 pOut = Abc_FrameReadOut(pAbc); 08796 pErr = Abc_FrameReadErr(pAbc); 08797 08798 // set defaults 08799 fVerbose = 0; 08800 Extra_UtilGetoptReset(); 08801 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF ) 08802 { 08803 switch ( c ) 08804 { 08805 case 'v': 08806 fVerbose ^= 1; 08807 break; 08808 case 'h': 08809 goto usage; 08810 default: 08811 goto usage; 08812 } 08813 } 08814 if ( pNtk == NULL ) 08815 { 08816 fprintf( pErr, "Empty network.\n" ); 08817 return 1; 08818 } 08819 if ( Abc_NtkIsStrash(pNtk) ) 08820 { 08821 fprintf( pErr, "This command works only for logic networks.\n" ); 08822 return 1; 08823 } 08824 if ( argc != globalUtilOptind && argc != globalUtilOptind + 1 ) 08825 goto usage; 08826 if ( argc == globalUtilOptind && Abc_NtkSpec(pNtk) == NULL ) 08827 { 08828 fprintf( pErr, "The current network has no spec.\n" ); 08829 return 1; 08830 } 08831 // get the input file name 08832 pFileName = (argc == globalUtilOptind + 1) ? argv[globalUtilOptind] : Abc_NtkSpec(pNtk); 08833 // modify the current network 08834 Abc_NtkDress( pNtk, pFileName, fVerbose ); 08835 return 0; 08836 08837 usage: 08838 fprintf( pErr, "usage: dress [-vh] <file>\n" ); 08839 fprintf( pErr, "\t transfers internal node names from file to the current network\n" ); 08840 fprintf( pErr, "\t<file> : network with names (if not given, the current network spec is used)\n" ); 08841 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 08842 fprintf( pErr, "\t-h : print the command usage\n"); 08843 return 1; 08844 }
int Abc_CommandFraigRestore | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8584 of file abc.c.
08585 { 08586 FILE * pOut, * pErr; 08587 Abc_Ntk_t * pNtk, * pNtkRes; 08588 int c; 08589 int fDuplicate; 08590 08591 pNtk = Abc_FrameReadNtk(pAbc); 08592 pOut = Abc_FrameReadOut(pAbc); 08593 pErr = Abc_FrameReadErr(pAbc); 08594 08595 // set defaults 08596 fDuplicate = 0; 08597 Extra_UtilGetoptReset(); 08598 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08599 { 08600 switch ( c ) 08601 { 08602 case 'd': 08603 fDuplicate ^= 1; 08604 break; 08605 case 'h': 08606 goto usage; 08607 default: 08608 goto usage; 08609 } 08610 } 08611 08612 if ( pNtk == NULL ) 08613 { 08614 fprintf( pErr, "Empty network.\n" ); 08615 return 1; 08616 } 08617 08618 // get the new network 08619 pNtkRes = Abc_NtkFraigRestore(); 08620 if ( pNtkRes == NULL ) 08621 { 08622 fprintf( pErr, "Fraig restoring has failed.\n" ); 08623 return 1; 08624 } 08625 // replace the current network 08626 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08627 return 0; 08628 08629 usage: 08630 fprintf( pErr, "usage: fraig_restore [-h]\n" ); 08631 fprintf( pErr, "\t makes the current network by fraiging the AIG database\n" ); 08632 // fprintf( pErr, "\t-d : toggle duplication of logic [default = %s]\n", fDuplicate? "yes": "no" ); 08633 fprintf( pErr, "\t-h : print the command usage\n"); 08634 return 1; 08635 }
int Abc_CommandFraigStore | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8523 of file abc.c.
08524 { 08525 FILE * pOut, * pErr; 08526 Abc_Ntk_t * pNtk; 08527 int c; 08528 int fDuplicate; 08529 08530 pNtk = Abc_FrameReadNtk(pAbc); 08531 pOut = Abc_FrameReadOut(pAbc); 08532 pErr = Abc_FrameReadErr(pAbc); 08533 08534 // set defaults 08535 fDuplicate = 0; 08536 Extra_UtilGetoptReset(); 08537 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08538 { 08539 switch ( c ) 08540 { 08541 case 'd': 08542 fDuplicate ^= 1; 08543 break; 08544 case 'h': 08545 goto usage; 08546 default: 08547 goto usage; 08548 } 08549 } 08550 08551 if ( pNtk == NULL ) 08552 { 08553 fprintf( pErr, "Empty network.\n" ); 08554 return 1; 08555 } 08556 08557 // get the new network 08558 if ( !Abc_NtkFraigStore( pNtk ) ) 08559 { 08560 fprintf( pErr, "Fraig storing has failed.\n" ); 08561 return 1; 08562 } 08563 return 0; 08564 08565 usage: 08566 fprintf( pErr, "usage: fraig_store [-h]\n" ); 08567 fprintf( pErr, "\t saves the current network in the AIG database\n" ); 08568 // fprintf( pErr, "\t-d : toggle duplication of logic [default = %s]\n", fDuplicate? "yes": "no" ); 08569 fprintf( pErr, "\t-h : print the command usage\n"); 08570 return 1; 08571 }
int Abc_CommandFraigSweep | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8697 of file abc.c.
08698 { 08699 FILE * pOut, * pErr; 08700 Abc_Ntk_t * pNtk; 08701 int c; 08702 int fUseInv; 08703 int fExdc; 08704 int fVerbose; 08705 int fVeryVerbose; 08706 extern bool Abc_NtkFraigSweep( Abc_Ntk_t * pNtk, int fUseInv, int fExdc, int fVerbose, int fVeryVerbose ); 08707 08708 pNtk = Abc_FrameReadNtk(pAbc); 08709 pOut = Abc_FrameReadOut(pAbc); 08710 pErr = Abc_FrameReadErr(pAbc); 08711 08712 // set defaults 08713 fUseInv = 1; 08714 fExdc = 0; 08715 fVerbose = 0; 08716 fVeryVerbose = 0; 08717 Extra_UtilGetoptReset(); 08718 while ( ( c = Extra_UtilGetopt( argc, argv, "ievwh" ) ) != EOF ) 08719 { 08720 switch ( c ) 08721 { 08722 case 'i': 08723 fUseInv ^= 1; 08724 break; 08725 case 'e': 08726 fExdc ^= 1; 08727 break; 08728 case 'v': 08729 fVerbose ^= 1; 08730 break; 08731 case 'w': 08732 fVeryVerbose ^= 1; 08733 break; 08734 case 'h': 08735 goto usage; 08736 default: 08737 goto usage; 08738 } 08739 } 08740 08741 if ( pNtk == NULL ) 08742 { 08743 fprintf( pErr, "Empty network.\n" ); 08744 return 1; 08745 } 08746 if ( Abc_NtkIsStrash(pNtk) ) 08747 { 08748 fprintf( pErr, "Cannot sweep AIGs (use \"fraig\").\n" ); 08749 return 1; 08750 } 08751 if ( !Abc_NtkIsLogic(pNtk) ) 08752 { 08753 fprintf( pErr, "Transform the current network into a logic network.\n" ); 08754 return 1; 08755 } 08756 // modify the current network 08757 if ( !Abc_NtkFraigSweep( pNtk, fUseInv, fExdc, fVerbose, fVeryVerbose ) ) 08758 { 08759 fprintf( pErr, "Sweeping has failed.\n" ); 08760 return 1; 08761 } 08762 return 0; 08763 08764 usage: 08765 fprintf( pErr, "usage: fraig_sweep [-evwh]\n" ); 08766 fprintf( pErr, "\t performs technology-dependent sweep\n" ); 08767 fprintf( pErr, "\t-e : toggle functional sweeping using EXDC [default = %s]\n", fExdc? "yes": "no" ); 08768 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 08769 fprintf( pErr, "\t-w : prints equivalence class information [default = %s]\n", fVeryVerbose? "yes": "no" ); 08770 fprintf( pErr, "\t-h : print the command usage\n"); 08771 return 1; 08772 }
int Abc_CommandFraigTrust | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8459 of file abc.c.
08460 { 08461 FILE * pOut, * pErr; 08462 Abc_Ntk_t * pNtk, * pNtkRes; 08463 int c; 08464 int fDuplicate; 08465 08466 pNtk = Abc_FrameReadNtk(pAbc); 08467 pOut = Abc_FrameReadOut(pAbc); 08468 pErr = Abc_FrameReadErr(pAbc); 08469 08470 // set defaults 08471 fDuplicate = 0; 08472 Extra_UtilGetoptReset(); 08473 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08474 { 08475 switch ( c ) 08476 { 08477 case 'd': 08478 fDuplicate ^= 1; 08479 break; 08480 case 'h': 08481 goto usage; 08482 default: 08483 goto usage; 08484 } 08485 } 08486 08487 if ( pNtk == NULL ) 08488 { 08489 fprintf( pErr, "Empty network.\n" ); 08490 return 1; 08491 } 08492 08493 // get the new network 08494 pNtkRes = Abc_NtkFraigTrust( pNtk ); 08495 if ( pNtkRes == NULL ) 08496 { 08497 fprintf( pErr, "Fraiging in the trust mode has failed.\n" ); 08498 return 1; 08499 } 08500 // replace the current network 08501 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08502 return 0; 08503 08504 usage: 08505 fprintf( pErr, "usage: fraig_trust [-h]\n" ); 08506 fprintf( pErr, "\t transforms the current network into an AIG assuming it is FRAIG with choices\n" ); 08507 // fprintf( pErr, "\t-d : toggle duplication of logic [default = %s]\n", fDuplicate? "yes": "no" ); 08508 fprintf( pErr, "\t-h : print the command usage\n"); 08509 return 1; 08510 }
int Abc_CommandFrames | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4324 of file abc.c.
04325 { 04326 FILE * pOut, * pErr; 04327 Abc_Ntk_t * pNtk, * pNtkTemp, * pNtkRes; 04328 int fInitial; 04329 int nFrames; 04330 int c; 04331 04332 pNtk = Abc_FrameReadNtk(pAbc); 04333 pOut = Abc_FrameReadOut(pAbc); 04334 pErr = Abc_FrameReadErr(pAbc); 04335 04336 // set defaults 04337 fInitial = 0; 04338 nFrames = 5; 04339 Extra_UtilGetoptReset(); 04340 while ( ( c = Extra_UtilGetopt( argc, argv, "Fih" ) ) != EOF ) 04341 { 04342 switch ( c ) 04343 { 04344 case 'F': 04345 if ( globalUtilOptind >= argc ) 04346 { 04347 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 04348 goto usage; 04349 } 04350 nFrames = atoi(argv[globalUtilOptind]); 04351 globalUtilOptind++; 04352 if ( nFrames <= 0 ) 04353 goto usage; 04354 break; 04355 case 'i': 04356 fInitial ^= 1; 04357 break; 04358 case 'h': 04359 goto usage; 04360 default: 04361 goto usage; 04362 } 04363 } 04364 04365 if ( pNtk == NULL ) 04366 { 04367 fprintf( pErr, "Empty network.\n" ); 04368 return 1; 04369 } 04370 04371 // get the new network 04372 if ( !Abc_NtkIsStrash(pNtk) ) 04373 { 04374 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); 04375 pNtkRes = Abc_NtkFrames( pNtkTemp, nFrames, fInitial ); 04376 Abc_NtkDelete( pNtkTemp ); 04377 } 04378 else 04379 pNtkRes = Abc_NtkFrames( pNtk, nFrames, fInitial ); 04380 if ( pNtkRes == NULL ) 04381 { 04382 fprintf( pErr, "Unrolling the network has failed.\n" ); 04383 return 1; 04384 } 04385 // replace the current network 04386 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04387 return 0; 04388 04389 usage: 04390 fprintf( pErr, "usage: frames [-F num] [-ih]\n" ); 04391 fprintf( pErr, "\t unrolls the network for a number of time frames\n" ); 04392 fprintf( pErr, "\t-F num : the number of frames to unroll [default = %d]\n", nFrames ); 04393 fprintf( pErr, "\t-i : toggles initializing the first frame [default = %s]\n", fInitial? "yes": "no" ); 04394 fprintf( pErr, "\t-h : print the command usage\n"); 04395 return 1; 04396 }
int Abc_CommandGen | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5840 of file abc.c.
05841 { 05842 FILE * pOut, * pErr; 05843 Abc_Ntk_t * pNtk; 05844 int c; 05845 int nVars; 05846 int fAdder; 05847 int fSorter; 05848 int fMesh; 05849 int fFpga; 05850 int fVerbose; 05851 char * FileName; 05852 extern void Abc_GenAdder( char * pFileName, int nVars ); 05853 extern void Abc_GenSorter( char * pFileName, int nVars ); 05854 extern void Abc_GenMesh( char * pFileName, int nVars ); 05855 extern void Abc_GenFpga( char * pFileName, int nLutSize, int nLuts, int nVars ); 05856 05857 05858 pNtk = Abc_FrameReadNtk(pAbc); 05859 pOut = Abc_FrameReadOut(pAbc); 05860 pErr = Abc_FrameReadErr(pAbc); 05861 05862 // set defaults 05863 nVars = 8; 05864 fAdder = 0; 05865 fSorter = 0; 05866 fMesh = 0; 05867 fFpga = 0; 05868 fVerbose = 0; 05869 Extra_UtilGetoptReset(); 05870 while ( ( c = Extra_UtilGetopt( argc, argv, "Nasmfvh" ) ) != EOF ) 05871 { 05872 switch ( c ) 05873 { 05874 case 'N': 05875 if ( globalUtilOptind >= argc ) 05876 { 05877 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 05878 goto usage; 05879 } 05880 nVars = atoi(argv[globalUtilOptind]); 05881 globalUtilOptind++; 05882 if ( nVars < 0 ) 05883 goto usage; 05884 break; 05885 case 'a': 05886 fAdder ^= 1; 05887 break; 05888 case 's': 05889 fSorter ^= 1; 05890 break; 05891 case 'm': 05892 fMesh ^= 1; 05893 break; 05894 case 'f': 05895 fFpga ^= 1; 05896 break; 05897 case 'v': 05898 fVerbose ^= 1; 05899 break; 05900 case 'h': 05901 goto usage; 05902 default: 05903 goto usage; 05904 } 05905 } 05906 05907 if ( argc != globalUtilOptind + 1 ) 05908 { 05909 goto usage; 05910 } 05911 05912 // get the input file name 05913 FileName = argv[globalUtilOptind]; 05914 if ( fAdder ) 05915 Abc_GenAdder( FileName, nVars ); 05916 else if ( fSorter ) 05917 Abc_GenSorter( FileName, nVars ); 05918 else if ( fMesh ) 05919 Abc_GenMesh( FileName, nVars ); 05920 else if ( fFpga ) 05921 Abc_GenFpga( FileName, 4, 3, 10 ); 05922 // Abc_GenFpga( FileName, 2, 2, 3 ); 05923 // Abc_GenFpga( FileName, 3, 2, 5 ); 05924 else 05925 printf( "Type of circuit is not specified.\n" ); 05926 return 0; 05927 05928 usage: 05929 fprintf( pErr, "usage: gen [-N] [-asmfvh] <file>\n" ); 05930 fprintf( pErr, "\t generates simple circuits\n" ); 05931 fprintf( pErr, "\t-N num : the number of variables [default = %d]\n", nVars ); 05932 fprintf( pErr, "\t-a : generate ripple-carry adder [default = %s]\n", fAdder? "yes": "no" ); 05933 fprintf( pErr, "\t-s : generate a sorter [default = %s]\n", fSorter? "yes": "no" ); 05934 fprintf( pErr, "\t-m : generate a mesh [default = %s]\n", fMesh? "yes": "no" ); 05935 fprintf( pErr, "\t-f : generate a LUT FPGA structure [default = %s]\n", fFpga? "yes": "no" ); 05936 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 05937 fprintf( pErr, "\t-h : print the command usage\n"); 05938 fprintf( pErr, "\t<file> : output file name\n"); 05939 return 1; 05940 }
int Abc_CommandHaig | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7954 of file abc.c.
07955 { 07956 FILE * pOut, * pErr; 07957 Abc_Ntk_t * pNtk, * pNtkRes; 07958 int c, fUseZeroCost, fVerbose, nIters; 07959 extern Abc_Ntk_t * Abc_NtkIvyHaig( Abc_Ntk_t * pNtk, int nIters, int fUseZeroCost, int fVerbose ); 07960 07961 pNtk = Abc_FrameReadNtk(pAbc); 07962 pOut = Abc_FrameReadOut(pAbc); 07963 pErr = Abc_FrameReadErr(pAbc); 07964 07965 // set defaults 07966 nIters = 2; 07967 fUseZeroCost = 0; 07968 fVerbose = 1; 07969 Extra_UtilGetoptReset(); 07970 while ( ( c = Extra_UtilGetopt( argc, argv, "Izvh" ) ) != EOF ) 07971 { 07972 switch ( c ) 07973 { 07974 case 'I': 07975 if ( globalUtilOptind >= argc ) 07976 { 07977 fprintf( pErr, "Command line switch \"-I\" should be followed by a positive integer.\n" ); 07978 goto usage; 07979 } 07980 nIters = atoi(argv[globalUtilOptind]); 07981 globalUtilOptind++; 07982 if ( nIters < 0 ) 07983 goto usage; 07984 break; 07985 case 'z': 07986 fUseZeroCost ^= 1; 07987 break; 07988 case 'v': 07989 fVerbose ^= 1; 07990 break; 07991 case 'h': 07992 goto usage; 07993 default: 07994 goto usage; 07995 } 07996 } 07997 if ( pNtk == NULL ) 07998 { 07999 fprintf( pErr, "Empty network.\n" ); 08000 return 1; 08001 } 08002 if ( !Abc_NtkIsStrash(pNtk) ) 08003 { 08004 fprintf( pErr, "This command works only for strashed networks.\n" ); 08005 return 1; 08006 } 08007 08008 pNtkRes = Abc_NtkIvyHaig( pNtk, nIters, fUseZeroCost, fVerbose ); 08009 if ( pNtkRes == NULL ) 08010 { 08011 fprintf( pErr, "Command has failed.\n" ); 08012 return 0; 08013 } 08014 // replace the current network 08015 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08016 return 0; 08017 08018 usage: 08019 fprintf( pErr, "usage: haig [-Izvh]\n" ); 08020 fprintf( pErr, "\t prints HAIG stats after sequential rewriting\n" ); 08021 fprintf( pErr, "\t-I num : the number of rewriting iterations [default = %d]\n", nIters ); 08022 fprintf( pErr, "\t-z : toggle zero-cost replacements [default = %s]\n", fUseZeroCost? "yes": "no" ); 08023 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 08024 fprintf( pErr, "\t-h : print the command usage\n"); 08025 return 1; 08026 }
int Abc_CommandHaigStart | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8858 of file abc.c.
08859 { 08860 FILE * pOut, * pErr; 08861 Abc_Ntk_t * pNtk; 08862 int c; 08863 08864 pNtk = Abc_FrameReadNtk(pAbc); 08865 pOut = Abc_FrameReadOut(pAbc); 08866 pErr = Abc_FrameReadErr(pAbc); 08867 08868 // set defaults 08869 Extra_UtilGetoptReset(); 08870 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08871 { 08872 switch ( c ) 08873 { 08874 case 'h': 08875 goto usage; 08876 default: 08877 goto usage; 08878 } 08879 } 08880 if ( !Abc_NtkIsStrash(pNtk) ) 08881 { 08882 fprintf( pErr, "This command works only for AIGs; run strashing (\"st\").\n" ); 08883 return 0; 08884 } 08885 Abc_NtkHaigStart( pNtk ); 08886 return 0; 08887 08888 usage: 08889 fprintf( pErr, "usage: haig_start [-h]\n" ); 08890 fprintf( pErr, "\t starts constructive accumulation of combinational choices\n" ); 08891 fprintf( pErr, "\t-h : print the command usage\n"); 08892 return 1; 08893 }
int Abc_CommandHaigStop | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8906 of file abc.c.
08907 { 08908 FILE * pOut, * pErr; 08909 Abc_Ntk_t * pNtk; 08910 int c; 08911 08912 pNtk = Abc_FrameReadNtk(pAbc); 08913 pOut = Abc_FrameReadOut(pAbc); 08914 pErr = Abc_FrameReadErr(pAbc); 08915 08916 // set defaults 08917 Extra_UtilGetoptReset(); 08918 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08919 { 08920 switch ( c ) 08921 { 08922 case 'h': 08923 goto usage; 08924 default: 08925 goto usage; 08926 } 08927 } 08928 if ( !Abc_NtkIsStrash(pNtk) ) 08929 { 08930 fprintf( pErr, "This command works only for AIGs; run strashing (\"st\").\n" ); 08931 return 0; 08932 } 08933 Abc_NtkHaigStop( pNtk ); 08934 return 0; 08935 08936 usage: 08937 fprintf( pErr, "usage: haig_stop [-h]\n" ); 08938 fprintf( pErr, "\t cleans the internal storage for combinational choices\n" ); 08939 fprintf( pErr, "\t-h : print the command usage\n"); 08940 return 1; 08941 }
int Abc_CommandHaigUse | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8954 of file abc.c.
08955 { 08956 FILE * pOut, * pErr; 08957 Abc_Ntk_t * pNtk, * pNtkRes; 08958 int c; 08959 08960 pNtk = Abc_FrameReadNtk(pAbc); 08961 pOut = Abc_FrameReadOut(pAbc); 08962 pErr = Abc_FrameReadErr(pAbc); 08963 08964 // set defaults 08965 Extra_UtilGetoptReset(); 08966 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 08967 { 08968 switch ( c ) 08969 { 08970 case 'h': 08971 goto usage; 08972 default: 08973 goto usage; 08974 } 08975 } 08976 if ( !Abc_NtkIsStrash(pNtk) ) 08977 { 08978 fprintf( pErr, "This command works only for AIGs; run strashing (\"st\").\n" ); 08979 return 0; 08980 } 08981 // get the new network 08982 pNtkRes = Abc_NtkHaigUse( pNtk ); 08983 if ( pNtkRes == NULL ) 08984 { 08985 fprintf( pErr, "Transforming internal storage into AIG with choices has failed.\n" ); 08986 return 1; 08987 } 08988 // replace the current network 08989 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08990 return 0; 08991 08992 usage: 08993 fprintf( pErr, "usage: haig_use [-h]\n" ); 08994 fprintf( pErr, "\t transforms internal storage into an AIG with choices\n" ); 08995 fprintf( pErr, "\t-h : print the command usage\n"); 08996 return 1; 08997 }
int Abc_CommandICut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6723 of file abc.c.
06724 { 06725 FILE * pOut, * pErr; 06726 Abc_Ntk_t * pNtk; 06727 int c, nInputs; 06728 extern void Abc_NtkIvyCuts( Abc_Ntk_t * pNtk, int nInputs ); 06729 06730 pNtk = Abc_FrameReadNtk(pAbc); 06731 pOut = Abc_FrameReadOut(pAbc); 06732 pErr = Abc_FrameReadErr(pAbc); 06733 06734 // set defaults 06735 nInputs = 5; 06736 Extra_UtilGetoptReset(); 06737 while ( ( c = Extra_UtilGetopt( argc, argv, "Kh" ) ) != EOF ) 06738 { 06739 switch ( c ) 06740 { 06741 case 'K': 06742 if ( globalUtilOptind >= argc ) 06743 { 06744 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 06745 goto usage; 06746 } 06747 nInputs = atoi(argv[globalUtilOptind]); 06748 globalUtilOptind++; 06749 if ( nInputs < 0 ) 06750 goto usage; 06751 break; 06752 case 'h': 06753 goto usage; 06754 default: 06755 goto usage; 06756 } 06757 } 06758 if ( pNtk == NULL ) 06759 { 06760 fprintf( pErr, "Empty network.\n" ); 06761 return 1; 06762 } 06763 if ( !Abc_NtkIsStrash(pNtk) ) 06764 { 06765 fprintf( pErr, "This command works only for strashed networks.\n" ); 06766 return 1; 06767 } 06768 06769 Abc_NtkIvyCuts( pNtk, nInputs ); 06770 return 0; 06771 06772 usage: 06773 fprintf( pErr, "usage: icut [-K num] [-h]\n" ); 06774 fprintf( pErr, "\t computes sequential cuts of the given size\n" ); 06775 fprintf( pErr, "\t-K num : the number of cut inputs (2 <= num <= 6) [default = %d]\n", nInputs ); 06776 fprintf( pErr, "\t-h : print the command usage\n"); 06777 return 1; 06778 }
int Abc_CommandIf | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10033 of file abc.c.
10034 { 10035 char Buffer[100]; 10036 char LutSize[100]; 10037 FILE * pOut, * pErr; 10038 Abc_Ntk_t * pNtk, * pNtkRes; 10039 If_Par_t Pars, * pPars = &Pars; 10040 int c; 10041 extern Abc_Ntk_t * Abc_NtkIf( Abc_Ntk_t * pNtk, If_Par_t * pPars ); 10042 10043 pNtk = Abc_FrameReadNtk(pAbc); 10044 pOut = Abc_FrameReadOut(pAbc); 10045 pErr = Abc_FrameReadErr(pAbc); 10046 10047 // set defaults 10048 memset( pPars, 0, sizeof(If_Par_t) ); 10049 // user-controlable paramters 10050 pPars->nLutSize = -1; 10051 pPars->nCutsMax = 8; 10052 pPars->nFlowIters = 1; 10053 pPars->nAreaIters = 2; 10054 pPars->DelayTarget = -1; 10055 pPars->fPreprocess = 1;// 10056 pPars->fArea = 0; 10057 pPars->fFancy = 0; 10058 pPars->fExpRed = 1;// 10059 pPars->fLatchPaths = 0; 10060 pPars->fSeqMap = 0; 10061 pPars->fVerbose = 0;// 10062 // internal parameters 10063 pPars->fTruth = 0; 10064 pPars->nLatches = pNtk? Abc_NtkLatchNum(pNtk) : 0; 10065 pPars->fLiftLeaves = 0; 10066 pPars->pLutLib = Abc_FrameReadLibLut(); 10067 pPars->pTimesArr = NULL; 10068 pPars->pTimesArr = NULL; 10069 pPars->pFuncCost = NULL; 10070 10071 Extra_UtilGetoptReset(); 10072 while ( ( c = Extra_UtilGetopt( argc, argv, "KCFADpaflrstvh" ) ) != EOF ) 10073 { 10074 switch ( c ) 10075 { 10076 case 'K': 10077 if ( globalUtilOptind >= argc ) 10078 { 10079 fprintf( pErr, "Command line switch \"-K\" should be followed by a positive integer.\n" ); 10080 goto usage; 10081 } 10082 pPars->nLutSize = atoi(argv[globalUtilOptind]); 10083 globalUtilOptind++; 10084 if ( pPars->nLutSize < 0 ) 10085 goto usage; 10086 // if the LUT size is specified, disable library 10087 pPars->pLutLib = NULL; 10088 break; 10089 case 'C': 10090 if ( globalUtilOptind >= argc ) 10091 { 10092 fprintf( pErr, "Command line switch \"-C\" should be followed by a positive integer.\n" ); 10093 goto usage; 10094 } 10095 pPars->nCutsMax = atoi(argv[globalUtilOptind]); 10096 globalUtilOptind++; 10097 if ( pPars->nCutsMax < 0 ) 10098 goto usage; 10099 break; 10100 case 'F': 10101 if ( globalUtilOptind >= argc ) 10102 { 10103 fprintf( pErr, "Command line switch \"-F\" should be followed by a positive integer.\n" ); 10104 goto usage; 10105 } 10106 pPars->nFlowIters = atoi(argv[globalUtilOptind]); 10107 globalUtilOptind++; 10108 if ( pPars->nFlowIters < 0 ) 10109 goto usage; 10110 break; 10111 case 'A': 10112 if ( globalUtilOptind >= argc ) 10113 { 10114 fprintf( pErr, "Command line switch \"-A\" should be followed by a positive integer.\n" ); 10115 goto usage; 10116 } 10117 pPars->nAreaIters = atoi(argv[globalUtilOptind]); 10118 globalUtilOptind++; 10119 if ( pPars->nAreaIters < 0 ) 10120 goto usage; 10121 break; 10122 case 'D': 10123 if ( globalUtilOptind >= argc ) 10124 { 10125 fprintf( pErr, "Command line switch \"-D\" should be followed by a floating point number.\n" ); 10126 goto usage; 10127 } 10128 pPars->DelayTarget = (float)atof(argv[globalUtilOptind]); 10129 globalUtilOptind++; 10130 if ( pPars->DelayTarget <= 0.0 ) 10131 goto usage; 10132 break; 10133 case 'p': 10134 pPars->fPreprocess ^= 1; 10135 break; 10136 case 'a': 10137 pPars->fArea ^= 1; 10138 break; 10139 case 'f': 10140 pPars->fFancy ^= 1; 10141 break; 10142 case 'l': 10143 pPars->fLatchPaths ^= 1; 10144 break; 10145 case 'r': 10146 pPars->fExpRed ^= 1; 10147 break; 10148 case 's': 10149 pPars->fSeqMap ^= 1; 10150 break; 10151 case 't': 10152 pPars->fLiftLeaves ^= 1; 10153 break; 10154 case 'v': 10155 pPars->fVerbose ^= 1; 10156 break; 10157 case 'h': 10158 default: 10159 goto usage; 10160 } 10161 } 10162 10163 if ( pNtk == NULL ) 10164 { 10165 fprintf( pErr, "Empty network.\n" ); 10166 return 1; 10167 } 10168 10169 if ( pPars->fSeqMap && pPars->nLatches == 0 ) 10170 { 10171 fprintf( pErr, "The network has no latches. Use combinational mapping instead of sequential.\n" ); 10172 return 1; 10173 } 10174 10175 if ( pPars->nLutSize == -1 ) 10176 { 10177 if ( pPars->pLutLib == NULL ) 10178 { 10179 fprintf( pErr, "The LUT library is not given.\n" ); 10180 return 1; 10181 } 10182 // get LUT size from the library 10183 pPars->nLutSize = pPars->pLutLib->LutMax; 10184 } 10185 10186 if ( pPars->nLutSize < 3 || pPars->nLutSize > IF_MAX_LUTSIZE ) 10187 { 10188 fprintf( pErr, "Incorrect LUT size (%d).\n", pPars->nLutSize ); 10189 return 1; 10190 } 10191 10192 if ( pPars->nCutsMax < 1 || pPars->nCutsMax >= (1<<12) ) 10193 { 10194 fprintf( pErr, "Incorrect number of cuts.\n" ); 10195 return 1; 10196 } 10197 10198 if ( Abc_NtkGetChoiceNum( pNtk ) ) 10199 { 10200 printf( "Performing FPGA mapping with choices.\n" ); 10201 // printf( "Currently mapping with choices is not enabled.\n" ); 10202 pPars->fTruth = 1; 10203 // return 1; 10204 } 10205 10206 if ( pPars->fTruth && pPars->nLutSize > IF_MAX_FUNC_LUTSIZE ) 10207 { 10208 fprintf( pErr, "Mapping with choices requires computing truth tables. In this case, the LUT size cannot be more than %d.\n", IF_MAX_FUNC_LUTSIZE ); 10209 return 1; 10210 } 10211 10212 if ( !Abc_NtkIsStrash(pNtk) ) 10213 { 10214 // strash and balance the network 10215 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 10216 if ( pNtk == NULL ) 10217 { 10218 fprintf( pErr, "Strashing before FPGA mapping has failed.\n" ); 10219 return 1; 10220 } 10221 pNtk = Abc_NtkBalance( pNtkRes = pNtk, 0, 0, 1 ); 10222 Abc_NtkDelete( pNtkRes ); 10223 if ( pNtk == NULL ) 10224 { 10225 fprintf( pErr, "Balancing before FPGA mapping has failed.\n" ); 10226 return 1; 10227 } 10228 fprintf( pOut, "The network was strashed and balanced before FPGA mapping.\n" ); 10229 // get the new network 10230 pNtkRes = Abc_NtkIf( pNtk, pPars ); 10231 if ( pNtkRes == NULL ) 10232 { 10233 Abc_NtkDelete( pNtk ); 10234 fprintf( pErr, "FPGA mapping has failed.\n" ); 10235 return 0; 10236 } 10237 Abc_NtkDelete( pNtk ); 10238 } 10239 else 10240 { 10241 // get the new network 10242 pNtkRes = Abc_NtkIf( pNtk, pPars ); 10243 if ( pNtkRes == NULL ) 10244 { 10245 fprintf( pErr, "FPGA mapping has failed.\n" ); 10246 return 0; 10247 } 10248 } 10249 // replace the current network 10250 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10251 return 0; 10252 10253 usage: 10254 if ( pPars->DelayTarget == -1 ) 10255 sprintf( Buffer, "best possible" ); 10256 else 10257 sprintf( Buffer, "%.2f", pPars->DelayTarget ); 10258 if ( pPars->nLutSize == -1 ) 10259 sprintf( LutSize, "library" ); 10260 else 10261 sprintf( LutSize, "%d", pPars->nLutSize ); 10262 fprintf( pErr, "usage: if [-K num] [-C num] [-F num] [-A num] [-D float] [-pafrsvh]\n" ); 10263 fprintf( pErr, "\t performs FPGA technology mapping of the network\n" ); 10264 fprintf( pErr, "\t-K num : the number of LUT inputs (2 < num < %d) [default = %s]\n", IF_MAX_LUTSIZE+1, LutSize ); 10265 fprintf( pErr, "\t-C num : the max number of priority cuts (0 < num < 2^12) [default = %d]\n", pPars->nCutsMax ); 10266 fprintf( pErr, "\t-F num : the number of area flow recovery iterations (num >= 0) [default = %d]\n", pPars->nFlowIters ); 10267 fprintf( pErr, "\t-A num : the number of exact area recovery iterations (num >= 0) [default = %d]\n", pPars->nAreaIters ); 10268 fprintf( pErr, "\t-D float : sets the delay constraint for the mapping [default = %s]\n", Buffer ); 10269 fprintf( pErr, "\t-p : toggles preprocessing using several starting points [default = %s]\n", pPars->fPreprocess? "yes": "no" ); 10270 fprintf( pErr, "\t-a : toggles area-oriented mapping [default = %s]\n", pPars->fArea? "yes": "no" ); 10271 // fprintf( pErr, "\t-f : toggles one fancy feature [default = %s]\n", pPars->fFancy? "yes": "no" ); 10272 fprintf( pErr, "\t-r : enables expansion/reduction of the best cuts [default = %s]\n", pPars->fExpRed? "yes": "no" ); 10273 fprintf( pErr, "\t-l : optimizes latch paths for delay, other paths for area [default = %s]\n", pPars->fLatchPaths? "yes": "no" ); 10274 fprintf( pErr, "\t-s : toggles sequential mapping [default = %s]\n", pPars->fSeqMap? "yes": "no" ); 10275 // fprintf( pErr, "\t-t : toggles the use of true sequential cuts [default = %s]\n", pPars->fLiftLeaves? "yes": "no" ); 10276 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", pPars->fVerbose? "yes": "no" ); 10277 fprintf( pErr, "\t-h : prints the command usage\n"); 10278 return 1; 10279 }
int Abc_CommandIFraig | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7564 of file abc.c.
07565 { 07566 FILE * pOut, * pErr; 07567 Abc_Ntk_t * pNtk, * pNtkRes; 07568 int c, fProve, fVerbose, fDoSparse; 07569 int nConfLimit; 07570 07571 extern Abc_Ntk_t * Abc_NtkIvyFraig( Abc_Ntk_t * pNtk, int nConfLimit, int fDoSparse, int fProve, int fTransfer, int fVerbose ); 07572 07573 pNtk = Abc_FrameReadNtk(pAbc); 07574 pOut = Abc_FrameReadOut(pAbc); 07575 pErr = Abc_FrameReadErr(pAbc); 07576 07577 // set defaults 07578 nConfLimit = 100; 07579 fDoSparse = 0; 07580 fProve = 0; 07581 fVerbose = 0; 07582 Extra_UtilGetoptReset(); 07583 while ( ( c = Extra_UtilGetopt( argc, argv, "Cspvh" ) ) != EOF ) 07584 { 07585 switch ( c ) 07586 { 07587 case 'C': 07588 if ( globalUtilOptind >= argc ) 07589 { 07590 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07591 goto usage; 07592 } 07593 nConfLimit = atoi(argv[globalUtilOptind]); 07594 globalUtilOptind++; 07595 if ( nConfLimit < 0 ) 07596 goto usage; 07597 break; 07598 case 's': 07599 fDoSparse ^= 1; 07600 break; 07601 case 'p': 07602 fProve ^= 1; 07603 break; 07604 case 'v': 07605 fVerbose ^= 1; 07606 break; 07607 case 'h': 07608 goto usage; 07609 default: 07610 goto usage; 07611 } 07612 } 07613 if ( pNtk == NULL ) 07614 { 07615 fprintf( pErr, "Empty network.\n" ); 07616 return 1; 07617 } 07618 if ( !Abc_NtkIsStrash(pNtk) ) 07619 { 07620 fprintf( pErr, "This command works only for strashed networks.\n" ); 07621 return 1; 07622 } 07623 07624 pNtkRes = Abc_NtkIvyFraig( pNtk, nConfLimit, fDoSparse, fProve, 0, fVerbose ); 07625 if ( pNtkRes == NULL ) 07626 { 07627 fprintf( pErr, "Command has failed.\n" ); 07628 return 0; 07629 } 07630 // replace the current network 07631 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07632 return 0; 07633 07634 usage: 07635 fprintf( pErr, "usage: ifraig [-C num] [-spvh]\n" ); 07636 fprintf( pErr, "\t performs fraiging using a new method\n" ); 07637 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 07638 fprintf( pErr, "\t-s : toggle considering sparse functions [default = %s]\n", fDoSparse? "yes": "no" ); 07639 fprintf( pErr, "\t-p : toggle proving the miter outputs [default = %s]\n", fProve? "yes": "no" ); 07640 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07641 fprintf( pErr, "\t-h : print the command usage\n"); 07642 return 1; 07643 }
int Abc_CommandImfs | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2842 of file abc.c.
02843 { 02844 FILE * pOut, * pErr; 02845 Abc_Ntk_t * pNtk; 02846 Res_Par_t Pars, * pPars = &Pars; 02847 int c; 02848 02849 // printf( "Implementation of this command is not finished.\n" ); 02850 // return 1; 02851 02852 pNtk = Abc_FrameReadNtk(pAbc); 02853 pOut = Abc_FrameReadOut(pAbc); 02854 pErr = Abc_FrameReadErr(pAbc); 02855 02856 // set defaults 02857 pPars->nWindow = 62; 02858 pPars->nGrowthLevel = 1; 02859 pPars->nCands = 5; 02860 pPars->nSimWords = 4; 02861 pPars->fArea = 0; 02862 pPars->fVerbose = 0; 02863 pPars->fVeryVerbose = 0; 02864 Extra_UtilGetoptReset(); 02865 while ( ( c = Extra_UtilGetopt( argc, argv, "WSCLavwh" ) ) != EOF ) 02866 { 02867 switch ( c ) 02868 { 02869 case 'W': 02870 if ( globalUtilOptind >= argc ) 02871 { 02872 fprintf( pErr, "Command line switch \"-W\" should be followed by an integer.\n" ); 02873 goto usage; 02874 } 02875 pPars->nWindow = atoi(argv[globalUtilOptind]); 02876 globalUtilOptind++; 02877 if ( pPars->nWindow < 1 || pPars->nWindow > 99 ) 02878 goto usage; 02879 break; 02880 case 'S': 02881 if ( globalUtilOptind >= argc ) 02882 { 02883 fprintf( pErr, "Command line switch \"-S\" should be followed by an integer.\n" ); 02884 goto usage; 02885 } 02886 pPars->nSimWords = atoi(argv[globalUtilOptind]); 02887 globalUtilOptind++; 02888 if ( pPars->nSimWords < 1 || pPars->nSimWords > 256 ) 02889 goto usage; 02890 break; 02891 case 'C': 02892 if ( globalUtilOptind >= argc ) 02893 { 02894 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 02895 goto usage; 02896 } 02897 pPars->nCands = atoi(argv[globalUtilOptind]); 02898 globalUtilOptind++; 02899 if ( pPars->nCands < 0 || pPars->nCands > ABC_INFINITY ) 02900 goto usage; 02901 break; 02902 case 'L': 02903 if ( globalUtilOptind >= argc ) 02904 { 02905 fprintf( pErr, "Command line switch \"-L\" should be followed by an integer.\n" ); 02906 goto usage; 02907 } 02908 pPars->nGrowthLevel = atoi(argv[globalUtilOptind]); 02909 globalUtilOptind++; 02910 if ( pPars->nGrowthLevel < 0 || pPars->nGrowthLevel > ABC_INFINITY ) 02911 goto usage; 02912 break; 02913 case 'a': 02914 pPars->fArea ^= 1; 02915 break; 02916 case 'v': 02917 pPars->fVerbose ^= 1; 02918 break; 02919 case 'w': 02920 pPars->fVeryVerbose ^= 1; 02921 break; 02922 case 'h': 02923 goto usage; 02924 default: 02925 goto usage; 02926 } 02927 } 02928 02929 if ( pNtk == NULL ) 02930 { 02931 fprintf( pErr, "Empty network.\n" ); 02932 return 1; 02933 } 02934 if ( !Abc_NtkIsLogic(pNtk) ) 02935 { 02936 fprintf( pErr, "This command can only be applied to a logic network.\n" ); 02937 return 1; 02938 } 02939 02940 // modify the current network 02941 if ( !Abc_NtkResynthesize( pNtk, pPars ) ) 02942 { 02943 fprintf( pErr, "Resynthesis has failed.\n" ); 02944 return 1; 02945 } 02946 return 0; 02947 02948 usage: 02949 fprintf( pErr, "usage: imfs [-W <NM>] [-L <num>] [-C <num>] [-S <num>] [-avwh]\n" ); 02950 fprintf( pErr, "\t performs resubstitution-based resynthesis with interpolation\n" ); 02951 fprintf( pErr, "\t-W <NM> : fanin/fanout levels (NxM) of the window (00 <= NM <= 99) [default = %d%d]\n", pPars->nWindow/10, pPars->nWindow%10 ); 02952 fprintf( pErr, "\t-L <num> : the largest increase in node level after resynthesis (0 <= num) [default = %d]\n", pPars->nGrowthLevel ); 02953 fprintf( pErr, "\t-C <num> : the max number of resub candidates (1 <= n) [default = %d]\n", pPars->nCands ); 02954 fprintf( pErr, "\t-S <num> : the number of simulation words (1 <= n <= 256) [default = %d]\n", pPars->nSimWords ); 02955 fprintf( pErr, "\t-a : toggle optimization for area only [default = %s]\n", pPars->fArea? "yes": "no" ); 02956 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", pPars->fVerbose? "yes": "no" ); 02957 fprintf( pErr, "\t-w : toggle printout subgraph statistics [default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); 02958 fprintf( pErr, "\t-h : print the command usage\n"); 02959 return 1; 02960 }
int Abc_CommandInit | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10294 of file abc.c.
10295 { 10296 FILE * pOut, * pErr; 10297 Abc_Ntk_t * pNtk; 10298 Abc_Obj_t * pObj; 10299 int c, i; 10300 int fZeros; 10301 int fOnes; 10302 int fRandom; 10303 int fDontCare; 10304 10305 pNtk = Abc_FrameReadNtk(pAbc); 10306 pOut = Abc_FrameReadOut(pAbc); 10307 pErr = Abc_FrameReadErr(pAbc); 10308 10309 // set defaults 10310 fZeros = 0; 10311 fOnes = 0; 10312 fRandom = 0; 10313 fDontCare = 0; 10314 Extra_UtilGetoptReset(); 10315 while ( ( c = Extra_UtilGetopt( argc, argv, "zordh" ) ) != EOF ) 10316 { 10317 switch ( c ) 10318 { 10319 case 'z': 10320 fZeros ^= 1; 10321 break; 10322 case 'o': 10323 fOnes ^= 1; 10324 break; 10325 case 'r': 10326 fRandom ^= 1; 10327 break; 10328 case 'd': 10329 fDontCare ^= 1; 10330 break; 10331 case 'h': 10332 goto usage; 10333 default: 10334 goto usage; 10335 } 10336 } 10337 10338 if ( pNtk == NULL ) 10339 { 10340 fprintf( pErr, "Empty network.\n" ); 10341 return 1; 10342 } 10343 10344 if ( Abc_NtkIsComb(pNtk) ) 10345 { 10346 fprintf( pErr, "The current network is combinational.\n" ); 10347 return 0; 10348 } 10349 10350 if ( fZeros ) 10351 { 10352 Abc_NtkForEachLatch( pNtk, pObj, i ) 10353 Abc_LatchSetInit0( pObj ); 10354 } 10355 else if ( fOnes ) 10356 { 10357 Abc_NtkForEachLatch( pNtk, pObj, i ) 10358 Abc_LatchSetInit1( pObj ); 10359 } 10360 else if ( fRandom ) 10361 { 10362 Abc_NtkForEachLatch( pNtk, pObj, i ) 10363 if ( rand() & 1 ) 10364 Abc_LatchSetInit1( pObj ); 10365 else 10366 Abc_LatchSetInit0( pObj ); 10367 } 10368 else if ( fDontCare ) 10369 { 10370 Abc_NtkForEachLatch( pNtk, pObj, i ) 10371 Abc_LatchSetInitDc( pObj ); 10372 } 10373 else 10374 printf( "The initial states remain unchanged.\n" ); 10375 return 0; 10376 10377 usage: 10378 fprintf( pErr, "usage: init [-zordh]\n" ); 10379 fprintf( pErr, "\t resets initial states of all latches\n" ); 10380 fprintf( pErr, "\t-z : set zeros initial states [default = %s]\n", fZeros? "yes": "no" ); 10381 fprintf( pErr, "\t-o : set ones initial states [default = %s]\n", fOnes? "yes": "no" ); 10382 fprintf( pErr, "\t-d : set don't-care initial states [default = %s]\n", fDontCare? "yes": "no" ); 10383 fprintf( pErr, "\t-r : set random initial states [default = %s]\n", fRandom? "yes": "no" ); 10384 fprintf( pErr, "\t-h : print the command usage\n"); 10385 return 1; 10386 }
int Abc_CommandIProve | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7863 of file abc.c.
07864 { 07865 Prove_Params_t Params, * pParams = &Params; 07866 FILE * pOut, * pErr; 07867 Abc_Ntk_t * pNtk, * pNtkTemp; 07868 int c, clk, RetValue; 07869 07870 extern int Abc_NtkIvyProve( Abc_Ntk_t ** ppNtk, void * pPars ); 07871 07872 pNtk = Abc_FrameReadNtk(pAbc); 07873 pOut = Abc_FrameReadOut(pAbc); 07874 pErr = Abc_FrameReadErr(pAbc); 07875 07876 // set defaults 07877 Prove_ParamsSetDefault( pParams ); 07878 pParams->fUseRewriting = 1; 07879 pParams->fVerbose = 0; 07880 Extra_UtilGetoptReset(); 07881 while ( ( c = Extra_UtilGetopt( argc, argv, "rvh" ) ) != EOF ) 07882 { 07883 switch ( c ) 07884 { 07885 case 'r': 07886 pParams->fUseRewriting ^= 1; 07887 break; 07888 case 'v': 07889 pParams->fVerbose ^= 1; 07890 break; 07891 case 'h': 07892 goto usage; 07893 default: 07894 goto usage; 07895 } 07896 } 07897 if ( pNtk == NULL ) 07898 { 07899 fprintf( pErr, "Empty network.\n" ); 07900 return 1; 07901 } 07902 07903 clk = clock(); 07904 07905 if ( Abc_NtkIsStrash(pNtk) ) 07906 pNtkTemp = Abc_NtkDup( pNtk ); 07907 else 07908 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); 07909 07910 RetValue = Abc_NtkIvyProve( &pNtkTemp, pParams ); 07911 07912 // verify that the pattern is correct 07913 if ( RetValue == 0 ) 07914 { 07915 int * pSimInfo = Abc_NtkVerifySimulatePattern( pNtk, pNtkTemp->pModel ); 07916 if ( pSimInfo[0] != 1 ) 07917 printf( "ERROR in Abc_NtkMiterProve(): Generated counter-example is invalid.\n" ); 07918 free( pSimInfo ); 07919 } 07920 07921 if ( RetValue == -1 ) 07922 printf( "UNDECIDED " ); 07923 else if ( RetValue == 0 ) 07924 printf( "SATISFIABLE " ); 07925 else 07926 printf( "UNSATISFIABLE " ); 07927 //printf( "\n" ); 07928 07929 PRT( "Time", clock() - clk ); 07930 // replace the current network 07931 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkTemp ); 07932 return 0; 07933 07934 usage: 07935 fprintf( pErr, "usage: iprove [-rvh]\n" ); 07936 fprintf( pErr, "\t performs CEC using a new method\n" ); 07937 fprintf( pErr, "\t-r : toggle AIG rewriting [default = %s]\n", pParams->fUseRewriting? "yes": "no" ); 07938 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", pParams->fVerbose? "yes": "no" ); 07939 fprintf( pErr, "\t-h : print the command usage\n"); 07940 return 1; 07941 }
int Abc_CommandIResyn | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7405 of file abc.c.
07406 { 07407 FILE * pOut, * pErr; 07408 Abc_Ntk_t * pNtk, * pNtkRes; 07409 int c, fUpdateLevel, fVerbose; 07410 extern Abc_Ntk_t * Abc_NtkIvyResyn( Abc_Ntk_t * pNtk, int fUpdateLevel, int fVerbose ); 07411 07412 pNtk = Abc_FrameReadNtk(pAbc); 07413 pOut = Abc_FrameReadOut(pAbc); 07414 pErr = Abc_FrameReadErr(pAbc); 07415 07416 // set defaults 07417 fUpdateLevel = 1; 07418 fVerbose = 0; 07419 Extra_UtilGetoptReset(); 07420 while ( ( c = Extra_UtilGetopt( argc, argv, "lzvh" ) ) != EOF ) 07421 { 07422 switch ( c ) 07423 { 07424 case 'l': 07425 fUpdateLevel ^= 1; 07426 break; 07427 case 'v': 07428 fVerbose ^= 1; 07429 break; 07430 case 'h': 07431 goto usage; 07432 default: 07433 goto usage; 07434 } 07435 } 07436 if ( pNtk == NULL ) 07437 { 07438 fprintf( pErr, "Empty network.\n" ); 07439 return 1; 07440 } 07441 if ( !Abc_NtkIsStrash(pNtk) ) 07442 { 07443 fprintf( pErr, "This command works only for strashed networks.\n" ); 07444 return 1; 07445 } 07446 07447 pNtkRes = Abc_NtkIvyResyn( pNtk, fUpdateLevel, fVerbose ); 07448 if ( pNtkRes == NULL ) 07449 { 07450 fprintf( pErr, "Command has failed.\n" ); 07451 return 0; 07452 } 07453 // replace the current network 07454 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07455 return 0; 07456 07457 usage: 07458 fprintf( pErr, "usage: iresyn [-lvh]\n" ); 07459 fprintf( pErr, "\t performs combinational resynthesis\n" ); 07460 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 07461 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07462 fprintf( pErr, "\t-h : print the command usage\n"); 07463 return 1; 07464 }
int Abc_CommandIRewrite | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6791 of file abc.c.
06792 { 06793 FILE * pOut, * pErr; 06794 Abc_Ntk_t * pNtk, * pNtkRes; 06795 int c, fUpdateLevel, fUseZeroCost, fVerbose; 06796 extern Abc_Ntk_t * Abc_NtkIvyRewrite( Abc_Ntk_t * pNtk, int fUpdateLevel, int fUseZeroCost, int fVerbose ); 06797 06798 pNtk = Abc_FrameReadNtk(pAbc); 06799 pOut = Abc_FrameReadOut(pAbc); 06800 pErr = Abc_FrameReadErr(pAbc); 06801 06802 // set defaults 06803 fUpdateLevel = 1; 06804 fUseZeroCost = 0; 06805 fVerbose = 0; 06806 Extra_UtilGetoptReset(); 06807 while ( ( c = Extra_UtilGetopt( argc, argv, "lzvh" ) ) != EOF ) 06808 { 06809 switch ( c ) 06810 { 06811 case 'l': 06812 fUpdateLevel ^= 1; 06813 break; 06814 case 'z': 06815 fUseZeroCost ^= 1; 06816 break; 06817 case 'v': 06818 fVerbose ^= 1; 06819 break; 06820 case 'h': 06821 goto usage; 06822 default: 06823 goto usage; 06824 } 06825 } 06826 if ( pNtk == NULL ) 06827 { 06828 fprintf( pErr, "Empty network.\n" ); 06829 return 1; 06830 } 06831 if ( !Abc_NtkIsStrash(pNtk) ) 06832 { 06833 fprintf( pErr, "This command works only for strashed networks.\n" ); 06834 return 1; 06835 } 06836 06837 pNtkRes = Abc_NtkIvyRewrite( pNtk, fUpdateLevel, fUseZeroCost, fVerbose ); 06838 if ( pNtkRes == NULL ) 06839 { 06840 fprintf( pErr, "Command has failed.\n" ); 06841 return 0; 06842 } 06843 // replace the current network 06844 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06845 return 0; 06846 06847 usage: 06848 fprintf( pErr, "usage: irw [-lzvh]\n" ); 06849 fprintf( pErr, "\t perform combinational AIG rewriting\n" ); 06850 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 06851 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeroCost? "yes": "no" ); 06852 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 06853 fprintf( pErr, "\t-h : print the command usage\n"); 06854 return 1; 06855 }
int Abc_CommandIRewriteSeq | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7328 of file abc.c.
07329 { 07330 FILE * pOut, * pErr; 07331 Abc_Ntk_t * pNtk, * pNtkRes; 07332 int c, fUpdateLevel, fUseZeroCost, fVerbose; 07333 extern Abc_Ntk_t * Abc_NtkIvyRewriteSeq( Abc_Ntk_t * pNtk, int fUseZeroCost, int fVerbose ); 07334 07335 pNtk = Abc_FrameReadNtk(pAbc); 07336 pOut = Abc_FrameReadOut(pAbc); 07337 pErr = Abc_FrameReadErr(pAbc); 07338 07339 // set defaults 07340 fUpdateLevel = 0; 07341 fUseZeroCost = 0; 07342 fVerbose = 0; 07343 Extra_UtilGetoptReset(); 07344 while ( ( c = Extra_UtilGetopt( argc, argv, "lzvh" ) ) != EOF ) 07345 { 07346 switch ( c ) 07347 { 07348 case 'l': 07349 fUpdateLevel ^= 1; 07350 break; 07351 case 'z': 07352 fUseZeroCost ^= 1; 07353 break; 07354 case 'v': 07355 fVerbose ^= 1; 07356 break; 07357 case 'h': 07358 goto usage; 07359 default: 07360 goto usage; 07361 } 07362 } 07363 if ( pNtk == NULL ) 07364 { 07365 fprintf( pErr, "Empty network.\n" ); 07366 return 1; 07367 } 07368 if ( !Abc_NtkIsStrash(pNtk) ) 07369 { 07370 fprintf( pErr, "This command works only for strashed networks.\n" ); 07371 return 1; 07372 } 07373 07374 pNtkRes = Abc_NtkIvyRewriteSeq( pNtk, fUseZeroCost, fVerbose ); 07375 if ( pNtkRes == NULL ) 07376 { 07377 fprintf( pErr, "Command has failed.\n" ); 07378 return 0; 07379 } 07380 // replace the current network 07381 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07382 return 0; 07383 07384 usage: 07385 fprintf( pErr, "usage: irws [-zvh]\n" ); 07386 fprintf( pErr, "\t perform sequential AIG rewriting\n" ); 07387 // fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 07388 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeroCost? "yes": "no" ); 07389 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07390 fprintf( pErr, "\t-h : print the command usage\n"); 07391 return 1; 07392 }
int Abc_CommandISat | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 7477 of file abc.c.
07478 { 07479 FILE * pOut, * pErr; 07480 Abc_Ntk_t * pNtk, * pNtkRes; 07481 int c, fUpdateLevel, fVerbose; 07482 int nConfLimit; 07483 07484 extern Abc_Ntk_t * Abc_NtkIvySat( Abc_Ntk_t * pNtk, int nConfLimit, int fVerbose ); 07485 07486 pNtk = Abc_FrameReadNtk(pAbc); 07487 pOut = Abc_FrameReadOut(pAbc); 07488 pErr = Abc_FrameReadErr(pAbc); 07489 07490 // set defaults 07491 nConfLimit = 100000; 07492 fUpdateLevel = 1; 07493 fVerbose = 0; 07494 Extra_UtilGetoptReset(); 07495 while ( ( c = Extra_UtilGetopt( argc, argv, "Clzvh" ) ) != EOF ) 07496 { 07497 switch ( c ) 07498 { 07499 case 'C': 07500 if ( globalUtilOptind >= argc ) 07501 { 07502 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 07503 goto usage; 07504 } 07505 nConfLimit = atoi(argv[globalUtilOptind]); 07506 globalUtilOptind++; 07507 if ( nConfLimit < 0 ) 07508 goto usage; 07509 break; 07510 case 'l': 07511 fUpdateLevel ^= 1; 07512 break; 07513 case 'v': 07514 fVerbose ^= 1; 07515 break; 07516 case 'h': 07517 goto usage; 07518 default: 07519 goto usage; 07520 } 07521 } 07522 if ( pNtk == NULL ) 07523 { 07524 fprintf( pErr, "Empty network.\n" ); 07525 return 1; 07526 } 07527 if ( !Abc_NtkIsStrash(pNtk) ) 07528 { 07529 fprintf( pErr, "This command works only for strashed networks.\n" ); 07530 return 1; 07531 } 07532 07533 pNtkRes = Abc_NtkIvySat( pNtk, nConfLimit, fVerbose ); 07534 if ( pNtkRes == NULL ) 07535 { 07536 fprintf( pErr, "Command has failed.\n" ); 07537 return 0; 07538 } 07539 // replace the current network 07540 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 07541 return 0; 07542 07543 usage: 07544 fprintf( pErr, "usage: isat [-C num] [-vh]\n" ); 07545 fprintf( pErr, "\t tries to prove the miter constant 0\n" ); 07546 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 07547 // fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 07548 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 07549 fprintf( pErr, "\t-h : print the command usage\n"); 07550 return 1; 07551 }
int Abc_CommandIStrash | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6660 of file abc.c.
06661 { 06662 FILE * pOut, * pErr; 06663 Abc_Ntk_t * pNtk, * pNtkRes, * pNtkTemp; 06664 int c; 06665 extern Abc_Ntk_t * Abc_NtkIvyStrash( Abc_Ntk_t * pNtk ); 06666 06667 pNtk = Abc_FrameReadNtk(pAbc); 06668 pOut = Abc_FrameReadOut(pAbc); 06669 pErr = Abc_FrameReadErr(pAbc); 06670 06671 // set defaults 06672 Extra_UtilGetoptReset(); 06673 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 06674 { 06675 switch ( c ) 06676 { 06677 case 'h': 06678 goto usage; 06679 default: 06680 goto usage; 06681 } 06682 } 06683 if ( pNtk == NULL ) 06684 { 06685 fprintf( pErr, "Empty network.\n" ); 06686 return 1; 06687 } 06688 if ( !Abc_NtkIsStrash(pNtk) ) 06689 { 06690 pNtkTemp = Abc_NtkStrash( pNtk, 0, 1, 0 ); 06691 pNtkRes = Abc_NtkIvyStrash( pNtkTemp ); 06692 Abc_NtkDelete( pNtkTemp ); 06693 } 06694 else 06695 pNtkRes = Abc_NtkIvyStrash( pNtk ); 06696 if ( pNtkRes == NULL ) 06697 { 06698 fprintf( pErr, "Command has failed.\n" ); 06699 return 0; 06700 } 06701 // replace the current network 06702 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06703 return 0; 06704 06705 usage: 06706 fprintf( pErr, "usage: istrash [-h]\n" ); 06707 fprintf( pErr, "\t perform sequential structural hashing\n" ); 06708 fprintf( pErr, "\t-h : print the command usage\n"); 06709 return 1; 06710 }
int Abc_CommandLcorr | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11298 of file abc.c.
11299 { 11300 FILE * pOut, * pErr; 11301 Abc_Ntk_t * pNtk, * pNtkRes; 11302 int c; 11303 int nFramesP; 11304 int nConfMax; 11305 int fVerbose; 11306 extern Abc_Ntk_t * Abc_NtkDarLcorr( Abc_Ntk_t * pNtk, int nFramesP, int nConfMax, int fVerbose ); 11307 11308 pNtk = Abc_FrameReadNtk(pAbc); 11309 pOut = Abc_FrameReadOut(pAbc); 11310 pErr = Abc_FrameReadErr(pAbc); 11311 11312 // set defaults 11313 nFramesP = 0; 11314 nConfMax = 10000; 11315 fVerbose = 0; 11316 Extra_UtilGetoptReset(); 11317 while ( ( c = Extra_UtilGetopt( argc, argv, "PCvh" ) ) != EOF ) 11318 { 11319 switch ( c ) 11320 { 11321 case 'P': 11322 if ( globalUtilOptind >= argc ) 11323 { 11324 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 11325 goto usage; 11326 } 11327 nFramesP = atoi(argv[globalUtilOptind]); 11328 globalUtilOptind++; 11329 if ( nFramesP < 0 ) 11330 goto usage; 11331 break; 11332 case 'C': 11333 if ( globalUtilOptind >= argc ) 11334 { 11335 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 11336 goto usage; 11337 } 11338 nConfMax = atoi(argv[globalUtilOptind]); 11339 globalUtilOptind++; 11340 if ( nConfMax < 0 ) 11341 goto usage; 11342 break; 11343 case 'v': 11344 fVerbose ^= 1; 11345 break; 11346 case 'h': 11347 goto usage; 11348 default: 11349 goto usage; 11350 } 11351 } 11352 11353 if ( pNtk == NULL ) 11354 { 11355 fprintf( pErr, "Empty network.\n" ); 11356 return 1; 11357 } 11358 11359 if ( Abc_NtkIsComb(pNtk) ) 11360 { 11361 fprintf( pErr, "The network is combinational (run \"fraig\" or \"fraig_sweep\").\n" ); 11362 return 1; 11363 } 11364 11365 if ( !Abc_NtkIsStrash(pNtk) ) 11366 { 11367 printf( "This command works only for structrally hashed networks. Run \"st\".\n" ); 11368 return 0; 11369 } 11370 11371 // get the new network 11372 pNtkRes = Abc_NtkDarLcorr( pNtk, nFramesP, nConfMax, fVerbose ); 11373 if ( pNtkRes == NULL ) 11374 { 11375 fprintf( pErr, "Sequential sweeping has failed.\n" ); 11376 return 1; 11377 } 11378 // replace the current network 11379 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 11380 return 0; 11381 11382 usage: 11383 fprintf( pErr, "usage: lcorr [-P num] [-C num] [-vh]\n" ); 11384 fprintf( pErr, "\t computes latch correspondence using 1-step induction\n" ); 11385 fprintf( pErr, "\t-P num : number of time frames to use as the prefix [default = %d]\n", nFramesP ); 11386 fprintf( pErr, "\t-C num : max conflict number when proving latch equivalence [default = %d]\n", nConfMax ); 11387 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11388 fprintf( pErr, "\t-h : print the command usage\n"); 11389 return 1; 11390 }
int Abc_CommandLogic | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3802 of file abc.c.
03803 { 03804 FILE * pOut, * pErr; 03805 Abc_Ntk_t * pNtk, * pNtkRes; 03806 int c; 03807 03808 pNtk = Abc_FrameReadNtk(pAbc); 03809 pOut = Abc_FrameReadOut(pAbc); 03810 pErr = Abc_FrameReadErr(pAbc); 03811 03812 // set defaults 03813 Extra_UtilGetoptReset(); 03814 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 03815 { 03816 switch ( c ) 03817 { 03818 case 'h': 03819 goto usage; 03820 default: 03821 goto usage; 03822 } 03823 } 03824 03825 if ( pNtk == NULL ) 03826 { 03827 fprintf( pErr, "Empty network.\n" ); 03828 return 1; 03829 } 03830 03831 if ( !Abc_NtkIsStrash( pNtk ) ) 03832 { 03833 fprintf( pErr, "This command is only applicable to strashed networks.\n" ); 03834 return 1; 03835 } 03836 03837 // get the new network 03838 pNtkRes = Abc_NtkToLogic( pNtk ); 03839 if ( pNtkRes == NULL ) 03840 { 03841 fprintf( pErr, "Converting to a logic network has failed.\n" ); 03842 return 1; 03843 } 03844 // replace the current network 03845 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 03846 return 0; 03847 03848 usage: 03849 fprintf( pErr, "usage: logic [-h]\n" ); 03850 fprintf( pErr, "\t transforms an AIG into a logic network with SOPs\n" ); 03851 fprintf( pErr, "\t-h : print the command usage\n"); 03852 return 1; 03853 }
int Abc_CommandLutpack | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2973 of file abc.c.
02974 { 02975 FILE * pOut, * pErr; 02976 Abc_Ntk_t * pNtk; 02977 Lpk_Par_t Pars, * pPars = &Pars; 02978 int c; 02979 02980 pNtk = Abc_FrameReadNtk(pAbc); 02981 pOut = Abc_FrameReadOut(pAbc); 02982 pErr = Abc_FrameReadErr(pAbc); 02983 02984 // set defaults 02985 memset( pPars, 0, sizeof(Lpk_Par_t) ); 02986 pPars->nLutsMax = 4; // (N) the maximum number of LUTs in the structure 02987 pPars->nLutsOver = 3; // (Q) the maximum number of LUTs not in the MFFC 02988 pPars->nVarsShared = 0; // (S) the maximum number of shared variables (crossbars) 02989 pPars->nGrowthLevel = 0; // (L) the maximum number of increased levels 02990 pPars->fSatur = 1; 02991 pPars->fZeroCost = 0; 02992 pPars->fFirst = 0; 02993 pPars->fOldAlgo = 0; 02994 pPars->fVerbose = 0; 02995 pPars->fVeryVerbose = 0; 02996 Extra_UtilGetoptReset(); 02997 while ( ( c = Extra_UtilGetopt( argc, argv, "NQSLszfovwh" ) ) != EOF ) 02998 { 02999 switch ( c ) 03000 { 03001 case 'N': 03002 if ( globalUtilOptind >= argc ) 03003 { 03004 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 03005 goto usage; 03006 } 03007 pPars->nLutsMax = atoi(argv[globalUtilOptind]); 03008 globalUtilOptind++; 03009 if ( pPars->nLutsMax < 2 || pPars->nLutsMax > 8 ) 03010 goto usage; 03011 break; 03012 case 'Q': 03013 if ( globalUtilOptind >= argc ) 03014 { 03015 fprintf( pErr, "Command line switch \"-Q\" should be followed by an integer.\n" ); 03016 goto usage; 03017 } 03018 pPars->nLutsOver = atoi(argv[globalUtilOptind]); 03019 globalUtilOptind++; 03020 if ( pPars->nLutsOver < 0 || pPars->nLutsOver > 8 ) 03021 goto usage; 03022 break; 03023 case 'S': 03024 if ( globalUtilOptind >= argc ) 03025 { 03026 fprintf( pErr, "Command line switch \"-S\" should be followed by an integer.\n" ); 03027 goto usage; 03028 } 03029 pPars->nVarsShared = atoi(argv[globalUtilOptind]); 03030 globalUtilOptind++; 03031 if ( pPars->nVarsShared < 0 || pPars->nVarsShared > 4 ) 03032 goto usage; 03033 break; 03034 case 'L': 03035 if ( globalUtilOptind >= argc ) 03036 { 03037 fprintf( pErr, "Command line switch \"-L\" should be followed by an integer.\n" ); 03038 goto usage; 03039 } 03040 pPars->nGrowthLevel = atoi(argv[globalUtilOptind]); 03041 globalUtilOptind++; 03042 if ( pPars->nGrowthLevel < 0 || pPars->nGrowthLevel > ABC_INFINITY ) 03043 goto usage; 03044 break; 03045 case 's': 03046 pPars->fSatur ^= 1; 03047 break; 03048 case 'z': 03049 pPars->fZeroCost ^= 1; 03050 break; 03051 case 'f': 03052 pPars->fFirst ^= 1; 03053 break; 03054 case 'o': 03055 pPars->fOldAlgo ^= 1; 03056 break; 03057 case 'v': 03058 pPars->fVerbose ^= 1; 03059 break; 03060 case 'w': 03061 pPars->fVeryVerbose ^= 1; 03062 break; 03063 case 'h': 03064 goto usage; 03065 default: 03066 goto usage; 03067 } 03068 } 03069 03070 if ( pNtk == NULL ) 03071 { 03072 fprintf( pErr, "Empty network.\n" ); 03073 return 1; 03074 } 03075 if ( !Abc_NtkIsLogic(pNtk) ) 03076 { 03077 fprintf( pErr, "This command can only be applied to a logic network.\n" ); 03078 return 1; 03079 } 03080 if ( pPars->nVarsShared < 0 || pPars->nVarsShared > 3 ) 03081 { 03082 fprintf( pErr, "The number of shared variables (%d) is not in the range 0 <= S <= 3.\n", pPars->nVarsShared ); 03083 return 1; 03084 } 03085 03086 // modify the current network 03087 if ( !Lpk_Resynthesize( pNtk, pPars ) ) 03088 { 03089 fprintf( pErr, "Resynthesis has failed.\n" ); 03090 return 1; 03091 } 03092 return 0; 03093 03094 usage: 03095 fprintf( pErr, "usage: lutpack [-N <num>] [-Q <num>] [-S <num>] [-L <num>] [-szfovwh]\n" ); 03096 fprintf( pErr, "\t performs \"rewriting\" for LUT networks\n" ); 03097 fprintf( pErr, "\t-N <num> : the max number of LUTs in the structure (2 <= num) [default = %d]\n", pPars->nLutsMax ); 03098 fprintf( pErr, "\t-Q <num> : the max number of LUTs not in MFFC (0 <= num) [default = %d]\n", pPars->nLutsOver ); 03099 fprintf( pErr, "\t-S <num> : the max number of LUT inputs shared (0 <= num <= 3) [default = %d]\n", pPars->nVarsShared ); 03100 fprintf( pErr, "\t-L <num> : max level increase after resynthesis (0 <= num) [default = %d]\n", pPars->nGrowthLevel ); 03101 fprintf( pErr, "\t-s : toggle iteration till saturation [default = %s]\n", pPars->fSatur? "yes": "no" ); 03102 fprintf( pErr, "\t-z : toggle zero-cost replacements [default = %s]\n", pPars->fZeroCost? "yes": "no" ); 03103 fprintf( pErr, "\t-f : toggle using only first node and first cut [default = %s]\n", pPars->fFirst? "yes": "no" ); 03104 fprintf( pErr, "\t-o : toggle using old implementation [default = %s]\n", pPars->fOldAlgo? "yes": "no" ); 03105 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", pPars->fVerbose? "yes": "no" ); 03106 fprintf( pErr, "\t-w : toggle detailed printout of decomposed functions [default = %s]\n", pPars->fVeryVerbose? "yes": "no" ); 03107 fprintf( pErr, "\t-h : print the command usage\n"); 03108 return 1; 03109 }
int Abc_CommandMap | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9306 of file abc.c.
09307 { 09308 FILE * pOut, * pErr; 09309 Abc_Ntk_t * pNtk, * pNtkRes; 09310 char Buffer[100]; 09311 double DelayTarget; 09312 int fRecovery; 09313 int fSweep; 09314 int fSwitching; 09315 int fVerbose; 09316 int c; 09317 extern Abc_Ntk_t * Abc_NtkMap( Abc_Ntk_t * pNtk, double DelayTarget, int fRecovery, int fSwitching, int fVerbose ); 09318 extern bool Abc_NtkFraigSweep( Abc_Ntk_t * pNtk, int fUseInv, int fExdc, int fVerbose, int fVeryVerbose ); 09319 09320 pNtk = Abc_FrameReadNtk(pAbc); 09321 pOut = Abc_FrameReadOut(pAbc); 09322 pErr = Abc_FrameReadErr(pAbc); 09323 09324 // set defaults 09325 DelayTarget =-1; 09326 fRecovery = 1; 09327 fSweep = 1; 09328 fSwitching = 0; 09329 fVerbose = 0; 09330 Extra_UtilGetoptReset(); 09331 while ( ( c = Extra_UtilGetopt( argc, argv, "Daspvh" ) ) != EOF ) 09332 { 09333 switch ( c ) 09334 { 09335 case 'D': 09336 if ( globalUtilOptind >= argc ) 09337 { 09338 fprintf( pErr, "Command line switch \"-D\" should be followed by a floating point number.\n" ); 09339 goto usage; 09340 } 09341 DelayTarget = (float)atof(argv[globalUtilOptind]); 09342 globalUtilOptind++; 09343 if ( DelayTarget <= 0.0 ) 09344 goto usage; 09345 break; 09346 case 'a': 09347 fRecovery ^= 1; 09348 break; 09349 case 's': 09350 fSweep ^= 1; 09351 break; 09352 case 'p': 09353 fSwitching ^= 1; 09354 break; 09355 case 'v': 09356 fVerbose ^= 1; 09357 break; 09358 case 'h': 09359 goto usage; 09360 default: 09361 goto usage; 09362 } 09363 } 09364 09365 if ( pNtk == NULL ) 09366 { 09367 fprintf( pErr, "Empty network.\n" ); 09368 return 1; 09369 } 09370 09371 if ( !Abc_NtkIsStrash(pNtk) ) 09372 { 09373 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 09374 if ( pNtk == NULL ) 09375 { 09376 fprintf( pErr, "Strashing before mapping has failed.\n" ); 09377 return 1; 09378 } 09379 pNtk = Abc_NtkBalance( pNtkRes = pNtk, 0, 0, 1 ); 09380 Abc_NtkDelete( pNtkRes ); 09381 if ( pNtk == NULL ) 09382 { 09383 fprintf( pErr, "Balancing before mapping has failed.\n" ); 09384 return 1; 09385 } 09386 fprintf( pOut, "The network was strashed and balanced before mapping.\n" ); 09387 // get the new network 09388 pNtkRes = Abc_NtkMap( pNtk, DelayTarget, fRecovery, fSwitching, fVerbose ); 09389 if ( pNtkRes == NULL ) 09390 { 09391 Abc_NtkDelete( pNtk ); 09392 fprintf( pErr, "Mapping has failed.\n" ); 09393 return 1; 09394 } 09395 Abc_NtkDelete( pNtk ); 09396 } 09397 else 09398 { 09399 // get the new network 09400 pNtkRes = Abc_NtkMap( pNtk, DelayTarget, fRecovery, fSwitching, fVerbose ); 09401 if ( pNtkRes == NULL ) 09402 { 09403 fprintf( pErr, "Mapping has failed.\n" ); 09404 return 1; 09405 } 09406 } 09407 09408 if ( fSweep ) 09409 Abc_NtkFraigSweep( pNtkRes, 0, 0, 0, 0 ); 09410 09411 // replace the current network 09412 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 09413 return 0; 09414 09415 usage: 09416 if ( DelayTarget == -1 ) 09417 sprintf( Buffer, "not used" ); 09418 else 09419 sprintf( Buffer, "%.3f", DelayTarget ); 09420 fprintf( pErr, "usage: map [-D float] [-aspvh]\n" ); 09421 fprintf( pErr, "\t performs standard cell mapping of the current network\n" ); 09422 fprintf( pErr, "\t-D float : sets the global required times [default = %s]\n", Buffer ); 09423 fprintf( pErr, "\t-a : toggles area recovery [default = %s]\n", fRecovery? "yes": "no" ); 09424 fprintf( pErr, "\t-s : toggles sweep after mapping [default = %s]\n", fSweep? "yes": "no" ); 09425 fprintf( pErr, "\t-p : optimizes power by minimizing switching [default = %s]\n", fSwitching? "yes": "no" ); 09426 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 09427 fprintf( pErr, "\t-h : print the command usage\n"); 09428 return 1; 09429 }
int Abc_CommandMini | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8039 of file abc.c.
08040 { 08041 FILE * pOut, * pErr; 08042 Abc_Ntk_t * pNtk, * pNtkRes; 08043 int c; 08044 extern Abc_Ntk_t * Abc_NtkMiniBalance( Abc_Ntk_t * pNtk ); 08045 08046 pNtk = Abc_FrameReadNtk(pAbc); 08047 pOut = Abc_FrameReadOut(pAbc); 08048 pErr = Abc_FrameReadErr(pAbc); 08049 08050 // set defaults 08051 Extra_UtilGetoptReset(); 08052 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 08053 { 08054 switch ( c ) 08055 { 08056 case 'h': 08057 goto usage; 08058 default: 08059 goto usage; 08060 } 08061 } 08062 if ( pNtk == NULL ) 08063 { 08064 fprintf( pErr, "Empty network.\n" ); 08065 return 1; 08066 } 08067 if ( !Abc_NtkIsStrash(pNtk) ) 08068 { 08069 fprintf( pErr, "Only works for combinatinally strashed AIG networks.\n" ); 08070 return 1; 08071 } 08072 08073 pNtkRes = Abc_NtkMiniBalance( pNtk ); 08074 if ( pNtkRes == NULL ) 08075 { 08076 fprintf( pErr, "Command has failed.\n" ); 08077 return 0; 08078 } 08079 // replace the current network 08080 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 08081 return 0; 08082 08083 usage: 08084 fprintf( pErr, "usage: mini [-h]\n" ); 08085 fprintf( pErr, "\t perform balancing using new package\n" ); 08086 fprintf( pErr, "\t-h : print the command usage\n"); 08087 return 1; 08088 }
int Abc_CommandMiter | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3925 of file abc.c.
03926 { 03927 char Buffer[32]; 03928 FILE * pOut, * pErr; 03929 Abc_Ntk_t * pNtk, * pNtk1, * pNtk2, * pNtkRes; 03930 int fDelete1, fDelete2; 03931 char ** pArgvNew; 03932 int nArgcNew; 03933 int c; 03934 int fCheck; 03935 int fComb; 03936 int nPartSize; 03937 03938 pNtk = Abc_FrameReadNtk(pAbc); 03939 pOut = Abc_FrameReadOut(pAbc); 03940 pErr = Abc_FrameReadErr(pAbc); 03941 03942 // set defaults 03943 fComb = 1; 03944 fCheck = 1; 03945 nPartSize = 0; 03946 Extra_UtilGetoptReset(); 03947 while ( ( c = Extra_UtilGetopt( argc, argv, "Pch" ) ) != EOF ) 03948 { 03949 switch ( c ) 03950 { 03951 case 'P': 03952 if ( globalUtilOptind >= argc ) 03953 { 03954 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 03955 goto usage; 03956 } 03957 nPartSize = atoi(argv[globalUtilOptind]); 03958 globalUtilOptind++; 03959 if ( nPartSize < 0 ) 03960 goto usage; 03961 break; 03962 case 'c': 03963 fComb ^= 1; 03964 break; 03965 default: 03966 goto usage; 03967 } 03968 } 03969 03970 pArgvNew = argv + globalUtilOptind; 03971 nArgcNew = argc - globalUtilOptind; 03972 if ( !Abc_NtkPrepareTwoNtks( pErr, pNtk, pArgvNew, nArgcNew, &pNtk1, &pNtk2, &fDelete1, &fDelete2 ) ) 03973 return 1; 03974 03975 // compute the miter 03976 pNtkRes = Abc_NtkMiter( pNtk1, pNtk2, fComb, nPartSize ); 03977 if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); 03978 if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); 03979 03980 // get the new network 03981 if ( pNtkRes == NULL ) 03982 { 03983 fprintf( pErr, "Miter computation has failed.\n" ); 03984 return 1; 03985 } 03986 // replace the current network 03987 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 03988 return 0; 03989 03990 usage: 03991 if ( nPartSize == 0 ) 03992 strcpy( Buffer, "unused" ); 03993 else 03994 sprintf( Buffer, "%d", nPartSize ); 03995 fprintf( pErr, "usage: miter [-P num] [-ch] <file1> <file2>\n" ); 03996 fprintf( pErr, "\t computes the miter of the two circuits\n" ); 03997 fprintf( pErr, "\t-P num : output partition size [default = %s]\n", Buffer ); 03998 fprintf( pErr, "\t-c : computes combinational miter (latches as POs) [default = %s]\n", fComb? "yes": "no" ); 03999 fprintf( pErr, "\t-h : print the command usage\n"); 04000 fprintf( pErr, "\tfile1 : (optional) the file with the first network\n"); 04001 fprintf( pErr, "\tfile2 : (optional) the file with the second network\n"); 04002 fprintf( pErr, "\t if no files are given, uses the current network and its spec\n"); 04003 fprintf( pErr, "\t if one file is given, uses the current network and the file\n"); 04004 return 1; 04005 }
int Abc_CommandMulti | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2180 of file abc.c.
02181 { 02182 FILE * pOut, * pErr; 02183 Abc_Ntk_t * pNtk, * pNtkRes; 02184 int nThresh, nFaninMax, c; 02185 int fCnf; 02186 int fMulti; 02187 int fSimple; 02188 int fFactor; 02189 extern Abc_Ntk_t * Abc_NtkMulti( Abc_Ntk_t * pNtk, int nThresh, int nFaninMax, int fCnf, int fMulti, int fSimple, int fFactor ); 02190 02191 pNtk = Abc_FrameReadNtk(pAbc); 02192 pOut = Abc_FrameReadOut(pAbc); 02193 pErr = Abc_FrameReadErr(pAbc); 02194 02195 // set defaults 02196 nThresh = 1; 02197 nFaninMax = 20; 02198 fCnf = 0; 02199 fMulti = 1; 02200 fSimple = 0; 02201 fFactor = 0; 02202 Extra_UtilGetoptReset(); 02203 while ( ( c = Extra_UtilGetopt( argc, argv, "TFmcsfh" ) ) != EOF ) 02204 { 02205 switch ( c ) 02206 { 02207 case 'T': 02208 if ( globalUtilOptind >= argc ) 02209 { 02210 fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" ); 02211 goto usage; 02212 } 02213 nThresh = atoi(argv[globalUtilOptind]); 02214 globalUtilOptind++; 02215 if ( nThresh < 0 ) 02216 goto usage; 02217 break; 02218 case 'F': 02219 if ( globalUtilOptind >= argc ) 02220 { 02221 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 02222 goto usage; 02223 } 02224 nFaninMax = atoi(argv[globalUtilOptind]); 02225 globalUtilOptind++; 02226 if ( nFaninMax < 0 ) 02227 goto usage; 02228 break; 02229 case 'c': 02230 fCnf ^= 1; 02231 break; 02232 case 'm': 02233 fMulti ^= 1; 02234 break; 02235 case 's': 02236 fSimple ^= 1; 02237 break; 02238 case 'f': 02239 fFactor ^= 1; 02240 break; 02241 case 'h': 02242 goto usage; 02243 default: 02244 goto usage; 02245 } 02246 } 02247 02248 if ( pNtk == NULL ) 02249 { 02250 fprintf( pErr, "Empty network.\n" ); 02251 return 1; 02252 } 02253 if ( !Abc_NtkIsStrash(pNtk) ) 02254 { 02255 fprintf( pErr, "Cannot renode a network that is not an AIG (run \"strash\").\n" ); 02256 return 1; 02257 } 02258 02259 // get the new network 02260 pNtkRes = Abc_NtkMulti( pNtk, nThresh, nFaninMax, fCnf, fMulti, fSimple, fFactor ); 02261 if ( pNtkRes == NULL ) 02262 { 02263 fprintf( pErr, "Renoding has failed.\n" ); 02264 return 1; 02265 } 02266 // replace the current network 02267 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 02268 return 0; 02269 02270 usage: 02271 fprintf( pErr, "usage: multi [-T num] [-F num] [-msfch]\n" ); 02272 fprintf( pErr, "\t transforms an AIG into a logic network by creating larger nodes\n" ); 02273 fprintf( pErr, "\t-F num : the maximum fanin size after renoding [default = %d]\n", nFaninMax ); 02274 fprintf( pErr, "\t-T num : the threshold for AIG node duplication [default = %d]\n", nThresh ); 02275 fprintf( pErr, "\t (an AIG node is the root of a new node after renoding\n" ); 02276 fprintf( pErr, "\t if this leads to duplication of no more than %d AIG nodes,\n", nThresh ); 02277 fprintf( pErr, "\t that is, if [(numFanouts(Node)-1) * size(MFFC(Node))] <= %d)\n", nThresh ); 02278 fprintf( pErr, "\t-m : creates multi-input AND graph [default = %s]\n", fMulti? "yes": "no" ); 02279 fprintf( pErr, "\t-s : creates a simple AIG (no renoding) [default = %s]\n", fSimple? "yes": "no" ); 02280 fprintf( pErr, "\t-f : creates a factor-cut network [default = %s]\n", fFactor? "yes": "no" ); 02281 fprintf( pErr, "\t-c : performs renoding to derive the CNF [default = %s]\n", fCnf? "yes": "no" ); 02282 fprintf( pErr, "\t-h : print the command usage\n"); 02283 return 1; 02284 }
int Abc_CommandMuxes | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4747 of file abc.c.
04748 { 04749 FILE * pOut, * pErr; 04750 Abc_Ntk_t * pNtk, * pNtkRes; 04751 int c; 04752 04753 pNtk = Abc_FrameReadNtk(pAbc); 04754 pOut = Abc_FrameReadOut(pAbc); 04755 pErr = Abc_FrameReadErr(pAbc); 04756 04757 // set defaults 04758 Extra_UtilGetoptReset(); 04759 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 04760 { 04761 switch ( c ) 04762 { 04763 case 'h': 04764 goto usage; 04765 default: 04766 goto usage; 04767 } 04768 } 04769 04770 if ( pNtk == NULL ) 04771 { 04772 fprintf( pErr, "Empty network.\n" ); 04773 return 1; 04774 } 04775 04776 if ( !Abc_NtkIsBddLogic(pNtk) ) 04777 { 04778 fprintf( pErr, "Only a BDD logic network can be converted to MUXes.\n" ); 04779 return 1; 04780 } 04781 04782 // get the new network 04783 pNtkRes = Abc_NtkBddToMuxes( pNtk ); 04784 if ( pNtkRes == NULL ) 04785 { 04786 fprintf( pErr, "Converting to MUXes has failed.\n" ); 04787 return 1; 04788 } 04789 // replace the current network 04790 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04791 return 0; 04792 04793 usage: 04794 fprintf( pErr, "usage: muxes [-h]\n" ); 04795 fprintf( pErr, "\t converts the current network by a network derived by\n" ); 04796 fprintf( pErr, "\t replacing all nodes by DAGs isomorphic to the local BDDs\n" ); 04797 fprintf( pErr, "\t-h : print the command usage\n"); 04798 return 1; 04799 }
int Abc_CommandNode | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5012 of file abc.c.
05013 { 05014 FILE * pOut, * pErr; 05015 Abc_Ntk_t * pNtk, * pNtkRes; 05016 Abc_Obj_t * pNode; 05017 int c; 05018 05019 pNtk = Abc_FrameReadNtk(pAbc); 05020 pOut = Abc_FrameReadOut(pAbc); 05021 pErr = Abc_FrameReadErr(pAbc); 05022 05023 // set defaults 05024 Extra_UtilGetoptReset(); 05025 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 05026 { 05027 switch ( c ) 05028 { 05029 case 'h': 05030 goto usage; 05031 default: 05032 goto usage; 05033 } 05034 } 05035 05036 if ( pNtk == NULL ) 05037 { 05038 fprintf( pErr, "Empty network.\n" ); 05039 return 1; 05040 } 05041 05042 if ( !Abc_NtkIsLogic(pNtk) ) 05043 { 05044 fprintf( pErr, "Currently can only be applied to a logic network.\n" ); 05045 return 1; 05046 } 05047 05048 if ( argc != globalUtilOptind + 1 ) 05049 { 05050 fprintf( pErr, "Wrong number of auguments.\n" ); 05051 goto usage; 05052 } 05053 05054 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 05055 if ( pNode == NULL ) 05056 { 05057 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 05058 return 1; 05059 } 05060 05061 pNtkRes = Abc_NtkCreateFromNode( pNtk, pNode ); 05062 // pNtkRes = Abc_NtkDeriveFromBdd( pNtk->pManFunc, pNode->pData, NULL, NULL ); 05063 if ( pNtkRes == NULL ) 05064 { 05065 fprintf( pErr, "Splitting one node has failed.\n" ); 05066 return 1; 05067 } 05068 // replace the current network 05069 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05070 return 0; 05071 05072 usage: 05073 fprintf( pErr, "usage: node [-h] <name>\n" ); 05074 fprintf( pErr, "\t replaces the current network by the network composed of one node\n" ); 05075 fprintf( pErr, "\t-h : print the command usage\n"); 05076 fprintf( pErr, "\tname : the node name\n"); 05077 return 1; 05078 }
int Abc_CommandOrder | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4660 of file abc.c.
04661 { 04662 FILE * pOut, * pErr, * pFile; 04663 Abc_Ntk_t * pNtk; 04664 char * pFileName; 04665 int c; 04666 int fReverse; 04667 int fVerbose; 04668 extern void Abc_NtkImplementCiOrder( Abc_Ntk_t * pNtk, char * pFileName, int fReverse, int fVerbose ); 04669 extern void Abc_NtkFindCiOrder( Abc_Ntk_t * pNtk, int fReverse, int fVerbose ); 04670 04671 pNtk = Abc_FrameReadNtk(pAbc); 04672 pOut = Abc_FrameReadOut(pAbc); 04673 pErr = Abc_FrameReadErr(pAbc); 04674 04675 // set defaults 04676 fReverse = 0; 04677 fVerbose = 0; 04678 Extra_UtilGetoptReset(); 04679 while ( ( c = Extra_UtilGetopt( argc, argv, "rvh" ) ) != EOF ) 04680 { 04681 switch ( c ) 04682 { 04683 case 'r': 04684 fReverse ^= 1; 04685 break; 04686 case 'v': 04687 fVerbose ^= 1; 04688 break; 04689 case 'h': 04690 goto usage; 04691 default: 04692 goto usage; 04693 } 04694 } 04695 04696 if ( pNtk == NULL ) 04697 { 04698 fprintf( pErr, "Empty network.\n" ); 04699 return 1; 04700 } 04701 // if ( Abc_NtkLatchNum(pNtk) > 0 ) 04702 // { 04703 // printf( "Currently this procedure does not work for sequential networks.\n" ); 04704 // return 1; 04705 // } 04706 04707 // if the var order file is given, implement this order 04708 pFileName = NULL; 04709 if ( argc == globalUtilOptind + 1 ) 04710 { 04711 pFileName = argv[globalUtilOptind]; 04712 pFile = fopen( pFileName, "r" ); 04713 if ( pFile == NULL ) 04714 { 04715 fprintf( pErr, "Cannot open file \"%s\" with the BDD variable order.\n", pFileName ); 04716 return 1; 04717 } 04718 fclose( pFile ); 04719 } 04720 if ( pFileName ) 04721 Abc_NtkImplementCiOrder( pNtk, pFileName, fReverse, fVerbose ); 04722 else 04723 Abc_NtkFindCiOrder( pNtk, fReverse, fVerbose ); 04724 return 0; 04725 04726 usage: 04727 fprintf( pErr, "usage: order [-rvh] <file>\n" ); 04728 fprintf( pErr, "\t computes a good static CI variable order\n" ); 04729 fprintf( pErr, "\t-r : toggle reverse ordering [default = %s]\n", fReverse? "yes": "no" ); 04730 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 04731 fprintf( pErr, "\t-h : print the command usage\n"); 04732 fprintf( pErr, "\t<file> : (optional) file with the given variable order\n" ); 04733 return 1; 04734 }
int Abc_CommandOrPos | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4091 of file abc.c.
04092 { 04093 FILE * pOut, * pErr; 04094 Abc_Ntk_t * pNtk;//, * pNtkRes; 04095 int fComb; 04096 int c; 04097 extern int Abc_NtkCombinePos( Abc_Ntk_t * pNtk, int fAnd ); 04098 04099 pNtk = Abc_FrameReadNtk(pAbc); 04100 pOut = Abc_FrameReadOut(pAbc); 04101 pErr = Abc_FrameReadErr(pAbc); 04102 04103 // set defaults 04104 Extra_UtilGetoptReset(); 04105 while ( ( c = Extra_UtilGetopt( argc, argv, "ch" ) ) != EOF ) 04106 { 04107 switch ( c ) 04108 { 04109 case 'c': 04110 fComb ^= 1; 04111 break; 04112 default: 04113 goto usage; 04114 } 04115 } 04116 04117 if ( !Abc_NtkIsStrash(pNtk) ) 04118 { 04119 fprintf( pErr, "The network is not strashed.\n" ); 04120 return 1; 04121 } 04122 /* 04123 if ( Abc_NtkPoNum(pNtk) == 1 ) 04124 { 04125 fprintf( pErr, "The network already has one PO.\n" ); 04126 return 1; 04127 } 04128 */ 04129 /* 04130 if ( Abc_NtkLatchNum(pNtk) ) 04131 { 04132 fprintf( pErr, "The miter has latches. ORing is not performed.\n" ); 04133 return 1; 04134 } 04135 */ 04136 // get the new network 04137 if ( !Abc_NtkCombinePos( pNtk, 0 ) ) 04138 { 04139 fprintf( pErr, "ORing the POs has failed.\n" ); 04140 return 1; 04141 } 04142 // replace the current network 04143 // Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 04144 return 0; 04145 04146 usage: 04147 fprintf( pErr, "usage: orpos [-h]\n" ); 04148 fprintf( pErr, "\t creates single-output miter by ORing the POs of the current network\n" ); 04149 // fprintf( pErr, "\t-c : computes combinational miter (latches as POs) [default = %s]\n", fComb? "yes": "no" ); 04150 fprintf( pErr, "\t-h : print the command usage\n"); 04151 return 1; 04152 }
int Abc_CommandPipe | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10534 of file abc.c.
10535 { 10536 FILE * pOut, * pErr; 10537 Abc_Ntk_t * pNtk; 10538 int c; 10539 int nLatches; 10540 extern void Abc_NtkLatchPipe( Abc_Ntk_t * pNtk, int nLatches ); 10541 10542 pNtk = Abc_FrameReadNtk(pAbc); 10543 pOut = Abc_FrameReadOut(pAbc); 10544 pErr = Abc_FrameReadErr(pAbc); 10545 10546 // set defaults 10547 nLatches = 5; 10548 Extra_UtilGetoptReset(); 10549 while ( ( c = Extra_UtilGetopt( argc, argv, "Lh" ) ) != EOF ) 10550 { 10551 switch ( c ) 10552 { 10553 case 'L': 10554 if ( globalUtilOptind >= argc ) 10555 { 10556 fprintf( pErr, "Command line switch \"-L\" should be followed by a positive integer.\n" ); 10557 goto usage; 10558 } 10559 nLatches = atoi(argv[globalUtilOptind]); 10560 globalUtilOptind++; 10561 if ( nLatches < 0 ) 10562 goto usage; 10563 break; 10564 case 'h': 10565 goto usage; 10566 default: 10567 goto usage; 10568 } 10569 } 10570 10571 if ( pNtk == NULL ) 10572 { 10573 fprintf( pErr, "Empty network.\n" ); 10574 return 1; 10575 } 10576 10577 if ( Abc_NtkIsComb(pNtk) ) 10578 { 10579 fprintf( pErr, "The current network is combinational.\n" ); 10580 return 1; 10581 } 10582 10583 // update the network 10584 Abc_NtkLatchPipe( pNtk, nLatches ); 10585 return 0; 10586 10587 usage: 10588 fprintf( pErr, "usage: pipe [-L num] [-h]\n" ); 10589 fprintf( pErr, "\t inserts the given number of latches at each PI for pipelining\n" ); 10590 fprintf( pErr, "\t-L num : the number of latches to insert [default = %d]\n", nLatches ); 10591 fprintf( pErr, "\t-h : print the command usage\n"); 10592 return 1; 10593 }
int Abc_CommandPrintAuto | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1196 of file abc.c.
01197 { 01198 FILE * pOut, * pErr; 01199 Abc_Ntk_t * pNtk; 01200 int c; 01201 int Output; 01202 int fNaive; 01203 int fVerbose; 01204 extern void Abc_NtkAutoPrint( Abc_Ntk_t * pNtk, int Output, int fNaive, int fVerbose ); 01205 01206 pNtk = Abc_FrameReadNtk(pAbc); 01207 pOut = Abc_FrameReadOut(pAbc); 01208 pErr = Abc_FrameReadErr(pAbc); 01209 01210 // set defaults 01211 Output = -1; 01212 fNaive = 0; 01213 fVerbose = 0; 01214 Extra_UtilGetoptReset(); 01215 while ( ( c = Extra_UtilGetopt( argc, argv, "Onvh" ) ) != EOF ) 01216 { 01217 switch ( c ) 01218 { 01219 case 'O': 01220 if ( globalUtilOptind >= argc ) 01221 { 01222 fprintf( pErr, "Command line switch \"-O\" should be followed by an integer.\n" ); 01223 goto usage; 01224 } 01225 Output = atoi(argv[globalUtilOptind]); 01226 globalUtilOptind++; 01227 if ( Output < 0 ) 01228 goto usage; 01229 break; 01230 case 'n': 01231 fNaive ^= 1; 01232 break; 01233 case 'v': 01234 fVerbose ^= 1; 01235 break; 01236 case 'h': 01237 goto usage; 01238 default: 01239 goto usage; 01240 } 01241 } 01242 if ( pNtk == NULL ) 01243 { 01244 fprintf( pErr, "Empty network.\n" ); 01245 return 1; 01246 } 01247 if ( !Abc_NtkIsStrash(pNtk) ) 01248 { 01249 fprintf( pErr, "This command works only for AIGs (run \"strash\").\n" ); 01250 return 1; 01251 } 01252 01253 01254 Abc_NtkAutoPrint( pNtk, Output, fNaive, fVerbose ); 01255 return 0; 01256 01257 usage: 01258 fprintf( pErr, "usage: print_auto [-O num] [-nvh]\n" ); 01259 fprintf( pErr, "\t computes autosymmetries of the PO functions\n" ); 01260 fprintf( pErr, "\t-O num : (optional) the 0-based number of the output [default = all]\n"); 01261 fprintf( pErr, "\t-n : enable naive BDD-based computation [default = %s].\n", fNaive? "yes": "no" ); 01262 fprintf( pErr, "\t-v : enable verbose output [default = %s].\n", fVerbose? "yes": "no" ); 01263 fprintf( pErr, "\t-h : print the command usage\n"); 01264 return 1; 01265 }
int Abc_CommandPrintDsd | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1544 of file abc.c.
01545 { 01546 FILE * pOut, * pErr; 01547 Abc_Ntk_t * pNtk; 01548 int c; 01549 int fCofactor; 01550 int nCofLevel; 01551 01552 extern void Kit_DsdTest( unsigned * pTruth, int nVars ); 01553 extern void Kit_DsdPrintCofactors( unsigned * pTruth, int nVars, int nCofLevel, int fVerbose ); 01554 01555 pNtk = Abc_FrameReadNtk(pAbc); 01556 pOut = Abc_FrameReadOut(pAbc); 01557 pErr = Abc_FrameReadErr(pAbc); 01558 01559 // set defaults 01560 nCofLevel = 1; 01561 fCofactor = 0; 01562 Extra_UtilGetoptReset(); 01563 while ( ( c = Extra_UtilGetopt( argc, argv, "Nch" ) ) != EOF ) 01564 { 01565 switch ( c ) 01566 { 01567 case 'N': 01568 if ( globalUtilOptind >= argc ) 01569 { 01570 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 01571 goto usage; 01572 } 01573 nCofLevel = atoi(argv[globalUtilOptind]); 01574 globalUtilOptind++; 01575 if ( nCofLevel < 0 ) 01576 goto usage; 01577 break; 01578 case 'c': 01579 fCofactor ^= 1; 01580 break; 01581 case 'h': 01582 goto usage; 01583 default: 01584 goto usage; 01585 } 01586 } 01587 01588 if ( pNtk == NULL ) 01589 { 01590 fprintf( pErr, "Empty network.\n" ); 01591 return 1; 01592 } 01593 // get the truth table of the first output 01594 if ( !Abc_NtkIsLogic(pNtk) ) 01595 { 01596 fprintf( pErr, "Currently works only for logic networks.\n" ); 01597 return 1; 01598 } 01599 Abc_NtkToAig( pNtk ); 01600 // convert it to truth table 01601 { 01602 Abc_Obj_t * pObj = Abc_ObjFanin0( Abc_NtkPo(pNtk, 0) ); 01603 Vec_Int_t * vMemory = Vec_IntAlloc(0); 01604 unsigned * pTruth; 01605 if ( !Abc_ObjIsNode(pObj) ) 01606 { 01607 fprintf( pErr, "The fanin of the first PO node does not have a logic function.\n" ); 01608 return 1; 01609 } 01610 if ( Abc_ObjFaninNum(pObj) > 16 ) 01611 { 01612 fprintf( pErr, "Currently works only for up to 16 inputs.\n" ); 01613 return 1; 01614 } 01615 pTruth = Abc_ConvertAigToTruth( pNtk->pManFunc, Hop_Regular(pObj->pData), Abc_ObjFaninNum(pObj), vMemory, 0 ); 01616 if ( Hop_IsComplement(pObj->pData) ) 01617 Extra_TruthNot( pTruth, pTruth, Abc_ObjFaninNum(pObj) ); 01618 Extra_PrintBinary( stdout, pTruth, 1 << Abc_ObjFaninNum(pObj) ); 01619 printf( "\n" ); 01620 if ( fCofactor ) 01621 Kit_DsdPrintCofactors( pTruth, Abc_ObjFaninNum(pObj), nCofLevel, 1 ); 01622 else 01623 Kit_DsdTest( pTruth, Abc_ObjFaninNum(pObj) ); 01624 Vec_IntFree( vMemory ); 01625 } 01626 return 0; 01627 01628 usage: 01629 fprintf( pErr, "usage: print_dsd [-ch] [-N num]\n" ); 01630 fprintf( pErr, "\t print DSD formula for a single-output function with less than 16 variables\n" ); 01631 fprintf( pErr, "\t-c : toggle recursive cofactoring [default = %s]\n", fCofactor? "yes": "no" ); 01632 fprintf( pErr, "\t-N num : the number of levels to cofactor [default = %d]\n", nCofLevel ); 01633 fprintf( pErr, "\t-h : print the command usage\n"); 01634 return 1; 01635 }
int Abc_CommandPrintExdc | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 470 of file abc.c.
00471 { 00472 FILE * pOut, * pErr; 00473 Abc_Ntk_t * pNtk, * pNtkTemp; 00474 double Percentage; 00475 bool fShort; 00476 int c; 00477 int fPrintDc; 00478 00479 extern double Abc_NtkSpacePercentage( Abc_Obj_t * pNode ); 00480 00481 pNtk = Abc_FrameReadNtk(pAbc); 00482 pOut = Abc_FrameReadOut(pAbc); 00483 pErr = Abc_FrameReadErr(pAbc); 00484 00485 // set the defaults 00486 fShort = 1; 00487 fPrintDc = 0; 00488 Extra_UtilGetoptReset(); 00489 while ( ( c = Extra_UtilGetopt( argc, argv, "sdh" ) ) != EOF ) 00490 { 00491 switch ( c ) 00492 { 00493 case 's': 00494 fShort ^= 1; 00495 break; 00496 case 'd': 00497 fPrintDc ^= 1; 00498 break; 00499 case 'h': 00500 goto usage; 00501 default: 00502 goto usage; 00503 } 00504 } 00505 00506 if ( pNtk == NULL ) 00507 { 00508 fprintf( Abc_FrameReadErr(pAbc), "Empty network.\n" ); 00509 return 1; 00510 } 00511 if ( pNtk->pExdc == NULL ) 00512 { 00513 fprintf( Abc_FrameReadErr(pAbc), "Network has no EXDC.\n" ); 00514 return 1; 00515 } 00516 00517 if ( fPrintDc ) 00518 { 00519 if ( !Abc_NtkIsStrash(pNtk->pExdc) ) 00520 { 00521 pNtkTemp = Abc_NtkStrash(pNtk->pExdc, 0, 0, 0); 00522 Percentage = Abc_NtkSpacePercentage( Abc_ObjChild0( Abc_NtkPo(pNtkTemp, 0) ) ); 00523 Abc_NtkDelete( pNtkTemp ); 00524 } 00525 else 00526 Percentage = Abc_NtkSpacePercentage( Abc_ObjChild0( Abc_NtkPo(pNtk->pExdc, 0) ) ); 00527 00528 printf( "EXDC network statistics: " ); 00529 printf( "(" ); 00530 if ( Percentage > 0.05 && Percentage < 99.95 ) 00531 printf( "%.2f", Percentage ); 00532 else if ( Percentage > 0.000005 && Percentage < 99.999995 ) 00533 printf( "%.6f", Percentage ); 00534 else 00535 printf( "%f", Percentage ); 00536 printf( " %% don't-cares)\n" ); 00537 } 00538 else 00539 printf( "EXDC network statistics: \n" ); 00540 Abc_NtkPrintStats( pOut, pNtk->pExdc, 0 ); 00541 return 0; 00542 00543 usage: 00544 fprintf( pErr, "usage: print_exdc [-dh]\n" ); 00545 fprintf( pErr, "\t prints the EXDC network statistics\n" ); 00546 fprintf( pErr, "\t-d : toggles printing don't-care percentage [default = %s]\n", fPrintDc? "yes": "no" ); 00547 fprintf( pErr, "\t-h : print the command usage\n"); 00548 return 1; 00549 }
int Abc_CommandPrintFactor | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 785 of file abc.c.
00786 { 00787 FILE * pOut, * pErr; 00788 Abc_Ntk_t * pNtk; 00789 Abc_Obj_t * pNode; 00790 int c; 00791 int fUseRealNames; 00792 00793 pNtk = Abc_FrameReadNtk(pAbc); 00794 pOut = Abc_FrameReadOut(pAbc); 00795 pErr = Abc_FrameReadErr(pAbc); 00796 00797 // set defaults 00798 fUseRealNames = 1; 00799 Extra_UtilGetoptReset(); 00800 while ( ( c = Extra_UtilGetopt( argc, argv, "nh" ) ) != EOF ) 00801 { 00802 switch ( c ) 00803 { 00804 case 'n': 00805 fUseRealNames ^= 1; 00806 break; 00807 case 'h': 00808 goto usage; 00809 default: 00810 goto usage; 00811 } 00812 } 00813 00814 if ( pNtk == NULL ) 00815 { 00816 fprintf( pErr, "Empty network.\n" ); 00817 return 1; 00818 } 00819 00820 if ( !Abc_NtkIsSopLogic(pNtk) ) 00821 { 00822 fprintf( pErr, "Printing factored forms can be done for SOP networks.\n" ); 00823 return 1; 00824 } 00825 00826 if ( argc > globalUtilOptind + 1 ) 00827 { 00828 fprintf( pErr, "Wrong number of auguments.\n" ); 00829 goto usage; 00830 } 00831 00832 if ( argc == globalUtilOptind + 1 ) 00833 { 00834 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 00835 if ( pNode == NULL ) 00836 { 00837 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 00838 return 1; 00839 } 00840 Abc_NodePrintFactor( pOut, pNode, fUseRealNames ); 00841 return 0; 00842 } 00843 // print the nodes 00844 Abc_NtkPrintFactor( pOut, pNtk, fUseRealNames ); 00845 return 0; 00846 00847 usage: 00848 fprintf( pErr, "usage: print_factor [-nh] <node>\n" ); 00849 fprintf( pErr, "\t prints the factored forms of nodes\n" ); 00850 fprintf( pErr, "\t-n : toggles real/dummy fanin names [default = %s]\n", fUseRealNames? "real": "dummy" ); 00851 fprintf( pErr, "\t-h : print the command usage\n"); 00852 fprintf( pErr, "\tnode : (optional) one node to consider\n"); 00853 return 1; 00854 }
int Abc_CommandPrintFanio | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 682 of file abc.c.
00683 { 00684 FILE * pOut, * pErr; 00685 Abc_Ntk_t * pNtk; 00686 int c; 00687 00688 pNtk = Abc_FrameReadNtk(pAbc); 00689 pOut = Abc_FrameReadOut(pAbc); 00690 pErr = Abc_FrameReadErr(pAbc); 00691 00692 // set defaults 00693 Extra_UtilGetoptReset(); 00694 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00695 { 00696 switch ( c ) 00697 { 00698 case 'h': 00699 goto usage; 00700 default: 00701 goto usage; 00702 } 00703 } 00704 00705 if ( pNtk == NULL ) 00706 { 00707 fprintf( pErr, "Empty network.\n" ); 00708 return 1; 00709 } 00710 00711 // print the nodes 00712 Abc_NtkPrintFanio( pOut, pNtk ); 00713 return 0; 00714 00715 usage: 00716 fprintf( pErr, "usage: print_fanio [-h]\n" ); 00717 fprintf( pErr, "\t prints the statistics about fanins/fanouts of all nodes\n" ); 00718 fprintf( pErr, "\t-h : print the command usage\n"); 00719 return 1; 00720 }
int Abc_CommandPrintGates | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1367 of file abc.c.
01368 { 01369 FILE * pOut, * pErr; 01370 Abc_Ntk_t * pNtk; 01371 int c; 01372 int fUseLibrary; 01373 01374 extern void Abc_NtkPrintGates( Abc_Ntk_t * pNtk, int fUseLibrary ); 01375 01376 pNtk = Abc_FrameReadNtk(pAbc); 01377 pOut = Abc_FrameReadOut(pAbc); 01378 pErr = Abc_FrameReadErr(pAbc); 01379 01380 // set defaults 01381 fUseLibrary = 1; 01382 Extra_UtilGetoptReset(); 01383 while ( ( c = Extra_UtilGetopt( argc, argv, "lh" ) ) != EOF ) 01384 { 01385 switch ( c ) 01386 { 01387 case 'l': 01388 fUseLibrary ^= 1; 01389 break; 01390 case 'h': 01391 goto usage; 01392 default: 01393 goto usage; 01394 } 01395 } 01396 01397 if ( pNtk == NULL ) 01398 { 01399 fprintf( pErr, "Empty network.\n" ); 01400 return 1; 01401 } 01402 if ( Abc_NtkHasAig(pNtk) ) 01403 { 01404 fprintf( pErr, "Printing gates does not work for AIGs and sequential AIGs.\n" ); 01405 return 1; 01406 } 01407 01408 Abc_NtkPrintGates( pNtk, fUseLibrary ); 01409 return 0; 01410 01411 usage: 01412 fprintf( pErr, "usage: print_gates [-lh]\n" ); 01413 fprintf( pErr, "\t prints statistics about gates used in the network\n" ); 01414 fprintf( pErr, "\t-l : used library gate names (if mapped) [default = %s]\n", fUseLibrary? "yes": "no" ); 01415 fprintf( pErr, "\t-h : print the command usage\n"); 01416 return 1; 01417 }
int Abc_CommandPrintIo | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 562 of file abc.c.
00563 { 00564 FILE * pOut, * pErr; 00565 Abc_Ntk_t * pNtk; 00566 Abc_Obj_t * pNode; 00567 int c; 00568 00569 pNtk = Abc_FrameReadNtk(pAbc); 00570 pOut = Abc_FrameReadOut(pAbc); 00571 pErr = Abc_FrameReadErr(pAbc); 00572 00573 // set defaults 00574 Extra_UtilGetoptReset(); 00575 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00576 { 00577 switch ( c ) 00578 { 00579 case 'h': 00580 goto usage; 00581 default: 00582 goto usage; 00583 } 00584 } 00585 00586 if ( pNtk == NULL ) 00587 { 00588 fprintf( pErr, "Empty network.\n" ); 00589 return 1; 00590 } 00591 00592 if ( argc > globalUtilOptind + 1 ) 00593 { 00594 fprintf( pErr, "Wrong number of auguments.\n" ); 00595 goto usage; 00596 } 00597 00598 if ( argc == globalUtilOptind + 1 ) 00599 { 00600 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 00601 if ( pNode == NULL ) 00602 { 00603 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 00604 return 1; 00605 } 00606 Abc_NodePrintFanio( pOut, pNode ); 00607 return 0; 00608 } 00609 // print the nodes 00610 Abc_NtkPrintIo( pOut, pNtk ); 00611 return 0; 00612 00613 usage: 00614 fprintf( pErr, "usage: print_io [-h] <node>\n" ); 00615 fprintf( pErr, "\t prints the PIs/POs or fanins/fanouts of a node\n" ); 00616 fprintf( pErr, "\t-h : print the command usage\n"); 00617 fprintf( pErr, "\tnode : the node to print fanins/fanouts\n"); 00618 return 1; 00619 }
int Abc_CommandPrintKMap | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1278 of file abc.c.
01279 { 01280 FILE * pOut, * pErr; 01281 Abc_Ntk_t * pNtk; 01282 Abc_Obj_t * pNode; 01283 int c; 01284 int fUseRealNames; 01285 01286 extern void Abc_NodePrintKMap( Abc_Obj_t * pNode, int fUseRealNames ); 01287 01288 pNtk = Abc_FrameReadNtk(pAbc); 01289 pOut = Abc_FrameReadOut(pAbc); 01290 pErr = Abc_FrameReadErr(pAbc); 01291 01292 // set defaults 01293 fUseRealNames = 1; 01294 Extra_UtilGetoptReset(); 01295 while ( ( c = Extra_UtilGetopt( argc, argv, "nh" ) ) != EOF ) 01296 { 01297 switch ( c ) 01298 { 01299 case 'n': 01300 fUseRealNames ^= 1; 01301 break; 01302 case 'h': 01303 goto usage; 01304 default: 01305 goto usage; 01306 } 01307 } 01308 01309 if ( pNtk == NULL ) 01310 { 01311 fprintf( pErr, "Empty network.\n" ); 01312 return 1; 01313 } 01314 01315 if ( !Abc_NtkIsLogic(pNtk) ) 01316 { 01317 fprintf( pErr, "Visualization of Karnaugh maps works for logic networks.\n" ); 01318 return 1; 01319 } 01320 if ( argc > globalUtilOptind + 1 ) 01321 { 01322 fprintf( pErr, "Wrong number of auguments.\n" ); 01323 goto usage; 01324 } 01325 if ( argc == globalUtilOptind ) 01326 { 01327 pNode = Abc_ObjFanin0( Abc_NtkPo(pNtk, 0) ); 01328 if ( !Abc_ObjIsNode(pNode) ) 01329 { 01330 fprintf( pErr, "The driver \"%s\" of the first PO is not an internal node.\n", Abc_ObjName(pNode) ); 01331 return 1; 01332 } 01333 } 01334 else 01335 { 01336 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 01337 if ( pNode == NULL ) 01338 { 01339 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 01340 return 1; 01341 } 01342 } 01343 Abc_NtkToBdd(pNtk); 01344 Abc_NodePrintKMap( pNode, fUseRealNames ); 01345 return 0; 01346 01347 usage: 01348 fprintf( pErr, "usage: print_kmap [-nh] <node>\n" ); 01349 fprintf( pErr, " shows the truth table of the node\n" ); 01350 fprintf( pErr, "\t-n : toggles real/dummy fanin names [default = %s]\n", fUseRealNames? "real": "dummy" ); 01351 fprintf( pErr, "\t-h : print the command usage\n"); 01352 fprintf( pErr, "\tnode : the node to consider (default = the driver of the first PO)\n"); 01353 return 1; 01354 }
int Abc_CommandPrintLatch | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 632 of file abc.c.
00633 { 00634 FILE * pOut, * pErr; 00635 Abc_Ntk_t * pNtk; 00636 int c; 00637 00638 pNtk = Abc_FrameReadNtk(pAbc); 00639 pOut = Abc_FrameReadOut(pAbc); 00640 pErr = Abc_FrameReadErr(pAbc); 00641 00642 // set defaults 00643 Extra_UtilGetoptReset(); 00644 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00645 { 00646 switch ( c ) 00647 { 00648 case 'h': 00649 goto usage; 00650 default: 00651 goto usage; 00652 } 00653 } 00654 00655 if ( pNtk == NULL ) 00656 { 00657 fprintf( pErr, "Empty network.\n" ); 00658 return 1; 00659 } 00660 // print the nodes 00661 Abc_NtkPrintLatch( pOut, pNtk ); 00662 return 0; 00663 00664 usage: 00665 fprintf( pErr, "usage: print_latch [-h]\n" ); 00666 fprintf( pErr, "\t prints information about latches\n" ); 00667 fprintf( pErr, "\t-h : print the command usage\n"); 00668 return 1; 00669 }
int Abc_CommandPrintLevel | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 867 of file abc.c.
00868 { 00869 FILE * pOut, * pErr; 00870 Abc_Ntk_t * pNtk; 00871 Abc_Obj_t * pNode; 00872 int c; 00873 int fListNodes; 00874 int fProfile; 00875 00876 pNtk = Abc_FrameReadNtk(pAbc); 00877 pOut = Abc_FrameReadOut(pAbc); 00878 pErr = Abc_FrameReadErr(pAbc); 00879 00880 // set defaults 00881 fListNodes = 0; 00882 fProfile = 1; 00883 Extra_UtilGetoptReset(); 00884 while ( ( c = Extra_UtilGetopt( argc, argv, "nph" ) ) != EOF ) 00885 { 00886 switch ( c ) 00887 { 00888 case 'n': 00889 fListNodes ^= 1; 00890 break; 00891 case 'p': 00892 fProfile ^= 1; 00893 break; 00894 case 'h': 00895 goto usage; 00896 default: 00897 goto usage; 00898 } 00899 } 00900 00901 if ( pNtk == NULL ) 00902 { 00903 fprintf( pErr, "Empty network.\n" ); 00904 return 1; 00905 } 00906 00907 if ( !fProfile && !Abc_NtkIsStrash(pNtk) ) 00908 { 00909 fprintf( pErr, "This command works only for AIGs (run \"strash\").\n" ); 00910 return 1; 00911 } 00912 00913 if ( argc > globalUtilOptind + 1 ) 00914 { 00915 fprintf( pErr, "Wrong number of auguments.\n" ); 00916 goto usage; 00917 } 00918 00919 if ( argc == globalUtilOptind + 1 ) 00920 { 00921 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 00922 if ( pNode == NULL ) 00923 { 00924 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 00925 return 1; 00926 } 00927 Abc_NodePrintLevel( pOut, pNode ); 00928 return 0; 00929 } 00930 // process all COs 00931 Abc_NtkPrintLevel( pOut, pNtk, fProfile, fListNodes ); 00932 return 0; 00933 00934 usage: 00935 fprintf( pErr, "usage: print_level [-nph] <node>\n" ); 00936 fprintf( pErr, "\t prints information about node level and cone size\n" ); 00937 fprintf( pErr, "\t-n : toggles printing nodes by levels [default = %s]\n", fListNodes? "yes": "no" ); 00938 fprintf( pErr, "\t-p : toggles printing level profile [default = %s]\n", fProfile? "yes": "no" ); 00939 fprintf( pErr, "\t-h : print the command usage\n"); 00940 fprintf( pErr, "\tnode : (optional) one node to consider\n"); 00941 return 1; 00942 }
int Abc_CommandPrintMffc | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 733 of file abc.c.
00734 { 00735 FILE * pOut, * pErr; 00736 Abc_Ntk_t * pNtk; 00737 int c; 00738 extern void Abc_NtkPrintMffc( FILE * pFile, Abc_Ntk_t * pNtk ); 00739 00740 pNtk = Abc_FrameReadNtk(pAbc); 00741 pOut = Abc_FrameReadOut(pAbc); 00742 pErr = Abc_FrameReadErr(pAbc); 00743 00744 // set defaults 00745 Extra_UtilGetoptReset(); 00746 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 00747 { 00748 switch ( c ) 00749 { 00750 case 'h': 00751 goto usage; 00752 default: 00753 goto usage; 00754 } 00755 } 00756 00757 if ( pNtk == NULL ) 00758 { 00759 fprintf( pErr, "Empty network.\n" ); 00760 return 1; 00761 } 00762 00763 // print the nodes 00764 Abc_NtkPrintMffc( pOut, pNtk ); 00765 return 0; 00766 00767 usage: 00768 fprintf( pErr, "usage: print_mffc [-h]\n" ); 00769 fprintf( pErr, "\t prints the MFFC of each node in the network\n" ); 00770 fprintf( pErr, "\t-h : print the command usage\n"); 00771 return 1; 00772 }
int Abc_CommandPrintSharing | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1430 of file abc.c.
01431 { 01432 FILE * pOut, * pErr; 01433 Abc_Ntk_t * pNtk; 01434 int c; 01435 int fUseLibrary; 01436 01437 extern void Abc_NtkPrintSharing( Abc_Ntk_t * pNtk ); 01438 01439 pNtk = Abc_FrameReadNtk(pAbc); 01440 pOut = Abc_FrameReadOut(pAbc); 01441 pErr = Abc_FrameReadErr(pAbc); 01442 01443 // set defaults 01444 fUseLibrary = 1; 01445 Extra_UtilGetoptReset(); 01446 while ( ( c = Extra_UtilGetopt( argc, argv, "lh" ) ) != EOF ) 01447 { 01448 switch ( c ) 01449 { 01450 case 'l': 01451 fUseLibrary ^= 1; 01452 break; 01453 case 'h': 01454 goto usage; 01455 default: 01456 goto usage; 01457 } 01458 } 01459 01460 if ( pNtk == NULL ) 01461 { 01462 fprintf( pErr, "Empty network.\n" ); 01463 return 1; 01464 } 01465 Abc_NtkPrintSharing( pNtk ); 01466 return 0; 01467 01468 usage: 01469 fprintf( pErr, "usage: print_sharing [-h]\n" ); 01470 fprintf( pErr, "\t prints the number of shared nodes in the TFI cones of the COs\n" ); 01471 // fprintf( pErr, "\t-l : used library gate names (if mapped) [default = %s]\n", fUseLibrary? "yes": "no" ); 01472 fprintf( pErr, "\t-h : print the command usage\n"); 01473 return 1; 01474 }
int Abc_CommandPrintStats | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
CFile****************************************************************
FileName [abc.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [Network and node 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 410 of file abc.c.
00411 { 00412 FILE * pOut, * pErr; 00413 Abc_Ntk_t * pNtk; 00414 bool fShort; 00415 int c; 00416 int fFactor; 00417 00418 pNtk = Abc_FrameReadNtk(pAbc); 00419 pOut = Abc_FrameReadOut(pAbc); 00420 pErr = Abc_FrameReadErr(pAbc); 00421 00422 // set the defaults 00423 fShort = 1; 00424 fFactor = 0; 00425 Extra_UtilGetoptReset(); 00426 while ( ( c = Extra_UtilGetopt( argc, argv, "sfh" ) ) != EOF ) 00427 { 00428 switch ( c ) 00429 { 00430 case 's': 00431 fShort ^= 1; 00432 break; 00433 case 'f': 00434 fFactor ^= 1; 00435 break; 00436 case 'h': 00437 goto usage; 00438 default: 00439 goto usage; 00440 } 00441 } 00442 00443 if ( pNtk == NULL ) 00444 { 00445 fprintf( Abc_FrameReadErr(pAbc), "Empty network.\n" ); 00446 return 1; 00447 } 00448 Abc_NtkPrintStats( pOut, pNtk, fFactor ); 00449 return 0; 00450 00451 usage: 00452 fprintf( pErr, "usage: print_stats [-fh]\n" ); 00453 fprintf( pErr, "\t prints the network statistics\n" ); 00454 fprintf( pErr, "\t-f : toggles printing the literal count in the factored forms [default = %s]\n", fFactor? "yes": "no" ); 00455 fprintf( pErr, "\t-h : print the command usage\n"); 00456 return 1; 00457 }
int Abc_CommandPrintSupport | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 955 of file abc.c.
00956 { 00957 Vec_Ptr_t * vSuppFun; 00958 FILE * pOut, * pErr; 00959 Abc_Ntk_t * pNtk; 00960 int c; 00961 int fStruct; 00962 int fVerbose; 00963 extern Vec_Ptr_t * Sim_ComputeFunSupp( Abc_Ntk_t * pNtk, int fVerbose ); 00964 extern void Abc_NtkPrintStrSupports( Abc_Ntk_t * pNtk ); 00965 00966 pNtk = Abc_FrameReadNtk(pAbc); 00967 pOut = Abc_FrameReadOut(pAbc); 00968 pErr = Abc_FrameReadErr(pAbc); 00969 00970 // set defaults 00971 fStruct = 1; 00972 fVerbose = 0; 00973 Extra_UtilGetoptReset(); 00974 while ( ( c = Extra_UtilGetopt( argc, argv, "svh" ) ) != EOF ) 00975 { 00976 switch ( c ) 00977 { 00978 case 's': 00979 fStruct ^= 1; 00980 break; 00981 case 'v': 00982 fVerbose ^= 1; 00983 break; 00984 case 'h': 00985 goto usage; 00986 default: 00987 goto usage; 00988 } 00989 } 00990 00991 if ( pNtk == NULL ) 00992 { 00993 fprintf( pErr, "Empty network.\n" ); 00994 return 1; 00995 } 00996 00997 // print support information 00998 if ( fStruct ) 00999 { 01000 Abc_NtkPrintStrSupports( pNtk ); 01001 return 0; 01002 } 01003 01004 if ( !Abc_NtkIsComb(pNtk) ) 01005 { 01006 fprintf( pErr, "This command works only for combinational networks (run \"comb\").\n" ); 01007 return 1; 01008 } 01009 if ( !Abc_NtkIsStrash(pNtk) ) 01010 { 01011 fprintf( pErr, "This command works only for AIGs (run \"strash\").\n" ); 01012 return 1; 01013 } 01014 vSuppFun = Sim_ComputeFunSupp( pNtk, fVerbose ); 01015 free( vSuppFun->pArray[0] ); 01016 Vec_PtrFree( vSuppFun ); 01017 return 0; 01018 01019 usage: 01020 fprintf( pErr, "usage: print_supp [-svh]\n" ); 01021 fprintf( pErr, "\t prints the supports of the CO nodes\n" ); 01022 fprintf( pErr, "\t-s : toggle printing structural support only [default = %s].\n", fStruct? "yes": "no" ); 01023 fprintf( pErr, "\t-v : enable verbose output [default = %s].\n", fVerbose? "yes": "no" ); 01024 fprintf( pErr, "\t-h : print the command usage\n"); 01025 return 1; 01026 }
int Abc_CommandPrintSymms | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1039 of file abc.c.
01040 { 01041 FILE * pOut, * pErr; 01042 Abc_Ntk_t * pNtk; 01043 int c; 01044 int fUseBdds; 01045 int fNaive; 01046 int fReorder; 01047 int fVerbose; 01048 extern void Abc_NtkSymmetries( Abc_Ntk_t * pNtk, int fUseBdds, int fNaive, int fReorder, int fVerbose ); 01049 01050 pNtk = Abc_FrameReadNtk(pAbc); 01051 pOut = Abc_FrameReadOut(pAbc); 01052 pErr = Abc_FrameReadErr(pAbc); 01053 01054 // set defaults 01055 fUseBdds = 0; 01056 fNaive = 0; 01057 fReorder = 1; 01058 fVerbose = 0; 01059 Extra_UtilGetoptReset(); 01060 while ( ( c = Extra_UtilGetopt( argc, argv, "bnrvh" ) ) != EOF ) 01061 { 01062 switch ( c ) 01063 { 01064 case 'b': 01065 fUseBdds ^= 1; 01066 break; 01067 case 'n': 01068 fNaive ^= 1; 01069 break; 01070 case 'r': 01071 fReorder ^= 1; 01072 break; 01073 case 'v': 01074 fVerbose ^= 1; 01075 break; 01076 case 'h': 01077 goto usage; 01078 default: 01079 goto usage; 01080 } 01081 } 01082 if ( pNtk == NULL ) 01083 { 01084 fprintf( pErr, "Empty network.\n" ); 01085 return 1; 01086 } 01087 if ( !Abc_NtkIsComb(pNtk) ) 01088 { 01089 fprintf( pErr, "This command works only for combinational networks (run \"comb\").\n" ); 01090 return 1; 01091 } 01092 if ( Abc_NtkIsStrash(pNtk) ) 01093 Abc_NtkSymmetries( pNtk, fUseBdds, fNaive, fReorder, fVerbose ); 01094 else 01095 { 01096 pNtk = Abc_NtkStrash( pNtk, 0, 0, 0 ); 01097 Abc_NtkSymmetries( pNtk, fUseBdds, fNaive, fReorder, fVerbose ); 01098 Abc_NtkDelete( pNtk ); 01099 } 01100 return 0; 01101 01102 usage: 01103 fprintf( pErr, "usage: print_symm [-bnrvh]\n" ); 01104 fprintf( pErr, "\t computes symmetries of the PO functions\n" ); 01105 fprintf( pErr, "\t-b : toggle BDD-based or SAT-based computations [default = %s].\n", fUseBdds? "BDD": "SAT" ); 01106 fprintf( pErr, "\t-n : enable naive BDD-based computation [default = %s].\n", fNaive? "yes": "no" ); 01107 fprintf( pErr, "\t-r : enable dynamic BDD variable reordering [default = %s].\n", fReorder? "yes": "no" ); 01108 fprintf( pErr, "\t-v : enable verbose output [default = %s].\n", fVerbose? "yes": "no" ); 01109 fprintf( pErr, "\t-h : print the command usage\n"); 01110 return 1; 01111 }
int Abc_CommandPrintUnate | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1124 of file abc.c.
01125 { 01126 FILE * pOut, * pErr; 01127 Abc_Ntk_t * pNtk; 01128 int c; 01129 int fUseBdds; 01130 int fUseNaive; 01131 int fVerbose; 01132 extern void Abc_NtkPrintUnate( Abc_Ntk_t * pNtk, int fUseBdds, int fUseNaive, int fVerbose ); 01133 01134 pNtk = Abc_FrameReadNtk(pAbc); 01135 pOut = Abc_FrameReadOut(pAbc); 01136 pErr = Abc_FrameReadErr(pAbc); 01137 01138 // set defaults 01139 fUseBdds = 1; 01140 fUseNaive = 0; 01141 fVerbose = 0; 01142 Extra_UtilGetoptReset(); 01143 while ( ( c = Extra_UtilGetopt( argc, argv, "bnvh" ) ) != EOF ) 01144 { 01145 switch ( c ) 01146 { 01147 case 'b': 01148 fUseBdds ^= 1; 01149 break; 01150 case 'n': 01151 fUseNaive ^= 1; 01152 break; 01153 case 'v': 01154 fVerbose ^= 1; 01155 break; 01156 case 'h': 01157 goto usage; 01158 default: 01159 goto usage; 01160 } 01161 } 01162 if ( pNtk == NULL ) 01163 { 01164 fprintf( pErr, "Empty network.\n" ); 01165 return 1; 01166 } 01167 if ( !Abc_NtkIsStrash(pNtk) ) 01168 { 01169 fprintf( pErr, "This command works only for AIGs (run \"strash\").\n" ); 01170 return 1; 01171 } 01172 Abc_NtkPrintUnate( pNtk, fUseBdds, fUseNaive, fVerbose ); 01173 return 0; 01174 01175 usage: 01176 fprintf( pErr, "usage: print_unate [-bnvh]\n" ); 01177 fprintf( pErr, "\t computes unate variables of the PO functions\n" ); 01178 fprintf( pErr, "\t-b : toggle BDD-based or SAT-based computations [default = %s].\n", fUseBdds? "BDD": "SAT" ); 01179 fprintf( pErr, "\t-n : toggle naive BDD-based computation [default = %s].\n", fUseNaive? "yes": "no" ); 01180 fprintf( pErr, "\t-v : enable verbose output [default = %s].\n", fVerbose? "yes": "no" ); 01181 fprintf( pErr, "\t-h : print the command usage\n"); 01182 return 1; 01183 }
int Abc_CommandPrintXCut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1487 of file abc.c.
01488 { 01489 FILE * pOut, * pErr; 01490 Abc_Ntk_t * pNtk; 01491 int c; 01492 int fUseLibrary; 01493 01494 extern int Abc_NtkCrossCut( Abc_Ntk_t * pNtk ); 01495 01496 pNtk = Abc_FrameReadNtk(pAbc); 01497 pOut = Abc_FrameReadOut(pAbc); 01498 pErr = Abc_FrameReadErr(pAbc); 01499 01500 // set defaults 01501 fUseLibrary = 1; 01502 Extra_UtilGetoptReset(); 01503 while ( ( c = Extra_UtilGetopt( argc, argv, "lh" ) ) != EOF ) 01504 { 01505 switch ( c ) 01506 { 01507 case 'l': 01508 fUseLibrary ^= 1; 01509 break; 01510 case 'h': 01511 goto usage; 01512 default: 01513 goto usage; 01514 } 01515 } 01516 01517 if ( pNtk == NULL ) 01518 { 01519 fprintf( pErr, "Empty network.\n" ); 01520 return 1; 01521 } 01522 Abc_NtkCrossCut( pNtk ); 01523 return 0; 01524 01525 usage: 01526 fprintf( pErr, "usage: print_xcut [-h]\n" ); 01527 fprintf( pErr, "\t prints the size of the cross cut of the current network\n" ); 01528 // fprintf( pErr, "\t-l : used library gate names (if mapped) [default = %s]\n", fUseLibrary? "yes": "no" ); 01529 fprintf( pErr, "\t-h : print the command usage\n"); 01530 return 1; 01531 }
int Abc_CommandProve | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12423 of file abc.c.
12424 { 12425 FILE * pOut, * pErr; 12426 Abc_Ntk_t * pNtk, * pNtkTemp; 12427 Prove_Params_t Params, * pParams = &Params; 12428 int c, clk, RetValue; 12429 12430 pNtk = Abc_FrameReadNtk(pAbc); 12431 pOut = Abc_FrameReadOut(pAbc); 12432 pErr = Abc_FrameReadErr(pAbc); 12433 12434 // set defaults 12435 Prove_ParamsSetDefault( pParams ); 12436 Extra_UtilGetoptReset(); 12437 while ( ( c = Extra_UtilGetopt( argc, argv, "NCFLIrfbvh" ) ) != EOF ) 12438 { 12439 switch ( c ) 12440 { 12441 case 'N': 12442 if ( globalUtilOptind >= argc ) 12443 { 12444 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 12445 goto usage; 12446 } 12447 pParams->nItersMax = atoi(argv[globalUtilOptind]); 12448 globalUtilOptind++; 12449 if ( pParams->nItersMax < 0 ) 12450 goto usage; 12451 break; 12452 case 'C': 12453 if ( globalUtilOptind >= argc ) 12454 { 12455 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 12456 goto usage; 12457 } 12458 pParams->nMiteringLimitStart = atoi(argv[globalUtilOptind]); 12459 globalUtilOptind++; 12460 if ( pParams->nMiteringLimitStart < 0 ) 12461 goto usage; 12462 break; 12463 case 'F': 12464 if ( globalUtilOptind >= argc ) 12465 { 12466 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 12467 goto usage; 12468 } 12469 pParams->nFraigingLimitStart = atoi(argv[globalUtilOptind]); 12470 globalUtilOptind++; 12471 if ( pParams->nFraigingLimitStart < 0 ) 12472 goto usage; 12473 break; 12474 case 'L': 12475 if ( globalUtilOptind >= argc ) 12476 { 12477 fprintf( pErr, "Command line switch \"-L\" should be followed by an integer.\n" ); 12478 goto usage; 12479 } 12480 pParams->nMiteringLimitLast = atoi(argv[globalUtilOptind]); 12481 globalUtilOptind++; 12482 if ( pParams->nMiteringLimitLast < 0 ) 12483 goto usage; 12484 break; 12485 case 'I': 12486 if ( globalUtilOptind >= argc ) 12487 { 12488 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 12489 goto usage; 12490 } 12491 pParams->nTotalInspectLimit = atoi(argv[globalUtilOptind]); 12492 globalUtilOptind++; 12493 if ( pParams->nTotalInspectLimit < 0 ) 12494 goto usage; 12495 break; 12496 case 'r': 12497 pParams->fUseRewriting ^= 1; 12498 break; 12499 case 'f': 12500 pParams->fUseFraiging ^= 1; 12501 break; 12502 case 'b': 12503 pParams->fUseBdds ^= 1; 12504 break; 12505 case 'v': 12506 pParams->fVerbose ^= 1; 12507 break; 12508 case 'h': 12509 goto usage; 12510 default: 12511 goto usage; 12512 } 12513 } 12514 12515 if ( pNtk == NULL ) 12516 { 12517 fprintf( pErr, "Empty network.\n" ); 12518 return 1; 12519 } 12520 if ( Abc_NtkLatchNum(pNtk) > 0 ) 12521 { 12522 fprintf( stdout, "Currently can only solve the miter for combinational circuits.\n" ); 12523 return 0; 12524 } 12525 if ( Abc_NtkCoNum(pNtk) != 1 ) 12526 { 12527 fprintf( stdout, "Currently can only solve the miter with one output.\n" ); 12528 return 0; 12529 } 12530 clk = clock(); 12531 12532 if ( Abc_NtkIsStrash(pNtk) ) 12533 pNtkTemp = Abc_NtkDup( pNtk ); 12534 else 12535 pNtkTemp = Abc_NtkStrash( pNtk, 0, 0, 0 ); 12536 12537 RetValue = Abc_NtkMiterProve( &pNtkTemp, pParams ); 12538 12539 // verify that the pattern is correct 12540 if ( RetValue == 0 ) 12541 { 12542 int * pSimInfo = Abc_NtkVerifySimulatePattern( pNtk, pNtkTemp->pModel ); 12543 if ( pSimInfo[0] != 1 ) 12544 printf( "ERROR in Abc_NtkMiterProve(): Generated counter-example is invalid.\n" ); 12545 free( pSimInfo ); 12546 } 12547 12548 if ( RetValue == -1 ) 12549 printf( "UNDECIDED " ); 12550 else if ( RetValue == 0 ) 12551 printf( "SATISFIABLE " ); 12552 else 12553 printf( "UNSATISFIABLE " ); 12554 //printf( "\n" ); 12555 12556 PRT( "Time", clock() - clk ); 12557 // replace the current network 12558 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkTemp ); 12559 return 0; 12560 12561 usage: 12562 fprintf( pErr, "usage: prove [-N num] [-C num] [-F num] [-L num] [-I num] [-rfbvh]\n" ); 12563 fprintf( pErr, "\t solves combinational miter by rewriting, FRAIGing, and SAT\n" ); 12564 fprintf( pErr, "\t replaces the current network by the cone modified by rewriting\n" ); 12565 fprintf( pErr, "\t-N num : max number of iterations [default = %d]\n", pParams->nItersMax ); 12566 fprintf( pErr, "\t-C num : max starting number of conflicts in mitering [default = %d]\n", pParams->nMiteringLimitStart ); 12567 fprintf( pErr, "\t-F num : max starting number of conflicts in fraiging [default = %d]\n", pParams->nFraigingLimitStart ); 12568 fprintf( pErr, "\t-L num : max last-gasp number of conflicts in mitering [default = %d]\n", pParams->nMiteringLimitLast ); 12569 fprintf( pErr, "\t-I num : max number of clause inspections in all SAT calls [default = %d]\n", (int)pParams->nTotalInspectLimit ); 12570 fprintf( pErr, "\t-r : toggle the use of rewriting [default = %s]\n", pParams->fUseRewriting? "yes": "no" ); 12571 fprintf( pErr, "\t-f : toggle the use of FRAIGing [default = %s]\n", pParams->fUseFraiging? "yes": "no" ); 12572 fprintf( pErr, "\t-b : toggle the use of BDDs [default = %s]\n", pParams->fUseBdds? "yes": "no" ); 12573 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", pParams->fVerbose? "yes": "no" ); 12574 fprintf( pErr, "\t-h : print the command usage\n"); 12575 return 1; 12576 }
int Abc_CommandQbf | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 8184 of file abc.c.
08185 { 08186 FILE * pOut, * pErr; 08187 Abc_Ntk_t * pNtk; 08188 int c; 08189 int nPars; 08190 int fVerbose; 08191 08192 extern void Abc_NtkQbf( Abc_Ntk_t * pNtk, int nPars, int fVerbose ); 08193 08194 pNtk = Abc_FrameReadNtk(pAbc); 08195 pOut = Abc_FrameReadOut(pAbc); 08196 pErr = Abc_FrameReadErr(pAbc); 08197 08198 // set defaults 08199 nPars = -1; 08200 fVerbose = 1; 08201 Extra_UtilGetoptReset(); 08202 while ( ( c = Extra_UtilGetopt( argc, argv, "Pvh" ) ) != EOF ) 08203 { 08204 switch ( c ) 08205 { 08206 case 'P': 08207 if ( globalUtilOptind >= argc ) 08208 { 08209 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 08210 goto usage; 08211 } 08212 nPars = atoi(argv[globalUtilOptind]); 08213 globalUtilOptind++; 08214 if ( nPars < 0 ) 08215 goto usage; 08216 break; 08217 case 'v': 08218 fVerbose ^= 1; 08219 break; 08220 case 'h': 08221 goto usage; 08222 default: 08223 goto usage; 08224 } 08225 } 08226 if ( pNtk == NULL ) 08227 { 08228 fprintf( pErr, "Empty network.\n" ); 08229 return 1; 08230 } 08231 if ( !Abc_NtkIsComb(pNtk) ) 08232 { 08233 fprintf( pErr, "Works only for combinational networks.\n" ); 08234 return 1; 08235 } 08236 if ( Abc_NtkPoNum(pNtk) != 1 ) 08237 { 08238 fprintf( pErr, "The miter should have one primary output.\n" ); 08239 return 1; 08240 } 08241 if ( !(nPars > 0 && nPars < Abc_NtkPiNum(pNtk)) ) 08242 { 08243 fprintf( pErr, "The number of paramter variables is invalid (should be > 0 and < PI num).\n" ); 08244 return 1; 08245 } 08246 if ( Abc_NtkIsStrash(pNtk) ) 08247 Abc_NtkQbf( pNtk, nPars, fVerbose ); 08248 else 08249 { 08250 pNtk = Abc_NtkStrash( pNtk, 0, 1, 0 ); 08251 Abc_NtkQbf( pNtk, nPars, fVerbose ); 08252 Abc_NtkDelete( pNtk ); 08253 } 08254 return 0; 08255 08256 usage: 08257 fprintf( pErr, "usage: qbf [-P num] [-vh]\n" ); 08258 fprintf( pErr, "\t solves a quantified boolean formula problem EpVxM(p,x)\n" ); 08259 fprintf( pErr, "\t-P num : number of paramters (should be the first PIs) [default = %d]\n", nPars ); 08260 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 08261 fprintf( pErr, "\t-h : print the command usage\n"); 08262 return 1; 08263 }
int Abc_CommandQuaReach | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6557 of file abc.c.
06558 { 06559 FILE * pOut, * pErr; 06560 Abc_Ntk_t * pNtk, * pNtkRes; 06561 int c, nIters, fVerbose; 06562 extern Abc_Ntk_t * Abc_NtkReachability( Abc_Ntk_t * pNtk, int nIters, int fVerbose ); 06563 06564 pNtk = Abc_FrameReadNtk(pAbc); 06565 pOut = Abc_FrameReadOut(pAbc); 06566 pErr = Abc_FrameReadErr(pAbc); 06567 06568 // set defaults 06569 nIters = 256; 06570 fVerbose = 0; 06571 Extra_UtilGetoptReset(); 06572 while ( ( c = Extra_UtilGetopt( argc, argv, "Ivh" ) ) != EOF ) 06573 { 06574 switch ( c ) 06575 { 06576 case 'I': 06577 if ( globalUtilOptind >= argc ) 06578 { 06579 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 06580 goto usage; 06581 } 06582 nIters = atoi(argv[globalUtilOptind]); 06583 globalUtilOptind++; 06584 if ( nIters < 0 ) 06585 goto usage; 06586 break; 06587 case 'v': 06588 fVerbose ^= 1; 06589 break; 06590 case 'h': 06591 goto usage; 06592 default: 06593 goto usage; 06594 } 06595 } 06596 if ( pNtk == NULL ) 06597 { 06598 fprintf( pErr, "Empty network.\n" ); 06599 return 1; 06600 } 06601 if ( Abc_NtkGetChoiceNum( pNtk ) ) 06602 { 06603 fprintf( pErr, "This command cannot be applied to an AIG with choice nodes.\n" ); 06604 return 1; 06605 } 06606 if ( !Abc_NtkIsComb(pNtk) ) 06607 { 06608 fprintf( pErr, "This command works only for combinational transition relations.\n" ); 06609 return 1; 06610 } 06611 if ( !Abc_NtkIsStrash(pNtk) ) 06612 { 06613 fprintf( pErr, "This command works only for strashed networks.\n" ); 06614 return 1; 06615 } 06616 if ( Abc_NtkPoNum(pNtk) > 1 ) 06617 { 06618 fprintf( pErr, "The transition relation should have one output.\n" ); 06619 return 1; 06620 } 06621 if ( Abc_NtkPiNum(pNtk) % 2 != 0 ) 06622 { 06623 fprintf( pErr, "The transition relation should have an even number of inputs.\n" ); 06624 return 1; 06625 } 06626 06627 pNtkRes = Abc_NtkReachability( pNtk, nIters, fVerbose ); 06628 if ( pNtkRes == NULL ) 06629 { 06630 fprintf( pErr, "Command has failed.\n" ); 06631 return 0; 06632 } 06633 // replace the current network 06634 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06635 return 0; 06636 06637 usage: 06638 fprintf( pErr, "usage: qreach [-I num] [-vh]\n" ); 06639 fprintf( pErr, "\t computes unreachable states using AIG-based quantification\n" ); 06640 fprintf( pErr, "\t assumes that the current network is a transition relation\n" ); 06641 fprintf( pErr, "\t assumes that the initial state is composed of all zeros\n" ); 06642 fprintf( pErr, "\t-I num : the number of image computations to perform [default = %d]\n", nIters ); 06643 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06644 fprintf( pErr, "\t-h : print the command usage\n"); 06645 return 1; 06646 }
int Abc_CommandQuaRel | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6458 of file abc.c.
06459 { 06460 FILE * pOut, * pErr; 06461 Abc_Ntk_t * pNtk, * pNtkRes; 06462 int c, iVar, fInputs, fVerbose; 06463 extern Abc_Ntk_t * Abc_NtkTransRel( Abc_Ntk_t * pNtk, int fInputs, int fVerbose ); 06464 06465 pNtk = Abc_FrameReadNtk(pAbc); 06466 pOut = Abc_FrameReadOut(pAbc); 06467 pErr = Abc_FrameReadErr(pAbc); 06468 06469 // set defaults 06470 iVar = 0; 06471 fInputs = 1; 06472 fVerbose = 0; 06473 Extra_UtilGetoptReset(); 06474 while ( ( c = Extra_UtilGetopt( argc, argv, "Iqvh" ) ) != EOF ) 06475 { 06476 switch ( c ) 06477 { 06478 case 'I': 06479 if ( globalUtilOptind >= argc ) 06480 { 06481 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 06482 goto usage; 06483 } 06484 iVar = atoi(argv[globalUtilOptind]); 06485 globalUtilOptind++; 06486 if ( iVar < 0 ) 06487 goto usage; 06488 break; 06489 case 'q': 06490 fInputs ^= 1; 06491 break; 06492 case 'v': 06493 fVerbose ^= 1; 06494 break; 06495 case 'h': 06496 goto usage; 06497 default: 06498 goto usage; 06499 } 06500 } 06501 if ( pNtk == NULL ) 06502 { 06503 fprintf( pErr, "Empty network.\n" ); 06504 return 1; 06505 } 06506 if ( Abc_NtkGetChoiceNum( pNtk ) ) 06507 { 06508 fprintf( pErr, "This command cannot be applied to an AIG with choice nodes.\n" ); 06509 return 1; 06510 } 06511 if ( Abc_NtkIsComb(pNtk) ) 06512 { 06513 fprintf( pErr, "This command works only for sequential circuits.\n" ); 06514 return 1; 06515 } 06516 06517 // get the strashed network 06518 if ( !Abc_NtkIsStrash(pNtk) ) 06519 { 06520 pNtk = Abc_NtkStrash( pNtk, 0, 1, 0 ); 06521 pNtkRes = Abc_NtkTransRel( pNtk, fInputs, fVerbose ); 06522 Abc_NtkDelete( pNtk ); 06523 } 06524 else 06525 pNtkRes = Abc_NtkTransRel( pNtk, fInputs, fVerbose ); 06526 // check if the result is available 06527 if ( pNtkRes == NULL ) 06528 { 06529 fprintf( pErr, "Command has failed.\n" ); 06530 return 0; 06531 } 06532 // replace the current network 06533 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06534 return 0; 06535 06536 usage: 06537 fprintf( pErr, "usage: qrel [-qvh]\n" ); 06538 fprintf( pErr, "\t computes transition relation of the sequential network\n" ); 06539 // fprintf( pErr, "\t-I num : the zero-based index of a variable to quantify [default = %d]\n", iVar ); 06540 fprintf( pErr, "\t-q : perform quantification of inputs [default = %s]\n", fInputs? "yes": "no" ); 06541 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06542 fprintf( pErr, "\t-h : print the command usage\n"); 06543 return 1; 06544 }
int Abc_CommandQuaVar | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6367 of file abc.c.
06368 { 06369 FILE * pOut, * pErr; 06370 Abc_Ntk_t * pNtk, * pNtkRes; 06371 int c, iVar, fUniv, fVerbose, RetValue; 06372 extern int Abc_NtkQuantify( Abc_Ntk_t * pNtk, int fUniv, int iVar, int fVerbose ); 06373 06374 pNtk = Abc_FrameReadNtk(pAbc); 06375 pOut = Abc_FrameReadOut(pAbc); 06376 pErr = Abc_FrameReadErr(pAbc); 06377 06378 // set defaults 06379 iVar = 0; 06380 fUniv = 0; 06381 fVerbose = 0; 06382 Extra_UtilGetoptReset(); 06383 while ( ( c = Extra_UtilGetopt( argc, argv, "Iuvh" ) ) != EOF ) 06384 { 06385 switch ( c ) 06386 { 06387 case 'I': 06388 if ( globalUtilOptind >= argc ) 06389 { 06390 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 06391 goto usage; 06392 } 06393 iVar = atoi(argv[globalUtilOptind]); 06394 globalUtilOptind++; 06395 if ( iVar < 0 ) 06396 goto usage; 06397 break; 06398 case 'u': 06399 fUniv ^= 1; 06400 break; 06401 case 'v': 06402 fVerbose ^= 1; 06403 break; 06404 case 'h': 06405 goto usage; 06406 default: 06407 goto usage; 06408 } 06409 } 06410 if ( pNtk == NULL ) 06411 { 06412 fprintf( pErr, "Empty network.\n" ); 06413 return 1; 06414 } 06415 if ( Abc_NtkGetChoiceNum( pNtk ) ) 06416 { 06417 fprintf( pErr, "This command cannot be applied to an AIG with choice nodes.\n" ); 06418 return 1; 06419 } 06420 06421 // get the strashed network 06422 pNtkRes = Abc_NtkStrash( pNtk, 0, 1, 0 ); 06423 RetValue = Abc_NtkQuantify( pNtkRes, fUniv, iVar, fVerbose ); 06424 // clean temporary storage for the cofactors 06425 Abc_NtkCleanData( pNtkRes ); 06426 Abc_AigCleanup( pNtkRes->pManFunc ); 06427 // check the result 06428 if ( !RetValue ) 06429 { 06430 fprintf( pErr, "Command has failed.\n" ); 06431 return 0; 06432 } 06433 // replace the current network 06434 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06435 return 0; 06436 06437 usage: 06438 fprintf( pErr, "usage: qvar [-I num] [-uvh]\n" ); 06439 fprintf( pErr, "\t quantifies one variable using the AIG\n" ); 06440 fprintf( pErr, "\t-I num : the zero-based index of a variable to quantify [default = %d]\n", iVar ); 06441 fprintf( pErr, "\t-u : toggle universal quantification [default = %s]\n", fUniv? "yes": "no" ); 06442 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06443 fprintf( pErr, "\t-h : print the command usage\n"); 06444 return 1; 06445 }
int Abc_CommandRecAdd | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9147 of file abc.c.
09148 { 09149 FILE * pOut, * pErr; 09150 Abc_Ntk_t * pNtk; 09151 int c; 09152 09153 pNtk = Abc_FrameReadNtk(pAbc); 09154 pOut = Abc_FrameReadOut(pAbc); 09155 pErr = Abc_FrameReadErr(pAbc); 09156 09157 // set defaults 09158 Extra_UtilGetoptReset(); 09159 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 09160 { 09161 switch ( c ) 09162 { 09163 case 'h': 09164 goto usage; 09165 default: 09166 goto usage; 09167 } 09168 } 09169 if ( !Abc_NtkIsStrash(pNtk) ) 09170 { 09171 fprintf( pErr, "This command works for AIGs.\n" ); 09172 return 0; 09173 } 09174 if ( !Abc_NtkRecIsRunning() ) 09175 { 09176 fprintf( pErr, "This command works for AIGs after calling \"rec_start\".\n" ); 09177 return 0; 09178 } 09179 Abc_NtkRecAdd( pNtk ); 09180 return 0; 09181 09182 usage: 09183 fprintf( pErr, "usage: rec_add [-h]\n" ); 09184 fprintf( pErr, "\t adds subgraphs from the current network to the set\n" ); 09185 fprintf( pErr, "\t-h : print the command usage\n"); 09186 return 1; 09187 }
int Abc_CommandRecPs | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9200 of file abc.c.
09201 { 09202 FILE * pOut, * pErr; 09203 Abc_Ntk_t * pNtk; 09204 int c; 09205 09206 pNtk = Abc_FrameReadNtk(pAbc); 09207 pOut = Abc_FrameReadOut(pAbc); 09208 pErr = Abc_FrameReadErr(pAbc); 09209 09210 // set defaults 09211 Extra_UtilGetoptReset(); 09212 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 09213 { 09214 switch ( c ) 09215 { 09216 case 'h': 09217 goto usage; 09218 default: 09219 goto usage; 09220 } 09221 } 09222 if ( !Abc_NtkRecIsRunning() ) 09223 { 09224 fprintf( pErr, "This command works for AIGs only after calling \"rec_start\".\n" ); 09225 return 0; 09226 } 09227 Abc_NtkRecPs(); 09228 return 0; 09229 09230 usage: 09231 fprintf( pErr, "usage: rec_ps [-h]\n" ); 09232 fprintf( pErr, "\t prints statistics about the recorded AIG subgraphs\n" ); 09233 fprintf( pErr, "\t-h : print the command usage\n"); 09234 return 1; 09235 }
int Abc_CommandRecStart | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9012 of file abc.c.
09013 { 09014 FILE * pOut, * pErr; 09015 Abc_Ntk_t * pNtk; 09016 int c; 09017 int nVars; 09018 int nCuts; 09019 09020 pNtk = Abc_FrameReadNtk(pAbc); 09021 pOut = Abc_FrameReadOut(pAbc); 09022 pErr = Abc_FrameReadErr(pAbc); 09023 09024 // set defaults 09025 nVars = 4; 09026 nCuts = 8; 09027 Extra_UtilGetoptReset(); 09028 while ( ( c = Extra_UtilGetopt( argc, argv, "KCh" ) ) != EOF ) 09029 { 09030 switch ( c ) 09031 { 09032 case 'K': 09033 if ( globalUtilOptind >= argc ) 09034 { 09035 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 09036 goto usage; 09037 } 09038 nVars = atoi(argv[globalUtilOptind]); 09039 globalUtilOptind++; 09040 if ( nVars < 1 ) 09041 goto usage; 09042 break; 09043 case 'C': 09044 if ( globalUtilOptind >= argc ) 09045 { 09046 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 09047 goto usage; 09048 } 09049 nCuts = atoi(argv[globalUtilOptind]); 09050 globalUtilOptind++; 09051 if ( nCuts < 1 ) 09052 goto usage; 09053 break; 09054 case 'h': 09055 goto usage; 09056 default: 09057 goto usage; 09058 } 09059 } 09060 if ( !(nVars >= 3 && nVars <= 16) ) 09061 { 09062 fprintf( pErr, "The range of allowed values is 3 <= K <= 16.\n" ); 09063 return 0; 09064 } 09065 if ( Abc_NtkRecIsRunning() ) 09066 { 09067 fprintf( pErr, "The AIG subgraph recording is already started.\n" ); 09068 return 0; 09069 } 09070 if ( pNtk && !Abc_NtkIsStrash(pNtk) ) 09071 { 09072 fprintf( pErr, "This command works only for AIGs; run strashing (\"st\").\n" ); 09073 return 0; 09074 } 09075 Abc_NtkRecStart( pNtk, nVars, nCuts ); 09076 return 0; 09077 09078 usage: 09079 fprintf( pErr, "usage: rec_start [-K num] [-C num] [-h]\n" ); 09080 fprintf( pErr, "\t starts recording AIG subgraphs (should be called for\n" ); 09081 fprintf( pErr, "\t an empty network or after reading in a previous record)\n" ); 09082 fprintf( pErr, "\t-K num : the largest number of inputs [default = %d]\n", nVars ); 09083 fprintf( pErr, "\t-C num : the max number of cuts used at a node (0 < num < 2^12) [default = %d]\n", nCuts ); 09084 fprintf( pErr, "\t-h : print the command usage\n"); 09085 return 1; 09086 }
int Abc_CommandRecStop | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9099 of file abc.c.
09100 { 09101 FILE * pOut, * pErr; 09102 Abc_Ntk_t * pNtk; 09103 int c; 09104 09105 pNtk = Abc_FrameReadNtk(pAbc); 09106 pOut = Abc_FrameReadOut(pAbc); 09107 pErr = Abc_FrameReadErr(pAbc); 09108 09109 // set defaults 09110 Extra_UtilGetoptReset(); 09111 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 09112 { 09113 switch ( c ) 09114 { 09115 case 'h': 09116 goto usage; 09117 default: 09118 goto usage; 09119 } 09120 } 09121 if ( !Abc_NtkRecIsRunning() ) 09122 { 09123 fprintf( pErr, "This command works only after calling \"rec_start\".\n" ); 09124 return 0; 09125 } 09126 Abc_NtkRecStop(); 09127 return 0; 09128 09129 usage: 09130 fprintf( pErr, "usage: rec_stop [-h]\n" ); 09131 fprintf( pErr, "\t cleans the internal storage for AIG subgraphs\n" ); 09132 fprintf( pErr, "\t-h : print the command usage\n"); 09133 return 1; 09134 }
int Abc_CommandRecUse | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9248 of file abc.c.
09249 { 09250 FILE * pOut, * pErr; 09251 Abc_Ntk_t * pNtk, * pNtkRes; 09252 int c; 09253 09254 pNtk = Abc_FrameReadNtk(pAbc); 09255 pOut = Abc_FrameReadOut(pAbc); 09256 pErr = Abc_FrameReadErr(pAbc); 09257 09258 // set defaults 09259 Extra_UtilGetoptReset(); 09260 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 09261 { 09262 switch ( c ) 09263 { 09264 case 'h': 09265 goto usage; 09266 default: 09267 goto usage; 09268 } 09269 } 09270 if ( !Abc_NtkRecIsRunning() ) 09271 { 09272 fprintf( pErr, "This command works for AIGs only after calling \"rec_start\".\n" ); 09273 return 0; 09274 } 09275 // get the new network 09276 pNtkRes = Abc_NtkRecUse(); 09277 if ( pNtkRes == NULL ) 09278 { 09279 fprintf( pErr, "Transforming internal AIG subgraphs into an AIG with choices has failed.\n" ); 09280 return 1; 09281 } 09282 // replace the current network 09283 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 09284 return 0; 09285 09286 usage: 09287 fprintf( pErr, "usage: rec_use [-h]\n" ); 09288 fprintf( pErr, "\t transforms internal storage into an AIG with choices\n" ); 09289 fprintf( pErr, "\t-h : print the command usage\n"); 09290 return 1; 09291 }
int Abc_CommandRefactor | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3231 of file abc.c.
03232 { 03233 FILE * pOut, * pErr; 03234 Abc_Ntk_t * pNtk; 03235 int c; 03236 int nNodeSizeMax; 03237 int nConeSizeMax; 03238 bool fUpdateLevel; 03239 bool fUseZeros; 03240 bool fUseDcs; 03241 bool fVerbose; 03242 extern int Abc_NtkRefactor( Abc_Ntk_t * pNtk, int nNodeSizeMax, int nConeSizeMax, bool fUpdateLevel, bool fUseZeros, bool fUseDcs, bool fVerbose ); 03243 03244 pNtk = Abc_FrameReadNtk(pAbc); 03245 pOut = Abc_FrameReadOut(pAbc); 03246 pErr = Abc_FrameReadErr(pAbc); 03247 03248 // set defaults 03249 nNodeSizeMax = 10; 03250 nConeSizeMax = 16; 03251 fUpdateLevel = 1; 03252 fUseZeros = 0; 03253 fUseDcs = 0; 03254 fVerbose = 0; 03255 Extra_UtilGetoptReset(); 03256 while ( ( c = Extra_UtilGetopt( argc, argv, "NClzdvh" ) ) != EOF ) 03257 { 03258 switch ( c ) 03259 { 03260 case 'N': 03261 if ( globalUtilOptind >= argc ) 03262 { 03263 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 03264 goto usage; 03265 } 03266 nNodeSizeMax = atoi(argv[globalUtilOptind]); 03267 globalUtilOptind++; 03268 if ( nNodeSizeMax < 0 ) 03269 goto usage; 03270 break; 03271 case 'C': 03272 if ( globalUtilOptind >= argc ) 03273 { 03274 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 03275 goto usage; 03276 } 03277 nConeSizeMax = atoi(argv[globalUtilOptind]); 03278 globalUtilOptind++; 03279 if ( nConeSizeMax < 0 ) 03280 goto usage; 03281 break; 03282 case 'l': 03283 fUpdateLevel ^= 1; 03284 break; 03285 case 'z': 03286 fUseZeros ^= 1; 03287 break; 03288 case 'd': 03289 fUseDcs ^= 1; 03290 break; 03291 case 'v': 03292 fVerbose ^= 1; 03293 break; 03294 case 'h': 03295 goto usage; 03296 default: 03297 goto usage; 03298 } 03299 } 03300 03301 if ( pNtk == NULL ) 03302 { 03303 fprintf( pErr, "Empty network.\n" ); 03304 return 1; 03305 } 03306 if ( !Abc_NtkIsStrash(pNtk) ) 03307 { 03308 fprintf( pErr, "This command can only be applied to an AIG (run \"strash\").\n" ); 03309 return 1; 03310 } 03311 if ( Abc_NtkGetChoiceNum(pNtk) ) 03312 { 03313 fprintf( pErr, "AIG resynthesis cannot be applied to AIGs with choice nodes.\n" ); 03314 return 1; 03315 } 03316 03317 if ( fUseDcs && nNodeSizeMax >= nConeSizeMax ) 03318 { 03319 fprintf( pErr, "For don't-care to work, containing cone should be larger than collapsed node.\n" ); 03320 return 1; 03321 } 03322 03323 // modify the current network 03324 if ( !Abc_NtkRefactor( pNtk, nNodeSizeMax, nConeSizeMax, fUpdateLevel, fUseZeros, fUseDcs, fVerbose ) ) 03325 { 03326 fprintf( pErr, "Refactoring has failed.\n" ); 03327 return 1; 03328 } 03329 return 0; 03330 03331 usage: 03332 fprintf( pErr, "usage: refactor [-N num] [-C num] [-lzdvh]\n" ); 03333 fprintf( pErr, "\t performs technology-independent refactoring of the AIG\n" ); 03334 fprintf( pErr, "\t-N num : the max support of the collapsed node [default = %d]\n", nNodeSizeMax ); 03335 fprintf( pErr, "\t-C num : the max support of the containing cone [default = %d]\n", nConeSizeMax ); 03336 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 03337 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); 03338 fprintf( pErr, "\t-d : toggle using don't-cares [default = %s]\n", fUseDcs? "yes": "no" ); 03339 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03340 fprintf( pErr, "\t-h : print the command usage\n"); 03341 return 1; 03342 }
int Abc_CommandRenode | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2297 of file abc.c.
02298 { 02299 FILE * pOut, * pErr; 02300 Abc_Ntk_t * pNtk, * pNtkRes; 02301 int nLutSize, nCutsMax, c; 02302 int nFlowIters, nAreaIters; 02303 int fArea; 02304 int fUseBdds; 02305 int fUseSops; 02306 int fUseCnfs; 02307 int fUseMv; 02308 int fVerbose; 02309 extern Abc_Ntk_t * Abc_NtkRenode( Abc_Ntk_t * pNtk, int nLutSize, int nCutsMax, int nFlowIters, int nAreaIters, int fArea, int fUseBdds, int fUseSops, int fUseCnfs, int fUseMv, int fVerbose ); 02310 02311 pNtk = Abc_FrameReadNtk(pAbc); 02312 pOut = Abc_FrameReadOut(pAbc); 02313 pErr = Abc_FrameReadErr(pAbc); 02314 02315 // set defaults 02316 nLutSize = 8; 02317 nCutsMax = 4; 02318 nFlowIters = 1; 02319 nAreaIters = 1; 02320 fArea = 0; 02321 fUseBdds = 0; 02322 fUseSops = 0; 02323 fUseCnfs = 0; 02324 fUseMv = 0; 02325 fVerbose = 0; 02326 Extra_UtilGetoptReset(); 02327 while ( ( c = Extra_UtilGetopt( argc, argv, "KCFAabscivh" ) ) != EOF ) 02328 { 02329 switch ( c ) 02330 { 02331 case 'K': 02332 if ( globalUtilOptind >= argc ) 02333 { 02334 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 02335 goto usage; 02336 } 02337 nLutSize = atoi(argv[globalUtilOptind]); 02338 globalUtilOptind++; 02339 if ( nLutSize < 0 ) 02340 goto usage; 02341 break; 02342 case 'C': 02343 if ( globalUtilOptind >= argc ) 02344 { 02345 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 02346 goto usage; 02347 } 02348 nCutsMax = atoi(argv[globalUtilOptind]); 02349 globalUtilOptind++; 02350 if ( nCutsMax < 0 ) 02351 goto usage; 02352 break; 02353 case 'F': 02354 if ( globalUtilOptind >= argc ) 02355 { 02356 fprintf( pErr, "Command line switch \"-F\" should be followed by a positive integer.\n" ); 02357 goto usage; 02358 } 02359 nFlowIters = atoi(argv[globalUtilOptind]); 02360 globalUtilOptind++; 02361 if ( nFlowIters < 0 ) 02362 goto usage; 02363 break; 02364 case 'A': 02365 if ( globalUtilOptind >= argc ) 02366 { 02367 fprintf( pErr, "Command line switch \"-A\" should be followed by a positive integer.\n" ); 02368 goto usage; 02369 } 02370 nAreaIters = atoi(argv[globalUtilOptind]); 02371 globalUtilOptind++; 02372 if ( nAreaIters < 0 ) 02373 goto usage; 02374 break; 02375 case 'a': 02376 fArea ^= 1; 02377 break; 02378 case 'b': 02379 fUseBdds ^= 1; 02380 break; 02381 case 's': 02382 fUseSops ^= 1; 02383 break; 02384 case 'c': 02385 fUseCnfs ^= 1; 02386 break; 02387 case 'i': 02388 fUseMv ^= 1; 02389 break; 02390 case 'v': 02391 fVerbose ^= 1; 02392 break; 02393 case 'h': 02394 goto usage; 02395 default: 02396 goto usage; 02397 } 02398 } 02399 02400 if ( fUseBdds + fUseSops + fUseCnfs + fUseMv > 1 ) 02401 { 02402 fprintf( pErr, "Cannot optimize two parameters at the same time.\n" ); 02403 return 1; 02404 } 02405 02406 if ( nLutSize < 3 || nLutSize > IF_MAX_FUNC_LUTSIZE ) 02407 { 02408 fprintf( pErr, "Incorrect LUT size (%d).\n", nLutSize ); 02409 return 1; 02410 } 02411 02412 if ( nCutsMax < 1 || nCutsMax >= (1<<12) ) 02413 { 02414 fprintf( pErr, "Incorrect number of cuts.\n" ); 02415 return 1; 02416 } 02417 02418 if ( pNtk == NULL ) 02419 { 02420 fprintf( pErr, "Empty network.\n" ); 02421 return 1; 02422 } 02423 if ( !Abc_NtkIsStrash(pNtk) ) 02424 { 02425 fprintf( pErr, "Cannot renode a network that is not an AIG (run \"strash\").\n" ); 02426 return 1; 02427 } 02428 02429 // get the new network 02430 pNtkRes = Abc_NtkRenode( pNtk, nLutSize, nCutsMax, nFlowIters, nAreaIters, fArea, fUseBdds, fUseSops, fUseCnfs, fUseMv, fVerbose ); 02431 if ( pNtkRes == NULL ) 02432 { 02433 fprintf( pErr, "Renoding has failed.\n" ); 02434 return 1; 02435 } 02436 // replace the current network 02437 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 02438 return 0; 02439 02440 usage: 02441 fprintf( pErr, "usage: renode [-K num] [-C num] [-F num] [-A num] [-sbciav]\n" ); 02442 fprintf( pErr, "\t transforms the AIG into a logic network with larger nodes\n" ); 02443 fprintf( pErr, "\t while minimizing the number of FF literals of the node SOPs\n" ); 02444 fprintf( pErr, "\t-K num : the max cut size for renoding (2 < num < %d) [default = %d]\n", IF_MAX_FUNC_LUTSIZE+1, nLutSize ); 02445 fprintf( pErr, "\t-C num : the max number of cuts used at a node (0 < num < 2^12) [default = %d]\n", nCutsMax ); 02446 fprintf( pErr, "\t-F num : the number of area flow recovery iterations (num >= 0) [default = %d]\n", nFlowIters ); 02447 fprintf( pErr, "\t-A num : the number of exact area recovery iterations (num >= 0) [default = %d]\n", nAreaIters ); 02448 fprintf( pErr, "\t-s : toggles minimizing SOP cubes instead of FF lits [default = %s]\n", fUseSops? "yes": "no" ); 02449 fprintf( pErr, "\t-b : toggles minimizing BDD nodes instead of FF lits [default = %s]\n", fUseBdds? "yes": "no" ); 02450 fprintf( pErr, "\t-c : toggles minimizing CNF clauses instead of FF lits [default = %s]\n", fUseCnfs? "yes": "no" ); 02451 fprintf( pErr, "\t-i : toggles minimizing MV-SOP instead of FF lits [default = %s]\n", fUseMv? "yes": "no" ); 02452 fprintf( pErr, "\t-a : toggles area-oriented mapping [default = %s]\n", fArea? "yes": "no" ); 02453 fprintf( pErr, "\t-v : print verbose information [default = %s]\n", fVerbose? "yes": "no" ); 02454 fprintf( pErr, "\t-h : print the command usage\n"); 02455 return 1; 02456 }
int Abc_CommandReorder | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4597 of file abc.c.
04598 { 04599 FILE * pOut, * pErr; 04600 Abc_Ntk_t * pNtk; 04601 int c; 04602 int fVerbose; 04603 extern void Abc_NtkBddReorder( Abc_Ntk_t * pNtk, int fVerbose ); 04604 04605 pNtk = Abc_FrameReadNtk(pAbc); 04606 pOut = Abc_FrameReadOut(pAbc); 04607 pErr = Abc_FrameReadErr(pAbc); 04608 04609 // set defaults 04610 fVerbose = 0; 04611 Extra_UtilGetoptReset(); 04612 while ( ( c = Extra_UtilGetopt( argc, argv, "vh" ) ) != EOF ) 04613 { 04614 switch ( c ) 04615 { 04616 case 'v': 04617 fVerbose ^= 1; 04618 break; 04619 case 'h': 04620 goto usage; 04621 default: 04622 goto usage; 04623 } 04624 } 04625 04626 if ( pNtk == NULL ) 04627 { 04628 fprintf( pErr, "Empty network.\n" ); 04629 return 1; 04630 } 04631 04632 // get the new network 04633 if ( !Abc_NtkIsBddLogic(pNtk) ) 04634 { 04635 fprintf( pErr, "Variable reordering is possible when node functions are BDDs (run \"bdd\").\n" ); 04636 return 1; 04637 } 04638 Abc_NtkBddReorder( pNtk, fVerbose ); 04639 return 0; 04640 04641 usage: 04642 fprintf( pErr, "usage: reorder [-vh]\n" ); 04643 fprintf( pErr, "\t reorders local functions of the nodes using sifting\n" ); 04644 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 04645 fprintf( pErr, "\t-h : print the command usage\n"); 04646 return 1; 04647 }
int Abc_CommandRestructure | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3355 of file abc.c.
03356 { 03357 FILE * pOut, * pErr; 03358 Abc_Ntk_t * pNtk; 03359 int c; 03360 int nCutsMax; 03361 bool fUpdateLevel; 03362 bool fUseZeros; 03363 bool fVerbose; 03364 extern int Abc_NtkRestructure( Abc_Ntk_t * pNtk, int nCutsMax, bool fUpdateLevel, bool fUseZeros, bool fVerbose ); 03365 03366 pNtk = Abc_FrameReadNtk(pAbc); 03367 pOut = Abc_FrameReadOut(pAbc); 03368 pErr = Abc_FrameReadErr(pAbc); 03369 03370 // set defaults 03371 nCutsMax = 5; 03372 fUpdateLevel = 0; 03373 fUseZeros = 0; 03374 fVerbose = 0; 03375 Extra_UtilGetoptReset(); 03376 while ( ( c = Extra_UtilGetopt( argc, argv, "Klzvh" ) ) != EOF ) 03377 { 03378 switch ( c ) 03379 { 03380 case 'K': 03381 if ( globalUtilOptind >= argc ) 03382 { 03383 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 03384 goto usage; 03385 } 03386 nCutsMax = atoi(argv[globalUtilOptind]); 03387 globalUtilOptind++; 03388 if ( nCutsMax < 0 ) 03389 goto usage; 03390 break; 03391 case 'l': 03392 fUpdateLevel ^= 1; 03393 break; 03394 case 'z': 03395 fUseZeros ^= 1; 03396 break; 03397 case 'v': 03398 fVerbose ^= 1; 03399 break; 03400 case 'h': 03401 goto usage; 03402 default: 03403 goto usage; 03404 } 03405 } 03406 03407 if ( pNtk == NULL ) 03408 { 03409 fprintf( pErr, "Empty network.\n" ); 03410 return 1; 03411 } 03412 if ( nCutsMax < 4 || nCutsMax > CUT_SIZE_MAX ) 03413 { 03414 fprintf( pErr, "Can only compute the cuts for %d <= K <= %d.\n", 4, CUT_SIZE_MAX ); 03415 return 1; 03416 } 03417 if ( !Abc_NtkIsStrash(pNtk) ) 03418 { 03419 fprintf( pErr, "This command can only be applied to an AIG (run \"strash\").\n" ); 03420 return 1; 03421 } 03422 if ( Abc_NtkGetChoiceNum(pNtk) ) 03423 { 03424 fprintf( pErr, "AIG resynthesis cannot be applied to AIGs with choice nodes.\n" ); 03425 return 1; 03426 } 03427 03428 // modify the current network 03429 if ( !Abc_NtkRestructure( pNtk, nCutsMax, fUpdateLevel, fUseZeros, fVerbose ) ) 03430 { 03431 fprintf( pErr, "Refactoring has failed.\n" ); 03432 return 1; 03433 } 03434 return 0; 03435 03436 usage: 03437 fprintf( pErr, "usage: restructure [-K num] [-lzvh]\n" ); 03438 fprintf( pErr, "\t performs technology-independent restructuring of the AIG\n" ); 03439 fprintf( pErr, "\t-K num : the max cut size (%d <= num <= %d) [default = %d]\n", CUT_SIZE_MIN, CUT_SIZE_MAX, nCutsMax ); 03440 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 03441 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); 03442 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03443 fprintf( pErr, "\t-h : print the command usage\n"); 03444 return 1; 03445 }
int Abc_CommandResubstitute | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3458 of file abc.c.
03459 { 03460 FILE * pOut, * pErr; 03461 Abc_Ntk_t * pNtk; 03462 int RS_CUT_MIN = 4; 03463 int RS_CUT_MAX = 16; 03464 int c; 03465 int nCutsMax; 03466 int nNodesMax; 03467 int nLevelsOdc; 03468 bool fUpdateLevel; 03469 bool fUseZeros; 03470 bool fVerbose; 03471 bool fVeryVerbose; 03472 extern int Abc_NtkResubstitute( Abc_Ntk_t * pNtk, int nCutsMax, int nNodesMax, int nLevelsOdc, bool fUpdateLevel, bool fVerbose, bool fVeryVerbose ); 03473 03474 pNtk = Abc_FrameReadNtk(pAbc); 03475 pOut = Abc_FrameReadOut(pAbc); 03476 pErr = Abc_FrameReadErr(pAbc); 03477 03478 // set defaults 03479 nCutsMax = 8; 03480 nNodesMax = 1; 03481 nLevelsOdc = 0; 03482 fUpdateLevel = 1; 03483 fUseZeros = 0; 03484 fVerbose = 0; 03485 fVeryVerbose = 0; 03486 Extra_UtilGetoptReset(); 03487 while ( ( c = Extra_UtilGetopt( argc, argv, "KNFlzvwh" ) ) != EOF ) 03488 { 03489 switch ( c ) 03490 { 03491 case 'K': 03492 if ( globalUtilOptind >= argc ) 03493 { 03494 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 03495 goto usage; 03496 } 03497 nCutsMax = atoi(argv[globalUtilOptind]); 03498 globalUtilOptind++; 03499 if ( nCutsMax < 0 ) 03500 goto usage; 03501 break; 03502 case 'N': 03503 if ( globalUtilOptind >= argc ) 03504 { 03505 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 03506 goto usage; 03507 } 03508 nNodesMax = atoi(argv[globalUtilOptind]); 03509 globalUtilOptind++; 03510 if ( nNodesMax < 0 ) 03511 goto usage; 03512 break; 03513 case 'F': 03514 if ( globalUtilOptind >= argc ) 03515 { 03516 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 03517 goto usage; 03518 } 03519 nLevelsOdc = atoi(argv[globalUtilOptind]); 03520 globalUtilOptind++; 03521 if ( nLevelsOdc < 0 ) 03522 goto usage; 03523 break; 03524 case 'l': 03525 fUpdateLevel ^= 1; 03526 break; 03527 case 'z': 03528 fUseZeros ^= 1; 03529 break; 03530 case 'v': 03531 fVerbose ^= 1; 03532 break; 03533 case 'w': 03534 fVeryVerbose ^= 1; 03535 break; 03536 case 'h': 03537 goto usage; 03538 default: 03539 goto usage; 03540 } 03541 } 03542 03543 if ( pNtk == NULL ) 03544 { 03545 fprintf( pErr, "Empty network.\n" ); 03546 return 1; 03547 } 03548 if ( nCutsMax < RS_CUT_MIN || nCutsMax > RS_CUT_MAX ) 03549 { 03550 fprintf( pErr, "Can only compute cuts for %d <= K <= %d.\n", RS_CUT_MIN, RS_CUT_MAX ); 03551 return 1; 03552 } 03553 if ( nNodesMax < 0 || nNodesMax > 3 ) 03554 { 03555 fprintf( pErr, "Can only resubstitute at most 3 nodes.\n" ); 03556 return 1; 03557 } 03558 if ( !Abc_NtkIsStrash(pNtk) ) 03559 { 03560 fprintf( pErr, "This command can only be applied to an AIG (run \"strash\").\n" ); 03561 return 1; 03562 } 03563 if ( Abc_NtkGetChoiceNum(pNtk) ) 03564 { 03565 fprintf( pErr, "AIG resynthesis cannot be applied to AIGs with choice nodes.\n" ); 03566 return 1; 03567 } 03568 03569 // modify the current network 03570 if ( !Abc_NtkResubstitute( pNtk, nCutsMax, nNodesMax, nLevelsOdc, fUpdateLevel, fVerbose, fVeryVerbose ) ) 03571 { 03572 fprintf( pErr, "Refactoring has failed.\n" ); 03573 return 1; 03574 } 03575 return 0; 03576 03577 usage: 03578 fprintf( pErr, "usage: resub [-K num] [-N num] [-F num] [-lzvwh]\n" ); 03579 fprintf( pErr, "\t performs technology-independent restructuring of the AIG\n" ); 03580 fprintf( pErr, "\t-K num : the max cut size (%d <= num <= %d) [default = %d]\n", RS_CUT_MIN, RS_CUT_MAX, nCutsMax ); 03581 fprintf( pErr, "\t-N num : the max number of nodes to add (0 <= num <= 3) [default = %d]\n", nNodesMax ); 03582 fprintf( pErr, "\t-F num : the number of fanout levels for ODC computation [default = %d]\n", nLevelsOdc ); 03583 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 03584 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); 03585 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03586 fprintf( pErr, "\t-w : toggle verbose printout of ODC computation [default = %s]\n", fVeryVerbose? "yes": "no" ); 03587 fprintf( pErr, "\t-h : print the command usage\n"); 03588 return 1; 03589 }
int Abc_CommandRetime | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10752 of file abc.c.
10753 { 10754 FILE * pOut, * pErr; 10755 Abc_Ntk_t * pNtk, * pNtkRes; 10756 int c, nMaxIters; 10757 int fForward; 10758 int fBackward; 10759 int fOneStep; 10760 int fVerbose; 10761 int Mode; 10762 extern int Abc_NtkRetime( Abc_Ntk_t * pNtk, int Mode, int fForwardOnly, int fBackwardOnly, int fOneStep, int fVerbose ); 10763 10764 pNtk = Abc_FrameReadNtk(pAbc); 10765 pOut = Abc_FrameReadOut(pAbc); 10766 pErr = Abc_FrameReadErr(pAbc); 10767 10768 // set defaults 10769 Mode = 5; 10770 fForward = 0; 10771 fBackward = 0; 10772 fOneStep = 0; 10773 fVerbose = 0; 10774 nMaxIters = 15; 10775 Extra_UtilGetoptReset(); 10776 while ( ( c = Extra_UtilGetopt( argc, argv, "Mfbsvh" ) ) != EOF ) 10777 { 10778 switch ( c ) 10779 { 10780 case 'M': 10781 if ( globalUtilOptind >= argc ) 10782 { 10783 fprintf( pErr, "Command line switch \"-M\" should be followed by a positive integer.\n" ); 10784 goto usage; 10785 } 10786 Mode = atoi(argv[globalUtilOptind]); 10787 globalUtilOptind++; 10788 if ( Mode < 0 ) 10789 goto usage; 10790 break; 10791 case 'f': 10792 fForward ^= 1; 10793 break; 10794 case 'b': 10795 fBackward ^= 1; 10796 break; 10797 case 's': 10798 fOneStep ^= 1; 10799 break; 10800 case 'v': 10801 fVerbose ^= 1; 10802 break; 10803 case 'h': 10804 goto usage; 10805 default: 10806 goto usage; 10807 } 10808 } 10809 10810 if ( pNtk == NULL ) 10811 { 10812 fprintf( pErr, "Empty network.\n" ); 10813 return 1; 10814 } 10815 10816 if ( fForward && fBackward ) 10817 { 10818 fprintf( pErr, "Only one switch \"-f\" or \"-b\" can be selected at a time.\n" ); 10819 return 1; 10820 } 10821 10822 if ( !Abc_NtkLatchNum(pNtk) ) 10823 { 10824 fprintf( pErr, "The network has no latches. Retiming is not performed.\n" ); 10825 return 0; 10826 } 10827 10828 if ( Mode < 0 || Mode > 6 ) 10829 { 10830 fprintf( pErr, "The mode (%d) is incorrect. Retiming is not performed.\n", Mode ); 10831 return 0; 10832 } 10833 10834 if ( Abc_NtkIsStrash(pNtk) ) 10835 { 10836 if ( Abc_NtkGetChoiceNum(pNtk) ) 10837 { 10838 fprintf( pErr, "Retiming with choice nodes is not implemented.\n" ); 10839 return 0; 10840 } 10841 // convert the network into an SOP network 10842 pNtkRes = Abc_NtkToLogic( pNtk ); 10843 // perform the retiming 10844 Abc_NtkRetime( pNtkRes, Mode, fForward, fBackward, fOneStep, fVerbose ); 10845 // replace the current network 10846 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10847 return 0; 10848 } 10849 10850 // get the network in the SOP form 10851 if ( !Abc_NtkToSop(pNtk, 0) ) 10852 { 10853 printf( "Converting to SOPs has failed.\n" ); 10854 return 0; 10855 } 10856 10857 if ( !Abc_NtkIsLogic(pNtk) ) 10858 { 10859 fprintf( pErr, "The network is not a logic network. Retiming is not performed.\n" ); 10860 return 0; 10861 } 10862 10863 // perform the retiming 10864 Abc_NtkRetime( pNtk, Mode, fForward, fBackward, fOneStep, fVerbose ); 10865 return 0; 10866 10867 usage: 10868 fprintf( pErr, "usage: retime [-M num] [-fbvh]\n" ); 10869 fprintf( pErr, "\t retimes the current network using one of the algorithms:\n" ); 10870 fprintf( pErr, "\t 1: most forward retiming\n" ); 10871 fprintf( pErr, "\t 2: most backward retiming\n" ); 10872 fprintf( pErr, "\t 3: forward and backward min-area retiming\n" ); 10873 fprintf( pErr, "\t 4: forward and backward min-delay retiming\n" ); 10874 fprintf( pErr, "\t 5: mode 3 followed by mode 4\n" ); 10875 fprintf( pErr, "\t 6: Pan's optimum-delay retiming using binary search\n" ); 10876 fprintf( pErr, "\t-M num : the retiming algorithm to use [default = %d]\n", Mode ); 10877 fprintf( pErr, "\t-f : enables forward-only retiming in modes 3,4,5 [default = %s]\n", fForward? "yes": "no" ); 10878 fprintf( pErr, "\t-b : enables backward-only retiming in modes 3,4,5 [default = %s]\n", fBackward? "yes": "no" ); 10879 fprintf( pErr, "\t-s : enables retiming one step only in mode 4 [default = %s]\n", fOneStep? "yes": "no" ); 10880 fprintf( pErr, "\t-v : enables verbose output [default = %s]\n", fVerbose? "yes": "no" ); 10881 fprintf( pErr, "\t-h : print the command usage\n"); 10882 return 1; 10883 // fprintf( pErr, "\t-I num : max number of iterations of l-value computation [default = %d]\n", nMaxIters ); 10884 // fprintf( pErr, "\t-f : toggle forward retiming (for AIGs) [default = %s]\n", fForward? "yes": "no" ); 10885 // fprintf( pErr, "\t-b : toggle backward retiming (for AIGs) [default = %s]\n", fBackward? "yes": "no" ); 10886 // fprintf( pErr, "\t-i : toggle computation of initial state [default = %s]\n", fInitial? "yes": "no" ); 10887 }
int Abc_CommandRewrite | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3123 of file abc.c.
03124 { 03125 FILE * pOut, * pErr; 03126 Abc_Ntk_t * pNtk; 03127 int c; 03128 bool fUpdateLevel; 03129 bool fPrecompute; 03130 bool fUseZeros; 03131 bool fVerbose; 03132 bool fVeryVerbose; 03133 bool fPlaceEnable; 03134 // external functions 03135 extern void Rwr_Precompute(); 03136 03137 pNtk = Abc_FrameReadNtk(pAbc); 03138 pOut = Abc_FrameReadOut(pAbc); 03139 pErr = Abc_FrameReadErr(pAbc); 03140 03141 // set defaults 03142 fUpdateLevel = 1; 03143 fPrecompute = 0; 03144 fUseZeros = 0; 03145 fVerbose = 0; 03146 fVeryVerbose = 0; 03147 fPlaceEnable = 0; 03148 Extra_UtilGetoptReset(); 03149 while ( ( c = Extra_UtilGetopt( argc, argv, "lxzvwh" ) ) != EOF ) 03150 { 03151 switch ( c ) 03152 { 03153 case 'l': 03154 fUpdateLevel ^= 1; 03155 break; 03156 case 'x': 03157 fPrecompute ^= 1; 03158 break; 03159 case 'z': 03160 fUseZeros ^= 1; 03161 break; 03162 case 'v': 03163 fVerbose ^= 1; 03164 break; 03165 case 'w': 03166 fVeryVerbose ^= 1; 03167 break; 03168 case 'p': 03169 fPlaceEnable ^= 1; 03170 break; 03171 case 'h': 03172 goto usage; 03173 default: 03174 goto usage; 03175 } 03176 } 03177 03178 if ( fPrecompute ) 03179 { 03180 Rwr_Precompute(); 03181 return 0; 03182 } 03183 03184 if ( pNtk == NULL ) 03185 { 03186 fprintf( pErr, "Empty network.\n" ); 03187 return 1; 03188 } 03189 if ( !Abc_NtkIsStrash(pNtk) ) 03190 { 03191 fprintf( pErr, "This command can only be applied to an AIG (run \"strash\").\n" ); 03192 return 1; 03193 } 03194 if ( Abc_NtkGetChoiceNum(pNtk) ) 03195 { 03196 fprintf( pErr, "AIG resynthesis cannot be applied to AIGs with choice nodes.\n" ); 03197 return 1; 03198 } 03199 03200 // modify the current network 03201 if ( !Abc_NtkRewrite( pNtk, fUpdateLevel, fUseZeros, fVerbose, fVeryVerbose, fPlaceEnable ) ) 03202 { 03203 fprintf( pErr, "Rewriting has failed.\n" ); 03204 return 1; 03205 } 03206 return 0; 03207 03208 usage: 03209 fprintf( pErr, "usage: rewrite [-lzvwh]\n" ); 03210 fprintf( pErr, "\t performs technology-independent rewriting of the AIG\n" ); 03211 fprintf( pErr, "\t-l : toggle preserving the number of levels [default = %s]\n", fUpdateLevel? "yes": "no" ); 03212 fprintf( pErr, "\t-z : toggle using zero-cost replacements [default = %s]\n", fUseZeros? "yes": "no" ); 03213 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03214 fprintf( pErr, "\t-w : toggle printout subgraph statistics [default = %s]\n", fVeryVerbose? "yes": "no" ); 03215 // fprintf( pErr, "\t-p : toggle placement-aware rewriting [default = %s]\n", fPlaceEnable? "yes": "no" ); 03216 fprintf( pErr, "\t-h : print the command usage\n"); 03217 return 1; 03218 }
int Abc_CommandRr | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 3602 of file abc.c.
03603 { 03604 FILE * pOut, * pErr; 03605 Abc_Ntk_t * pNtk; 03606 int c, Window; 03607 int nFaninLevels; 03608 int nFanoutLevels; 03609 int fUseFanouts; 03610 int fVerbose; 03611 extern int Abc_NtkRR( Abc_Ntk_t * pNtk, int nFaninLevels, int nFanoutLevels, int fUseFanouts, int fVerbose ); 03612 03613 pNtk = Abc_FrameReadNtk(pAbc); 03614 pOut = Abc_FrameReadOut(pAbc); 03615 pErr = Abc_FrameReadErr(pAbc); 03616 03617 // set defaults 03618 nFaninLevels = 3; 03619 nFanoutLevels = 3; 03620 fUseFanouts = 0; 03621 fVerbose = 0; 03622 Extra_UtilGetoptReset(); 03623 while ( ( c = Extra_UtilGetopt( argc, argv, "Wfvh" ) ) != EOF ) 03624 { 03625 switch ( c ) 03626 { 03627 case 'W': 03628 if ( globalUtilOptind >= argc ) 03629 { 03630 fprintf( pErr, "Command line switch \"-W\" should be followed by an integer.\n" ); 03631 goto usage; 03632 } 03633 Window = atoi(argv[globalUtilOptind]); 03634 globalUtilOptind++; 03635 if ( Window < 0 ) 03636 goto usage; 03637 nFaninLevels = Window / 10; 03638 nFanoutLevels = Window % 10; 03639 break; 03640 case 'f': 03641 fUseFanouts ^= 1; 03642 break; 03643 case 'v': 03644 fVerbose ^= 1; 03645 break; 03646 case 'h': 03647 goto usage; 03648 default: 03649 goto usage; 03650 } 03651 } 03652 03653 if ( pNtk == NULL ) 03654 { 03655 fprintf( pErr, "Empty network.\n" ); 03656 return 1; 03657 } 03658 if ( !Abc_NtkIsStrash(pNtk) ) 03659 { 03660 fprintf( pErr, "This command can only be applied to an AIG (run \"strash\").\n" ); 03661 return 1; 03662 } 03663 if ( Abc_NtkGetChoiceNum(pNtk) ) 03664 { 03665 fprintf( pErr, "AIG resynthesis cannot be applied to AIGs with choice nodes.\n" ); 03666 return 1; 03667 } 03668 03669 // modify the current network 03670 if ( !Abc_NtkRR( pNtk, nFaninLevels, nFanoutLevels, fUseFanouts, fVerbose ) ) 03671 { 03672 fprintf( pErr, "Redundancy removal has failed.\n" ); 03673 return 1; 03674 } 03675 return 0; 03676 03677 usage: 03678 fprintf( pErr, "usage: rr [-W NM] [-fvh]\n" ); 03679 fprintf( pErr, "\t removes combinational redundancies in the current network\n" ); 03680 fprintf( pErr, "\t-W NM : window size: TFI (N) and TFO (M) logic levels [default = %d%d]\n", nFaninLevels, nFanoutLevels ); 03681 fprintf( pErr, "\t-f : toggle RR w.r.t. fanouts [default = %s]\n", fUseFanouts? "yes": "no" ); 03682 fprintf( pErr, "\t-v : toggle verbose printout [default = %s]\n", fVerbose? "yes": "no" ); 03683 fprintf( pErr, "\t-h : print the command usage\n"); 03684 return 1; 03685 }
int Abc_CommandSat | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12155 of file abc.c.
12156 { 12157 FILE * pOut, * pErr; 12158 Abc_Ntk_t * pNtk; 12159 int c; 12160 int RetValue; 12161 int fVerbose; 12162 int nConfLimit; 12163 int nInsLimit; 12164 int clk; 12165 12166 pNtk = Abc_FrameReadNtk(pAbc); 12167 pOut = Abc_FrameReadOut(pAbc); 12168 pErr = Abc_FrameReadErr(pAbc); 12169 12170 // set defaults 12171 fVerbose = 0; 12172 nConfLimit = 100000; 12173 nInsLimit = 0; 12174 Extra_UtilGetoptReset(); 12175 while ( ( c = Extra_UtilGetopt( argc, argv, "CIvh" ) ) != EOF ) 12176 { 12177 switch ( c ) 12178 { 12179 case 'C': 12180 if ( globalUtilOptind >= argc ) 12181 { 12182 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 12183 goto usage; 12184 } 12185 nConfLimit = atoi(argv[globalUtilOptind]); 12186 globalUtilOptind++; 12187 if ( nConfLimit < 0 ) 12188 goto usage; 12189 break; 12190 case 'I': 12191 if ( globalUtilOptind >= argc ) 12192 { 12193 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 12194 goto usage; 12195 } 12196 nInsLimit = atoi(argv[globalUtilOptind]); 12197 globalUtilOptind++; 12198 if ( nInsLimit < 0 ) 12199 goto usage; 12200 break; 12201 case 'v': 12202 fVerbose ^= 1; 12203 break; 12204 case 'h': 12205 goto usage; 12206 default: 12207 goto usage; 12208 } 12209 } 12210 12211 if ( pNtk == NULL ) 12212 { 12213 fprintf( pErr, "Empty network.\n" ); 12214 return 1; 12215 } 12216 if ( Abc_NtkLatchNum(pNtk) > 0 ) 12217 { 12218 fprintf( stdout, "Currently can only solve the miter for combinational circuits.\n" ); 12219 return 0; 12220 } 12221 12222 clk = clock(); 12223 if ( Abc_NtkIsStrash(pNtk) ) 12224 { 12225 RetValue = Abc_NtkMiterSat( pNtk, (sint64)nConfLimit, (sint64)nInsLimit, fVerbose, NULL, NULL ); 12226 } 12227 else 12228 { 12229 assert( Abc_NtkIsLogic(pNtk) ); 12230 Abc_NtkToBdd( pNtk ); 12231 RetValue = Abc_NtkMiterSat( pNtk, (sint64)nConfLimit, (sint64)nInsLimit, fVerbose, NULL, NULL ); 12232 } 12233 12234 // verify that the pattern is correct 12235 if ( RetValue == 0 && Abc_NtkPoNum(pNtk) == 1 ) 12236 { 12237 //int i; 12238 //Abc_Obj_t * pObj; 12239 int * pSimInfo = Abc_NtkVerifySimulatePattern( pNtk, pNtk->pModel ); 12240 if ( pSimInfo[0] != 1 ) 12241 printf( "ERROR in Abc_NtkMiterSat(): Generated counter example is invalid.\n" ); 12242 free( pSimInfo ); 12243 /* 12244 // print model 12245 Abc_NtkForEachPi( pNtk, pObj, i ) 12246 { 12247 printf( "%d", (int)(pNtk->pModel[i] > 0) ); 12248 if ( i == 70 ) 12249 break; 12250 } 12251 printf( "\n" ); 12252 */ 12253 } 12254 12255 if ( RetValue == -1 ) 12256 printf( "UNDECIDED " ); 12257 else if ( RetValue == 0 ) 12258 printf( "SATISFIABLE " ); 12259 else 12260 printf( "UNSATISFIABLE " ); 12261 //printf( "\n" ); 12262 PRT( "Time", clock() - clk ); 12263 return 0; 12264 12265 usage: 12266 fprintf( pErr, "usage: sat [-C num] [-I num] [-vh]\n" ); 12267 fprintf( pErr, "\t solves the combinational miter using SAT solver MiniSat-1.14\n" ); 12268 fprintf( pErr, "\t derives CNF from the current network and leave it unchanged\n" ); 12269 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 12270 fprintf( pErr, "\t-I num : limit on the number of inspections [default = %d]\n", nInsLimit ); 12271 fprintf( pErr, "\t-v : prints verbose information [default = %s]\n", fVerbose? "yes": "no" ); 12272 fprintf( pErr, "\t-h : print the command usage\n"); 12273 return 1; 12274 }
int Abc_CommandScut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5675 of file abc.c.
05676 { 05677 Cut_Params_t Params, * pParams = &Params; 05678 Cut_Man_t * pCutMan; 05679 FILE * pOut, * pErr; 05680 Abc_Ntk_t * pNtk; 05681 int c; 05682 extern Cut_Man_t * Abc_NtkSeqCuts( Abc_Ntk_t * pNtk, Cut_Params_t * pParams ); 05683 05684 pNtk = Abc_FrameReadNtk(pAbc); 05685 pOut = Abc_FrameReadOut(pAbc); 05686 pErr = Abc_FrameReadErr(pAbc); 05687 05688 // set defaults 05689 memset( pParams, 0, sizeof(Cut_Params_t) ); 05690 pParams->nVarsMax = 5; // the max cut size ("k" of the k-feasible cuts) 05691 pParams->nKeepMax = 1000; // the max number of cuts kept at a node 05692 pParams->fTruth = 0; // compute truth tables 05693 pParams->fFilter = 1; // filter dominated cuts 05694 pParams->fSeq = 1; // compute sequential cuts 05695 pParams->fVerbose = 0; // the verbosiness flag 05696 Extra_UtilGetoptReset(); 05697 while ( ( c = Extra_UtilGetopt( argc, argv, "KMtvh" ) ) != EOF ) 05698 { 05699 switch ( c ) 05700 { 05701 case 'K': 05702 if ( globalUtilOptind >= argc ) 05703 { 05704 fprintf( pErr, "Command line switch \"-K\" should be followed by an integer.\n" ); 05705 goto usage; 05706 } 05707 pParams->nVarsMax = atoi(argv[globalUtilOptind]); 05708 globalUtilOptind++; 05709 if ( pParams->nVarsMax < 0 ) 05710 goto usage; 05711 break; 05712 case 'M': 05713 if ( globalUtilOptind >= argc ) 05714 { 05715 fprintf( pErr, "Command line switch \"-M\" should be followed by an integer.\n" ); 05716 goto usage; 05717 } 05718 pParams->nKeepMax = atoi(argv[globalUtilOptind]); 05719 globalUtilOptind++; 05720 if ( pParams->nKeepMax < 0 ) 05721 goto usage; 05722 break; 05723 case 't': 05724 pParams->fTruth ^= 1; 05725 break; 05726 case 'v': 05727 pParams->fVerbose ^= 1; 05728 break; 05729 case 'h': 05730 goto usage; 05731 default: 05732 goto usage; 05733 } 05734 } 05735 05736 if ( pNtk == NULL ) 05737 { 05738 fprintf( pErr, "Empty network.\n" ); 05739 return 1; 05740 } 05741 /* 05742 if ( !Abc_NtkIsSeq(pNtk) ) 05743 { 05744 fprintf( pErr, "Sequential cuts can be computed for sequential AIGs (run \"seq\").\n" ); 05745 return 1; 05746 } 05747 */ 05748 if ( pParams->nVarsMax < CUT_SIZE_MIN || pParams->nVarsMax > CUT_SIZE_MAX ) 05749 { 05750 fprintf( pErr, "Can only compute the cuts for %d <= K <= %d.\n", CUT_SIZE_MIN, CUT_SIZE_MAX ); 05751 return 1; 05752 } 05753 05754 pCutMan = Abc_NtkSeqCuts( pNtk, pParams ); 05755 Cut_ManStop( pCutMan ); 05756 return 0; 05757 05758 usage: 05759 fprintf( pErr, "usage: scut [-K num] [-M num] [-tvh]\n" ); 05760 fprintf( pErr, "\t computes k-feasible cuts for the sequential AIG\n" ); 05761 fprintf( pErr, "\t-K num : max number of leaves (%d <= num <= %d) [default = %d]\n", CUT_SIZE_MIN, CUT_SIZE_MAX, pParams->nVarsMax ); 05762 fprintf( pErr, "\t-M num : max number of cuts stored at a node [default = %d]\n", pParams->nKeepMax ); 05763 fprintf( pErr, "\t-t : toggle truth table computation [default = %s]\n", pParams->fTruth? "yes": "no" ); 05764 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", pParams->fVerbose? "yes": "no" ); 05765 fprintf( pErr, "\t-h : print the command usage\n"); 05766 return 1; 05767 }
int Abc_CommandSec | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11821 of file abc.c.
11822 { 11823 FILE * pOut, * pErr; 11824 Abc_Ntk_t * pNtk, * pNtk1, * pNtk2; 11825 int fDelete1, fDelete2; 11826 char ** pArgvNew; 11827 int nArgcNew; 11828 int c; 11829 int fRetime; 11830 int fSat; 11831 int fVerbose; 11832 int nFrames; 11833 int nSeconds; 11834 int nConfLimit; 11835 int nInsLimit; 11836 11837 extern void Abc_NtkSecSat( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nConfLimit, int nInsLimit, int nFrames ); 11838 extern int Abc_NtkSecFraig( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2, int nSeconds, int nFrames, int fVerbose ); 11839 extern void Abc_NtkSecRetime( Abc_Ntk_t * pNtk1, Abc_Ntk_t * pNtk2 ); 11840 11841 11842 pNtk = Abc_FrameReadNtk(pAbc); 11843 pOut = Abc_FrameReadOut(pAbc); 11844 pErr = Abc_FrameReadErr(pAbc); 11845 11846 // set defaults 11847 fRetime = 0; // verification after retiming 11848 fSat = 0; 11849 fVerbose = 0; 11850 nFrames = 5; 11851 nSeconds = 20; 11852 nConfLimit = 10000; 11853 nInsLimit = 0; 11854 Extra_UtilGetoptReset(); 11855 while ( ( c = Extra_UtilGetopt( argc, argv, "FTCIsrvh" ) ) != EOF ) 11856 { 11857 switch ( c ) 11858 { 11859 case 'F': 11860 if ( globalUtilOptind >= argc ) 11861 { 11862 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 11863 goto usage; 11864 } 11865 nFrames = atoi(argv[globalUtilOptind]); 11866 globalUtilOptind++; 11867 if ( nFrames <= 0 ) 11868 goto usage; 11869 break; 11870 case 'T': 11871 if ( globalUtilOptind >= argc ) 11872 { 11873 fprintf( pErr, "Command line switch \"-T\" should be followed by an integer.\n" ); 11874 goto usage; 11875 } 11876 nSeconds = atoi(argv[globalUtilOptind]); 11877 globalUtilOptind++; 11878 if ( nSeconds < 0 ) 11879 goto usage; 11880 break; 11881 case 'C': 11882 if ( globalUtilOptind >= argc ) 11883 { 11884 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 11885 goto usage; 11886 } 11887 nConfLimit = atoi(argv[globalUtilOptind]); 11888 globalUtilOptind++; 11889 if ( nConfLimit < 0 ) 11890 goto usage; 11891 break; 11892 case 'I': 11893 if ( globalUtilOptind >= argc ) 11894 { 11895 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 11896 goto usage; 11897 } 11898 nInsLimit = atoi(argv[globalUtilOptind]); 11899 globalUtilOptind++; 11900 if ( nInsLimit < 0 ) 11901 goto usage; 11902 break; 11903 case 'r': 11904 fRetime ^= 1; 11905 break; 11906 case 'v': 11907 fVerbose ^= 1; 11908 break; 11909 case 's': 11910 fSat ^= 1; 11911 break; 11912 default: 11913 goto usage; 11914 } 11915 } 11916 11917 pArgvNew = argv + globalUtilOptind; 11918 nArgcNew = argc - globalUtilOptind; 11919 if ( !Abc_NtkPrepareTwoNtks( pErr, pNtk, pArgvNew, nArgcNew, &pNtk1, &pNtk2, &fDelete1, &fDelete2 ) ) 11920 return 1; 11921 11922 if ( Abc_NtkLatchNum(pNtk1) == 0 || Abc_NtkLatchNum(pNtk2) == 0 ) 11923 { 11924 printf( "The network has no latches. Used combinational command \"cec\".\n" ); 11925 return 0; 11926 } 11927 11928 // perform equivalence checking 11929 if ( fRetime ) 11930 Abc_NtkSecRetime( pNtk1, pNtk2 ); 11931 else if ( fSat ) 11932 Abc_NtkSecSat( pNtk1, pNtk2, nConfLimit, nInsLimit, nFrames ); 11933 else 11934 Abc_NtkSecFraig( pNtk1, pNtk2, nSeconds, nFrames, fVerbose ); 11935 11936 if ( fDelete1 ) Abc_NtkDelete( pNtk1 ); 11937 if ( fDelete2 ) Abc_NtkDelete( pNtk2 ); 11938 return 0; 11939 11940 usage: 11941 fprintf( pErr, "usage: sec [-F num] [-T num] [-C num] [-I num] [-srvh] <file1> <file2>\n" ); 11942 fprintf( pErr, "\t performs bounded sequential equivalence checking\n" ); 11943 fprintf( pErr, "\t-s : toggle \"SAT only\" and \"FRAIG + SAT\" [default = %s]\n", fSat? "SAT only": "FRAIG + SAT" ); 11944 fprintf( pErr, "\t-r : toggles retiming verification [default = %s]\n", fVerbose? "yes": "no" ); 11945 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11946 fprintf( pErr, "\t-h : print the command usage\n"); 11947 fprintf( pErr, "\t-F num : the number of time frames to use [default = %d]\n", nFrames ); 11948 fprintf( pErr, "\t-T num : approximate runtime limit in seconds [default = %d]\n", nSeconds ); 11949 fprintf( pErr, "\t-C num : limit on the number of conflicts [default = %d]\n", nConfLimit ); 11950 fprintf( pErr, "\t-I num : limit on the number of inspections [default = %d]\n", nInsLimit ); 11951 fprintf( pErr, "\tfile1 : (optional) the file with the first network\n"); 11952 fprintf( pErr, "\tfile2 : (optional) the file with the second network\n"); 11953 fprintf( pErr, "\t if no files are given, uses the current network and its spec\n"); 11954 fprintf( pErr, "\t if one file is given, uses the current network and the file\n"); 11955 return 1; 11956 }
int Abc_CommandSeq | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10606 of file abc.c.
10607 { 10608 FILE * pOut, * pErr; 10609 Abc_Ntk_t * pNtk, * pNtkRes; 10610 int c; 10611 10612 pNtk = Abc_FrameReadNtk(pAbc); 10613 pOut = Abc_FrameReadOut(pAbc); 10614 pErr = Abc_FrameReadErr(pAbc); 10615 10616 // set defaults 10617 Extra_UtilGetoptReset(); 10618 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 10619 { 10620 switch ( c ) 10621 { 10622 case 'h': 10623 goto usage; 10624 default: 10625 goto usage; 10626 } 10627 } 10628 10629 if ( pNtk == NULL ) 10630 { 10631 fprintf( pErr, "Empty network.\n" ); 10632 return 1; 10633 } 10634 10635 if ( Abc_NtkLatchNum(pNtk) == 0 ) 10636 { 10637 fprintf( pErr, "The network has no latches.\n" ); 10638 return 0; 10639 } 10640 10641 if ( !Abc_NtkIsStrash(pNtk) ) 10642 { 10643 fprintf( pErr, "Conversion to sequential AIG works only for combinational AIGs (run \"strash\").\n" ); 10644 return 1; 10645 } 10646 10647 // get the new network 10648 // pNtkRes = Abc_NtkAigToSeq( pNtk ); 10649 pNtkRes = NULL; 10650 if ( pNtkRes == NULL ) 10651 { 10652 fprintf( pErr, "Converting to sequential AIG has failed.\n" ); 10653 return 1; 10654 } 10655 // replace the current network 10656 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10657 return 0; 10658 10659 usage: 10660 fprintf( pErr, "usage: seq [-h]\n" ); 10661 fprintf( pErr, "\t converts AIG into sequential AIG\n" ); 10662 fprintf( pErr, "\t-h : print the command usage\n"); 10663 return 1; 10664 }
int Abc_CommandSeqCleanup | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11403 of file abc.c.
11404 { 11405 FILE * pOut, * pErr; 11406 Abc_Ntk_t * pNtk, * pNtkRes; 11407 int c; 11408 int fLatchSweep; 11409 int fAutoSweep; 11410 int fVerbose; 11411 extern Abc_Ntk_t * Abc_NtkDarLatchSweep( Abc_Ntk_t * pNtk, int fLatchSweep, int fVerbose ); 11412 11413 pNtk = Abc_FrameReadNtk(pAbc); 11414 pOut = Abc_FrameReadOut(pAbc); 11415 pErr = Abc_FrameReadErr(pAbc); 11416 11417 // set defaults 11418 fLatchSweep = 0; 11419 fAutoSweep = 0; 11420 fVerbose = 0; 11421 Extra_UtilGetoptReset(); 11422 while ( ( c = Extra_UtilGetopt( argc, argv, "lavh" ) ) != EOF ) 11423 { 11424 switch ( c ) 11425 { 11426 case 'l': 11427 fLatchSweep ^= 1; 11428 break; 11429 case 'a': 11430 fAutoSweep ^= 1; 11431 break; 11432 case 'v': 11433 fVerbose ^= 1; 11434 break; 11435 case 'h': 11436 goto usage; 11437 default: 11438 goto usage; 11439 } 11440 } 11441 if ( pNtk == NULL ) 11442 { 11443 fprintf( pErr, "Empty network.\n" ); 11444 return 1; 11445 } 11446 if ( !Abc_NtkIsStrash(pNtk) ) 11447 { 11448 fprintf( pErr, "Only works for structrally hashed networks.\n" ); 11449 return 1; 11450 } 11451 if ( !Abc_NtkLatchNum(pNtk) ) 11452 { 11453 fprintf( pErr, "Only works for sequential networks.\n" ); 11454 return 1; 11455 } 11456 // modify the current network 11457 pNtkRes = Abc_NtkDarLatchSweep( pNtk, fLatchSweep, fVerbose ); 11458 if ( pNtkRes == NULL ) 11459 { 11460 fprintf( pErr, "Sequential cleanup has failed.\n" ); 11461 return 1; 11462 } 11463 // replace the current network 11464 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 11465 return 0; 11466 11467 usage: 11468 fprintf( pErr, "usage: scleanup [-lvh]\n" ); 11469 fprintf( pErr, "\t performs sequential cleanup\n" ); 11470 fprintf( pErr, "\t - removes nodes/latches that do not feed into POs\n" ); 11471 fprintf( pErr, "\t - removes stuck-at and identical latches (latch sweep)\n" ); 11472 // fprintf( pErr, "\t - replaces autonomous logic by free PI variables\n" ); 11473 fprintf( pErr, "\t (the latter may change sequential behaviour)\n" ); 11474 fprintf( pErr, "\t-l : toggle sweeping latches [default = %s]\n", fLatchSweep? "yes": "no" ); 11475 // fprintf( pErr, "\t-a : toggle removing autonomous logic [default = %s]\n", fAutoSweep? "yes": "no" ); 11476 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11477 fprintf( pErr, "\t-h : print the command usage\n"); 11478 return 1; 11479 }
int Abc_CommandSeqFpga | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10900 of file abc.c.
10901 { 10902 FILE * pOut, * pErr; 10903 Abc_Ntk_t * pNtk, * pNtkNew, * pNtkRes; 10904 int c, nMaxIters; 10905 int fVerbose; 10906 10907 pNtk = Abc_FrameReadNtk(pAbc); 10908 pOut = Abc_FrameReadOut(pAbc); 10909 pErr = Abc_FrameReadErr(pAbc); 10910 10911 // set defaults 10912 nMaxIters = 15; 10913 fVerbose = 0; 10914 Extra_UtilGetoptReset(); 10915 while ( ( c = Extra_UtilGetopt( argc, argv, "Ivh" ) ) != EOF ) 10916 { 10917 switch ( c ) 10918 { 10919 case 'I': 10920 if ( globalUtilOptind >= argc ) 10921 { 10922 fprintf( pErr, "Command line switch \"-I\" should be followed by a positive integer.\n" ); 10923 goto usage; 10924 } 10925 nMaxIters = atoi(argv[globalUtilOptind]); 10926 globalUtilOptind++; 10927 if ( nMaxIters < 0 ) 10928 goto usage; 10929 break; 10930 case 'v': 10931 fVerbose ^= 1; 10932 break; 10933 case 'h': 10934 goto usage; 10935 default: 10936 goto usage; 10937 } 10938 } 10939 10940 if ( pNtk == NULL ) 10941 { 10942 fprintf( pErr, "Empty network.\n" ); 10943 return 1; 10944 } 10945 10946 if ( Abc_NtkHasAig(pNtk) ) 10947 { 10948 /* 10949 // quit if there are choice nodes 10950 if ( Abc_NtkGetChoiceNum(pNtk) ) 10951 { 10952 fprintf( pErr, "Currently cannot map/retime networks with choice nodes.\n" ); 10953 return 0; 10954 } 10955 */ 10956 // if ( Abc_NtkIsStrash(pNtk) ) 10957 // pNtkNew = Abc_NtkAigToSeq(pNtk); 10958 // else 10959 // pNtkNew = Abc_NtkDup(pNtk); 10960 pNtkNew = NULL; 10961 } 10962 else 10963 { 10964 // strash and balance the network 10965 pNtkNew = Abc_NtkStrash( pNtk, 0, 0, 0 ); 10966 if ( pNtkNew == NULL ) 10967 { 10968 fprintf( pErr, "Strashing before FPGA mapping/retiming has failed.\n" ); 10969 return 1; 10970 } 10971 10972 pNtkNew = Abc_NtkBalance( pNtkRes = pNtkNew, 0, 0, 1 ); 10973 Abc_NtkDelete( pNtkRes ); 10974 if ( pNtkNew == NULL ) 10975 { 10976 fprintf( pErr, "Balancing before FPGA mapping has failed.\n" ); 10977 return 1; 10978 } 10979 10980 // convert into a sequential AIG 10981 // pNtkNew = Abc_NtkAigToSeq( pNtkRes = pNtkNew ); 10982 pNtkNew = NULL; 10983 Abc_NtkDelete( pNtkRes ); 10984 if ( pNtkNew == NULL ) 10985 { 10986 fprintf( pErr, "Converting into a seq AIG before FPGA mapping/retiming has failed.\n" ); 10987 return 1; 10988 } 10989 10990 fprintf( pOut, "The network was strashed and balanced before FPGA mapping/retiming.\n" ); 10991 } 10992 10993 // get the new network 10994 // pNtkRes = Seq_NtkFpgaMapRetime( pNtkNew, nMaxIters, fVerbose ); 10995 pNtkRes = NULL; 10996 if ( pNtkRes == NULL ) 10997 { 10998 // fprintf( pErr, "Sequential FPGA mapping has failed.\n" ); 10999 Abc_NtkDelete( pNtkNew ); 11000 return 0; 11001 } 11002 Abc_NtkDelete( pNtkNew ); 11003 // replace the current network 11004 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 11005 return 0; 11006 11007 usage: 11008 fprintf( pErr, "usage: sfpga [-I num] [-vh]\n" ); 11009 fprintf( pErr, "\t performs integrated sequential FPGA mapping/retiming\n" ); 11010 fprintf( pErr, "\t-I num : max number of iterations of l-value computation [default = %d]\n", nMaxIters ); 11011 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11012 fprintf( pErr, "\t-h : print the command usage\n"); 11013 return 1; 11014 }
int Abc_CommandSeqMap | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11027 of file abc.c.
11028 { 11029 FILE * pOut, * pErr; 11030 Abc_Ntk_t * pNtk, * pNtkNew, * pNtkRes; 11031 int c, nMaxIters; 11032 int fVerbose; 11033 11034 pNtk = Abc_FrameReadNtk(pAbc); 11035 pOut = Abc_FrameReadOut(pAbc); 11036 pErr = Abc_FrameReadErr(pAbc); 11037 11038 // set defaults 11039 nMaxIters = 15; 11040 fVerbose = 0; 11041 Extra_UtilGetoptReset(); 11042 while ( ( c = Extra_UtilGetopt( argc, argv, "Ivh" ) ) != EOF ) 11043 { 11044 switch ( c ) 11045 { 11046 case 'I': 11047 if ( globalUtilOptind >= argc ) 11048 { 11049 fprintf( pErr, "Command line switch \"-I\" should be followed by a positive integer.\n" ); 11050 goto usage; 11051 } 11052 nMaxIters = atoi(argv[globalUtilOptind]); 11053 globalUtilOptind++; 11054 if ( nMaxIters < 0 ) 11055 goto usage; 11056 break; 11057 case 'v': 11058 fVerbose ^= 1; 11059 break; 11060 case 'h': 11061 goto usage; 11062 default: 11063 goto usage; 11064 } 11065 } 11066 11067 if ( pNtk == NULL ) 11068 { 11069 fprintf( pErr, "Empty network.\n" ); 11070 return 1; 11071 } 11072 11073 if ( Abc_NtkHasAig(pNtk) ) 11074 { 11075 /* 11076 // quit if there are choice nodes 11077 if ( Abc_NtkGetChoiceNum(pNtk) ) 11078 { 11079 fprintf( pErr, "Currently cannot map/retime networks with choice nodes.\n" ); 11080 return 0; 11081 } 11082 */ 11083 // if ( Abc_NtkIsStrash(pNtk) ) 11084 // pNtkNew = Abc_NtkAigToSeq(pNtk); 11085 // else 11086 // pNtkNew = Abc_NtkDup(pNtk); 11087 pNtkNew = NULL; 11088 } 11089 else 11090 { 11091 // strash and balance the network 11092 pNtkNew = Abc_NtkStrash( pNtk, 0, 0, 0 ); 11093 if ( pNtkNew == NULL ) 11094 { 11095 fprintf( pErr, "Strashing before SC mapping/retiming has failed.\n" ); 11096 return 1; 11097 } 11098 11099 pNtkNew = Abc_NtkBalance( pNtkRes = pNtkNew, 0, 0, 1 ); 11100 Abc_NtkDelete( pNtkRes ); 11101 if ( pNtkNew == NULL ) 11102 { 11103 fprintf( pErr, "Balancing before SC mapping/retiming has failed.\n" ); 11104 return 1; 11105 } 11106 11107 // convert into a sequential AIG 11108 // pNtkNew = Abc_NtkAigToSeq( pNtkRes = pNtkNew ); 11109 pNtkNew = NULL; 11110 Abc_NtkDelete( pNtkRes ); 11111 if ( pNtkNew == NULL ) 11112 { 11113 fprintf( pErr, "Converting into a seq AIG before SC mapping/retiming has failed.\n" ); 11114 return 1; 11115 } 11116 11117 fprintf( pOut, "The network was strashed and balanced before SC mapping/retiming.\n" ); 11118 } 11119 11120 // get the new network 11121 // pNtkRes = Seq_MapRetime( pNtkNew, nMaxIters, fVerbose ); 11122 pNtkRes = NULL; 11123 if ( pNtkRes == NULL ) 11124 { 11125 // fprintf( pErr, "Sequential FPGA mapping has failed.\n" ); 11126 Abc_NtkDelete( pNtkNew ); 11127 return 0; 11128 } 11129 Abc_NtkDelete( pNtkNew ); 11130 11131 // replace the current network 11132 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 11133 return 0; 11134 11135 usage: 11136 fprintf( pErr, "usage: smap [-I num] [-vh]\n" ); 11137 fprintf( pErr, "\t performs integrated sequential standard-cell mapping/retiming\n" ); 11138 fprintf( pErr, "\t-I num : max number of iterations of l-value computation [default = %d]\n", nMaxIters ); 11139 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11140 fprintf( pErr, "\t-h : print the command usage\n"); 11141 return 1; 11142 }
int Abc_CommandSeqSweep | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11155 of file abc.c.
11156 { 11157 FILE * pOut, * pErr; 11158 Abc_Ntk_t * pNtk, * pNtkRes; 11159 int c; 11160 int nFramesP; 11161 int nFramesK; 11162 int nMaxImps; 11163 int fUseImps; 11164 int fRewrite; 11165 int fLatchCorr; 11166 int fWriteImps; 11167 int fVerbose; 11168 extern Abc_Ntk_t * Abc_NtkDarSeqSweep( Abc_Ntk_t * pNtk, int nFramesP, int nFrames, int nMaxImps, int fRewrite, int fUseImps, int fLatchCorr, int fWriteImps, int fVerbose ); 11169 11170 pNtk = Abc_FrameReadNtk(pAbc); 11171 pOut = Abc_FrameReadOut(pAbc); 11172 pErr = Abc_FrameReadErr(pAbc); 11173 11174 // set defaults 11175 nFramesP = 0; 11176 nFramesK = 1; 11177 nMaxImps = 5000; 11178 fUseImps = 0; 11179 fRewrite = 0; 11180 fLatchCorr = 0; 11181 fWriteImps = 0; 11182 fVerbose = 0; 11183 Extra_UtilGetoptReset(); 11184 while ( ( c = Extra_UtilGetopt( argc, argv, "PFIirlevh" ) ) != EOF ) 11185 { 11186 switch ( c ) 11187 { 11188 case 'P': 11189 if ( globalUtilOptind >= argc ) 11190 { 11191 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 11192 goto usage; 11193 } 11194 nFramesP = atoi(argv[globalUtilOptind]); 11195 globalUtilOptind++; 11196 if ( nFramesP < 0 ) 11197 goto usage; 11198 break; 11199 case 'F': 11200 if ( globalUtilOptind >= argc ) 11201 { 11202 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 11203 goto usage; 11204 } 11205 nFramesK = atoi(argv[globalUtilOptind]); 11206 globalUtilOptind++; 11207 if ( nFramesK <= 0 ) 11208 goto usage; 11209 break; 11210 case 'I': 11211 if ( globalUtilOptind >= argc ) 11212 { 11213 fprintf( pErr, "Command line switch \"-I\" should be followed by an integer.\n" ); 11214 goto usage; 11215 } 11216 nMaxImps = atoi(argv[globalUtilOptind]); 11217 globalUtilOptind++; 11218 if ( nMaxImps <= 0 ) 11219 goto usage; 11220 break; 11221 case 'i': 11222 fUseImps ^= 1; 11223 break; 11224 case 'r': 11225 fRewrite ^= 1; 11226 break; 11227 case 'l': 11228 fLatchCorr ^= 1; 11229 break; 11230 case 'e': 11231 fWriteImps ^= 1; 11232 break; 11233 case 'v': 11234 fVerbose ^= 1; 11235 break; 11236 case 'h': 11237 goto usage; 11238 default: 11239 goto usage; 11240 } 11241 } 11242 11243 if ( pNtk == NULL ) 11244 { 11245 fprintf( pErr, "Empty network.\n" ); 11246 return 1; 11247 } 11248 11249 if ( Abc_NtkIsComb(pNtk) ) 11250 { 11251 fprintf( pErr, "The network is combinational (run \"fraig\" or \"fraig_sweep\").\n" ); 11252 return 1; 11253 } 11254 11255 if ( !Abc_NtkIsStrash(pNtk) ) 11256 { 11257 printf( "This command works only for structrally hashed networks. Run \"st\".\n" ); 11258 return 0; 11259 } 11260 11261 // get the new network 11262 pNtkRes = Abc_NtkDarSeqSweep( pNtk, nFramesP, nFramesK, nMaxImps, fRewrite, fUseImps, fLatchCorr, fWriteImps, fVerbose ); 11263 if ( pNtkRes == NULL ) 11264 { 11265 fprintf( pErr, "Sequential sweeping has failed.\n" ); 11266 return 1; 11267 } 11268 // replace the current network 11269 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 11270 return 0; 11271 11272 usage: 11273 fprintf( pErr, "usage: ssweep [-P num] [-F num] [-I num] [-ilrevh]\n" ); 11274 fprintf( pErr, "\t performs sequential sweep using K-step induction\n" ); 11275 fprintf( pErr, "\t-P num : number of time frames to use as the prefix [default = %d]\n", nFramesP ); 11276 fprintf( pErr, "\t-F num : number of time frames for induction (1=simple) [default = %d]\n", nFramesK ); 11277 fprintf( pErr, "\t-I num : max number of implications to consider [default = %d]\n", nMaxImps ); 11278 fprintf( pErr, "\t-i : toggle using implications [default = %s]\n", fUseImps? "yes": "no" ); 11279 fprintf( pErr, "\t-l : toggle latch correspondence only [default = %s]\n", fLatchCorr? "yes": "no" ); 11280 fprintf( pErr, "\t-r : toggle AIG rewriting [default = %s]\n", fRewrite? "yes": "no" ); 11281 fprintf( pErr, "\t-e : toggle writing implications as assertions [default = %s]\n", fWriteImps? "yes": "no" ); 11282 fprintf( pErr, "\t-v : toggle verbose output [default = %s]\n", fVerbose? "yes": "no" ); 11283 fprintf( pErr, "\t-h : print the command usage\n"); 11284 return 1; 11285 }
int Abc_CommandShortNames | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5260 of file abc.c.
05261 { 05262 FILE * pOut, * pErr; 05263 Abc_Ntk_t * pNtk; 05264 int c; 05265 05266 pNtk = Abc_FrameReadNtk(pAbc); 05267 pOut = Abc_FrameReadOut(pAbc); 05268 pErr = Abc_FrameReadErr(pAbc); 05269 05270 // set defaults 05271 Extra_UtilGetoptReset(); 05272 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 05273 { 05274 switch ( c ) 05275 { 05276 case 'h': 05277 goto usage; 05278 default: 05279 goto usage; 05280 } 05281 } 05282 05283 if ( pNtk == NULL ) 05284 { 05285 fprintf( pErr, "Empty network.\n" ); 05286 return 1; 05287 } 05288 Abc_NtkShortNames( pNtk ); 05289 return 0; 05290 05291 usage: 05292 fprintf( pErr, "usage: short_names [-h]\n" ); 05293 fprintf( pErr, "\t replaces PI/PO/latch names by short char strings\n" ); 05294 fprintf( pErr, "\t-h : print the command usage\n"); 05295 return 1; 05296 }
int Abc_CommandShow | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1649 of file abc.c.
01650 { 01651 FILE * pOut, * pErr; 01652 Abc_Ntk_t * pNtk; 01653 int c; 01654 int fSeq; 01655 int fGateNames; 01656 int fUseReverse; 01657 extern void Abc_NtkShow( Abc_Ntk_t * pNtk, int fGateNames, int fSeq, int fUseReverse ); 01658 01659 pNtk = Abc_FrameReadNtk(pAbc); 01660 pOut = Abc_FrameReadOut(pAbc); 01661 pErr = Abc_FrameReadErr(pAbc); 01662 01663 // set defaults 01664 fSeq = 0; 01665 fGateNames = 0; 01666 fUseReverse = 1; 01667 Extra_UtilGetoptReset(); 01668 while ( ( c = Extra_UtilGetopt( argc, argv, "rsgh" ) ) != EOF ) 01669 { 01670 switch ( c ) 01671 { 01672 case 'r': 01673 fUseReverse ^= 1; 01674 break; 01675 case 's': 01676 fSeq ^= 1; 01677 break; 01678 case 'g': 01679 fGateNames ^= 1; 01680 break; 01681 default: 01682 goto usage; 01683 } 01684 } 01685 01686 if ( pNtk == NULL ) 01687 { 01688 fprintf( pErr, "Empty network.\n" ); 01689 return 1; 01690 } 01691 01692 Abc_NtkShow( pNtk, fGateNames, fSeq, fUseReverse ); 01693 return 0; 01694 01695 usage: 01696 fprintf( pErr, "usage: show [-srgh]\n" ); 01697 fprintf( pErr, " visualizes the network structure using DOT and GSVIEW\n" ); 01698 #ifdef WIN32 01699 fprintf( pErr, " \"dot.exe\" and \"gsview32.exe\" should be set in the paths\n" ); 01700 fprintf( pErr, " (\"gsview32.exe\" may be in \"C:\\Program Files\\Ghostgum\\gsview\\\")\n" ); 01701 #endif 01702 fprintf( pErr, "\t-s : toggles visualization of sequential networks [default = %s].\n", fSeq? "yes": "no" ); 01703 fprintf( pErr, "\t-r : toggles ordering nodes in reverse order [default = %s].\n", fUseReverse? "yes": "no" ); 01704 fprintf( pErr, "\t-g : toggles printing gate names for mapped network [default = %s].\n", fGateNames? "yes": "no" ); 01705 fprintf( pErr, "\t-h : print the command usage\n"); 01706 return 1; 01707 }
int Abc_CommandShowBdd | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1720 of file abc.c.
01721 { 01722 FILE * pOut, * pErr; 01723 Abc_Ntk_t * pNtk; 01724 Abc_Obj_t * pNode; 01725 int c; 01726 extern void Abc_NodeShowBdd( Abc_Obj_t * pNode ); 01727 01728 pNtk = Abc_FrameReadNtk(pAbc); 01729 pOut = Abc_FrameReadOut(pAbc); 01730 pErr = Abc_FrameReadErr(pAbc); 01731 01732 // set defaults 01733 Extra_UtilGetoptReset(); 01734 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 01735 { 01736 switch ( c ) 01737 { 01738 case 'h': 01739 goto usage; 01740 default: 01741 goto usage; 01742 } 01743 } 01744 01745 if ( pNtk == NULL ) 01746 { 01747 fprintf( pErr, "Empty network.\n" ); 01748 return 1; 01749 } 01750 01751 if ( !Abc_NtkIsBddLogic(pNtk) ) 01752 { 01753 fprintf( pErr, "Visualizing BDDs can only be done for logic BDD networks (run \"bdd\").\n" ); 01754 return 1; 01755 } 01756 01757 if ( argc > globalUtilOptind + 1 ) 01758 { 01759 fprintf( pErr, "Wrong number of auguments.\n" ); 01760 goto usage; 01761 } 01762 if ( argc == globalUtilOptind ) 01763 { 01764 pNode = Abc_ObjFanin0( Abc_NtkPo(pNtk, 0) ); 01765 if ( !Abc_ObjIsNode(pNode) ) 01766 { 01767 fprintf( pErr, "The driver \"%s\" of the first PO is not an internal node.\n", Abc_ObjName(pNode) ); 01768 return 1; 01769 } 01770 } 01771 else 01772 { 01773 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 01774 if ( pNode == NULL ) 01775 { 01776 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 01777 return 1; 01778 } 01779 } 01780 Abc_NodeShowBdd( pNode ); 01781 return 0; 01782 01783 usage: 01784 fprintf( pErr, "usage: show_bdd [-h] <node>\n" ); 01785 fprintf( pErr, " visualizes the BDD of a node using DOT and GSVIEW\n" ); 01786 #ifdef WIN32 01787 fprintf( pErr, " \"dot.exe\" and \"gsview32.exe\" should be set in the paths\n" ); 01788 fprintf( pErr, " (\"gsview32.exe\" may be in \"C:\\Program Files\\Ghostgum\\gsview\\\")\n" ); 01789 #endif 01790 fprintf( pErr, "\tnode : the node to consider [default = the driver of the first PO]\n"); 01791 fprintf( pErr, "\t-h : print the command usage\n"); 01792 return 1; 01793 }
int Abc_CommandShowCut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 1806 of file abc.c.
01807 { 01808 FILE * pOut, * pErr; 01809 Abc_Ntk_t * pNtk; 01810 Abc_Obj_t * pNode; 01811 int c; 01812 int nNodeSizeMax; 01813 int nConeSizeMax; 01814 extern void Abc_NodeShowCut( Abc_Obj_t * pNode, int nNodeSizeMax, int nConeSizeMax ); 01815 01816 pNtk = Abc_FrameReadNtk(pAbc); 01817 pOut = Abc_FrameReadOut(pAbc); 01818 pErr = Abc_FrameReadErr(pAbc); 01819 01820 // set defaults 01821 nNodeSizeMax = 10; 01822 nConeSizeMax = ABC_INFINITY; 01823 Extra_UtilGetoptReset(); 01824 while ( ( c = Extra_UtilGetopt( argc, argv, "NCh" ) ) != EOF ) 01825 { 01826 switch ( c ) 01827 { 01828 case 'N': 01829 if ( globalUtilOptind >= argc ) 01830 { 01831 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 01832 goto usage; 01833 } 01834 nNodeSizeMax = atoi(argv[globalUtilOptind]); 01835 globalUtilOptind++; 01836 if ( nNodeSizeMax < 0 ) 01837 goto usage; 01838 break; 01839 case 'C': 01840 if ( globalUtilOptind >= argc ) 01841 { 01842 fprintf( pErr, "Command line switch \"-C\" should be followed by an integer.\n" ); 01843 goto usage; 01844 } 01845 nConeSizeMax = atoi(argv[globalUtilOptind]); 01846 globalUtilOptind++; 01847 if ( nConeSizeMax < 0 ) 01848 goto usage; 01849 break; 01850 case 'h': 01851 goto usage; 01852 default: 01853 goto usage; 01854 } 01855 } 01856 01857 if ( pNtk == NULL ) 01858 { 01859 fprintf( pErr, "Empty network.\n" ); 01860 return 1; 01861 } 01862 01863 if ( !Abc_NtkIsStrash(pNtk) ) 01864 { 01865 fprintf( pErr, "Visualizing cuts only works for AIGs (run \"strash\").\n" ); 01866 return 1; 01867 } 01868 if ( argc != globalUtilOptind + 1 ) 01869 { 01870 fprintf( pErr, "Wrong number of auguments.\n" ); 01871 goto usage; 01872 } 01873 01874 pNode = Abc_NtkFindNode( pNtk, argv[globalUtilOptind] ); 01875 if ( pNode == NULL ) 01876 { 01877 fprintf( pErr, "Cannot find node \"%s\".\n", argv[globalUtilOptind] ); 01878 return 1; 01879 } 01880 Abc_NodeShowCut( pNode, nNodeSizeMax, nConeSizeMax ); 01881 return 0; 01882 01883 usage: 01884 fprintf( pErr, "usage: show_cut [-N num] [-C num] [-h] <node>\n" ); 01885 fprintf( pErr, " visualizes the cut of a node using DOT and GSVIEW\n" ); 01886 #ifdef WIN32 01887 fprintf( pErr, " \"dot.exe\" and \"gsview32.exe\" should be set in the paths\n" ); 01888 fprintf( pErr, " (\"gsview32.exe\" may be in \"C:\\Program Files\\Ghostgum\\gsview\\\")\n" ); 01889 #endif 01890 fprintf( pErr, "\t-N num : the max size of the cut to be computed [default = %d]\n", nNodeSizeMax ); 01891 fprintf( pErr, "\t-C num : the max support of the containing cone [default = %d]\n", nConeSizeMax ); 01892 fprintf( pErr, "\tnode : the node to consider\n"); 01893 fprintf( pErr, "\t-h : print the command usage\n"); 01894 return 1; 01895 }
int Abc_CommandSop | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 4410 of file abc.c.
04411 { 04412 FILE * pOut, * pErr; 04413 Abc_Ntk_t * pNtk; 04414 int fDirect; 04415 int c; 04416 04417 pNtk = Abc_FrameReadNtk(pAbc); 04418 pOut = Abc_FrameReadOut(pAbc); 04419 pErr = Abc_FrameReadErr(pAbc); 04420 04421 // set defaults 04422 fDirect = 0; 04423 Extra_UtilGetoptReset(); 04424 while ( ( c = Extra_UtilGetopt( argc, argv, "dh" ) ) != EOF ) 04425 { 04426 switch ( c ) 04427 { 04428 case 'd': 04429 fDirect ^= 1; 04430 break; 04431 case 'h': 04432 goto usage; 04433 default: 04434 goto usage; 04435 } 04436 } 04437 if ( pNtk == NULL ) 04438 { 04439 fprintf( pErr, "Empty network.\n" ); 04440 return 1; 04441 } 04442 if ( !Abc_NtkIsLogic(pNtk) ) 04443 { 04444 fprintf( pErr, "Converting to SOP is possible only for logic networks.\n" ); 04445 return 1; 04446 } 04447 if ( !Abc_NtkToSop(pNtk, fDirect) ) 04448 { 04449 fprintf( pErr, "Converting to SOP has failed.\n" ); 04450 return 1; 04451 } 04452 return 0; 04453 04454 usage: 04455 fprintf( pErr, "usage: sop [-dh]\n" ); 04456 fprintf( pErr, "\t converts node functions to SOP\n" ); 04457 fprintf( pErr, "\t-d : toggles using both phases or only positive [default = %s]\n", fDirect? "direct": "both" ); 04458 fprintf( pErr, "\t-h : print the command usage\n"); 04459 return 1; 04460 }
int Abc_CommandStrash | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2013 of file abc.c.
02014 { 02015 FILE * pOut, * pErr; 02016 Abc_Ntk_t * pNtk, * pNtkRes; 02017 int c; 02018 int fAllNodes; 02019 int fRecord; 02020 int fCleanup; 02021 02022 pNtk = Abc_FrameReadNtk(pAbc); 02023 pOut = Abc_FrameReadOut(pAbc); 02024 pErr = Abc_FrameReadErr(pAbc); 02025 02026 // set defaults 02027 fAllNodes = 0; 02028 fCleanup = 1; 02029 fRecord = 0; 02030 Extra_UtilGetoptReset(); 02031 while ( ( c = Extra_UtilGetopt( argc, argv, "acrh" ) ) != EOF ) 02032 { 02033 switch ( c ) 02034 { 02035 case 'a': 02036 fAllNodes ^= 1; 02037 break; 02038 case 'c': 02039 fCleanup ^= 1; 02040 break; 02041 case 'r': 02042 fRecord ^= 1; 02043 break; 02044 case 'h': 02045 goto usage; 02046 default: 02047 goto usage; 02048 } 02049 } 02050 02051 if ( pNtk == NULL ) 02052 { 02053 fprintf( pErr, "Empty network.\n" ); 02054 return 1; 02055 } 02056 02057 // get the new network 02058 pNtkRes = Abc_NtkStrash( pNtk, fAllNodes, fCleanup, fRecord ); 02059 if ( pNtkRes == NULL ) 02060 { 02061 fprintf( pErr, "Strashing has failed.\n" ); 02062 return 1; 02063 } 02064 // replace the current network 02065 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 02066 return 0; 02067 02068 usage: 02069 fprintf( pErr, "usage: strash [-acrh]\n" ); 02070 fprintf( pErr, "\t transforms combinational logic into an AIG\n" ); 02071 fprintf( pErr, "\t-a : toggles between using all nodes and DFS nodes [default = %s]\n", fAllNodes? "all": "DFS" ); 02072 fprintf( pErr, "\t-c : toggles cleanup to remove the dagling AIG nodes [default = %s]\n", fCleanup? "all": "DFS" ); 02073 fprintf( pErr, "\t-r : enables using the record of AIG subgraphs [default = %s]\n", fRecord? "yes": "no" ); 02074 fprintf( pErr, "\t-h : print the command usage\n"); 02075 return 1; 02076 }
int Abc_CommandSuperChoice | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9565 of file abc.c.
09566 { 09567 FILE * pOut, * pErr; 09568 Abc_Ntk_t * pNtk, * pNtkRes; 09569 int c; 09570 extern Abc_Ntk_t * Abc_NtkSuperChoice( Abc_Ntk_t * pNtk ); 09571 09572 pNtk = Abc_FrameReadNtk(pAbc); 09573 pOut = Abc_FrameReadOut(pAbc); 09574 pErr = Abc_FrameReadErr(pAbc); 09575 09576 // set defaults 09577 Extra_UtilGetoptReset(); 09578 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 09579 { 09580 switch ( c ) 09581 { 09582 case 'h': 09583 goto usage; 09584 default: 09585 goto usage; 09586 } 09587 } 09588 09589 if ( pNtk == NULL ) 09590 { 09591 fprintf( pErr, "Empty network.\n" ); 09592 return 1; 09593 } 09594 09595 if ( !Abc_NtkIsStrash(pNtk) ) 09596 { 09597 fprintf( pErr, "Superchoicing works only for the AIG representation (run \"strash\").\n" ); 09598 return 1; 09599 } 09600 09601 // get the new network 09602 pNtkRes = Abc_NtkSuperChoice( pNtk ); 09603 if ( pNtkRes == NULL ) 09604 { 09605 fprintf( pErr, "Superchoicing has failed.\n" ); 09606 return 1; 09607 } 09608 // replace the current network 09609 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 09610 return 0; 09611 09612 usage: 09613 fprintf( pErr, "usage: sc [-h]\n" ); 09614 fprintf( pErr, "\t performs superchoicing\n" ); 09615 fprintf( pErr, "\t (accumulate: \"r file.blif; rsup; b; sc; f -ac; wb file_sc.blif\")\n" ); 09616 fprintf( pErr, "\t (map without supergate library: \"r file_sc.blif; ft; map\")\n" ); 09617 fprintf( pErr, "\t-h : print the command usage\n"); 09618 return 1; 09619 }
int Abc_CommandSuperChoiceLut | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9632 of file abc.c.
09633 { 09634 FILE * pOut, * pErr; 09635 Abc_Ntk_t * pNtk, * pNtkRes; 09636 int c; 09637 int nLutSize; 09638 int nCutSizeMax; 09639 int fVerbose; 09640 extern int Abc_NtkSuperChoiceLut( Abc_Ntk_t * pNtk, int nLutSize, int nCutSizeMax, int fVerbose ); 09641 09642 pNtk = Abc_FrameReadNtk(pAbc); 09643 pOut = Abc_FrameReadOut(pAbc); 09644 pErr = Abc_FrameReadErr(pAbc); 09645 09646 // set defaults 09647 fVerbose = 1; 09648 nLutSize = 4; 09649 nCutSizeMax = 10; 09650 Extra_UtilGetoptReset(); 09651 while ( ( c = Extra_UtilGetopt( argc, argv, "KNh" ) ) != EOF ) 09652 { 09653 switch ( c ) 09654 { 09655 case 'K': 09656 if ( globalUtilOptind >= argc ) 09657 { 09658 fprintf( pErr, "Command line switch \"-K\" should be followed by a positive integer.\n" ); 09659 goto usage; 09660 } 09661 nLutSize = atoi(argv[globalUtilOptind]); 09662 globalUtilOptind++; 09663 if ( nLutSize < 0 ) 09664 goto usage; 09665 break; 09666 case 'N': 09667 if ( globalUtilOptind >= argc ) 09668 { 09669 fprintf( pErr, "Command line switch \"-N\" should be followed by a positive integer.\n" ); 09670 goto usage; 09671 } 09672 nCutSizeMax = atoi(argv[globalUtilOptind]); 09673 globalUtilOptind++; 09674 if ( nCutSizeMax < 0 ) 09675 goto usage; 09676 break; 09677 case 'v': 09678 fVerbose ^= 1; 09679 break; 09680 case 'h': 09681 goto usage; 09682 default: 09683 goto usage; 09684 } 09685 } 09686 09687 if ( pNtk == NULL ) 09688 { 09689 fprintf( pErr, "Empty network.\n" ); 09690 return 1; 09691 } 09692 09693 if ( !Abc_NtkIsStrash(pNtk) ) 09694 { 09695 fprintf( pErr, "Superchoicing works only for the AIG representation (run \"strash\").\n" ); 09696 return 1; 09697 } 09698 09699 // convert the network into the SOP network 09700 pNtkRes = Abc_NtkToLogic( pNtk ); 09701 09702 // get the new network 09703 if ( !Abc_NtkSuperChoiceLut( pNtkRes, nLutSize, nCutSizeMax, fVerbose ) ) 09704 { 09705 Abc_NtkDelete( pNtkRes ); 09706 fprintf( pErr, "Superchoicing has failed.\n" ); 09707 return 1; 09708 } 09709 // replace the current network 09710 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 09711 return 0; 09712 09713 usage: 09714 fprintf( pErr, "usage: scl [-K num] [-N num] [-vh]\n" ); 09715 fprintf( pErr, "\t performs superchoicing for K-LUTs\n" ); 09716 fprintf( pErr, "\t (accumulate: \"r file.blif; b; scl; f -ac; wb file_sc.blif\")\n" ); 09717 fprintf( pErr, "\t (FPGA map: \"r file_sc.blif; ft; read_lut lutlibK; fpga\")\n" ); 09718 fprintf( pErr, "\t-K num : the number of LUT inputs [default = %d]\n", nLutSize ); 09719 fprintf( pErr, "\t-N num : the max size of the cut [default = %d]\n", nCutSizeMax ); 09720 fprintf( pErr, "\t-v : toggles verbose output [default = %s]\n", fVerbose? "yes": "no" ); 09721 fprintf( pErr, "\t-h : print the command usage\n"); 09722 return 1; 09723 }
int Abc_CommandSweep | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 2524 of file abc.c.
02525 { 02526 FILE * pOut, * pErr; 02527 Abc_Ntk_t * pNtk; 02528 int c; 02529 02530 pNtk = Abc_FrameReadNtk(pAbc); 02531 pOut = Abc_FrameReadOut(pAbc); 02532 pErr = Abc_FrameReadErr(pAbc); 02533 02534 // set defaults 02535 Extra_UtilGetoptReset(); 02536 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 02537 { 02538 switch ( c ) 02539 { 02540 case 'h': 02541 goto usage; 02542 default: 02543 goto usage; 02544 } 02545 } 02546 02547 if ( pNtk == NULL ) 02548 { 02549 fprintf( pErr, "Empty network.\n" ); 02550 return 1; 02551 } 02552 if ( !Abc_NtkIsLogic(pNtk) ) 02553 { 02554 fprintf( pErr, "The classical (SIS-like) sweep can only be performed on a logic network.\n" ); 02555 return 1; 02556 } 02557 // modify the current network 02558 Abc_NtkSweep( pNtk, 0 ); 02559 return 0; 02560 02561 usage: 02562 fprintf( pErr, "usage: sweep [-h]\n" ); 02563 fprintf( pErr, "\t removes dangling nodes; propagates constant, buffers, inverters\n" ); 02564 fprintf( pErr, "\t-h : print the command usage\n"); 02565 return 1; 02566 }
int Abc_CommandTest | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 6185 of file abc.c.
06186 { 06187 FILE * pOut, * pErr; 06188 Abc_Ntk_t * pNtk, * pNtkRes; 06189 int c; 06190 int nLevels; 06191 int fVerbose; 06192 // extern Abc_Ntk_t * Abc_NtkNewAig( Abc_Ntk_t * pNtk ); 06193 // extern Abc_Ntk_t * Abc_NtkIvy( Abc_Ntk_t * pNtk ); 06194 // extern void Abc_NtkMaxFlowTest( Abc_Ntk_t * pNtk ); 06195 // extern int Pr_ManProofTest( char * pFileName ); 06196 extern void Abc_NtkCompareSupports( Abc_Ntk_t * pNtk ); 06197 extern void Abc_NtkCompareCones( Abc_Ntk_t * pNtk ); 06198 extern Abc_Ntk_t * Abc_NtkDar( Abc_Ntk_t * pNtk ); 06199 extern Abc_Ntk_t * Abc_NtkDarToCnf( Abc_Ntk_t * pNtk, char * pFileName ); 06200 extern Abc_Ntk_t * Abc_NtkFilter( Abc_Ntk_t * pNtk ); 06201 extern Abc_Ntk_t * Abc_NtkDarRetime( Abc_Ntk_t * pNtk, int nStepsMax, int fVerbose ); 06202 extern Abc_Ntk_t * Abc_NtkPcmTest( Abc_Ntk_t * pNtk, int fVerbose ); 06203 06204 pNtk = Abc_FrameReadNtk(pAbc); 06205 pOut = Abc_FrameReadOut(pAbc); 06206 pErr = Abc_FrameReadErr(pAbc); 06207 06208 // set defaults 06209 fVerbose = 0; 06210 nLevels = 1000; 06211 Extra_UtilGetoptReset(); 06212 while ( ( c = Extra_UtilGetopt( argc, argv, "Nvh" ) ) != EOF ) 06213 { 06214 switch ( c ) 06215 { 06216 case 'N': 06217 if ( globalUtilOptind >= argc ) 06218 { 06219 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 06220 goto usage; 06221 } 06222 nLevels = atoi(argv[globalUtilOptind]); 06223 globalUtilOptind++; 06224 if ( nLevels < 0 ) 06225 goto usage; 06226 break; 06227 case 'v': 06228 fVerbose ^= 1; 06229 break; 06230 case 'h': 06231 goto usage; 06232 default: 06233 goto usage; 06234 } 06235 } 06236 /* 06237 if ( pNtk == NULL ) 06238 { 06239 fprintf( pErr, "Empty network.\n" ); 06240 return 1; 06241 } 06242 if ( Abc_NtkIsSeq(pNtk) ) 06243 { 06244 fprintf( pErr, "Only works for non-sequential networks.\n" ); 06245 return 1; 06246 } 06247 */ 06248 06249 // Abc_NtkTestEsop( pNtk ); 06250 // Abc_NtkTestSop( pNtk ); 06251 // printf( "This command is currently not used.\n" ); 06252 // run the command 06253 // pNtkRes = Abc_NtkMiterForCofactors( pNtk, 0, 0, -1 ); 06254 // pNtkRes = Abc_NtkNewAig( pNtk ); 06255 06256 /* 06257 pNtkRes = NULL; 06258 if ( pNtkRes == NULL ) 06259 { 06260 fprintf( pErr, "Command has failed.\n" ); 06261 return 1; 06262 } 06263 // replace the current network 06264 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06265 */ 06266 06267 // if ( Cut_CellIsRunning() ) 06268 // Cut_CellDumpToFile(); 06269 // else 06270 // Cut_CellPrecompute(); 06271 // Cut_CellLoad(); 06272 /* 06273 { 06274 Abc_Ntk_t * pNtkRes; 06275 extern Abc_Ntk_t * Abc_NtkTopmost( Abc_Ntk_t * pNtk, int nLevels ); 06276 pNtkRes = Abc_NtkTopmost( pNtk, nLevels ); 06277 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06278 } 06279 */ 06280 // Abc_NtkSimulteBuggyMiter( pNtk ); 06281 06282 // Rwr_Temp(); 06283 // Abc_MvExperiment(); 06284 // Ivy_TruthTest(); 06285 06286 06287 // Ivy_TruthEstimateNodesTest(); 06288 /* 06289 pNtkRes = Abc_NtkIvy( pNtk ); 06290 // pNtkRes = Abc_NtkPlayer( pNtk, nLevels, 0 ); 06291 // pNtkRes = NULL; 06292 if ( pNtkRes == NULL ) 06293 { 06294 fprintf( pErr, "Command has failed.\n" ); 06295 return 1; 06296 } 06297 // replace the current network 06298 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06299 */ 06300 // Abc_NtkMaxFlowTest( pNtk ); 06301 // Pr_ManProofTest( "trace.cnf" ); 06302 06303 // Abc_NtkCompareSupports( pNtk ); 06304 // Abc_NtkCompareCones( pNtk ); 06305 /* 06306 { 06307 extern Vec_Vec_t * Abc_NtkPartitionSmart( Abc_Ntk_t * pNtk, int fVerbose ); 06308 Vec_Vec_t * vParts; 06309 vParts = Abc_NtkPartitionSmart( pNtk, 1 ); 06310 Vec_VecFree( vParts ); 06311 } 06312 */ 06313 // Abc_Ntk4VarTable( pNtk ); 06314 // Dar_NtkGenerateArrays( pNtk ); 06315 // Dar_ManDeriveCnfTest2(); 06316 /* 06317 if ( !Abc_NtkIsStrash(pNtk) ) 06318 { 06319 fprintf( pErr, "Network should be strashed. Command has failed.\n" ); 06320 return 1; 06321 } 06322 */ 06323 /* 06324 if ( !Abc_NtkIsStrash(pNtk) ) 06325 { 06326 fprintf( stdout, "Currently only works for structurally hashed circuits.\n" ); 06327 return 0; 06328 } 06329 */ 06330 if ( Abc_NtkIsStrash(pNtk) ) 06331 { 06332 fprintf( stdout, "Currently only works for logic circuits.\n" ); 06333 return 0; 06334 } 06335 06336 // pNtkRes = Abc_NtkDar( pNtk ); 06337 // pNtkRes = Abc_NtkDarRetime( pNtk, nLevels, 1 ); 06338 // pNtkRes = Abc_NtkPcmTest( pNtk, fVerbose ); 06339 pNtkRes = NULL; 06340 if ( pNtkRes == NULL ) 06341 { 06342 fprintf( pErr, "Command has failed.\n" ); 06343 return 1; 06344 } 06345 // replace the current network 06346 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06347 return 0; 06348 usage: 06349 fprintf( pErr, "usage: test [-h]\n" ); 06350 fprintf( pErr, "\t testbench for new procedures\n" ); 06351 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06352 fprintf( pErr, "\t-h : print the command usage\n"); 06353 return 1; 06354 }
int Abc_CommandTopmost | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5092 of file abc.c.
05093 { 05094 FILE * pOut, * pErr; 05095 Abc_Ntk_t * pNtk, * pNtkRes; 05096 int c, nLevels; 05097 extern Abc_Ntk_t * Abc_NtkTopmost( Abc_Ntk_t * pNtk, int nLevels ); 05098 05099 pNtk = Abc_FrameReadNtk(pAbc); 05100 pOut = Abc_FrameReadOut(pAbc); 05101 pErr = Abc_FrameReadErr(pAbc); 05102 05103 // set defaults 05104 nLevels = 10; 05105 Extra_UtilGetoptReset(); 05106 while ( ( c = Extra_UtilGetopt( argc, argv, "Nh" ) ) != EOF ) 05107 { 05108 switch ( c ) 05109 { 05110 case 'N': 05111 if ( globalUtilOptind >= argc ) 05112 { 05113 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 05114 goto usage; 05115 } 05116 nLevels = atoi(argv[globalUtilOptind]); 05117 globalUtilOptind++; 05118 if ( nLevels < 0 ) 05119 goto usage; 05120 break; 05121 case 'h': 05122 goto usage; 05123 default: 05124 goto usage; 05125 } 05126 } 05127 05128 if ( pNtk == NULL ) 05129 { 05130 fprintf( pErr, "Empty network.\n" ); 05131 return 1; 05132 } 05133 05134 if ( !Abc_NtkIsStrash(pNtk) ) 05135 { 05136 fprintf( stdout, "Currently only works for structurally hashed circuits.\n" ); 05137 return 0; 05138 } 05139 05140 if ( Abc_NtkLatchNum(pNtk) > 0 ) 05141 { 05142 fprintf( stdout, "Currently can only works for combinational circuits.\n" ); 05143 return 0; 05144 } 05145 if ( Abc_NtkPoNum(pNtk) != 1 ) 05146 { 05147 fprintf( stdout, "Currently expects a single-output miter.\n" ); 05148 return 0; 05149 } 05150 05151 pNtkRes = Abc_NtkTopmost( pNtk, nLevels ); 05152 if ( pNtkRes == NULL ) 05153 { 05154 fprintf( pErr, "The command has failed.\n" ); 05155 return 1; 05156 } 05157 // replace the current network 05158 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05159 return 0; 05160 05161 usage: 05162 fprintf( pErr, "usage: topmost [-N num] [-h]\n" ); 05163 fprintf( pErr, "\t replaces the current network by several of its topmost levels\n" ); 05164 fprintf( pErr, "\t-N num : max number of levels [default = %d]\n", nLevels ); 05165 fprintf( pErr, "\t-h : print the command usage\n"); 05166 fprintf( pErr, "\tname : the node name\n"); 05167 return 1; 05168 }
int Abc_CommandTraceCheck | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12708 of file abc.c.
12709 { 12710 FILE * pOut, * pErr; 12711 Abc_Ntk_t * pNtk; 12712 int c; 12713 12714 pNtk = Abc_FrameReadNtk(pAbc); 12715 pOut = Abc_FrameReadOut(pAbc); 12716 pErr = Abc_FrameReadErr(pAbc); 12717 12718 // set defaults 12719 Extra_UtilGetoptReset(); 12720 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 12721 { 12722 switch ( c ) 12723 { 12724 case 'h': 12725 goto usage; 12726 default: 12727 goto usage; 12728 } 12729 } 12730 12731 if ( pNtk == NULL ) 12732 { 12733 fprintf( pErr, "Empty network.\n" ); 12734 return 1; 12735 } 12736 if ( !Abc_NtkIsStrash(pNtk) ) 12737 { 12738 fprintf( pErr, "This command is applicable to AIGs.\n" ); 12739 return 1; 12740 } 12741 /* 12742 if ( !Abc_HManIsRunning(pNtk) ) 12743 { 12744 fprintf( pErr, "The tracing database is not available.\n" ); 12745 return 1; 12746 } 12747 12748 if ( !Abc_HManVerify( 1, pNtk->Id ) ) 12749 fprintf( pErr, "Verification failed.\n" ); 12750 Abc_HManStop(); 12751 */ 12752 return 0; 12753 12754 usage: 12755 fprintf( pErr, "usage: trace_check [-h]\n" ); 12756 fprintf( pErr, "\t checks the current network using verification trace\n" ); 12757 fprintf( pErr, "\t-h : print the command usage\n"); 12758 return 1; 12759 }
int Abc_CommandTraceStart | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 12647 of file abc.c.
12648 { 12649 FILE * pOut, * pErr; 12650 Abc_Ntk_t * pNtk; 12651 int c; 12652 12653 pNtk = Abc_FrameReadNtk(pAbc); 12654 pOut = Abc_FrameReadOut(pAbc); 12655 pErr = Abc_FrameReadErr(pAbc); 12656 12657 // set defaults 12658 Extra_UtilGetoptReset(); 12659 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 12660 { 12661 switch ( c ) 12662 { 12663 case 'h': 12664 goto usage; 12665 default: 12666 goto usage; 12667 } 12668 } 12669 12670 if ( pNtk == NULL ) 12671 { 12672 fprintf( pErr, "Empty network.\n" ); 12673 return 1; 12674 } 12675 if ( !Abc_NtkIsStrash(pNtk) ) 12676 { 12677 fprintf( pErr, "This command is applicable to AIGs.\n" ); 12678 return 1; 12679 } 12680 /* 12681 Abc_HManStart(); 12682 if ( !Abc_HManPopulate( pNtk ) ) 12683 { 12684 fprintf( pErr, "Failed to start the tracing database.\n" ); 12685 return 1; 12686 } 12687 */ 12688 return 0; 12689 12690 usage: 12691 fprintf( pErr, "usage: trace_start [-h]\n" ); 12692 fprintf( pErr, "\t starts verification tracing\n" ); 12693 fprintf( pErr, "\t-h : print the command usage\n"); 12694 return 1; 12695 }
int Abc_CommandTrim | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5181 of file abc.c.
05182 { 05183 FILE * pOut, * pErr; 05184 Abc_Ntk_t * pNtk, * pNtkRes; 05185 int c, nLevels; 05186 extern Abc_Ntk_t * Abc_NtkTrim( Abc_Ntk_t * pNtk ); 05187 05188 pNtk = Abc_FrameReadNtk(pAbc); 05189 pOut = Abc_FrameReadOut(pAbc); 05190 pErr = Abc_FrameReadErr(pAbc); 05191 05192 // set defaults 05193 nLevels = 10; 05194 Extra_UtilGetoptReset(); 05195 while ( ( c = Extra_UtilGetopt( argc, argv, "Nh" ) ) != EOF ) 05196 { 05197 switch ( c ) 05198 { 05199 /* 05200 case 'N': 05201 if ( globalUtilOptind >= argc ) 05202 { 05203 fprintf( pErr, "Command line switch \"-N\" should be followed by an integer.\n" ); 05204 goto usage; 05205 } 05206 nLevels = atoi(argv[globalUtilOptind]); 05207 globalUtilOptind++; 05208 if ( nLevels < 0 ) 05209 goto usage; 05210 break; 05211 */ 05212 case 'h': 05213 goto usage; 05214 default: 05215 goto usage; 05216 } 05217 } 05218 05219 if ( pNtk == NULL ) 05220 { 05221 fprintf( pErr, "Empty network.\n" ); 05222 return 1; 05223 } 05224 if ( Abc_NtkIsStrash(pNtk) ) 05225 { 05226 fprintf( stdout, "Currently only works for logic circuits.\n" ); 05227 return 0; 05228 } 05229 05230 pNtkRes = Abc_NtkTrim( pNtk ); 05231 if ( pNtkRes == NULL ) 05232 { 05233 fprintf( pErr, "The command has failed.\n" ); 05234 return 1; 05235 } 05236 // replace the current network 05237 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 05238 return 0; 05239 05240 usage: 05241 fprintf( pErr, "usage: trim [-h]\n" ); 05242 fprintf( pErr, "\t removes POs fed by PIs and constants, and PIs w/o fanout\n" ); 05243 // fprintf( pErr, "\t-N num : max number of levels [default = %d]\n", nLevels ); 05244 fprintf( pErr, "\t-h : print the command usage\n"); 05245 return 1; 05246 }
int Abc_CommandUndc | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10471 of file abc.c.
10472 { 10473 FILE * pOut, * pErr; 10474 Abc_Ntk_t * pNtk; 10475 int c; 10476 10477 pNtk = Abc_FrameReadNtk(pAbc); 10478 pOut = Abc_FrameReadOut(pAbc); 10479 pErr = Abc_FrameReadErr(pAbc); 10480 10481 // set defaults 10482 Extra_UtilGetoptReset(); 10483 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 10484 { 10485 switch ( c ) 10486 { 10487 case 'h': 10488 goto usage; 10489 default: 10490 goto usage; 10491 } 10492 } 10493 10494 if ( pNtk == NULL ) 10495 { 10496 fprintf( pErr, "Empty network.\n" ); 10497 return 1; 10498 } 10499 10500 if ( Abc_NtkIsComb(pNtk) ) 10501 { 10502 fprintf( pErr, "The current network is combinational.\n" ); 10503 return 0; 10504 } 10505 10506 if ( !Abc_NtkIsLogic(pNtk) ) 10507 { 10508 fprintf( pErr, "This command works only for logic networks.\n" ); 10509 return 0; 10510 } 10511 10512 // get the new network 10513 Abc_NtkConvertDcLatches( pNtk ); 10514 return 0; 10515 10516 usage: 10517 fprintf( pErr, "usage: undc [-h]\n" ); 10518 fprintf( pErr, "\t converts latches with DC init values into free PIs\n" ); 10519 fprintf( pErr, "\t-h : print the command usage\n"); 10520 return 1; 10521 }
int Abc_CommandUnmap | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 9443 of file abc.c.
09444 { 09445 FILE * pOut, * pErr; 09446 Abc_Ntk_t * pNtk; 09447 int c; 09448 09449 pNtk = Abc_FrameReadNtk(pAbc); 09450 pOut = Abc_FrameReadOut(pAbc); 09451 pErr = Abc_FrameReadErr(pAbc); 09452 09453 // set defaults 09454 Extra_UtilGetoptReset(); 09455 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 09456 { 09457 switch ( c ) 09458 { 09459 case 'h': 09460 goto usage; 09461 default: 09462 goto usage; 09463 } 09464 } 09465 09466 if ( pNtk == NULL ) 09467 { 09468 fprintf( pErr, "Empty network.\n" ); 09469 return 1; 09470 } 09471 if ( !Abc_NtkHasMapping(pNtk) ) 09472 { 09473 fprintf( pErr, "Cannot unmap the network that is not mapped.\n" ); 09474 return 1; 09475 } 09476 09477 // get the new network 09478 if ( !Abc_NtkMapToSop( pNtk ) ) 09479 { 09480 fprintf( pErr, "Unmapping has failed.\n" ); 09481 return 1; 09482 } 09483 return 0; 09484 09485 usage: 09486 fprintf( pErr, "usage: unmap [-h]\n" ); 09487 fprintf( pErr, "\t replaces the library gates by the logic nodes represented using SOPs\n" ); 09488 fprintf( pErr, "\t-h : print the command usage\n"); 09489 return 1; 09490 }
int Abc_CommandUnseq | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10677 of file abc.c.
10678 { 10679 FILE * pOut, * pErr; 10680 Abc_Ntk_t * pNtk, * pNtkRes; 10681 int c; 10682 int fShare; 10683 10684 pNtk = Abc_FrameReadNtk(pAbc); 10685 pOut = Abc_FrameReadOut(pAbc); 10686 pErr = Abc_FrameReadErr(pAbc); 10687 10688 // set defaults 10689 fShare = 1; 10690 Extra_UtilGetoptReset(); 10691 while ( ( c = Extra_UtilGetopt( argc, argv, "sh" ) ) != EOF ) 10692 { 10693 switch ( c ) 10694 { 10695 case 's': 10696 fShare ^= 1; 10697 break; 10698 case 'h': 10699 goto usage; 10700 default: 10701 goto usage; 10702 } 10703 } 10704 10705 if ( pNtk == NULL ) 10706 { 10707 fprintf( pErr, "Empty network.\n" ); 10708 return 1; 10709 } 10710 /* 10711 if ( !Abc_NtkIsSeq(pNtk) ) 10712 { 10713 fprintf( pErr, "Conversion to combinational AIG works only for sequential AIG (run \"seq\").\n" ); 10714 return 1; 10715 } 10716 */ 10717 // share the latches on the fanout edges 10718 // if ( fShare ) 10719 // Seq_NtkShareFanouts(pNtk); 10720 10721 // get the new network 10722 // pNtkRes = Abc_NtkSeqToLogicSop( pNtk ); 10723 pNtkRes = NULL; 10724 if ( pNtkRes == NULL ) 10725 { 10726 fprintf( pErr, "Converting sequential AIG into an SOP logic network has failed.\n" ); 10727 return 1; 10728 } 10729 // replace the current network 10730 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10731 return 0; 10732 10733 usage: 10734 fprintf( pErr, "usage: unseq [-sh]\n" ); 10735 fprintf( pErr, "\t converts sequential AIG into an SOP logic network\n" ); 10736 fprintf( pErr, "\t-s : toggle sharing latches [default = %s]\n", fShare? "yes": "no" ); 10737 fprintf( pErr, "\t-h : print the command usage\n"); 10738 return 1; 10739 }
int Abc_CommandXsim | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 11578 of file abc.c.
11579 { 11580 FILE * pOut, * pErr; 11581 Abc_Ntk_t * pNtk; 11582 int c; 11583 int nFrames; 11584 int fXInputs; 11585 int fXState; 11586 int fVerbose; 11587 extern void Abc_NtkXValueSimulate( Abc_Ntk_t * pNtk, int nFrames, int fXInputs, int fXState, int fVerbose ); 11588 11589 pNtk = Abc_FrameReadNtk(pAbc); 11590 pOut = Abc_FrameReadOut(pAbc); 11591 pErr = Abc_FrameReadErr(pAbc); 11592 11593 // set defaults 11594 nFrames = 10; 11595 fXInputs = 0; 11596 fXState = 0; 11597 fVerbose = 0; 11598 Extra_UtilGetoptReset(); 11599 while ( ( c = Extra_UtilGetopt( argc, argv, "Fisvh" ) ) != EOF ) 11600 { 11601 switch ( c ) 11602 { 11603 case 'F': 11604 if ( globalUtilOptind >= argc ) 11605 { 11606 fprintf( pErr, "Command line switch \"-F\" should be followed by an integer.\n" ); 11607 goto usage; 11608 } 11609 nFrames = atoi(argv[globalUtilOptind]); 11610 globalUtilOptind++; 11611 if ( nFrames < 0 ) 11612 goto usage; 11613 break; 11614 case 'i': 11615 fXInputs ^= 1; 11616 break; 11617 case 's': 11618 fXState ^= 1; 11619 break; 11620 case 'v': 11621 fVerbose ^= 1; 11622 break; 11623 case 'h': 11624 goto usage; 11625 default: 11626 goto usage; 11627 } 11628 } 11629 if ( pNtk == NULL ) 11630 { 11631 fprintf( pErr, "Empty network.\n" ); 11632 return 1; 11633 } 11634 11635 if ( !Abc_NtkIsStrash(pNtk) ) 11636 { 11637 fprintf( pErr, "Only works for strashed networks.\n" ); 11638 return 1; 11639 } 11640 if ( !Abc_NtkLatchNum(pNtk) ) 11641 { 11642 fprintf( pErr, "Only works for sequential networks.\n" ); 11643 return 1; 11644 } 11645 Abc_NtkXValueSimulate( pNtk, nFrames, fXInputs, fXState, fVerbose ); 11646 return 0; 11647 11648 usage: 11649 fprintf( pErr, "usage: xsim [-F num] [-isvh]\n" ); 11650 fprintf( pErr, "\t performs X-valued simulation of the AIG\n" ); 11651 fprintf( pErr, "\t-F num : the number of frames to simulate [default = %d]\n", nFrames ); 11652 fprintf( pErr, "\t-i : toggle X-valued representation of inputs [default = %s]\n", fXInputs? "yes": "no" ); 11653 fprintf( pErr, "\t-s : toggle X-valued representation of state [default = %s]\n", fXState? "yes": "no" ); 11654 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 11655 fprintf( pErr, "\t-h : print the command usage\n"); 11656 return 1; 11657 }
int Abc_CommandXyz | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 5954 of file abc.c.
05955 { 05956 FILE * pOut, * pErr; 05957 Abc_Ntk_t * pNtk, * pNtkRes;//, * pNtkTemp; 05958 int c; 05959 int nLutMax; 05960 int nPlaMax; 05961 int RankCost; 05962 int fFastMode; 05963 int fRewriting; 05964 int fSynthesis; 05965 int fVerbose; 05966 // extern Abc_Ntk_t * Abc_NtkXyz( Abc_Ntk_t * pNtk, int nPlaMax, bool fEsop, bool fSop, bool fInvs, bool fVerbose ); 05967 extern void * Abc_NtkPlayer( void * pNtk, int nLutMax, int nPlaMax, int RankCost, int fFastMode, int fRewriting, int fSynthesis, int fVerbose ); 05968 05969 pNtk = Abc_FrameReadNtk(pAbc); 05970 pOut = Abc_FrameReadOut(pAbc); 05971 pErr = Abc_FrameReadErr(pAbc); 05972 05973 // set defaults 05974 nLutMax = 8; 05975 nPlaMax = 128; 05976 RankCost = 96000; 05977 fFastMode = 1; 05978 fRewriting = 0; 05979 fSynthesis = 0; 05980 fVerbose = 0; 05981 Extra_UtilGetoptReset(); 05982 while ( ( c = Extra_UtilGetopt( argc, argv, "LPRfrsvh" ) ) != EOF ) 05983 { 05984 switch ( c ) 05985 { 05986 case 'L': 05987 if ( globalUtilOptind >= argc ) 05988 { 05989 fprintf( pErr, "Command line switch \"-L\" should be followed by an integer.\n" ); 05990 goto usage; 05991 } 05992 nLutMax = atoi(argv[globalUtilOptind]); 05993 globalUtilOptind++; 05994 if ( nLutMax < 0 ) 05995 goto usage; 05996 break; 05997 case 'P': 05998 if ( globalUtilOptind >= argc ) 05999 { 06000 fprintf( pErr, "Command line switch \"-P\" should be followed by an integer.\n" ); 06001 goto usage; 06002 } 06003 nPlaMax = atoi(argv[globalUtilOptind]); 06004 globalUtilOptind++; 06005 if ( nPlaMax < 0 ) 06006 goto usage; 06007 break; 06008 case 'R': 06009 if ( globalUtilOptind >= argc ) 06010 { 06011 fprintf( pErr, "Command line switch \"-R\" should be followed by an integer.\n" ); 06012 goto usage; 06013 } 06014 RankCost = atoi(argv[globalUtilOptind]); 06015 globalUtilOptind++; 06016 if ( RankCost < 0 ) 06017 goto usage; 06018 break; 06019 case 'f': 06020 fFastMode ^= 1; 06021 break; 06022 case 'r': 06023 fRewriting ^= 1; 06024 break; 06025 case 's': 06026 fSynthesis ^= 1; 06027 break; 06028 case 'v': 06029 fVerbose ^= 1; 06030 break; 06031 case 'h': 06032 goto usage; 06033 default: 06034 goto usage; 06035 } 06036 } 06037 if ( pNtk == NULL ) 06038 { 06039 fprintf( pErr, "Empty network.\n" ); 06040 return 1; 06041 } 06042 06043 if ( !Abc_NtkIsStrash(pNtk) ) 06044 { 06045 fprintf( pErr, "Only works for strashed networks.\n" ); 06046 return 1; 06047 } 06048 /* 06049 if ( nLutMax < 2 || nLutMax > 12 || nPlaMax < 8 || nPlaMax > 128 ) 06050 { 06051 fprintf( pErr, "Incorrect LUT/PLA parameters.\n" ); 06052 return 1; 06053 } 06054 */ 06055 // run the command 06056 // pNtkRes = Abc_NtkXyz( pNtk, nPlaMax, 1, 0, fInvs, fVerbose ); 06057 /* 06058 if ( !Abc_NtkIsStrash(pNtk) ) 06059 { 06060 pNtkTemp = Abc_NtkStrash( pNtk, 0, 1, 0 ); 06061 pNtkRes = Abc_NtkPlayer( pNtkTemp, nLutMax, nPlaMax, RankCost, fFastMode, fRewriting, fSynthesis, fVerbose ); 06062 Abc_NtkDelete( pNtkTemp ); 06063 } 06064 else 06065 pNtkRes = Abc_NtkPlayer( pNtk, nLutMax, nPlaMax, RankCost, fFastMode, fRewriting, fSynthesis, fVerbose ); 06066 */ 06067 pNtkRes = NULL; 06068 if ( pNtkRes == NULL ) 06069 { 06070 fprintf( pErr, "Command has failed.\n" ); 06071 return 0; 06072 } 06073 // replace the current network 06074 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 06075 return 0; 06076 06077 usage: 06078 fprintf( pErr, "usage: xyz [-L num] [-P num] [-R num] [-frsvh]\n" ); 06079 fprintf( pErr, "\t specilized LUT/PLA decomposition\n" ); 06080 fprintf( pErr, "\t-L num : maximum number of LUT inputs (2<=num<=8) [default = %d]\n", nLutMax ); 06081 fprintf( pErr, "\t-P num : maximum number of PLA inputs/cubes (8<=num<=128) [default = %d]\n", nPlaMax ); 06082 fprintf( pErr, "\t-R num : maximum are of one decomposition rank [default = %d]\n", RankCost ); 06083 fprintf( pErr, "\t-f : toggle using fast LUT mapping mode [default = %s]\n", fFastMode? "yes": "no" ); 06084 fprintf( pErr, "\t-r : toggle using one pass of AIG rewriting [default = %s]\n", fRewriting? "yes": "no" ); 06085 fprintf( pErr, "\t-s : toggle using synthesis by AIG rewriting [default = %s]\n", fSynthesis? "yes": "no" ); 06086 fprintf( pErr, "\t-v : toggle printing verbose information [default = %s]\n", fVerbose? "yes": "no" ); 06087 fprintf( pErr, "\t-h : print the command usage\n"); 06088 return 1; 06089 }
int Abc_CommandZero | ( | Abc_Frame_t * | pAbc, | |
int | argc, | |||
char ** | argv | |||
) | [static] |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 10399 of file abc.c.
10400 { 10401 FILE * pOut, * pErr; 10402 Abc_Ntk_t * pNtk, * pNtkRes; 10403 int c; 10404 10405 extern Abc_Ntk_t * Abc_NtkRestrashZero( Abc_Ntk_t * pNtk, bool fCleanup ); 10406 10407 pNtk = Abc_FrameReadNtk(pAbc); 10408 pOut = Abc_FrameReadOut(pAbc); 10409 pErr = Abc_FrameReadErr(pAbc); 10410 10411 // set defaults 10412 Extra_UtilGetoptReset(); 10413 while ( ( c = Extra_UtilGetopt( argc, argv, "h" ) ) != EOF ) 10414 { 10415 switch ( c ) 10416 { 10417 case 'h': 10418 goto usage; 10419 default: 10420 goto usage; 10421 } 10422 } 10423 10424 if ( pNtk == NULL ) 10425 { 10426 fprintf( pErr, "Empty network.\n" ); 10427 return 1; 10428 } 10429 10430 if ( Abc_NtkIsComb(pNtk) ) 10431 { 10432 fprintf( pErr, "The current network is combinational.\n" ); 10433 return 0; 10434 } 10435 10436 if ( !Abc_NtkIsStrash(pNtk) ) 10437 { 10438 fprintf( pErr, "This command works only for AIGs.\n" ); 10439 return 0; 10440 } 10441 10442 // get the new network 10443 pNtkRes = Abc_NtkRestrashZero( pNtk, 0 ); 10444 if ( pNtkRes == NULL ) 10445 { 10446 fprintf( pErr, "Converting to sequential AIG has failed.\n" ); 10447 return 1; 10448 } 10449 // replace the current network 10450 Abc_FrameReplaceCurrentNetwork( pAbc, pNtkRes ); 10451 return 0; 10452 10453 usage: 10454 fprintf( pErr, "usage: zero [-h]\n" ); 10455 fprintf( pErr, "\t converts latches to have const-0 initial value\n" ); 10456 fprintf( pErr, "\t-h : print the command usage\n"); 10457 return 1; 10458 }
void Abc_End | ( | ) |
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 381 of file abc.c.
00382 { 00383 // Dar_LibDumpPriorities(); 00384 00385 { 00386 extern void Cnf_ClearMemory(); 00387 Cnf_ClearMemory(); 00388 } 00389 { 00390 extern void Dar_LibStop(); 00391 Dar_LibStop(); 00392 } 00393 00394 Abc_NtkFraigStoreClean(); 00395 // Rwt_Man4ExplorePrint(); 00396 00397 }
void Abc_Init | ( | Abc_Frame_t * | pAbc | ) |
FUNCTION DEFINITIONS ///Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 203 of file abc.c.
00204 { 00205 // Abc_NtkBddImplicationTest(); 00206 00207 Cmd_CommandAdd( pAbc, "Printing", "print_stats", Abc_CommandPrintStats, 0 ); 00208 Cmd_CommandAdd( pAbc, "Printing", "print_exdc", Abc_CommandPrintExdc, 0 ); 00209 Cmd_CommandAdd( pAbc, "Printing", "print_io", Abc_CommandPrintIo, 0 ); 00210 Cmd_CommandAdd( pAbc, "Printing", "print_latch", Abc_CommandPrintLatch, 0 ); 00211 Cmd_CommandAdd( pAbc, "Printing", "print_fanio", Abc_CommandPrintFanio, 0 ); 00212 Cmd_CommandAdd( pAbc, "Printing", "print_mffc", Abc_CommandPrintMffc, 0 ); 00213 Cmd_CommandAdd( pAbc, "Printing", "print_factor", Abc_CommandPrintFactor, 0 ); 00214 Cmd_CommandAdd( pAbc, "Printing", "print_level", Abc_CommandPrintLevel, 0 ); 00215 Cmd_CommandAdd( pAbc, "Printing", "print_supp", Abc_CommandPrintSupport, 0 ); 00216 Cmd_CommandAdd( pAbc, "Printing", "print_symm", Abc_CommandPrintSymms, 0 ); 00217 Cmd_CommandAdd( pAbc, "Printing", "print_unate", Abc_CommandPrintUnate, 0 ); 00218 Cmd_CommandAdd( pAbc, "Printing", "print_auto", Abc_CommandPrintAuto, 0 ); 00219 Cmd_CommandAdd( pAbc, "Printing", "print_kmap", Abc_CommandPrintKMap, 0 ); 00220 Cmd_CommandAdd( pAbc, "Printing", "print_gates", Abc_CommandPrintGates, 0 ); 00221 Cmd_CommandAdd( pAbc, "Printing", "print_sharing", Abc_CommandPrintSharing, 0 ); 00222 Cmd_CommandAdd( pAbc, "Printing", "print_xcut", Abc_CommandPrintXCut, 0 ); 00223 Cmd_CommandAdd( pAbc, "Printing", "print_dsd", Abc_CommandPrintDsd, 0 ); 00224 00225 Cmd_CommandAdd( pAbc, "Printing", "show", Abc_CommandShow, 0 ); 00226 Cmd_CommandAdd( pAbc, "Printing", "show_bdd", Abc_CommandShowBdd, 0 ); 00227 Cmd_CommandAdd( pAbc, "Printing", "show_cut", Abc_CommandShowCut, 0 ); 00228 00229 Cmd_CommandAdd( pAbc, "Synthesis", "collapse", Abc_CommandCollapse, 1 ); 00230 Cmd_CommandAdd( pAbc, "Synthesis", "strash", Abc_CommandStrash, 1 ); 00231 Cmd_CommandAdd( pAbc, "Synthesis", "balance", Abc_CommandBalance, 1 ); 00232 Cmd_CommandAdd( pAbc, "Synthesis", "multi", Abc_CommandMulti, 1 ); 00233 Cmd_CommandAdd( pAbc, "Synthesis", "renode", Abc_CommandRenode, 1 ); 00234 Cmd_CommandAdd( pAbc, "Synthesis", "cleanup", Abc_CommandCleanup, 1 ); 00235 Cmd_CommandAdd( pAbc, "Synthesis", "sweep", Abc_CommandSweep, 1 ); 00236 Cmd_CommandAdd( pAbc, "Synthesis", "fx", Abc_CommandFastExtract, 1 ); 00237 Cmd_CommandAdd( pAbc, "Synthesis", "dsd", Abc_CommandDisjoint, 1 ); 00238 Cmd_CommandAdd( pAbc, "Synthesis", "imfs", Abc_CommandImfs, 1 ); 00239 Cmd_CommandAdd( pAbc, "Synthesis", "lutpack", Abc_CommandLutpack, 1 ); 00240 00241 Cmd_CommandAdd( pAbc, "Synthesis", "rewrite", Abc_CommandRewrite, 1 ); 00242 Cmd_CommandAdd( pAbc, "Synthesis", "refactor", Abc_CommandRefactor, 1 ); 00243 // Cmd_CommandAdd( pAbc, "Synthesis", "restructure", Abc_CommandRestructure, 1 ); 00244 Cmd_CommandAdd( pAbc, "Synthesis", "resub", Abc_CommandResubstitute, 1 ); 00245 Cmd_CommandAdd( pAbc, "Synthesis", "rr", Abc_CommandRr, 1 ); 00246 Cmd_CommandAdd( pAbc, "Synthesis", "cascade", Abc_CommandCascade, 1 ); 00247 00248 Cmd_CommandAdd( pAbc, "Various", "logic", Abc_CommandLogic, 1 ); 00249 Cmd_CommandAdd( pAbc, "Various", "comb", Abc_CommandComb, 1 ); 00250 Cmd_CommandAdd( pAbc, "Various", "miter", Abc_CommandMiter, 1 ); 00251 Cmd_CommandAdd( pAbc, "Various", "demiter", Abc_CommandDemiter, 1 ); 00252 Cmd_CommandAdd( pAbc, "Various", "orpos", Abc_CommandOrPos, 1 ); 00253 Cmd_CommandAdd( pAbc, "Various", "andpos", Abc_CommandAndPos, 1 ); 00254 Cmd_CommandAdd( pAbc, "Various", "append", Abc_CommandAppend, 1 ); 00255 Cmd_CommandAdd( pAbc, "Various", "frames", Abc_CommandFrames, 1 ); 00256 Cmd_CommandAdd( pAbc, "Various", "sop", Abc_CommandSop, 0 ); 00257 Cmd_CommandAdd( pAbc, "Various", "bdd", Abc_CommandBdd, 0 ); 00258 Cmd_CommandAdd( pAbc, "Various", "aig", Abc_CommandAig, 0 ); 00259 Cmd_CommandAdd( pAbc, "Various", "reorder", Abc_CommandReorder, 0 ); 00260 Cmd_CommandAdd( pAbc, "Various", "order", Abc_CommandOrder, 0 ); 00261 Cmd_CommandAdd( pAbc, "Various", "muxes", Abc_CommandMuxes, 1 ); 00262 Cmd_CommandAdd( pAbc, "Various", "ext_seq_dcs", Abc_CommandExtSeqDcs, 0 ); 00263 Cmd_CommandAdd( pAbc, "Various", "cone", Abc_CommandCone, 1 ); 00264 Cmd_CommandAdd( pAbc, "Various", "node", Abc_CommandNode, 1 ); 00265 Cmd_CommandAdd( pAbc, "Various", "topmost", Abc_CommandTopmost, 1 ); 00266 Cmd_CommandAdd( pAbc, "Various", "trim", Abc_CommandTrim, 1 ); 00267 Cmd_CommandAdd( pAbc, "Various", "short_names", Abc_CommandShortNames, 0 ); 00268 Cmd_CommandAdd( pAbc, "Various", "exdc_free", Abc_CommandExdcFree, 1 ); 00269 Cmd_CommandAdd( pAbc, "Various", "exdc_get", Abc_CommandExdcGet, 1 ); 00270 Cmd_CommandAdd( pAbc, "Various", "exdc_set", Abc_CommandExdcSet, 1 ); 00271 Cmd_CommandAdd( pAbc, "Various", "cut", Abc_CommandCut, 0 ); 00272 Cmd_CommandAdd( pAbc, "Various", "espresso", Abc_CommandEspresso, 1 ); 00273 Cmd_CommandAdd( pAbc, "Various", "gen", Abc_CommandGen, 0 ); 00274 // Cmd_CommandAdd( pAbc, "Various", "xyz", Abc_CommandXyz, 1 ); 00275 Cmd_CommandAdd( pAbc, "Various", "double", Abc_CommandDouble, 1 ); 00276 Cmd_CommandAdd( pAbc, "Various", "test", Abc_CommandTest, 0 ); 00277 00278 Cmd_CommandAdd( pAbc, "Various", "qvar", Abc_CommandQuaVar, 1 ); 00279 Cmd_CommandAdd( pAbc, "Various", "qrel", Abc_CommandQuaRel, 1 ); 00280 Cmd_CommandAdd( pAbc, "Various", "qreach", Abc_CommandQuaReach, 1 ); 00281 00282 Cmd_CommandAdd( pAbc, "New AIG", "istrash", Abc_CommandIStrash, 1 ); 00283 Cmd_CommandAdd( pAbc, "New AIG", "icut", Abc_CommandICut, 0 ); 00284 Cmd_CommandAdd( pAbc, "New AIG", "irw", Abc_CommandIRewrite, 1 ); 00285 Cmd_CommandAdd( pAbc, "New AIG", "drw", Abc_CommandDRewrite, 1 ); 00286 Cmd_CommandAdd( pAbc, "New AIG", "drf", Abc_CommandDRefactor, 1 ); 00287 Cmd_CommandAdd( pAbc, "New AIG", "dcompress2", Abc_CommandDCompress2, 1 ); 00288 Cmd_CommandAdd( pAbc, "New AIG", "dchoice", Abc_CommandDChoice, 1 ); 00289 Cmd_CommandAdd( pAbc, "New AIG", "drwsat", Abc_CommandDrwsat, 1 ); 00290 Cmd_CommandAdd( pAbc, "New AIG", "irws", Abc_CommandIRewriteSeq, 1 ); 00291 Cmd_CommandAdd( pAbc, "New AIG", "iresyn", Abc_CommandIResyn, 1 ); 00292 Cmd_CommandAdd( pAbc, "New AIG", "isat", Abc_CommandISat, 1 ); 00293 Cmd_CommandAdd( pAbc, "New AIG", "ifraig", Abc_CommandIFraig, 1 ); 00294 Cmd_CommandAdd( pAbc, "New AIG", "dfraig", Abc_CommandDFraig, 1 ); 00295 Cmd_CommandAdd( pAbc, "New AIG", "csweep", Abc_CommandCSweep, 1 ); 00296 Cmd_CommandAdd( pAbc, "New AIG", "iprove", Abc_CommandIProve, 1 ); 00297 Cmd_CommandAdd( pAbc, "New AIG", "haig", Abc_CommandHaig, 1 ); 00298 Cmd_CommandAdd( pAbc, "New AIG", "mini", Abc_CommandMini, 1 ); 00299 Cmd_CommandAdd( pAbc, "New AIG", "_bmc", Abc_CommandBmc, 0 ); 00300 Cmd_CommandAdd( pAbc, "New AIG", "qbf", Abc_CommandQbf, 0 ); 00301 00302 Cmd_CommandAdd( pAbc, "Fraiging", "fraig", Abc_CommandFraig, 1 ); 00303 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_trust", Abc_CommandFraigTrust, 1 ); 00304 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_store", Abc_CommandFraigStore, 0 ); 00305 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_restore", Abc_CommandFraigRestore, 1 ); 00306 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_clean", Abc_CommandFraigClean, 0 ); 00307 Cmd_CommandAdd( pAbc, "Fraiging", "fraig_sweep", Abc_CommandFraigSweep, 1 ); 00308 Cmd_CommandAdd( pAbc, "Fraiging", "dress", Abc_CommandFraigDress, 1 ); 00309 00310 Cmd_CommandAdd( pAbc, "Choicing", "haig_start", Abc_CommandHaigStart, 0 ); 00311 Cmd_CommandAdd( pAbc, "Choicing", "haig_stop", Abc_CommandHaigStop, 0 ); 00312 Cmd_CommandAdd( pAbc, "Choicing", "haig_use", Abc_CommandHaigUse, 1 ); 00313 00314 Cmd_CommandAdd( pAbc, "Choicing", "rec_start", Abc_CommandRecStart, 0 ); 00315 Cmd_CommandAdd( pAbc, "Choicing", "rec_stop", Abc_CommandRecStop, 0 ); 00316 Cmd_CommandAdd( pAbc, "Choicing", "rec_add", Abc_CommandRecAdd, 0 ); 00317 Cmd_CommandAdd( pAbc, "Choicing", "rec_ps", Abc_CommandRecPs, 0 ); 00318 Cmd_CommandAdd( pAbc, "Choicing", "rec_use", Abc_CommandRecUse, 1 ); 00319 00320 Cmd_CommandAdd( pAbc, "SC mapping", "map", Abc_CommandMap, 1 ); 00321 Cmd_CommandAdd( pAbc, "SC mapping", "unmap", Abc_CommandUnmap, 1 ); 00322 Cmd_CommandAdd( pAbc, "SC mapping", "attach", Abc_CommandAttach, 1 ); 00323 Cmd_CommandAdd( pAbc, "SC mapping", "sc", Abc_CommandSuperChoice, 1 ); 00324 Cmd_CommandAdd( pAbc, "SC mapping", "scl", Abc_CommandSuperChoiceLut, 1 ); 00325 00326 Cmd_CommandAdd( pAbc, "FPGA mapping", "fpga", Abc_CommandFpga, 1 ); 00327 Cmd_CommandAdd( pAbc, "FPGA mapping", "ffpga", Abc_CommandFpgaFast, 1 ); 00328 Cmd_CommandAdd( pAbc, "FPGA mapping", "if", Abc_CommandIf, 1 ); 00329 00330 // Cmd_CommandAdd( pAbc, "Sequential", "scut", Abc_CommandScut, 0 ); 00331 Cmd_CommandAdd( pAbc, "Sequential", "init", Abc_CommandInit, 1 ); 00332 Cmd_CommandAdd( pAbc, "Sequential", "zero", Abc_CommandZero, 1 ); 00333 Cmd_CommandAdd( pAbc, "Sequential", "undc", Abc_CommandUndc, 1 ); 00334 // Cmd_CommandAdd( pAbc, "Sequential", "pipe", Abc_CommandPipe, 1 ); 00335 Cmd_CommandAdd( pAbc, "Sequential", "retime", Abc_CommandRetime, 1 ); 00336 // Cmd_CommandAdd( pAbc, "Sequential", "sfpga", Abc_CommandSeqFpga, 1 ); 00337 // Cmd_CommandAdd( pAbc, "Sequential", "smap", Abc_CommandSeqMap, 1 ); 00338 Cmd_CommandAdd( pAbc, "Sequential", "ssweep", Abc_CommandSeqSweep, 1 ); 00339 Cmd_CommandAdd( pAbc, "Sequential", "lcorr", Abc_CommandLcorr, 1 ); 00340 Cmd_CommandAdd( pAbc, "Sequential", "scleanup", Abc_CommandSeqCleanup, 1 ); 00341 Cmd_CommandAdd( pAbc, "Sequential", "cycle", Abc_CommandCycle, 1 ); 00342 Cmd_CommandAdd( pAbc, "Sequential", "xsim", Abc_CommandXsim, 0 ); 00343 00344 Cmd_CommandAdd( pAbc, "Verification", "cec", Abc_CommandCec, 0 ); 00345 Cmd_CommandAdd( pAbc, "Verification", "sec", Abc_CommandSec, 0 ); 00346 Cmd_CommandAdd( pAbc, "Verification", "dsec", Abc_CommandDSec, 0 ); 00347 Cmd_CommandAdd( pAbc, "Verification", "dprove", Abc_CommandDProve, 0 ); 00348 Cmd_CommandAdd( pAbc, "Verification", "sat", Abc_CommandSat, 0 ); 00349 Cmd_CommandAdd( pAbc, "Verification", "dsat", Abc_CommandDSat, 0 ); 00350 Cmd_CommandAdd( pAbc, "Verification", "prove", Abc_CommandProve, 1 ); 00351 Cmd_CommandAdd( pAbc, "Verification", "debug", Abc_CommandDebug, 0 ); 00352 00353 // Cmd_CommandAdd( pAbc, "Verification", "trace_start", Abc_CommandTraceStart, 0 ); 00354 // Cmd_CommandAdd( pAbc, "Verification", "trace_check", Abc_CommandTraceCheck, 0 ); 00355 00356 // Rwt_Man4ExploreStart(); 00357 // Map_Var3Print(); 00358 // Map_Var4Test(); 00359 00360 // Abc_NtkPrint256(); 00361 // Kit_TruthCountMintermsPrecomp(); 00362 // Kit_DsdPrecompute4Vars(); 00363 00364 { 00365 extern void Dar_LibStart(); 00366 Dar_LibStart(); 00367 } 00368 }