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
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.