00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaBlock.h 00004 // 00005 // This file contains the definition for the oaBlock class and its public 00006 // supporting classes. oaBlock is the main object for storing information about 00007 // a level of physical hierarchy in a design. It implements methods for 00008 // accessing all physical information in a design. 00009 // 00010 // The public supporting classes included here are: 00011 // 00012 // oaSymmetry 00013 // The oaSymmetry class encapsulates the values that describe the 00014 // different symmetries that an oaBlock can have. 00015 // 00016 // oaBlockDomainVisibility 00017 // The oaBlockDomainVisibility class encapsulates the values that 00018 // describe the visibility of block objects in other EMH domains. 00019 // 00020 // ***************************************************************************** 00021 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00022 // Integration Initiative, this material may not be copied, modified, 00023 // re-published, uploaded, executed, or distributed in any way, in any medium, 00024 // in whole or in part, without prior written permission from Cadence. 00025 // 00026 // Copyright 2003-2005 Cadence Design Systems, Inc. 00027 // All Rights Reserved. 00028 // 00029 // $Author: icftcm $ 00030 // $Revision: #1 $ 00031 // $Date: 2010/08/09 $ 00032 // $State: Exp $ 00033 // ***************************************************************************** 00034 // ***************************************************************************** 00035 00036 00037 00038 #if !defined(oaBlock_P) 00039 #define oaBlock_P 00040 00041 00042 00043 // ***************************************************************************** 00044 // Nested includes 00045 // ***************************************************************************** 00046 #include "oaBox.h" 00047 #include "oaSiteDef.h" 00048 #include "oaTerm.h" 00049 #include "oaDesign.h" 00050 00051 00052 00053 // ***************************************************************************** 00054 // Declare and define types in the OpenAccess namespace. 00055 // ***************************************************************************** 00056 BEGIN_OA_NAMESPACE 00057 00058 00059 00060 // ***************************************************************************** 00061 // oaSymmetryEnum 00062 // ***************************************************************************** 00063 #define oavNumSymmetryTypes 5 00064 00065 enum oaSymmetryEnum { 00066 oacNoSymmetry = 0, 00067 oacXSymmetry = 1, 00068 oacYSymmetry = 2, 00069 oacXYSymmetry = 3, 00070 oacAnySymmetry = 4 00071 }; 00072 00073 00074 00075 // ***************************************************************************** 00076 // oaSymmetry 00077 // ***************************************************************************** 00078 class OA_DESIGN_DLL_API oaSymmetry { 00079 public: 00080 oaSymmetry(oaSymmetryEnum valueIn); 00081 oaSymmetry(const oaString &name); 00082 ~oaSymmetry(); 00083 00084 const oaString &getName() const; 00085 00086 operator oaSymmetryEnum() const; 00087 00088 private: 00089 oaSymmetryEnum value; 00090 00091 static const oaString names[]; 00092 }; 00093 00094 00095 00096 // ***************************************************************************** 00097 // oaBlock 00098 // ***************************************************************************** 00099 class OA_DESIGN_DLL_API oaBlock : public oaBlockObject { 00100 public: 00101 static oaBlock *create(const oaDesign *design, 00102 oaBoolean visibleToModule = true); 00103 00104 void destroy(); 00105 00106 oaModule *getModule() const; 00107 oaUInt4 getDBUPerUU() const; 00108 oaUserUnitsType getUserUnits() const; 00109 void getBBox(oaBox &bBox) const; 00110 void getEEQMaster(oaString &master) const; 00111 void getSitePattern(oaSitePattern &pattern) const; 00112 oaSymmetry getSymmetry() const; 00113 void getTermsByPosition(oaTermArray &array) const; 00114 00115 oaBoolean hasConnectivity() const; 00116 oaBoolean hasMultiBitNet() const; 00117 oaBoolean hasMultiBitTerm() const; 00118 oaBoolean hasMultiTermNet() const; 00119 oaBoolean hasGlobalNet() const; 00120 oaBoolean isVisibleToModule() const; 00121 00122 void setSymmetry(oaSymmetry val); 00123 void setEEQMaster(const oaString &master); 00124 void setSitePattern(const oaSitePattern &pattern); 00125 void setVisibleToModule(); 00126 00127 oaBoolean hasDefaultConstraintGroup() const; 00128 oaConstraintGroup *getDefaultConstraintGroup() const; 00129 00130 void initForRegionQuery(); 00131 00132 oaCollection<oaAssignment, oaBlock> getAssignments() const; 00133 oaCollection<oaBlockage, oaBlock> getBlockages() const; 00134 oaCollection<oaAreaBoundary, oaBlock> getBoundaries() const; 00135 oaCollection<oaBusNetDef, oaBlock> getBusNetDefs() const; 00136 oaCollection<oaBusTermDef, oaBlock> getBusTermDefs() const; 00137 oaCollection<oaConnectDef, oaBlock> getConnectDefs() const; 00138 oaCollection<oaCluster, oaBlock> getClusters() const; 00139 oaCollection<oaFigGroup, oaBlock> getFigGroups() const; 00140 oaCollection<oaGCellPattern, oaBlock> getGCellPatterns() const; 00141 oaCollection<oaGuide, oaBlock> getGuides() const; 00142 oaCollection<oaInstHeader, oaBlock> getInstHeaders() const; 00143 oaCollection<oaInst, oaBlock> getInsts(oaUInt4 filterFlags = oacInstIterNotImplicit) const; 00144 oaCollection<oaInstTerm, oaBlock> getInstTerms(oaUInt4 filterFlags = oacInstTermIterNotImplicit) const; 00145 oaCollection<oaLPPHeader, oaBlock> getLPPHeaders() const; 00146 oaCollection<oaLayerHeader, oaBlock> getLayerHeaders() const; 00147 oaCollection<oaMarker, oaBlock> getMarkers() const; 00148 oaCollection<oaPin, oaBlock> getPins() const; 00149 oaCollection<oaNet, oaBlock> getNets(oaUInt4 filterFlags = oacNetIterAll | oacNetIterNotImplicit) const; 00150 oaCollection<oaRoute, oaBlock> getRoutes() const; 00151 oaCollection<oaRowHeader, oaBlock> getRowHeaders() const; 00152 oaCollection<oaRow, oaBlock> getRows() const; 00153 oaCollection<oaScanChain, oaBlock> getScanChains() const; 00154 oaCollection<oaShape, oaBlock> getShapes() const; 00155 oaCollection<oaSteiner, oaBlock> getSteiners() const; 00156 oaCollection<oaTerm, oaBlock> getTerms(oaUInt4 filterFlags = oacTermIterAllNotHidden | oacTermIterNotImplicit) const; 00157 oaCollection<oaTrackPattern, oaBlock> getTrackPatterns() const; 00158 oaCollection<oaVectorInstDef, oaBlock> getVectorInstDefs() const; 00159 oaCollection<oaVia, oaBlock> getVias() const; 00160 oaCollection<oaViaHeader, oaBlock> getViaHeaders() const; 00161 00162 enum {dtIndex = oacBlockDataType}; 00163 }; 00164 00165 00166 00167 // ***************************************************************************** 00168 // Design Traits. 00169 // ***************************************************************************** 00170 template<> 00171 class oaTraits<oaBlock> { 00172 public: 00173 typedef oaBlockObject parentType; 00174 typedef oaBlockModTypeEnum modTypeType; 00175 enum {domain = oacBlockDomain}; 00176 enum {dbType = oacDesignDBType}; 00177 enum {isMultiDomain = false}; 00178 enum {dtIndex = oacBlockDataType}; 00179 enum {isConcrete = true}; 00180 enum {objectTypeEnumVal = oacBlockType}; 00181 enum {dataTypeEnumVal = oacBlockDataType}; 00182 }; 00183 00184 00185 00186 END_OA_NAMESPACE 00187 00188 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.