oaFig.h

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

Return to top of page