00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaVectorInstBit.h 00004 // 00005 // This file contains the definition for the oaVectorInstBit class. The 00006 // oaVectorInstBit class implements a single bit of a vectorInst. VectorInstBits 00007 // are automatically created and destroyed as vectorInsts are created or 00008 // destroyed. Implicitly created vectorInstBits cannot be modified to insure 00009 // consistency with its defining vectorInst. Explicitly created vectorInstBits 00010 // define a unique bit of a vectorInst definition since the bits of a 00011 // vectorInst are not allowed to overlap with other vectorInsts. 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 2004-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(oaVectorInstBit_P) 00032 #define oaVectorInstBit_P 00033 00034 00035 00036 // ***************************************************************************** 00037 // Nested includes 00038 // ***************************************************************************** 00039 #include "oaInst.h" 00040 00041 00042 00043 // ***************************************************************************** 00044 // Declare and define types in the OpenAccess namespace. 00045 // ***************************************************************************** 00046 BEGIN_OA_NAMESPACE 00047 00048 00049 00050 // ***************************************************************************** 00051 // oaVectorInstBit 00052 // ***************************************************************************** 00053 class OA_DESIGN_DLL_API oaVectorInstBit : public oaBitInst { 00054 public: 00055 static oaVectorInstBit *create(oaBlock *block, 00056 oaDesign *master, 00057 const oaScalarName &baseName, 00058 oaUInt4 bitIndex, 00059 const oaTransform &xform, 00060 const oaParamArray *params = NULL, 00061 oaBlockDomainVisibility view = oacInheritFromTopBlock, 00062 oaPlacementStatus status = oacNonePlacementStatus); 00063 static oaVectorInstBit *create(oaBlock *block, 00064 const oaScalarName &libName, 00065 const oaScalarName &cellName, 00066 const oaScalarName &viewName, 00067 const oaScalarName &baseName, 00068 oaUInt4 bitIndex, 00069 const oaTransform &xform, 00070 const oaParamArray *params = NULL, 00071 oaBlockDomainVisibility view = oacInheritFromTopBlock, 00072 oaPlacementStatus status = oacNonePlacementStatus); 00073 00074 00075 static oaVectorInstBit *find(const oaBlock *block, 00076 const oaScalarName &baseName, 00077 oaUInt4 bitIndex); 00078 00079 static oaBoolean isValidName(const oaBlock *block, 00080 const oaScalarName &baseName, 00081 oaUInt4 bitIndex); 00082 00083 oaVectorInstDef *getDef() const; 00084 oaUInt4 getBitIndex() const; 00085 00086 using oaInst::getName; 00087 void getName(oaVectorBitName &name) const; 00088 00089 void setName(const oaScalarName &baseName, 00090 oaUInt4 bitIndex); 00091 00092 using oaInst::copy; 00093 oaVectorInstBit *copy(const oaScalarName &baseName, 00094 const oaTransform &xform); 00095 oaVectorInstBit *copy(const oaScalarName &baseName, 00096 const oaTransform &xform, 00097 oaBlock *block); 00098 00099 }; 00100 00101 00102 00103 // ***************************************************************************** 00104 // Design Traits. 00105 // ***************************************************************************** 00106 template<> 00107 class oaTraits<oaVectorInstBit> { 00108 public: 00109 typedef oaInstModTypeEnum modTypeType; 00110 typedef oaBitInst parentType; 00111 enum {isMultiDomain = true}; 00112 enum {dtIndex = oacInstDataType}; 00113 enum {dataTypeEnumVal = oacInstDataType}; 00114 enum {domain = oacBlockDomain}; 00115 enum {dbType = oacDesignDBType}; 00116 enum {isConcrete = true}; 00117 enum {objectTypeEnumVal = oacVectorInstBitType}; 00118 }; 00119 00120 00121 00122 END_OA_NAMESPACE 00123 00124 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.