00001 /************************************************************************** 00002 *** 00003 *** Copyright (c) 1995-2000 Regents of the University of California, 00004 *** Andrew E. Caldwell, Andrew B. Kahng and Igor L. Markov 00005 *** Copyright (c) 2000-2004 Regents of the University of Michigan, 00006 *** Saurabh N. Adya, Jarrod A. Roy and Igor L. Markov 00007 *** 00008 *** Contact author(s): abk@cs.ucsd.edu, imarkov@umich.edu 00009 *** Original Affiliation: UCLA, Computer Science Department, 00010 *** Los Angeles, CA 90095-1596 USA 00011 *** 00012 *** Permission is hereby granted, free of charge, to any person obtaining 00013 *** a copy of this software and associated documentation files (the 00014 *** "Software"), to deal in the Software without restriction, including 00015 *** without limitation 00016 *** the rights to use, copy, modify, merge, publish, distribute, sublicense, 00017 *** and/or sell copies of the Software, and to permit persons to whom the 00018 *** Software is furnished to do so, subject to the following conditions: 00019 *** 00020 *** The above copyright notice and this permission notice shall be included 00021 *** in all copies or substantial portions of the Software. 00022 *** 00023 *** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00024 *** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 00025 *** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 00026 *** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 00027 *** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT 00028 *** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR 00029 *** THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00030 *** 00031 *** 00032 ***************************************************************************/ 00033 00034 00035 00036 00037 #ifndef COMMAND_LINE_H 00038 #define COMMAND_LINE_H 00039 00040 // 040608 hhchan added StringParam "FPrep" ("SeqPair" or "BTree") 00041 00042 #include <string> 00043 #include "ABKCommon/verbosity.h" 00044 using namespace std; 00045 00046 namespace parquetfp 00047 { 00048 class Command_Line 00049 { 00050 public: 00051 Command_Line (int argc, const char *argv[]); 00052 Command_Line (); 00053 00054 // -----public member variables to store params----- 00055 bool getSeed, budgetTime; 00056 bool softBlocks; 00057 bool initQP; // initialize a QP soln 00058 char inFileName[1024]; 00059 char outPlFile [1024]; 00060 char capoPlFile [1024]; 00061 char capoBaseFile [1024]; 00062 char baseFile [1024]; 00063 00064 string FPrep; 00065 00066 int seed; // fixed seed 00067 int iterations; // number of runs 00068 int maxIterHier; // max # iterations during hierarchical flow 00069 00070 double seconds; 00071 bool plot; // plot to out.plt 00072 bool plotNoNets; // do not plot nets 00073 bool plotNoSlacks; // do not plot slacks 00074 bool plotNoNames; // do not plot names 00075 bool savePl; // save .pl file as output 00076 bool saveCapoPl; // save .pl file in Capo format 00077 bool saveCapo; // save files in Capo format 00078 bool save; // save files in bookshelf format 00079 00080 bool takePl; // takes a Placement and converts it 00081 // to sequence pair for initial soln 00082 00083 // -----Parameters for 2-level hierarchy----- 00084 bool solveMulti; // use multilevel heirarchy 00085 bool clusterPhysical; // use physical hierarchy instead of 00086 // closest node 00087 bool solveTop; // solve only top level of heirarchy 00088 double maxWSHier; // maximum WS for heirarchical blocks 00089 // default: 15% 00090 bool usePhyLocHier; // use physical locs which updating 00091 // locs of sub-blocks of clustered blocks, if using physical 00092 // clustering. usefull for eco purposes 00093 bool dontClusterMacros; // keep macros out of clustering 00094 // default: false 00095 int maxTopLevelNodes; // number of top-level nodes required during 00096 // clustering. if -9999 then use sqrt(#nodes) 00097 00098 // -----Annealer performance parameters next----- 00099 double timeInit; // initial temperature default 30000 00100 double timeCool; // cooling temperature default 0.01 00101 double startTime; // default to timeInit 00102 // (this is the time the area & WL are normalized to) 00103 double reqdAR; // required Aspect Ratio of fixed outline 00104 // default -9999(means no fixed outline 00105 // desired) 00106 double maxWS; // if fixed-outline then maximum whitespace 00107 // acceptable 00108 bool minWL; // whether HPWL minimization desired 00109 double areaWeight; // weight for area minimization 00110 double wireWeight; // weight for WL minimization 00111 00112 bool useFastSP; // whether to use fast SP(O(nlog n)) algo 00113 // for SPEval 00114 00115 bool snapToGrid; // use for snapping the solutions to a grid 00116 // specified by rowHeight & siteSpacing in DB 00117 00118 // -----pre/post-processing----- 00119 bool initCompact; // whether to use compaction to generate 00120 // initial SP (default: false) 00121 bool compact; // compact final soln (default: false) 00122 00123 Verbosity verb; // by royj to control the verbosity of Parquet 00124 00125 // print usage info. to cerr 00126 void printHelp(int argc, const char *argv[]) const; 00127 00128 // print the Annealer params 00129 void printAnnealerParams() const; 00130 void printAnnealerParamsClassic() const; 00131 void setSeed(); 00132 }; 00133 } 00134 //using namespace parquetfp; 00135 #endif // COMMAND_LINE_H