oaBlock.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaBlock.h
00004 //
00005 // This file contains the definition for the oaBlock class and its public
00006 // supporting classes. oaBlock is the main object for storing information about
00007 // a level of physical hierarchy in a design. It implements methods for
00008 // accessing all physical information in a design.
00009 //
00010 // The public supporting classes included here are:
00011 //
00012 //  oaSymmetry
00013 //      The oaSymmetry class encapsulates the values that describe the
00014 //      different symmetries that an oaBlock can have. 
00015 //
00016 //  oaBlockDomainVisibility
00017 //      The oaBlockDomainVisibility class encapsulates the values that
00018 //      describe the visibility of block objects in other EMH domains.
00019 //
00020 // *****************************************************************************
00021 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00022 // Integration Initiative, this material may not be copied, modified,
00023 // re-published, uploaded, executed, or distributed in any way, in any medium,
00024 // in whole or in part, without prior written permission from Cadence.
00025 //
00026 //                Copyright 2003-2005 Cadence Design Systems, Inc.
00027 //                           All Rights Reserved.
00028 //
00029 //  $Author: icftcm $
00030 //  $Revision: #1 $
00031 //  $Date: 2010/08/09 $
00032 //  $State: Exp $
00033 // *****************************************************************************
00034 // *****************************************************************************
00035 
00036 
00037 
00038 #if !defined(oaBlock_P)
00039 #define oaBlock_P
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Nested includes
00045 // *****************************************************************************
00046 #include "oaBox.h"
00047 #include "oaSiteDef.h"
00048 #include "oaTerm.h"
00049 #include "oaDesign.h"
00050 
00051 
00052 
00053 // *****************************************************************************
00054 // Declare and define types in the OpenAccess namespace.
00055 // *****************************************************************************
00056 BEGIN_OA_NAMESPACE
00057 
00058 
00059 
00060 // *****************************************************************************
00061 // oaSymmetryEnum
00062 // *****************************************************************************
00063 #define oavNumSymmetryTypes 5
00064 
00065 enum oaSymmetryEnum {
00066     oacNoSymmetry   = 0,
00067     oacXSymmetry    = 1,
00068     oacYSymmetry    = 2,
00069     oacXYSymmetry   = 3,
00070     oacAnySymmetry  = 4
00071 };
00072 
00073 
00074 
00075 // *****************************************************************************
00076 // oaSymmetry
00077 // *****************************************************************************
00078 class OA_DESIGN_DLL_API oaSymmetry {
00079 public:
00080                             oaSymmetry(oaSymmetryEnum valueIn);
00081                             oaSymmetry(const oaString &name);
00082                             ~oaSymmetry();
00083 
00084     const oaString          &getName() const;
00085 
00086                             operator                oaSymmetryEnum() const;
00087 
00088 private:
00089     oaSymmetryEnum          value;
00090 
00091     static const oaString   names[];
00092 };
00093 
00094 
00095 
00096 // *****************************************************************************
00097 // oaBlock
00098 // *****************************************************************************
00099 class OA_DESIGN_DLL_API oaBlock : public oaBlockObject {
00100 public:
00101     static oaBlock                          *create(const oaDesign  *design,
00102                                                     oaBoolean       visibleToModule = true);
00103 
00104     void                                    destroy();
00105 
00106     oaModule                                *getModule() const;
00107     oaUInt4                                 getDBUPerUU() const;
00108     oaUserUnitsType                         getUserUnits() const;
00109     void                                    getBBox(oaBox &bBox) const;
00110     void                                    getEEQMaster(oaString &master) const;
00111     void                                    getSitePattern(oaSitePattern &pattern) const;
00112     oaSymmetry                              getSymmetry() const;
00113     void                                    getTermsByPosition(oaTermArray &array) const;
00114 
00115     oaBoolean                               hasConnectivity() const;
00116     oaBoolean                               hasMultiBitNet() const;
00117     oaBoolean                               hasMultiBitTerm() const;
00118     oaBoolean                               hasMultiTermNet() const;
00119     oaBoolean                               hasGlobalNet() const;
00120     oaBoolean                               isVisibleToModule() const;
00121 
00122     void                                    setSymmetry(oaSymmetry val);
00123     void                                    setEEQMaster(const oaString &master);
00124     void                                    setSitePattern(const oaSitePattern &pattern);
00125     void                                    setVisibleToModule();
00126 
00127     oaBoolean                               hasDefaultConstraintGroup() const;
00128     oaConstraintGroup                       *getDefaultConstraintGroup() const;
00129 
00130     void                                    initForRegionQuery();
00131 
00132     oaCollection<oaAssignment, oaBlock>     getAssignments() const;
00133     oaCollection<oaBlockage, oaBlock>       getBlockages() const;
00134     oaCollection<oaAreaBoundary, oaBlock>   getBoundaries() const;
00135     oaCollection<oaBusNetDef, oaBlock>      getBusNetDefs() const;
00136     oaCollection<oaBusTermDef, oaBlock>     getBusTermDefs() const;
00137     oaCollection<oaConnectDef, oaBlock>     getConnectDefs() const;
00138     oaCollection<oaCluster, oaBlock>        getClusters() const;
00139     oaCollection<oaFigGroup, oaBlock>       getFigGroups() const;
00140     oaCollection<oaGCellPattern, oaBlock>   getGCellPatterns() const;
00141     oaCollection<oaGuide, oaBlock>          getGuides() const;
00142     oaCollection<oaInstHeader, oaBlock>     getInstHeaders() const;
00143     oaCollection<oaInst, oaBlock>           getInsts(oaUInt4 filterFlags = oacInstIterNotImplicit) const;
00144     oaCollection<oaInstTerm, oaBlock>       getInstTerms(oaUInt4 filterFlags = oacInstTermIterNotImplicit) const;
00145     oaCollection<oaLPPHeader, oaBlock>      getLPPHeaders() const;
00146     oaCollection<oaLayerHeader, oaBlock>    getLayerHeaders() const;
00147     oaCollection<oaMarker, oaBlock>         getMarkers() const;
00148     oaCollection<oaPin, oaBlock>            getPins() const;
00149     oaCollection<oaNet, oaBlock>            getNets(oaUInt4 filterFlags = oacNetIterAll | oacNetIterNotImplicit) const;
00150     oaCollection<oaRoute, oaBlock>          getRoutes() const;
00151     oaCollection<oaRowHeader, oaBlock>      getRowHeaders() const;
00152     oaCollection<oaRow, oaBlock>            getRows() const;
00153     oaCollection<oaScanChain, oaBlock>      getScanChains() const;
00154     oaCollection<oaShape, oaBlock>          getShapes() const;
00155     oaCollection<oaSteiner, oaBlock>        getSteiners() const;
00156     oaCollection<oaTerm, oaBlock>           getTerms(oaUInt4 filterFlags = oacTermIterAllNotHidden | oacTermIterNotImplicit) const;
00157     oaCollection<oaTrackPattern, oaBlock>   getTrackPatterns() const;
00158     oaCollection<oaVectorInstDef, oaBlock>  getVectorInstDefs() const;
00159     oaCollection<oaVia, oaBlock>            getVias() const;
00160     oaCollection<oaViaHeader, oaBlock>      getViaHeaders() const;
00161 
00162     enum {dtIndex = oacBlockDataType};
00163 };
00164 
00165 
00166 
00167 // *****************************************************************************
00168 // Design Traits.
00169 // *****************************************************************************
00170 template<>
00171 class oaTraits<oaBlock> {
00172 public:
00173     typedef oaBlockObject       parentType;
00174     typedef oaBlockModTypeEnum  modTypeType;
00175     enum {domain = oacBlockDomain};
00176     enum {dbType = oacDesignDBType};
00177     enum {isMultiDomain = false};
00178     enum {dtIndex = oacBlockDataType};
00179     enum {isConcrete = true};
00180     enum {objectTypeEnumVal = oacBlockType};
00181     enum {dataTypeEnumVal = oacBlockDataType};
00182 };
00183 
00184 
00185 
00186 END_OA_NAMESPACE
00187 
00188 #endif

Return to top of page