00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaFig.h 00004 // 00005 // This file contains the definition for the oaFig, oaRouteStatus, and 00006 // oaRouteTopology classes. 00007 // 00008 // oaFig 00009 // The oaFig class is an abstract class that is the base for all OpenAccess 00010 // database figures (connFigs, blockages, boundaries, rows and markers.) 00011 // 00012 // oaConnFig 00013 // The oaConnFig class is an abstract class that is the base for all 00014 // OpenAccess database figures that can represent connectivity. (pinFigs, 00015 // routes and guides) 00016 // 00017 // oaPinFig 00018 // The oaPinFig class is an abstract class that is the base for all 00019 // OpenAccess database figures that can represent pins. (shapes, vias and 00020 // insts) 00021 // 00022 // oaRouteStatus 00023 // The oaRouteStatus class implements an enumerated type that describes the 00024 // routing status of a net that is associated with either a route, shape or 00025 // via. 00026 // 00027 // oaRouteTopology 00028 // The oaRouteTopology class implements an enumerated type that describes 00029 // the topology of a net that is associated with either a route, via or a 00030 // pathSeg shape. 00031 // 00032 // ***************************************************************************** 00033 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00034 // Integration Initiative, this material may not be copied, modified, 00035 // re-published, uploaded, executed, or distributed in any way, in any medium, 00036 // in whole or in part, without prior written permission from Cadence. 00037 // 00038 // Copyright 2002-2005 Cadence Design Systems, Inc. 00039 // All Rights Reserved. 00040 // 00041 // $Author: icftcm $ 00042 // $Revision: #1 $ 00043 // $Date: 2010/08/09 $ 00044 // $State: Exp $ 00045 // ***************************************************************************** 00046 // ***************************************************************************** 00047 00048 00049 00050 #if !defined(oaFig_P) 00051 #define oaFig_P 00052 00053 00054 00055 // ***************************************************************************** 00056 // Nested includes 00057 // ***************************************************************************** 00058 #include "oaBox.h" 00059 #include "oaTransform.h" 00060 #include "oaBlockObject.h" 00061 00062 00063 00064 // ***************************************************************************** 00065 // Declare and define types in the OpenAccess namespace. 00066 // ***************************************************************************** 00067 BEGIN_OA_NAMESPACE 00068 00069 00070 00071 // ***************************************************************************** 00072 // oaRouteStatusEnum 00073 // ***************************************************************************** 00074 #define oavNumRouteStatusTypes 3 00075 00076 enum oaRouteStatusEnum { 00077 oacNormalRouteStatus = 0, 00078 oacFixedRouteStatus = 1, 00079 oacLockedRouteStatus = 2 00080 }; 00081 00082 00083 00084 // ***************************************************************************** 00085 // oaRouteStatus 00086 // ***************************************************************************** 00087 class OA_DESIGN_DLL_API oaRouteStatus { 00088 public: 00089 oaRouteStatus(oaRouteStatusEnum valueIn); 00090 oaRouteStatus(const oaString &name); 00091 ~oaRouteStatus(); 00092 00093 const oaString &getName() const; 00094 00095 operator oaRouteStatusEnum() const; 00096 00097 private: 00098 oaRouteStatusEnum value; 00099 00100 static const oaString names[]; 00101 }; 00102 00103 00104 00105 // ***************************************************************************** 00106 // oaRouteTopologyEnum 00107 // ***************************************************************************** 00108 #define oavNumRouteTopologyEnums 9 00109 00110 enum oaRouteTopologyEnum { 00111 oacNoneRouteTopology = 0, 00112 oacStripeRouteTopology = 1, 00113 oacStandardCellWireRouteTopology = 2, 00114 oacIOWireRouteTopology = 3, 00115 oacBlockWireRouteTopology = 4, 00116 oacRingRouteTopology = 5, 00117 oacPadRingRouteTopology = 6, 00118 oacBlockRingRouteTopology = 7, 00119 oacCoreWireRouteTopology = 8 00120 }; 00121 00122 00123 00124 // ***************************************************************************** 00125 // oaRouteTopology 00126 // ***************************************************************************** 00127 class OA_DESIGN_DLL_API oaRouteTopology { 00128 public: 00129 oaRouteTopology(oaRouteTopologyEnum valueIn); 00130 oaRouteTopology(const oaString &name); 00131 ~oaRouteTopology(); 00132 00133 const oaString &getName() const; 00134 00135 operator oaRouteTopologyEnum() const; 00136 00137 private: 00138 oaRouteTopologyEnum value; 00139 00140 static const oaString names[]; 00141 }; 00142 00143 00144 00145 // ***************************************************************************** 00146 // oaFig 00147 // ***************************************************************************** 00148 class OA_DESIGN_DLL_API oaFig : public oaBlockObject { 00149 public: 00150 void destroy(); 00151 00152 void getBBox(oaBox &bBox) const; 00153 oaFigGroupMem *getFigGroupMem() const; 00154 00155 oaBoolean overlaps(const oaBox &box) const; 00156 00157 void move(const oaTransform &xform); 00158 oaFig *move(const oaTransform &xform, 00159 oaBlock *block); 00160 00161 oaFig *copy(const oaTransform &xform) const; 00162 oaFig *copy(const oaTransform &xform, 00163 oaBlock *block) const; 00164 00165 #if !defined(OA_DEPRECATED) 00166 oaFig *move(const oaTransform &xform, 00167 oaDesign *design); 00168 oaFig *copy(const oaTransform &xform, 00169 oaDesign *design) const; 00170 #endif 00171 }; 00172 00173 00174 00175 // ***************************************************************************** 00176 // oaConnFig 00177 // ***************************************************************************** 00178 class OA_DESIGN_DLL_API oaConnFig : public oaFig { 00179 public: 00180 oaBoolean hasNet() const; 00181 oaNet *getNet() const; 00182 00183 void addToNet(oaNet *net); 00184 void removeFromNet(); 00185 }; 00186 00187 00188 00189 // ***************************************************************************** 00190 // oaPinFig 00191 // ***************************************************************************** 00192 class OA_DESIGN_DLL_API oaPinFig : public oaConnFig { 00193 public: 00194 oaBoolean hasPin() const; 00195 oaPin *getPin() const; 00196 00197 void addToPin(oaPin *pin); 00198 void removeFromPin(); 00199 }; 00200 00201 00202 00203 // ***************************************************************************** 00204 // Design Traits. 00205 // ***************************************************************************** 00206 template<> 00207 class oaTraits<oaFig> { 00208 public: 00209 typedef oaBlockObject parentType; 00210 enum {domain = oacBlockDomain}; 00211 enum {dbType = oacDesignDBType}; 00212 enum {isMultiDomain = false}; 00213 enum {isConcrete = false}; 00214 enum {abstractTypeEnumVal = oacFigType}; 00215 }; 00216 00217 template<> 00218 class oaTraits<oaConnFig> { 00219 public: 00220 typedef oaFig parentType; 00221 enum {domain = oacBlockDomain}; 00222 enum {dbType = oacDesignDBType}; 00223 enum {isMultiDomain = false}; 00224 enum {isConcrete = false}; 00225 enum {abstractTypeEnumVal = oacConnFigType}; 00226 }; 00227 00228 template<> 00229 class oaTraits<oaPinFig> { 00230 public: 00231 typedef oaConnFig parentType; 00232 enum {domain = oacBlockDomain}; 00233 enum {dbType = oacDesignDBType}; 00234 enum {isMultiDomain = false}; 00235 enum {isConcrete = false}; 00236 enum {abstractTypeEnumVal = oacPinFigType}; 00237 }; 00238 00239 00240 00241 END_OA_NAMESPACE 00242 00243 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.