oaModVectorInstBit.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaModVectorInstBit.h
00004 //
00005 // This file contains the definition for the oaModVectorInstBit class. The
00006 // oaModVectorInstBit class implements a single bit of a vectorInst in a module.
00007 // VectorInstBits are automatically created and destroyed as vectorInsts are
00008 // created or destroyed. Implicitly created vectorInstBits cannot be modified
00009 // to insure consistency with its defining vectorInst. Explicitly created
00010 // vectorInstBits define a unique bit of a vectorInst definition since the bits
00011 // of a 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(oaModVectorInstBit_P)
00032 #define oaModVectorInstBit_P
00033 
00034 
00035 
00036 // *****************************************************************************
00037 // Nested includes
00038 // *****************************************************************************
00039 #include "oaModDesignInst.h"
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Declare and define types in the OpenAccess namespace.
00045 // *****************************************************************************
00046 BEGIN_OA_NAMESPACE
00047 
00048 
00049 
00050 // *****************************************************************************
00051 // oaModVectorInstBit
00052 // *****************************************************************************
00053 class OA_DESIGN_DLL_API oaModVectorInstBit : public oaModBitInst {
00054 public:
00055     static oaModVectorInstBit   *create(oaModule            *module,
00056                                         oaDesign            *master,
00057                                         const oaScalarName  &baseName,
00058                                         oaUInt4             bitIndex,
00059                                         const oaParamArray  *params = NULL);
00060     static oaModVectorInstBit   *create(oaModule            *module,
00061                                         const oaScalarName  &libName,
00062                                         const oaScalarName  &cellName,
00063                                         const oaScalarName  &viewName,
00064                                         const oaScalarName  &baseName,
00065                                         oaUInt4             bitIndex,
00066                                         const oaParamArray  *params = NULL);
00067 
00068     static oaModVectorInstBit   *find(const oaModule        *module,
00069                                       const oaScalarName    &baseName,
00070                                       oaUInt4               bitIndex);
00071 
00072     static oaBoolean            isValidName(const oaModule      *module,
00073                                             const oaScalarName  &baseName,
00074                                             oaUInt4             bitIndex);
00075 
00076     oaModVectorInstDef          *getDef() const;
00077     oaUInt4                     getBitIndex() const;
00078 
00079     using                   oaModInst::getName;
00080     void                        getName(oaVectorBitName &name) const;
00081 
00082     void                        setName(const oaScalarName  &baseName,
00083                                         oaUInt4             bitIndex);
00084 };
00085 
00086 
00087 
00088 // *****************************************************************************
00089 // Design Traits.
00090 // *****************************************************************************
00091 template<>
00092 class oaTraits<oaModVectorInstBit> {
00093 public:
00094     typedef oaInstModTypeEnum   modTypeType;
00095     typedef oaModBitInst        parentType;
00096     enum {dtIndex = oacInstDataType};
00097     enum {dataTypeEnumVal = oacInstDataType};
00098     enum {domain = oacModDomain};
00099     enum {isMultiDomain = true};
00100     enum {dbType = oacDesignDBType};
00101     enum {isConcrete = true};
00102     enum {objectTypeEnumVal = oacModVectorInstBitType};
00103 };
00104 
00105 
00106 
00107 END_OA_NAMESPACE
00108 
00109 #endif

Return to top of page