oaCMap.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaCMap.h
00004 //
00005 // This file contains the definition for oaCMap class.
00006 //
00007 //  oaCMap
00008 //      This class is for Congestion Map. The Congestion Map is a 
00009 //      two-dimensional division of the chip in an array of GCells.
00010 //      It is a collection of GCellPatterns. The congestion map 
00011 //      definition fixes the size and aspect ratio of the individual 
00012 //      cells of the array.
00013 //
00014 // *****************************************************************************
00015 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00016 // Integration Initiative, this material may not be copied, modified,
00017 // re-published, uploaded, executed, or distributed in any way, in any medium,
00018 // in whole or in part, without prior written permission from Cadence.
00019 //
00020 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00021 //                           All Rights Reserved.
00022 //
00023 //  $Author: icftcm $
00024 //  $Revision: #1 $
00025 //  $Date: 2010/08/09 $
00026 //  $State: Exp $
00027 // *****************************************************************************
00028 // *****************************************************************************
00029 
00030 
00031 
00032 #if !defined(oaCMap_P)
00033 #define oaCMap_P
00034 
00035 
00036 
00037 // *****************************************************************************
00038 // Nested includes
00039 // *****************************************************************************
00040 #include "oaBlock.h"
00041 
00042 
00043 
00044 // *****************************************************************************
00045 // Declare and define types in the OpenAccess namespace.
00046 // *****************************************************************************
00047 BEGIN_OA_NAMESPACE
00048 
00049 
00050 
00051 #define oacCMapNoCellsDefined       0xffffffffu
00052 #define oacCMapNoSupplyDemandSet    0xffffffffu
00053 
00054 
00055 
00056 // *****************************************************************************
00057 // oaCMap
00058 // *****************************************************************************
00059 class OA_DESIGN_DLL_API oaCMap : public oaBlockObject {
00060 public:
00061     static oaCMap           *getCMap(oaBlock *block);
00062 
00063     oaBoolean               isSupplyDemandValid() const;
00064     void                    deleteSupplyDemand();
00065 
00066     void                    getXYIndex(const oaPoint    &point,
00067                                        oaUInt4          &xIndex,
00068                                        oaUInt4          &yIndex);
00069 
00070     void                    getGCell(oaUInt4    xIndex,
00071                                      oaUInt4    yIndex,
00072                                      oaLayerNum layerNum,
00073                                      oaUInt4    &horizontalSupply,
00074                                      oaUInt4    &verticalSupply,
00075                                      oaUInt4    &upSupply,
00076                                      oaUInt4    &horizontalDemand,
00077                                      oaUInt4    &verticalDemand,
00078                                      oaUInt4    &upDemand) const;
00079 
00080     oaUInt4                 getHorizontalSupply(oaUInt4     xIndex,
00081                                                 oaUInt4     yIndex,
00082                                                 oaLayerNum  layerNum) const;
00083     oaUInt4                 getVerticalSupply(oaUInt4       xIndex,
00084                                               oaUInt4       yIndex,
00085                                               oaLayerNum    layerNum) const;
00086     oaUInt4                 getUpSupply(oaUInt4     xIndex,
00087                                         oaUInt4     yIndex,
00088                                         oaLayerNum  layerNum) const;
00089     oaUInt4                 getHorizontalDemand(oaUInt4     xIndex,
00090                                                 oaUInt4     yIndex,
00091                                                 oaLayerNum  layerNum) const;
00092     oaUInt4                 getVerticalDemand(oaUInt4       xIndex,
00093                                               oaUInt4       yIndex,
00094                                               oaLayerNum    layerNum) const;
00095     oaUInt4                 getUpDemand(oaUInt4     xIndex,
00096                                         oaUInt4     yIndex,
00097                                         oaLayerNum  layerNum) const;
00098 
00099     void                    setGCell(oaUInt4    xIndex,
00100                                      oaUInt4    yIndex,
00101                                      oaLayerNum layerNum,
00102                                      oaUInt4    horizontalSupply,
00103                                      oaUInt4    verticalSupply,
00104                                      oaUInt4    upSupply,
00105                                      oaUInt4    horizontalDemand,
00106                                      oaUInt4    verticalDemand,
00107                                      oaUInt4    upDemand);
00108 
00109     void                    setHorizontalSupply(oaUInt4     xIndex,
00110                                                 oaUInt4     yIndex,
00111                                                 oaLayerNum  layerNum,
00112                                                 oaUInt4     horizontalSupply);
00113     void                    setVerticalSupply(oaUInt4       xIndex,
00114                                               oaUInt4       yIndex,
00115                                               oaLayerNum    layerNum,
00116                                               oaUInt4       verticalSupply);
00117     void                    setUpSupply(oaUInt4     xIndex,
00118                                         oaUInt4     yIndex,
00119                                         oaLayerNum  layerNum,
00120                                         oaUInt4     upSupply);
00121     void                    setHorizontalDemand(oaUInt4     xIndex,
00122                                                 oaUInt4     yIndex,
00123                                                 oaLayerNum  layerNum,
00124                                                 oaUInt4     horizontalDemand);
00125     void                    setVerticalDemand(oaUInt4       xIndex,
00126                                               oaUInt4       yIndex,
00127                                               oaLayerNum    layerNum,
00128                                               oaUInt4       verticalDemand);
00129     void                    setUpDemand(oaUInt4     xIndex,
00130                                         oaUInt4     yIndex,
00131                                         oaLayerNum  layerNum,
00132                                         oaUInt4     upDemand);
00133 
00134     oaUInt4                 getNumXGCell() const;
00135     oaUInt4                 getNumYGCell() const;
00136 
00137     oaTimeStamp             getTimeStamp() const;
00138 
00139     enum {dtIndex = oacCMapDataType};
00140 };
00141 
00142 
00143 
00144 // *****************************************************************************
00145 // Design Traits.
00146 // *****************************************************************************
00147 template<>
00148 class oaTraits<oaCMap> {
00149 public:
00150     typedef oaBlockObject       parentType;
00151     typedef oaCMapModTypeEnum   modTypeType;
00152     enum {domain = oacBlockDomain};
00153     enum {dbType = oacDesignDBType};
00154     enum {isMultiDomain = false};
00155     enum {dtIndex = oacCMapDataType};
00156     enum {isConcrete = true};
00157     enum {objectTypeEnumVal = oacCMapType};
00158     enum {dataTypeEnumVal = oacCMapDataType};
00159 };
00160 
00161 
00162 
00163 END_OA_NAMESPACE
00164 
00165 #endif
00166 

Return to top of page