00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaWafer.h 00004 // 00005 // This file contains the definition for the oaWafer class and its public 00006 // supporting classes. The oaWafer class implements a wafer database which 00007 // is the main object for storing the description of a wafer and the reticles 00008 // frames, and images to associate with the wafer. 00009 // 00010 // ***************************************************************************** 00011 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00012 // Integration Initiative, this material may not be copied, modified, 00013 // re-published, uploaded, executed, or distributed in any way, in any medium, 00014 // in whole or in part, without prior written permission from Cadence. 00015 // 00016 // Copyright 2004-2005 Cadence Design Systems, Inc. 00017 // All Rights Reserved. 00018 // 00019 // $Author: icftcm $ 00020 // $Revision: #1 $ 00021 // $Date: 2010/08/09 $ 00022 // $State: Exp $ 00023 // ***************************************************************************** 00024 // ***************************************************************************** 00025 00026 00027 00028 #if !defined(oaWafer_P) 00029 #define oaWafer_P 00030 00031 00032 00033 // ***************************************************************************** 00034 // Nested includes 00035 // ***************************************************************************** 00036 #include "oaName.h" 00037 #include "oaArray.h" 00038 #include "oaAppObjectDef.h" 00039 #include "oaCollection.h" 00040 #include "oaWaferObject.h" 00041 00042 00043 00044 // ***************************************************************************** 00045 // Declare and define types in the OpenAccess namespace. 00046 // ***************************************************************************** 00047 BEGIN_OA_NAMESPACE 00048 00049 00050 00051 // ***************************************************************************** 00052 // oaWaferUnitsEnum 00053 // ***************************************************************************** 00054 #define oavNumWaferUnits 4 00055 00056 enum oaWaferUnitsEnum { 00057 oacMicronWaferUnits = 0, 00058 oacMilWaferUnits = 1, 00059 oacMillimeterWaferUnits = 2, 00060 oacNanometerWaferUnits = 3 00061 }; 00062 00063 00064 00065 // ***************************************************************************** 00066 // oaWaferUnitsType 00067 // ***************************************************************************** 00068 class OA_WAFER_DLL_API oaWaferUnitsType { 00069 public: 00070 oaWaferUnitsType(oaWaferUnitsEnum valueIn); 00071 oaWaferUnitsType(const oaString &name); 00072 ~oaWaferUnitsType(); 00073 00074 const oaString &getName() const; 00075 00076 operator oaWaferUnitsEnum() const; 00077 00078 private: 00079 static const oaString *initNames(); 00080 00081 oaWaferUnitsEnum value; 00082 00083 static const oaString names[]; 00084 }; 00085 00086 00087 00088 // ***************************************************************************** 00089 // oaWafer 00090 // ***************************************************************************** 00091 class OA_WAFER_DLL_API oaWafer : public oaWaferObject { 00092 public: 00093 static oaWafer *open(const oaScalarName &libName, 00094 const oaScalarName &cellName, 00095 const oaScalarName &viewName, 00096 oaChar mode = 'r'); 00097 00098 static oaWafer *find(const oaScalarName &libName, 00099 const oaScalarName &cellName, 00100 const oaScalarName &viewName); 00101 00102 static oaBoolean exists(const oaScalarName &libName, 00103 const oaScalarName &cellName, 00104 const oaScalarName &viewName); 00105 00106 static void destroy(const oaScalarName &libName, 00107 const oaScalarName &cellName, 00108 const oaScalarName &viewName); 00109 00110 void close(); 00111 void purge(); 00112 void save(); 00113 void saveAs(const oaScalarName &libName, 00114 const oaScalarName &cellName, 00115 const oaScalarName &viewName); 00116 void reopen(oaChar mode); 00117 void revert(); 00118 00119 void getLibName(oaScalarName &libName) const; 00120 void getCellName(oaScalarName &cellName) const; 00121 void getViewName(oaScalarName &viewName) const; 00122 00123 void getLibName(const oaNameSpace &ns, 00124 oaString &libStr) const; 00125 void getCellName(const oaNameSpace &ns, 00126 oaString &cellStr) const; 00127 void getViewName(const oaNameSpace &ns, 00128 oaString &viewStr) const; 00129 00130 oaTimeStamp getTimeStamp(oaWaferDataType type) const; 00131 oaTimeStamp getTimeStamp(oaAppObjectDef *def) const; 00132 oaChar getMode() const; 00133 oaUInt4 getRefCount() const; 00134 oaTime getCreateTime() const; 00135 oaTime getReadInTime() const; 00136 oaTime getLastSavedTime() const; 00137 oaUInt4 getDBUPerWU() const; 00138 oaWaferUnitsType getWaferUnits() const; 00139 oaWaferDesc *getWaferDesc() const; 00140 00141 void setDBUPerWU(oaUInt4 value); 00142 void setWaferUnits(oaWaferUnitsType value); 00143 00144 oaBoolean isModified() const; 00145 00146 oaBoolean isUndoEnabled() const; 00147 00148 void enableUndo(oaBoolean value = true); 00149 void undo(); 00150 void redo(); 00151 void setCp(); 00152 00153 oaUInt8 calcVMSize() const; 00154 00155 static oaUInt4 getRevNumber(); 00156 00157 void getFeatures(oaUInt4 &dataModelRev, 00158 oaFeatureArray &features); 00159 00160 oaCollection<oaReticle, oaWafer> getReticles() const; 00161 oaCollection<oaReticleRef, oaWafer> getReticleRefs() const; 00162 oaCollection<oaFrame, oaWafer> getFrames() const; 00163 oaCollection<oaImage, oaWafer> getImages() const; 00164 00165 static oaCollection<oaWafer, oaWafer> getOpenWafers(); 00166 00167 enum {dtIndex = oacWaferWaferDataType}; 00168 }; 00169 00170 00171 00172 // ***************************************************************************** 00173 // Wafer traits. 00174 // ***************************************************************************** 00175 template<> 00176 class oaTraits<oaWafer> { 00177 public: 00178 typedef oaWaferObject parentType; 00179 typedef oaWaferModTypeEnum modTypeType; 00180 enum {dbType = oacWaferDBType}; 00181 enum {domain = oacNoDomain}; 00182 enum {isMultiDomain = false}; 00183 enum {isConcrete = true}; 00184 enum {objectTypeEnumVal = oacWaferType}; 00185 enum {dtIndex = oacWaferWaferDataType}; 00186 enum {dataTypeEnumVal = oacWaferWaferDataType}; 00187 }; 00188 00189 00190 00191 END_OA_NAMESPACE 00192 00193 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.