oaRow.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaRow.h
00004 //
00005 // This file contains the definition for the oaRow class. The oaRow class
00006 // implements a row of sites at which a block may be placed. A row 
00007 // represents a potential location for placement of standard cells, macros, or
00008 // devices. A row is defined as an area associated with a oaSiteDef. The
00009 // oaSiteDef has information allowing for the  specification of the placeable
00010 // objects within a row. A row is a repetition of a site element in a given 
00011 // direction (horizontal or vertical).
00012 //
00013 // *****************************************************************************
00014 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00015 // Integration Initiative, this material may not be copied, modified,
00016 // re-published, uploaded, executed, or distributed in any way, in any medium,
00017 // in whole or in part, without prior written permission from Cadence.
00018 //
00019 //                Copyright 2002-2005 Cadence Design Systems, Inc.
00020 //                           All Rights Reserved.
00021 //
00022 //  $Author: icftcm $
00023 //  $Revision: #1 $
00024 //  $Date: 2010/08/09 $
00025 //  $State: Exp $
00026 // *****************************************************************************
00027 // *****************************************************************************
00028 
00029 
00030 
00031 #if !defined(oaRow_P)
00032 #define oaRow_P
00033 
00034 
00035 
00036 // *****************************************************************************
00037 // Nested includes
00038 // *****************************************************************************
00039 #include "oaFig.h"
00040 #include "oaRowHeader.h"
00041 
00042 
00043 
00044 // *****************************************************************************
00045 // Declare and define types in the OpenAccess namespace.
00046 // *****************************************************************************
00047 BEGIN_OA_NAMESPACE
00048 
00049 
00050 
00051 // *****************************************************************************
00052 // oaRow
00053 // *****************************************************************************
00054 class OA_DESIGN_DLL_API oaRow : public oaFig {
00055 public:
00056     static oaRow            *create(oaBlock         *block,
00057                                     oaSiteDef       *siteDef,
00058                                     const oaString  &name,
00059                                     const oaPoint   &origin,
00060                                     const oaOrient  &rowOrient,
00061                                     oaUInt4         numSites,
00062                                     const oaOrient  &siteOrient,
00063                                     oaDist          siteSpacing = 0);
00064 
00065     static oaRow            *create(oaBlock         *block,
00066                                     oaSiteDef       *siteDef,
00067                                     const oaPoint   &origin,
00068                                     const oaOrient  &rowOrient,
00069                                     oaUInt4         numSites,
00070                                     const oaOrient  &siteOrient,
00071                                     oaDist          siteSpacing = 0);
00072 
00073     static oaRow            *find(const oaBlock     *block,
00074                                   const oaString    &name);
00075 
00076     oaRowHeader             *getHeader() const;
00077     oaSiteDef               *getSiteDef() const;
00078     void                    getSiteDefName(oaString &name) const;
00079     void                    getName(oaString &name) const;
00080     void                    getOrigin(oaPoint &origin) const;
00081     oaOrient                getOrient() const;
00082     oaUInt4                 getNumSites() const;
00083     oaOrient                getSiteOrient() const;
00084     oaDist                  getSiteSpacing() const;
00085     oaBoolean               isBound() const;
00086 
00087     void                    setSiteDef(const oaSiteDef *siteDef);
00088     void                    setName(const oaString &name);
00089     void                    setOrigin(const oaPoint &origin);
00090     void                    setOrient(const oaOrient orient);
00091     void                    setNumSites(oaUInt4 numSites);
00092     void                    setSiteOrient(const oaOrient &siteOrient);
00093     void                    setSiteSpacing(oaDist siteSpacing);
00094 
00095     enum {dtIndex = oacRowDataType};
00096 };
00097 
00098 
00099 
00100 // *****************************************************************************
00101 // Design Traits.
00102 // *****************************************************************************
00103 template<>
00104 class oaTraits<oaRow> {
00105 public:
00106     typedef oaFig               parentType;
00107     typedef oaRowModTypeEnum    modTypeType;
00108     enum {domain = oacBlockDomain};
00109     enum {dbType = oacDesignDBType};
00110     enum {isMultiDomain = false};
00111     enum {dtIndex = oacRowDataType};
00112     enum {tblStoresBBox = 0};
00113     enum {isConcrete = true};
00114     enum {objectTypeEnumVal = oacRowType};
00115     enum {dataTypeEnumVal = oacRowDataType};
00116 };
00117 
00118 
00119 
00120 END_OA_NAMESPACE
00121 
00122 #endif

Return to top of page