oaWafer.h

Go to the documentation of this file.
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

Return to top of page