#include "FPcommon.h"#include "Annealer.h"#include "CommandLine.h"#include "ClusterDB.h"#include "SolveMulti.h"#include "ABKCommon/paramproc.h"#include "ABKCommon/infolines.h"Include dependency graph for FPEvalTest4.cxx:

Go to the source code of this file.
Functions | |
| int | main (int argc, const char *argv[]) |
|
||||||||||||
|
Definition at line 44 of file FPEvalTest4.cxx. References BoolParam::found(), NoParams::found(), Timer::getUserTime(), Timer::start(), and Timer::stop().
00045 {
00046 Timer T;
00047 T.stop();
00048 double currArea, lastArea;
00049 double currWS;
00050 double currWL;
00051 double currXSize;
00052 double currYSize;
00053 double currAR;
00054
00055 BoolParam help1 ("h", argc, argv);
00056 BoolParam help2 ("help", argc, argv);
00057 NoParams noParams(argc,argv); // this acts as a flag
00058 Command_Line* params = new Command_Line(argc, argv);
00059 params->printAnnealerParams();
00060 if (noParams.found() || help1.found() || help2.found())
00061 {
00062 cerr<<"This test case solves heirarchical floorplans\n"
00063 <<"Options \n"
00064 <<"FPEvalTest4.exe\n"
00065 <<"-f baseFileName\n"
00066 <<"-compact (compact the final multilevel solution)\n"
00067 <<"-plot (plot floorplan)\n"
00068 <<"-save (save in bookshelf floorplan format)\n"
00069 <<"-savePl (save only .pl file)\n"
00070 <<"-saveCapoPl (save .pl in Capo bookshelf format)\n"
00071 <<"-saveCapo (save design in Capo bookshelf format)\n";
00072 exit (0);
00073 }
00074
00075 DB* db = new DB(params->inFileName);
00076
00077 T.start(0.0);
00078 SolveMulti solveMulti(db, params);
00079 solveMulti.go();
00080
00081 if(params->compact)
00082 {
00083 //compact the design
00084 Annealer annealer(params, db);
00085 bool whichDir = 0;
00086 annealer.takeSPfromDB();
00087 annealer.eval();
00088 currArea = annealer.getXSize()*annealer.getYSize();
00089 annealer.evalCompact(whichDir);
00090 do
00091 {
00092 whichDir = !whichDir;
00093 lastArea = currArea;
00094 annealer.takeSPfromDB();
00095 annealer.evalCompact(whichDir);
00096 currArea = annealer.getXSize()*annealer.getYSize();
00097 cout<<currArea<<"\t"<<lastArea<<endl;
00098 }
00099 while(int(currArea) < int(lastArea));
00100 }
00101 T.stop();
00102
00103 double blocksArea = db->getNodesArea();
00104
00105 currXSize = 0;
00106 currYSize = 1;
00107 currArea = db->evalArea();
00108 currWS = 100*(currArea - blocksArea)/blocksArea;
00109 currWL = db->evalHPWL();
00110 currAR = currXSize/currYSize;
00111
00112 if(params->plot)
00113 {
00114 bool plotSlacks = !params->plotNoSlacks;
00115 bool plotNets = !params->plotNoNets;
00116 bool plotNames = !params->plotNoNames;
00117
00118 db->plot("out.plt", currArea, currWS, currAR,
00119 T.getUserTime(), currWL, plotSlacks, plotNets,
00120 plotNames);
00121 }
00122 if(params->savePl)
00123 db->getNodes()->savePl(params->outPlFile);
00124
00125 if(params->saveCapoPl)
00126 db->getNodes()->saveCapoPl(params->capoPlFile);
00127
00128 if(params->saveCapo)
00129 db->saveCapo(params->capoBaseFile, params->reqdAR);
00130
00131 if(params->save)
00132 db->save(params->baseFile);
00133
00134 return 0;
00135 }
|
Here is the call graph for this function:

1.3.2