00001 // ***************************************************************************** 00002 // ***************************************************************************** 00003 // oaBusNetBit.h 00004 // 00005 // This file contains the definition for the oaBusNetBit class. The oaBusNetBit 00006 // class implements a single bit of a busNet. BusNetBits are automatically 00007 // created and destroyed as busNets are created and destroyed. Editing is 00008 // restricted on implicitly created busNetBits because they are automatically 00009 // deleted when the last busNet containing the bit is deleted. 00010 // 00011 // BusNetBits may be explicitly created as well. Explicitly created busNetBits 00012 // may be modified like any other net object because they are not automatically 00013 // deleted even if they represent a bit of a busNet that is deleted. 00014 // 00015 // The implicit busNetBits of a busNet may be made explicit when the busNet 00016 // undergoes "scalarization". The scalarization of a busNet makes all 00017 // associated busNetBits explicit, that is, as if they had been created 00018 // explicitly. 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 2002-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(oaBusNetBit_P) 00039 #define oaBusNetBit_P 00040 00041 00042 00043 // ***************************************************************************** 00044 // Nested includes 00045 // ***************************************************************************** 00046 #include "oaBlock.h" 00047 00048 00049 00050 // ***************************************************************************** 00051 // Declare and define types in the OpenAccess namespace. 00052 // ***************************************************************************** 00053 BEGIN_OA_NAMESPACE 00054 00055 00056 00057 // ***************************************************************************** 00058 // oaBusNetBit 00059 // ***************************************************************************** 00060 class OA_DESIGN_DLL_API oaBusNetBit : public oaBitNet { 00061 public: 00062 static oaBusNetBit *create(oaBlock *block, 00063 const oaScalarName &baseName, 00064 oaUInt4 bitIndex, 00065 oaSigType sigType = oacSignalSigType, 00066 oaBoolean isGlobale = false, 00067 oaBlockDomainVisibility view = oacInheritFromTopBlock); 00068 static oaBusNetBit *create(oaBlock *block, 00069 const oaVectorBitName &bitName, 00070 oaSigType sigType = oacSignalSigType, 00071 oaBoolean isGlobale = false, 00072 oaBlockDomainVisibility view = oacInheritFromTopBlock); 00073 00074 00075 static oaBusNetBit *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 oaBusNetDef *getDef() const; 00084 oaUInt4 getBitIndex() const; 00085 00086 using oaNet::getName; 00087 void getName(oaVectorBitName &name) const; 00088 00089 void setName(const oaScalarName &baseName, 00090 oaUInt4 bitIndex); 00091 }; 00092 00093 00094 00095 // ***************************************************************************** 00096 // Design Traits. 00097 // ***************************************************************************** 00098 template<> 00099 class oaTraits<oaBusNetBit> { 00100 public: 00101 typedef oaNetModTypeEnum modTypeType; 00102 typedef oaBitNet parentType; 00103 enum {dtIndex = oacNetDataType}; 00104 enum {isMultiDomain = true}; 00105 enum {dataTypeEnumVal = oacNetDataType}; 00106 enum {domain = oacBlockDomain}; 00107 enum {dbType = oacDesignDBType}; 00108 enum {isConcrete = true}; 00109 enum {objectTypeEnumVal = oacBusNetBitType}; 00110 }; 00111 00112 00113 00114 END_OA_NAMESPACE 00115 00116 #endif
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.