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
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.