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

ClusterDB.h

Go to the documentation of this file.
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 #ifndef CLUSTERDB_H
00036 #define CLUSTERDB_H
00037 
00038 #include <vector>
00039 #include <algorithm>
00040 #include <math.h>
00041 #include <stdlib.h>
00042 #include <map>
00043 #include "bitBoardP.h"
00044 
00045 using namespace std;
00046 
00047 namespace parquetfp
00048 {
00049    class DB;
00050    class Command_Line;
00051 
00052    class ClusterDB
00053    {
00054    private:
00055 
00056       Command_Line *_params; //parameters
00057       DB *_db;        //just a pointer to base DB
00058       DB *_newDB;     //used in cluster
00059       DB *_oldDB;     //used in cluster
00060 
00061       BitBoard _nodesSeenBB;
00062       vector<double> _numConnections;
00063 
00064    public:
00065 
00066       ClusterDB(DB* db, Command_Line *params);
00067       ~ClusterDB();
00068 
00069       void clusterMulti(DB * newDB);
00070 
00071       void cluster1Layer(unsigned layerNum, unsigned maxConnId=1);
00072       void addNetsToNewDB(Nets* nets, Nets* newNets, Nodes* nodes, Nodes* newNodes,
00073                           map<unsigned, unsigned>& mapping);
00074 
00075       Node& getClosestNode(Node& currNode, Nodes* nodes, Nets* nets, 
00076                            vector<bool>& seenNodes, unsigned maxConnId=1,
00077                            bool direction = true);
00078       void addWSPerNode(void);
00079 
00080       void clusterMultiPhysical(DB * newDB); //cluster with physical constraints
00081    };
00082 
00083    struct sortNumConnections //sort connectivities
00084    {
00085       bool operator()(Point pt1, Point pt2)
00086          {
00087             return (pt1.y < pt2.y);
00088          }
00089    };
00090 }
00091 //using namespace parquetfp;
00092 
00093 #endif 

Generated on Mon Apr 25 01:09:24 2005 for Parquete by doxygen 1.3.2