oaOccAssignment.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaOccAssignment.h
00004 //
00005 // The oaOccAssignment class is the base class for occurrences of all types of
00006 // assignments. The oaOccAssignment object specifies the value to be interpreted
00007 // interpreted as the replacement (or "assignment") of the data specified in
00008 // an oaOccNetConnectDef or oaOccTermConnectDef object that may exist in the
00009 // occurrence view of the design hierarchy.
00010 //
00011 // The derived classes include:
00012 //
00013 //  oaOccAssignValue
00014 //      This class implements an assignment that specifies the name of a
00015 //      single-bit, explicit net to use as logical replacements for the nets
00016 //      associated with corresponding oaOccNetConnectDef or oaOccTermConnectDef
00017 //      objects found in the occurrence view of the design hierarchy.
00018 //
00019 //  oaOccAssignAssignment
00020 //      This class implements an assignment that has an assignmentDef as
00021 //      its value. 
00022 //
00023 // Applications knowing how to traverse the occurrence hierarchy can search for
00024 // an oaOccAssignment on an instance and use the defined value. If no assignment
00025 // is found, the default name specified on the assignmentDef on the
00026 // corresponding oaOccConnectDef object is to be used. If an oaOccAssignValue is
00027 // found, it specifies the name of the net to use with the oaOccConnectDef. If
00028 // an oaOccAssignAssignment is found, the traversal is to continue looking up
00029 // the occurrence hierarchy using the assignmentDef of the
00030 // oaOccAssignAssignment.
00031 //
00032 // *****************************************************************************
00033 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00034 // Integration Initiative, this material may not be copied, modified,
00035 // re-published, uploaded, executed, or distributed in any way, in any medium,
00036 // in whole or in part, without prior written permission from Cadence.
00037 //
00038 //                Copyright 2003-2005 Cadence Design Systems, Inc.
00039 //                           All Rights Reserved.
00040 //
00041 //  $Author: icftcm $
00042 //  $Revision: #1 $
00043 //  $Date: 2010/08/09 $
00044 //  $State: Exp $
00045 // *****************************************************************************
00046 // *****************************************************************************
00047 
00048 
00049 
00050 #if !defined(oaOccAssignment_P)
00051 #define oaOccAssignment_P
00052 
00053 
00054 
00055 // *****************************************************************************
00056 // Nested includes
00057 // *****************************************************************************
00058 #include "oaAssignmentDef.h"
00059 #include "oaOccInst.h"
00060 
00061 
00062 
00063 // *****************************************************************************
00064 // Declare and define types in the OpenAccess namespace.
00065 // *****************************************************************************
00066 BEGIN_OA_NAMESPACE
00067 
00068 
00069 
00070 // *****************************************************************************
00071 // oaOccAssignment
00072 // *****************************************************************************
00073 class OA_DESIGN_DLL_API oaOccAssignment : public oaOccObject {
00074 public:
00075     static oaOccAssignment  *find(const oaOccInst   *inst,
00076                                   const oaString    &name);
00077 
00078     void                    getName(oaString &name) const;
00079     oaOccInst               *getInst() const;
00080 
00081     enum {dtIndex = oacAssignmentDataType};
00082 };
00083 
00084 
00085 
00086 // *****************************************************************************
00087 // oaOccAssignValue
00088 // *****************************************************************************
00089 class OA_DESIGN_DLL_API oaOccAssignValue : public oaOccAssignment {
00090 public:
00091     void                    getValue(oaSimpleName &netName) const;
00092 };
00093 
00094 
00095 
00096 // *****************************************************************************
00097 // oaOccAssignAssignment
00098 // *****************************************************************************
00099 class OA_DESIGN_DLL_API oaOccAssignAssignment : public oaOccAssignment {
00100 public:
00101     void                    getAssignmentDef(oaAssignmentDef &aDef) const;
00102 };
00103 
00104 
00105 
00106 // *****************************************************************************
00107 // Design Traits.
00108 // *****************************************************************************
00109 template<>
00110 class oaTraits<oaOccAssignment> {
00111 public:
00112     typedef oaOccObject             parentType;
00113     typedef oaAssignmentModTypeEnum modTypeType;
00114     enum {domain = oacOccDomain};
00115     enum {isMultiDomain = true};
00116     enum {dbType = oacDesignDBType};
00117     enum {isConcrete = false};
00118     enum {dtIndex = oacAssignmentDataType};
00119     enum {dataTypeEnumVal = oacAssignmentDataType};
00120     enum {abstractTypeEnumVal = oacOccAssignmentType};
00121 };
00122 
00123 template<>
00124 class oaTraits<oaOccAssignValue> {
00125 public:
00126     typedef oaAssignmentModTypeEnum modTypeType;
00127     typedef oaOccAssignment         parentType;
00128     enum {dtIndex = oacAssignmentDataType};
00129     enum {dataTypeEnumVal = oacAssignmentDataType};
00130     enum {domain = oacOccDomain};
00131     enum {isMultiDomain = true};
00132     enum {dbType = oacDesignDBType};
00133     enum {isConcrete = true};
00134     enum {objectTypeEnumVal = oacOccAssignValueType};
00135 };
00136 
00137 template<>
00138 class oaTraits<oaOccAssignAssignment> {
00139 public:
00140     typedef oaAssignmentModTypeEnum modTypeType;
00141     typedef oaOccAssignment         parentType;
00142     enum {dtIndex = oacAssignmentDataType};
00143     enum {dataTypeEnumVal = oacAssignmentDataType};
00144     enum {domain = oacOccDomain};
00145     enum {isMultiDomain = true};
00146     enum {dbType = oacDesignDBType};
00147     enum {isConcrete = true};
00148     enum {objectTypeEnumVal = oacOccAssignAssignmentType};
00149 };
00150 
00151 
00152 
00153 END_OA_NAMESPACE
00154 
00155 #endif

Return to top of page