Main Page | Namespace List | Class Hierarchy | Compound List | File List | Namespace Members | Compound Members | File Members

FPEvalTest4.cxx File Reference

#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:

Include dependency graph

Go to the source code of this file.

Functions

int main (int argc, const char *argv[])


Function Documentation

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:


Generated on Mon Apr 25 01:11:31 2005 for Parquete by doxygen 1.3.2