oaVectorInstBit.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaVectorInstBit.h
00004 //
00005 // This file contains the definition for the oaVectorInstBit class. The
00006 // oaVectorInstBit class implements a single bit of a vectorInst. VectorInstBits
00007 // are automatically created and destroyed as vectorInsts are created or
00008 // destroyed. Implicitly created vectorInstBits cannot be modified to insure
00009 // consistency with its defining vectorInst. Explicitly created vectorInstBits
00010 // define a unique bit of a vectorInst definition since the bits of a
00011 // 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(oaVectorInstBit_P)
00032 #define oaVectorInstBit_P
00033 
00034 
00035 
00036 // *****************************************************************************
00037 // Nested includes
00038 // *****************************************************************************
00039 #include "oaInst.h"
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Declare and define types in the OpenAccess namespace.
00045 // *****************************************************************************
00046 BEGIN_OA_NAMESPACE
00047 
00048 
00049 
00050 // *****************************************************************************
00051 // oaVectorInstBit
00052 // *****************************************************************************
00053 class OA_DESIGN_DLL_API oaVectorInstBit : public oaBitInst {
00054 public:
00055     static oaVectorInstBit  *create(oaBlock                 *block,
00056                                     oaDesign                *master,
00057                                     const oaScalarName      &baseName,
00058                                     oaUInt4                 bitIndex,
00059                                     const oaTransform       &xform,
00060                                     const oaParamArray      *params = NULL,
00061                                     oaBlockDomainVisibility view = oacInheritFromTopBlock,
00062                                     oaPlacementStatus       status = oacNonePlacementStatus);
00063     static oaVectorInstBit  *create(oaBlock                 *block,
00064                                     const oaScalarName      &libName,
00065                                     const oaScalarName      &cellName,
00066                                     const oaScalarName      &viewName,
00067                                     const oaScalarName      &baseName,
00068                                     oaUInt4                 bitIndex,
00069                                     const oaTransform       &xform,
00070                                     const oaParamArray      *params = NULL,
00071                                     oaBlockDomainVisibility view = oacInheritFromTopBlock,
00072                                     oaPlacementStatus       status = oacNonePlacementStatus);
00073 
00074 
00075     static oaVectorInstBit  *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     oaVectorInstDef         *getDef() const;
00084     oaUInt4                 getBitIndex() const;
00085 
00086     using                   oaInst::getName;
00087     void                    getName(oaVectorBitName &name) const;
00088 
00089     void                    setName(const oaScalarName  &baseName,
00090                                     oaUInt4             bitIndex);
00091 
00092     using                   oaInst::copy;
00093     oaVectorInstBit         *copy(const oaScalarName    &baseName,
00094                                   const oaTransform     &xform);
00095     oaVectorInstBit         *copy(const oaScalarName    &baseName,
00096                                   const oaTransform     &xform,
00097                                   oaBlock               *block);
00098 
00099 };
00100 
00101 
00102 
00103 // *****************************************************************************
00104 // Design Traits.
00105 // *****************************************************************************
00106 template<>
00107 class oaTraits<oaVectorInstBit> {
00108 public:
00109     typedef oaInstModTypeEnum   modTypeType;
00110     typedef oaBitInst           parentType;
00111     enum {isMultiDomain = true};
00112     enum {dtIndex = oacInstDataType};
00113     enum {dataTypeEnumVal = oacInstDataType};
00114     enum {domain = oacBlockDomain};
00115     enum {dbType = oacDesignDBType};
00116     enum {isConcrete = true};
00117     enum {objectTypeEnumVal = oacVectorInstBitType};
00118 };
00119 
00120 
00121 
00122 END_OA_NAMESPACE
00123 
00124 #endif

Return to top of page