oaAntennaData.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaAntennaData.h
00004 //
00005 // This file contains the definitions for the oaAntennaModel, oaAntennaArea,
00006 // oaAntennaAreaArray, and oaAntennaData classes.
00007 //
00008 // The oaAntennaModel class implements an enumerated type that describes the
00009 // type of antennaData that can be associated with a terminal. The antennaModel
00010 // reflects the antenna process model corresponding to the antenna data.
00011 //
00012 // The oaAntennaArea class implements an object for holding antennaArea data.
00013 // This data includes an area value in square database units and an optional
00014 // layer number. If the layer number is oacNullIndex, the area is interpreted
00015 // as applying to all layers.
00016 //
00017 // The oaAntennaAreaArray class implements an array of antennaArea values.
00018 //
00019 // The oaAntennaData class implements on object for holding antenna data for
00020 // a particular antennaModel.
00021 //
00022 // *****************************************************************************
00023 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00024 // Integration Initiative, this material may not be copied, modified,
00025 // re-published, uploaded, executed, or distributed in any way, in any medium,
00026 // in whole or in part, without prior written permission from Cadence.
00027 //
00028 //                Copyright 2002-2008 Cadence Design Systems, Inc.
00029 //                           All Rights Reserved.
00030 //
00031 //  $Author: icftcm $
00032 //  $Revision: #1 $
00033 //  $Date: 2010/08/09 $
00034 //  $State: Exp $
00035 // *****************************************************************************
00036 // *****************************************************************************
00037 
00038 
00039 
00040 #if !defined(oaAntennaData_P)
00041 #define oaAntennaData_P
00042 
00043 
00044 
00045 // *****************************************************************************
00046 // Nested includes
00047 // *****************************************************************************
00048 #include "oaTech.h"
00049 #include "oaDesignDBTypes.h"
00050 
00051 
00052 
00053 // *****************************************************************************
00054 // Declare and define types in the OpenAccess namespace.
00055 // *****************************************************************************
00056 BEGIN_OA_NAMESPACE
00057 
00058 
00059 
00060 // *****************************************************************************
00061 // oaAntennaArea
00062 // *****************************************************************************
00063 class OA_DESIGN_DLL_API oaAntennaArea {
00064 public:
00065                             oaAntennaArea(oaUInt8       areaIn = 0u,
00066                                           oaLayerNum    layerNumIn = oacAnyLayerNum);
00067 
00068     oaUInt8                 &area();
00069     oaLayerNum              &layerNum();
00070 
00071     oaUInt8                 area() const;
00072     oaLayerNum              layerNum() const;
00073 
00074     oaBoolean               operator==(const oaAntennaArea &value) const;
00075     oaBoolean               operator!=(const oaAntennaArea &value) const;
00076 
00077 private:
00078     oaUInt8                 areaVal;
00079     oaLayerNum              layerNumVal;
00080 };
00081 
00082 
00083 
00084 
00085 // *****************************************************************************
00086 // oaAntennaAreaArray
00087 // *****************************************************************************
00088 class OA_DESIGN_DLL_API oaAntennaAreaArray : public oaArray<oaAntennaArea> {
00089 public:
00090                             oaAntennaAreaArray(oaUInt4 sizeIn = 0);
00091                             oaAntennaAreaArray(const oaAntennaAreaArray &aIn);
00092 
00093     void                    compress();
00094 
00095     using                   oaArray<oaAntennaArea>::sort;
00096     void                    sort();
00097 };
00098 
00099 
00100 
00101 // *****************************************************************************
00102 // oaAntennaData
00103 // *****************************************************************************
00104 class OA_DESIGN_DLL_API oaAntennaData {
00105 public:
00106                                 oaAntennaData(const oaAntennaModel &processIn = oacDefaultAntennaModel);
00107                                 oaAntennaData(const oaAntennaData &dataIn);
00108                                 ~oaAntennaData();
00109 
00110     oaAntennaData               &operator=(const oaAntennaData &dataIn);
00111 
00112     const oaAntennaModel        &getModel() const;
00113     void                        setModel(const oaAntennaModel &modelIn);
00114 
00115     const oaAntennaAreaArray    &gate() const;
00116     const oaAntennaAreaArray    &diff() const;
00117     const oaAntennaAreaArray    &partialMetal() const;
00118     const oaAntennaAreaArray    &partialMetalSide() const;
00119     const oaAntennaAreaArray    &partialCut() const;
00120     const oaAntennaAreaArray    &maxCAR() const;
00121     const oaAntennaAreaArray    &maxSideCAR() const;
00122     const oaAntennaAreaArray    &maxCutCAR() const;
00123 
00124 #if !defined(OA_DEPRECATED)
00125     oaAntennaAreaArray          &gate();
00126     oaAntennaAreaArray          &diff();
00127     oaAntennaAreaArray          &partialMetal();
00128     oaAntennaAreaArray          &partialMetalSide();
00129     oaAntennaAreaArray          &partialCut();
00130     oaAntennaAreaArray          &maxCAR();
00131     oaAntennaAreaArray          &maxSideCAR();
00132     oaAntennaAreaArray          &maxCutCAR();
00133 #endif
00134 
00135     void                        setGate(const oaAntennaAreaArray &gate);
00136     void                        setDiff(const oaAntennaAreaArray &diff);
00137     void                        setPartialMetal(const oaAntennaAreaArray &partialMetal);
00138     void                        setPartialMetalSide(const oaAntennaAreaArray &partialMetalSide);
00139     void                        setPartialCut(const oaAntennaAreaArray &partialCut);
00140     void                        setMaxCAR(const oaAntennaAreaArray &maxCAR);
00141     void                        setMaxSideCAR(const oaAntennaAreaArray &maxSideCAR);
00142     void                        setMaxCutCAR(const oaAntennaAreaArray &maxCutCAR);
00143 
00144 private:
00145     oaAntennaModel              model;
00146     oaAntennaAreaArray          gateVal;
00147     oaAntennaAreaArray          diffVal;
00148     oaAntennaAreaArray          partialMetalVal;
00149     oaAntennaAreaArray          partialMetalSideVal;
00150     oaAntennaAreaArray          partialCutVal;
00151     oaAntennaAreaArray          maxCARVal;
00152     oaAntennaAreaArray          maxSideCARVal;
00153     oaAntennaAreaArray          maxCutCARVal;
00154 };
00155 
00156 
00157 
00158 END_OA_NAMESPACE
00159 
00160 #endif

Return to top of page