00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaBusTermBit.h 00004 // 00005 // This file contains the definition for the oaBusTermBit class and its public 00006 // supporting classes. The oaBusTermBit class implements a single bit of a 00007 // busTerm. BusTermBits are automatically created and destroyed as busTerms are 00008 // created and destroyed. Editing is restricted on implicitly created 00009 // busTermBits because they are automatically deleted when the last busTerm 00010 // containing the bit is deleted. 00011 // 00012 // BusTermBits may be explicitly created as well. Explicitly created 00013 // busTermBits may be modified like other terminal objects because they are not 00014 // automatically deleted even if they represent a bit of a busTerm that is 00015 // deleted. 00016 // 00017 // The implicit busTermBits of a busTerm may be made explicit when the busTerm 00018 // undergoes "scalarization". The scalarization of a busTerm makes all 00019 // associated busTermBits explicit, that is, as if they had been created 00020 // explicitly. 00021 // 00022 // ***************************************************************************** 00023 // Except as specified in the OpenAccess terms of use of Cadence or Silicon 00024 // Integration Initiative, this material may not be copied, modified, 00025 // re-published, uploaded, executed, or distributed in any way, in any medium, 00026 // in whole or in part, without prior written permission from Cadence. 00027 // 00028 // Copyright 2002-2005 Cadence Design Systems, Inc. 00029 // All Rights Reserved. 00030 // 00031 // $Author: icftcm $ 00032 // $Revision: #1 $ 00033 // $Date: 2010/08/09 $ 00034 // $State: Exp $ 00035 // ***************************************************************************** 00036 // ***************************************************************************** 00037 00038 00039 00040 #if !defined(oaBusTermBit_P) 00041 #define oaBusTermBit_P 00042 00043 00044 00045 // ***************************************************************************** 00046 // Nested includes 00047 // ***************************************************************************** 00048 #include "oaBlock.h" 00049 00050 00051 00052 // ***************************************************************************** 00053 // Declare and define types in the OpenAccess namespace. 00054 // ***************************************************************************** 00055 BEGIN_OA_NAMESPACE 00056 00057 00058 00059 // ***************************************************************************** 00060 // oaBusTermBit 00061 // ***************************************************************************** 00062 class OA_DESIGN_DLL_API oaBusTermBit : public oaBitTerm { 00063 public: 00064 static oaBusTermBit *create(oaBitNet *net, 00065 const oaScalarName &baseName, 00066 oaUInt4 bitIndex, 00067 oaTermType termType = oacInputOutputTermType, 00068 oaBlockDomainVisibility view = oacInheritFromTopBlock); 00069 static oaBusTermBit *create(oaBitNet *net, 00070 const oaVectorBitName &bitName, 00071 oaTermType termType = oacInputOutputTermType, 00072 oaBlockDomainVisibility view = oacInheritFromTopBlock); 00073 00074 static oaBusTermBit *find(const oaBlock *block, 00075 const oaScalarName &baseName, 00076 oaUInt4 bitIndex); 00077 00078 static oaBoolean isValidName(const oaBitNet *net, 00079 const oaScalarName &baseName, 00080 oaUInt4 bitIndex); 00081 00082 oaBusTermDef *getDef() const; 00083 oaUInt4 getBitIndex() const; 00084 00085 using oaTerm::getName; 00086 void getName(oaVectorBitName &name) const; 00087 00088 void setName(const oaScalarName &baseName, 00089 oaUInt4 bitIndex); 00090 }; 00091 00092 00093 00094 // ***************************************************************************** 00095 // Design Traits. 00096 // ***************************************************************************** 00097 template<> 00098 class oaTraits<oaBusTermBit> { 00099 public: 00100 typedef oaTermModTypeEnum modTypeType; 00101 typedef oaBitTerm parentType; 00102 enum {isMultiDomain = true}; 00103 enum {dtIndex = oacTermDataType}; 00104 enum {dataTypeEnumVal = oacTermDataType}; 00105 enum {domain = oacBlockDomain}; 00106 enum {dbType = oacDesignDBType}; 00107 enum {isConcrete = true}; 00108 enum {objectTypeEnumVal = oacBusTermBitType}; 00109 }; 00110 00111 00112 00113 END_OA_NAMESPACE 00114 00115 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.