00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaDesignInst.h 00004 // 00005 // This file contains the definition for the oaDesignInst class and its public 00006 // supporting classes. 00007 // 00008 // ***************************************************************************** 00009 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00010 // Integration Initiative, this material may not be copied, modified, 00011 // re-published, uploaded, executed, or distributed in any way, in any medium, 00012 // in whole or in part, without prior written permission from Cadence. 00013 // 00014 // Copyright 2004-2005 Cadence Design Systems, Inc. 00015 // All Rights Reserved. 00016 // 00017 // $Author: icftcm $ 00018 // $Revision: #1 $ 00019 // $Date: 2010/08/09 $ 00020 // $State: Exp $ 00021 // ***************************************************************************** 00022 // ***************************************************************************** 00023 00024 00025 00026 #if !defined(oaDesignInst_P) 00027 #define oaDesignInst_P 00028 00029 00030 00031 // ***************************************************************************** 00032 // Nested includes 00033 // ***************************************************************************** 00034 #include "oaTransform.h" 00035 #include "oaTechDBTypes.h" 00036 #include "oaFrame.h" 00037 #include "oaReticle.h" 00038 00039 00040 00041 // ***************************************************************************** 00042 // Declare and define types in the OpenAccess namespace. 00043 // ***************************************************************************** 00044 BEGIN_OA_NAMESPACE 00045 00046 00047 00048 // ***************************************************************************** 00049 // oaReticleUsageEnum 00050 // ***************************************************************************** 00051 #define oavNumReticleUsageEnums 9 00052 00053 enum oaReticleUsageEnum { 00054 oacDieReticleUsage = 0, 00055 oacAlignmentReticleUsage = 1, 00056 oacBarCodeReticleUsage = 2, 00057 oacIdentificationReticleUsage = 3, 00058 oacDieSealReticleUsage = 4, 00059 oacDieNumberReticleUsage = 5, 00060 oacLogoReticleUsage = 6, 00061 oacElectricalReticleUsage = 7, 00062 oacOpticalReticleUsage = 8 00063 }; 00064 00065 00066 00067 // ***************************************************************************** 00068 // oaReticleUsage 00069 // ***************************************************************************** 00070 class OA_WAFER_DLL_API oaReticleUsage { 00071 public: 00072 oaReticleUsage(oaReticleUsageEnum valueIn); 00073 oaReticleUsage(const oaString &name); 00074 00075 const oaString &getName() const; 00076 00077 operator oaReticleUsageEnum() const; 00078 00079 private: 00080 static const oaString *initNames(); 00081 00082 oaReticleUsageEnum value; 00083 00084 static const oaString names[]; 00085 }; 00086 00087 00088 00089 // ***************************************************************************** 00090 // oaLayerMap 00091 // ***************************************************************************** 00092 class OA_WAFER_DLL_API oaLayerMap { 00093 public: 00094 oaLayerMap(); 00095 oaLayerMap(oaLayerNum waferLayer, 00096 oaLayerNum designLayer); 00097 oaLayerMap(const oaLayerMap &layerMap); 00098 00099 oaLayerNum waferLayer() const; 00100 oaLayerNum designLayer() const; 00101 00102 oaLayerNum &waferLayer(); 00103 oaLayerNum &designLayer(); 00104 00105 oaLayerMap &operator=(const oaLayerMap &layerMap); 00106 00107 oaBoolean operator==(const oaLayerMap &layerMap); 00108 oaBoolean operator!=(const oaLayerMap &layerMap); 00109 oaBoolean operator==(const oaLayerMap &layerMap) const; 00110 oaBoolean operator!=(const oaLayerMap &layerMap) const; 00111 00112 private: 00113 oaLayerNum waferLayerNum; 00114 oaLayerNum designLayerNum; 00115 }; 00116 00117 00118 00119 // ***************************************************************************** 00120 // oaLayerMapArray 00121 // ***************************************************************************** 00122 class OA_WAFER_DLL_API oaLayerMapArray : public oaArray<oaLayerMap> { 00123 public: 00124 oaLayerMapArray(oaUInt4 size = 0); 00125 oaLayerMapArray(const oaLayerMapArray &layers); 00126 }; 00127 00128 00129 00130 // ***************************************************************************** 00131 // oaDesignInst 00132 // ***************************************************************************** 00133 class OA_WAFER_DLL_API oaDesignInst : public oaWaferObject { 00134 public: 00135 static oaDesignInst *create(oaReticle *reticle, 00136 const oaString &name, 00137 const oaScalarName &libName, 00138 const oaScalarName &cellName, 00139 const oaScalarName &viewName, 00140 oaFloat magnification, 00141 const oaTransform &xform, 00142 oaBoolean isPrintable, 00143 oaReticleUsage reticleUsage); 00144 00145 static oaDesignInst *create(oaFrame *frame, 00146 const oaString &name, 00147 const oaScalarName &libName, 00148 const oaScalarName &cellName, 00149 const oaScalarName &viewName, 00150 oaFloat magnification, 00151 const oaTransform &xform, 00152 oaBoolean isPrintable, 00153 oaReticleUsage reticleUsage); 00154 00155 void destroy(); 00156 00157 static oaDesignInst *find(const oaWafer *wafer, 00158 const oaString &name); 00159 00160 void getName(oaString &name) const; 00161 void getLibName(oaScalarName &name) const; 00162 void getLibName(const oaNameSpace &nameSpace, 00163 oaString &name) const; 00164 void getCellName(oaScalarName &name) const; 00165 void getCellName(const oaNameSpace &nameSpace, 00166 oaString &name) const; 00167 void getViewName(oaScalarName &name) const; 00168 void getViewName(const oaNameSpace &nameSpace, 00169 oaString &name) const; 00170 oaFloat getMag() const; 00171 void getOrigin(oaPoint &origin) const; 00172 oaOrient getOrient() const; 00173 void getTransform(oaTransform &xform) const; 00174 oaWaferObject *getOwner() const; 00175 void getLayerMapping(oaLayerMapArray &layers) const; 00176 oaReticleUsage getReticleUsage() const; 00177 00178 oaBoolean isPrintable() const; 00179 oaBoolean hasLayerMapping() const; 00180 00181 void setName(const oaString &name); 00182 void setOrigin(const oaPoint &origin); 00183 void setOrient(oaOrient orient); 00184 void setTransform(const oaTransform &xform); 00185 void setPrintable(oaBoolean value); 00186 void setMag(oaFloat mag); 00187 void setLayerMapping(const oaLayerMapArray &layers); 00188 void setReticleUsage(oaReticleUsage reticalUsage); 00189 00190 enum {dtIndex = oacDesignInstWaferDataType}; 00191 }; 00192 00193 00194 00195 // ***************************************************************************** 00196 // Wafer traits. 00197 // ***************************************************************************** 00198 template<> 00199 class oaTraits<oaDesignInst> { 00200 public: 00201 typedef oaWaferObject parentType; 00202 typedef oaDesignInstModTypeEnum modTypeType; 00203 enum {dbType = oacWaferDBType}; 00204 enum {domain = oacNoDomain}; 00205 enum {isMultiDomain = false}; 00206 enum {dtIndex = oacDesignInstWaferDataType}; 00207 enum {isConcrete = true}; 00208 enum {objectTypeEnumVal = oacDesignInstType}; 00209 enum {dataTypeEnumVal = oacDesignInstWaferDataType}; 00210 }; 00211 00212 00213 00214 END_OA_NAMESPACE 00215 00216 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.