oaConnectDef.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaConnectDef.h
00004 //
00005 // This file contains the definition of the oaConnectDef class, its derived
00006 // classes, and its public supporting classes. The oaConnectDef class is an
00007 // abstract base for all types of connection definitions. A connection
00008 // definition associates an assignment definition (an oaAssignmentDef) with
00009 // either a net or a terminal.
00010 //
00011 // The oaConnectDef classes together with the oaAssignment classes provide users
00012 // a way to override the name of the net used in the associated connection.
00013 //
00014 // The derived classes of oaConnectDef include:
00015 //
00016 //  oaNetConnectDef
00017 //      This class implements a connectDef that associates an oaAssignmentDef
00018 //      with a single-bit net. Applications traversing connectivity search up
00019 //      the design hierarchy for an oaAssignment that has the lookup name
00020 //      specified in the assignment definition. If an oaAssignment is found,
00021 //      it specifies the net name to use instead of the name the corresponding
00022 //      net. If not found, the default net name specified in the assignment
00023 //      definition is used.
00024 //
00025 //  oaTermConnectDef
00026 //      This class implements a connectDef that associates an oaAssignmentDef
00027 //      with a single-bit terminal. Applications traversing connectivity search
00028 //      up the design hierarchy for an oaAssignment that has the lookup name
00029 //      specified in the assignment definition. If an oaAssignment is found,
00030 //      it specifies the net name to use to externally connect the corresponding
00031 //      terminal to. If not found, the default net name specified in the
00032 //      assignment definition is used.
00033 //
00034 // *****************************************************************************
00035 // Except as specified in the OpenAccess terms of use of Cadence or Silicon
00036 // Integration Initiative, this material may not be copied, modified,
00037 // re-published, uploaded, executed, or distributed in any way, in any medium,
00038 // in whole or in part, without prior written permission from Cadence.
00039 //
00040 //                Copyright 2003-2005 Cadence Design Systems, Inc.
00041 //                           All Rights Reserved.
00042 //
00043 //  $Author: icftcm $
00044 //  $Revision: #1 $
00045 //  $Date: 2010/08/09 $
00046 //  $State: Exp $
00047 // *****************************************************************************
00048 // *****************************************************************************
00049 
00050 
00051 
00052 #if !defined(oaConnectDef_P)
00053 #define oaConnectDef_P
00054 
00055 
00056 
00057 // *****************************************************************************
00058 // Nested includes
00059 // *****************************************************************************
00060 #include "oaTerm.h"
00061 #include "oaAssignmentDef.h"
00062 
00063 
00064 
00065 // *****************************************************************************
00066 // Declare and define types in the OpenAccess namespace.
00067 // *****************************************************************************
00068 BEGIN_OA_NAMESPACE
00069 
00070 
00071 
00072 // *****************************************************************************
00073 // oaConnectDef
00074 // *****************************************************************************
00075 class OA_DESIGN_DLL_API oaConnectDef : public oaBlockObject {
00076 public:
00077     void                    destroy();
00078 
00079     void                    getAssignmentDef(oaAssignmentDef &assignmentDef) const;
00080 
00081     enum {dtIndex = oacConnectDefDataType};
00082 };
00083 
00084 
00085 
00086 // *****************************************************************************
00087 // oaNetConnectDef
00088 // *****************************************************************************
00089 class OA_DESIGN_DLL_API oaNetConnectDef : public oaConnectDef {
00090 public:
00091     static oaNetConnectDef  *create(const oaBitNet          *net,
00092                                     const oaAssignmentDef   &assignmentDef);
00093 
00094     oaBitNet                *getNet() const;
00095 };
00096 
00097 
00098 
00099 // *****************************************************************************
00100 // oaTermConnectDef
00101 // *****************************************************************************
00102 class OA_DESIGN_DLL_API oaTermConnectDef : public oaConnectDef {
00103 public:
00104     static oaTermConnectDef *create(const oaBitTerm         *term,
00105                                     const oaAssignmentDef   &assignmentDef);
00106 
00107     oaBitTerm               *getTerm() const;
00108 };
00109 
00110 
00111 
00112 // *****************************************************************************
00113 // Design Traits.
00114 // *****************************************************************************
00115 template<>
00116 class oaTraits<oaConnectDef> {
00117 public:
00118     typedef oaBlockObject           parentType;
00119     typedef oaConnectDefModTypeEnum modTypeType;
00120     enum {domain = oacBlockDomain};
00121     enum {dbType = oacDesignDBType};
00122     enum {isConcrete = false};
00123     enum {isMultiDomain = true};
00124     enum {dtIndex = oacConnectDefDataType};
00125     enum {dataTypeEnumVal = oacConnectDefDataType};
00126     enum {abstractTypeEnumVal = oacConnectDefType};
00127 };
00128 
00129 template<>
00130 class oaTraits<oaNetConnectDef> {
00131 public:
00132     typedef oaConnectDefModTypeEnum modTypeType;
00133     typedef oaConnectDef            parentType;
00134     enum {isMultiDomain = true};
00135     enum {dtIndex = oacConnectDefDataType};
00136     enum {dataTypeEnumVal = oacConnectDefDataType};
00137     enum {domain = oacBlockDomain};
00138     enum {dbType = oacDesignDBType};
00139     enum {isConcrete = true};
00140     enum {objectTypeEnumVal = oacNetConnectDefType};
00141 };
00142 
00143 template<>
00144 class oaTraits<oaTermConnectDef> {
00145 public:
00146     typedef oaConnectDefModTypeEnum modTypeType;
00147     typedef oaConnectDef            parentType;
00148     enum {isMultiDomain = true};
00149     enum {dtIndex = oacConnectDefDataType};
00150     enum {dataTypeEnumVal = oacConnectDefDataType};
00151     enum {domain = oacBlockDomain};
00152     enum {dbType = oacDesignDBType};
00153     enum {isConcrete = true};
00154     enum {objectTypeEnumVal = oacTermConnectDefType};
00155 };
00156 
00157 
00158 
00159 END_OA_NAMESPACE
00160 
00161 #endif

Return to top of page