oaModModuleVectorInstBit.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaModModuleVectorInstBit.h
00004 //
00005 // This file contains the definition for the oaModModuleVectorInstBit class. The
00006 // oaModModuleVectorInstBit class implements a single bit of a module vectorInst
00007 // in a module. VectorInstBits are automatically created and destroyed as
00008 // vectorInsts are created or destroyed. Implicitly created vectorInstBits
00009 // cannot be modified to insure consistency with its defining vectorInst.
00010 // Explicitly created vectorInstBits define a unique bit of a vectorInst
00011 // definition since the bits of a vectorInst are not allowed to overlap with
00012 // other vectorInsts.
00013 //
00014 // *****************************************************************************
00015 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00016 // Integration Initiative, this material may not be copied, modified,
00017 // re-published, uploaded, executed, or distributed in any way, in any medium,
00018 // in whole or in part, without prior written permission from Cadence.
00019 //
00020 //                Copyright 2004-2005 Cadence Design Systems, Inc.
00021 //                           All Rights Reserved.
00022 //
00023 //  $Author: icftcm $
00024 //  $Revision: #1 $
00025 //  $Date: 2010/08/09 $
00026 //  $State: Exp $
00027 // *****************************************************************************
00028 // *****************************************************************************
00029 
00030 
00031 
00032 #if !defined(oaModModuleVectorInstBit_P)
00033 #define oaModModuleVectorInstBit_P
00034 
00035 
00036 
00037 // *****************************************************************************
00038 // Nested includes
00039 // *****************************************************************************
00040 #include "oaModVectorInstDef.h"
00041 #include "oaModModuleInst.h"
00042 
00043 
00044 
00045 // *****************************************************************************
00046 // Declare and define types in the OpenAccess namespace.
00047 // *****************************************************************************
00048 BEGIN_OA_NAMESPACE
00049 
00050 
00051 
00052 // *****************************************************************************
00053 // oaModModuleVectorInstBit
00054 // *****************************************************************************
00055 class OA_DESIGN_DLL_API oaModModuleVectorInstBit : public oaModModuleBitInst {
00056 public:
00057     static oaModModuleVectorInstBit *create(oaModule            *module,
00058                                             oaModule            *master,
00059                                             const oaScalarName  &baseName,
00060                                             oaUInt4             bitIndex);
00061 
00062     static oaModModuleVectorInstBit *create(oaModule            *module,
00063                                             const oaScalarName  &masterName,
00064                                             const oaScalarName  &baseName,
00065                                             oaUInt4             bitIndex);
00066 
00067     static oaModModuleVectorInstBit *find(const oaModule        *module,
00068                                           const oaScalarName    &baseName,
00069                                           oaUInt4               bitIndex);
00070 
00071     static oaBoolean                isValidName(const oaModule      *module,
00072                                                 const oaScalarName  &baseName,
00073                                                 oaUInt4             bitIndex);
00074 
00075     oaModVectorInstDef              *getDef() const;
00076     oaUInt4                         getBitIndex() const;
00077 
00078     using                   oaModInst::getName;
00079     void                            getName(oaVectorBitName &name) const;
00080 
00081     void                            setName(const oaScalarName  &baseName,
00082                                             oaUInt4             bitIndex);
00083 };
00084 
00085 
00086 
00087 // *****************************************************************************
00088 // Design Traits.
00089 // *****************************************************************************
00090 template<>
00091 class oaTraits<oaModModuleVectorInstBit> {
00092 public:
00093     typedef oaInstModTypeEnum   modTypeType;
00094     typedef oaModModuleBitInst  parentType;
00095     enum {dtIndex = oacInstDataType};
00096     enum {dataTypeEnumVal = oacInstDataType};
00097     enum {domain = oacModDomain};
00098     enum {isMultiDomain = true};
00099     enum {dbType = oacDesignDBType};
00100     enum {isConcrete = true};
00101     enum {objectTypeEnumVal = oacModModuleVectorInstBitType};
00102 };
00103 
00104 
00105 
00106 END_OA_NAMESPACE
00107 
00108 #endif

Return to top of page