oaBusTermBit.h

Go to the documentation of this file.
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

Return to top of page