oaConstraintParamDef.h

Go to the documentation of this file.
00001 // *****************************************************************************
00002 // *****************************************************************************
00003 // oaConstraintParamDef.h
00004 //
00005 // This file contains the definitions for the following classes:
00006 //      oaConstraintParamType
00007 //      oaDistanceMeasureType
00008 //      oaWidthLengthTableType
00009 //      oaAlignmentype
00010 //      oaSpacingDirectionType
00011 //      oaConstraintParamDef
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 2002-2005 Cadence Design Systems, Inc.
00020 //                           All Rights Reserved.
00021 //
00022 //  $Author: icftcm $
00023 //  $Revision: #2 $
00024 //  $Date: 2010/10/18 $
00025 //  $State: Exp $
00026 // *****************************************************************************
00027 // *****************************************************************************
00028 
00029 
00030 
00031 #if !defined(oaConstraintParamDef_P)
00032 #define oaConstraintParamDef_P
00033 
00034 
00035 
00036 // *****************************************************************************
00037 // Nested includes
00038 // *****************************************************************************
00039 #include "oaSessionObject.h"
00040 
00041 
00042 
00043 // *****************************************************************************
00044 // Declare and define types in the OpenAccess namespace.
00045 // *****************************************************************************
00046 BEGIN_OA_NAMESPACE
00047 
00048 
00049 
00050 // *****************************************************************************
00051 // oaConstraintParamTypeEnum
00052 // *****************************************************************************
00053 #define oavNumConstraintParamTypes  100
00054 
00055 enum oaConstraintParamTypeEnum {
00056     oacDistanceConstraintParamType                      = 0,
00057     oacFrequencyConstraintParamType                     = 1,
00058     oacLengthConstraintParamType                        = 2,
00059     oacNumCutsConstraintParamType                       = 3,
00060     oacWidthConstraintParamType                         = 4,
00061     oacLengthSumConstraintParamType                     = 5,
00062     oacLowerLayerConstraintParamType                    = 6,
00063     oacUpperLayerConstraintParamType                    = 7,
00064     oacCoincidentAllowedParamType                       = 8,
00065     oacWidthLengthTableTypeConstraintParamType          = 9,
00066     oacDistanceMeasureTypeConstraintParamType           = 10,
00067     oacCountConstraintParamType                         = 11,
00068     oacParallelEdgeSpaceConstraintParamType             = 12,
00069     oacParallelEdgeWithinConstraintParamType            = 13,
00070     oacMaxLengthConstraintParamType                     = 14,
00071     oacMaxEdgeCountConstraintParamType                  = 15,
00072     oacMinNumCutsConstraintParamType                    = 16,
00073     oacAntennaAreaFactorConstraintParamType             = 17,
00074     oacAntennaDiffPlusFactorConstraintParamType         = 18,
00075     oacAntennaDiffMinusFactorConstraintParamType        = 19,
00076     oacAntennaDiffAreaReduceFactorConstraintParamType   = 20,
00077     oacAntennaCumRoutingPlusCutConstraintParamType      = 21,
00078     oacAlignmentTypeConstraintParamType                 = 22,
00079     oacEndOfLineSpaceConstraintParamType                = 23,
00080     oacSpacingDirectionConstraintParamType              = 24,
00081     oacDistanceWithinConstraintParamType                = 25,
00082     oacNotchLengthConstraintParamType                   = 26,
00083     oacNotchSpacingConstraintParamType                  = 27,
00084     oacNotchWidthConstraintParamType                    = 28,
00085     oacCutDistanceConstraintParamType                   = 29,
00086     oacNoSharedEdgeConstraintParamType                  = 30,
00087     oacObsoleteConstraintParamType31                    = 31,
00088     oacCenterToCenterConstraintParamType                = 32,
00089     oacAreaConstraintParamType                          = 33,
00090     oacStackConstraintParamType                         = 34,
00091     oacNoSingleCutViaConstraintParamType                = 35,
00092     oacConnectivityTypeConstraintParamType              = 36,
00093     oacPGNetConstraintParamType                         = 37,
00094     oacExceptSamePGNetConstraintParamType               = 38,
00095     oacAboveOnlyConstraintParamType                     = 39,  
00096     oacAllCutsConstraintParamType                       = 40,  
00097     oacClassNameConstraintParamType                     = 41,  
00098     oacCutClassCenterToCenterConstraintParamType        = 42,  
00099     oacCutClassConstraintParamType                      = 43,  
00100     oacCutClassListConstraintParamType                  = 44,  
00101     oacCutToMetalSpacingConstraintParamType             = 45,  
00102     oacEnclosedCutConstraintParamType                   = 46,  
00103     oacEnclosedDistanceConstraintParamType              = 47,  
00104     oacEndOfLinePerpWidthConstraintParamType            = 48,  
00105     oacEndOfLineWidthConstraintParamType                = 49, 
00106     oacEndToEndSpacingConstraintParamType               = 50, 
00107     oacEqualRectWidthConstraintParamType                = 51, 
00108     oacExactAlignedConstraintParamType                  = 52, 
00109     oacExactParallelRunLengthConstraintParamType        = 53, 
00110     oacExactSpacingConstraintParamType                  = 54, 
00111     oacExceptConnectivityTypeConstraintParamType        = 55, 
00112     oacExceptEdgeLengthConstraintParamType              = 56, 
00113     oacExceptExtraCutConstraintParamType                = 57, 
00114     oacExceptLineTouchConstraintParamType               = 58, 
00115     oacExceptMinSizeConstraintParamType                 = 59, 
00116     oacExceptPointTouchConstraintParamType              = 60, 
00117     oacExceptSameCornerConstraintParamType              = 61, 
00118     oacExceptSameViaCountConstraintParamType            = 62, 
00119     oacExceptTwoEdgesConstraintParamType                = 63, 
00120     oacFloatingAreaSpacingConstraintParamType           = 64, 
00121     oacFloatingMetalConstraintParamType                 = 65, 
00122     oacInLayerDirectionConstraintParamType              = 66, 
00123     oacInterSpaceConstraintParamType                    = 67, 
00124     oacMaxChannelLengthConstraintParamType              = 68, 
00125     oacMinJogLengthConstraintParamType                  = 69, 
00126     oacMinLengthConstraintParamType                     = 70, 
00127     oacMinLengthRatioConstraintParamType                = 71, 
00128     oacMinOppositeWidthConstraintParamType              = 72,     
00129     oacOtherEndWidthConstraintParamType                 = 73, 
00130     oacParallelEdgeLengthConstraintParamType            = 74, 
00131     oacParallelEdgeMinLengthConstraintParamType         = 75, 
00132     oacParallelOverlapConstraintParamType               = 76, 
00133     oacParallelRunLengthConstraintParamType             = 77, 
00134     oacParallelRunLengthTableConstraintParamType        = 78, 
00135     oacRedundantCutDistanceConstraintParamType          = 79, 
00136     oacRoutingLayersConstraintParamType                 = 80, 
00137     oacSpanLengthConstraintParamType                    = 81, 
00138     oacSubtractEndOfLineWidthConstraintParamType        = 82, 
00139     oacTwoSidesConstraintParamType                      = 83, 
00140     oacViaExtensionTypeConstraintParamType              = 84, 
00141     oacViaLengthMinConstraintParamType                  = 85, 
00142     oacViaWidthMinConstraintParamType                   = 86, 
00143     oacWindowStepSizeConstraintParamType                = 87, 
00144     oacExtensionSpacingConstraintParamType              = 88, 
00145     oacConvexCornerConstraintParamType                  = 89, 
00146     oacHasParallelRunLengthConstraintParamType          = 90, 
00147     oacJointWidthConstraintParamType                    = 91, 
00148     oacWrongDirectionConstraintParamType                = 92, 
00149     oacExceptEdgeLengthPRLConstraintParamType           = 93, 
00150     oacEndSideOverhangConstraintParamType               = 94, 
00151     oacJointToEdgeEndLengthConstraintParamType          = 95, 
00152     oacSideParallelOverlapConstraintParamType           = 96, 
00153     oacNeighborLayerMetalConstraintParamType            = 97, 
00154     oacExceptCutMetalEdgeExtensionConstraintParamType   = 98,
00155     oacCutClassProfileConstraintParamType               = 99  
00156 };
00157 
00158 
00159 
00160 // *****************************************************************************
00161 // oaDistanceMeasureTypeEnum
00162 // *****************************************************************************
00163 #define oavNumDistanceMeasureTypes      2
00164 
00165 enum oaDistanceMeasureTypeEnum {
00166     oacEuclidianDistanceMeasureType = 0,
00167     oacManhattanDistanceMeasureType = 1
00168 };
00169 
00170 
00171 
00172 // *****************************************************************************
00173 // oaWidthLengthTableTypeEnum
00174 // *****************************************************************************
00175 #define oavNumWidthLengthTableTypes     3
00176 
00177 enum oaWidthLengthTableTypeEnum {
00178     oacWidthParallelRunLengthTableType      = 0,
00179     oacWidthWidthTableType                  = 1,
00180     oacTwoWidthParallelRunLengthTableType   = 2
00181 };
00182 
00183 
00184 
00185 // *****************************************************************************
00186 // oaAlignmentTypeEnum
00187 // *****************************************************************************
00188 #define oavNumAlignmentTypes    3
00189 
00190 enum oaAlignmentTypeEnum {
00191     oacInsideAlignmentType          = 0,
00192     oacOutsideAlignmentType         = 1,
00193     oacInsideOutsideAlignmentType   = 2
00194 };
00195 
00196 
00197 
00198 // *****************************************************************************
00199 // oaSpacingDirectionTypeEnum
00200 // *****************************************************************************
00201 #define oavNumSpacingDirectionTypes     3
00202 
00203 enum oaSpacingDirectionTypeEnum {
00204     oacAnySpacingDirectionType          = 0,
00205     oacHorizontalSpacingDirectionType   = 1,
00206     oacVerticalSpacingDirectionType     = 2
00207 };
00208 
00209 
00210 
00211 // *****************************************************************************
00212 // oaConnectivityTypeEnum
00213 // *****************************************************************************
00214 #define oavNumConnectivityTypes         5
00215 
00216 enum oaConnectivityTypeEnum {
00217     oacAnyConnectivityType              = 0,
00218     oacSameNetConnectivityType          = 1,
00219     oacContiguousShapesConnectivityType = 2,
00220     oacDirectShapesConnectivityType     = 3, 
00221     oacSameViaConnectivityType          = 4  
00222 };
00223 
00224 
00225 
00226 // *****************************************************************************
00227 // oaViaExtensionTypeEnum
00228 // *****************************************************************************
00229 #define oavNumViaExtensionTypes     3
00230 
00231 enum oaViaExtensionTypeEnum {
00232     oacOneThreeViaExtensionType     = 0,
00233     oacOneOneTwoViaExtensionType    = 1,
00234     oacDiagonalViaExtensionType     = 2
00235 };
00236 
00237 
00238 
00239 // *****************************************************************************
00240 // oaConnectLayerTypeEnum
00241 // *****************************************************************************
00242 #define oavNumConnectLayerTypes     3
00243 
00244 enum oaConnectLayerTypeEnum {
00245     oacSingleConnectLayerType       = 0, 
00246     oacConnectedConnectLayerType    = 1, 
00247     oacAllConnectedConnectLayerType = 2  
00248 };
00249 
00250 
00251 
00252 // *****************************************************************************
00253 // oaSpacingTypeEnum
00254 // *****************************************************************************
00255 #define oavNumSpacingTypes      4
00256 
00257 enum oaSpacingTypeEnum {
00258     oacEndToEndSpacingType      = 0,
00259     oacEndToJoiintSpacingType   = 1,
00260     oacJointToEndSpacingType    = 2,
00261     oacJointToJointSpacingType  = 3
00262 };
00263 
00264 
00265 
00266 // *****************************************************************************
00267 // oaSpacingMeasureTypeEnum
00268 // *****************************************************************************
00269 #define oavNumSpacingMeasureTypes       2
00270 
00271 enum oaSpacingMeasureTypeEnum {
00272     oacEdgeToEdgeSpacingMeasureType     = 0,
00273     oacCenterToCenterSpacingMeasureType = 1
00274 };
00275 
00276 
00277 
00278 // *****************************************************************************
00279 // oaEnclosedCutTypeEnum
00280 // *****************************************************************************
00281 #define oavNumEnclosedCutTypes  3
00282 
00283 enum oaEnclosedCutTypeEnum {
00284     oacAllEnclosedCutType   = 0,
00285     oacBelowEnclosedCutType = 1,
00286     oacAboveEnclosedCutType = 2
00287 };
00288 
00289 
00290 
00291 // *****************************************************************************
00292 // oaNeighborLayerMetalTypeEnum
00293 // *****************************************************************************
00294 #define oavNeighborLayerMetalType  3
00295 
00296 enum oaNeighborLayerMetalTypeEnum {
00297     oacUpperLowerLayerMetalType = 0,
00298     oacUpperLayerMetalType      = 1,
00299     oacLowerLayerMetalType      = 2
00300 };
00301 
00302 
00303 
00304 // *****************************************************************************
00305 // oaConstraintParamType
00306 // *****************************************************************************
00307 class OA_BASE_DLL_API oaConstraintParamType {
00308 public:
00309                                 oaConstraintParamType(oaConstraintParamTypeEnum typeIn);
00310                                 oaConstraintParamType(const oaString &name);
00311                                 ~oaConstraintParamType();
00312 
00313     const oaString              &getName() const;
00314                                 operator                    oaConstraintParamTypeEnum() const;
00315 
00316 private:
00317     static const oaString       *initNames();
00318 
00319     oaConstraintParamTypeEnum   type;
00320 
00321     static const oaString       names[];
00322 };
00323 
00324 
00325 
00326 // *****************************************************************************
00327 // oaDistanceMeasureType
00328 // *****************************************************************************
00329 class OA_BASE_DLL_API oaDistanceMeasureType {
00330 public:
00331                                 oaDistanceMeasureType(oaDistanceMeasureTypeEnum valueIn);
00332                                 oaDistanceMeasureType(const oaString &name);
00333                                 ~oaDistanceMeasureType();
00334 
00335     const oaString              &getName() const;
00336                                 operator                oaDistanceMeasureTypeEnum() const;
00337 
00338 private:
00339     static const oaString       *initNames();
00340 
00341     oaDistanceMeasureTypeEnum   value;
00342 
00343     static const oaString       *names;
00344 };
00345 
00346 
00347 
00348 // *****************************************************************************
00349 // oaWidthLengthTableType
00350 // *****************************************************************************
00351 class OA_BASE_DLL_API oaWidthLengthTableType {
00352 public:
00353                                 oaWidthLengthTableType(oaWidthLengthTableTypeEnum valueIn);
00354                                 oaWidthLengthTableType(const oaString &name);
00355                                 ~oaWidthLengthTableType();
00356 
00357     const oaString              &getName() const;
00358                                 operator                oaWidthLengthTableTypeEnum() const;
00359 
00360 private:
00361     static const oaString       *initNames();
00362 
00363     oaWidthLengthTableTypeEnum  value;
00364 
00365     static const oaString       *names;
00366 };
00367 
00368 
00369 
00370 // *****************************************************************************
00371 // oaAlignmentType
00372 // *****************************************************************************
00373 class OA_BASE_DLL_API oaAlignmentType {
00374 public:
00375                             oaAlignmentType(oaAlignmentTypeEnum typeIn);
00376                             oaAlignmentType(const oaString &name);
00377                             ~oaAlignmentType();
00378 
00379     const oaString          &getName() const;
00380                             operator                oaAlignmentTypeEnum() const;
00381 
00382 private:
00383     static const oaString   *initNames();
00384 
00385     oaAlignmentTypeEnum     value;
00386 
00387     static const oaString   *names;
00388 };
00389 
00390 
00391 
00392 // *****************************************************************************
00393 // oaSpacingDirectionType
00394 // *****************************************************************************
00395 class OA_BASE_DLL_API oaSpacingDirectionType {
00396 public:
00397                                 oaSpacingDirectionType(oaSpacingDirectionTypeEnum typeIn);
00398                                 oaSpacingDirectionType(const oaString &name);
00399                                 ~oaSpacingDirectionType();
00400 
00401     const oaString              &getName() const;
00402                                 operator                    oaSpacingDirectionTypeEnum() const;
00403 
00404 private:
00405     static const oaString       *initNames();
00406 
00407     oaSpacingDirectionTypeEnum  value;
00408 
00409     static const oaString       *names;
00410 };
00411 
00412 
00413 
00414 // *****************************************************************************
00415 // oaConnectivityConstraintType
00416 // *****************************************************************************
00417 class OA_BASE_DLL_API oaConnectivityType {
00418 public:
00419                             oaConnectivityType(oaConnectivityTypeEnum typeIn);
00420                             oaConnectivityType(const oaString &name);
00421                             ~oaConnectivityType();
00422 
00423     const oaString          &getName() const;
00424                             operator                oaConnectivityTypeEnum() const;
00425 
00426 private:
00427     static const oaString   *initNames();
00428 
00429     oaConnectivityTypeEnum  type;
00430 
00431     static const oaString   *names;
00432 };
00433 
00434 
00435 
00436 // *****************************************************************************
00437 // oaViaExtensionType
00438 // *****************************************************************************
00439 class OA_BASE_DLL_API oaViaExtensionType {
00440 public:
00441                                 oaViaExtensionType(oaViaExtensionTypeEnum type);
00442                                 oaViaExtensionType(const oaString &name);
00443 
00444     const oaString              &getName() const;
00445                                 operator    oaViaExtensionTypeEnum() const;
00446 
00447 private:
00448     static const oa::oaString   *initNames();
00449 
00450     oaViaExtensionTypeEnum      m_type;
00451 
00452     static const oaString       *s_names;
00453 };
00454 
00455 
00456 
00457 // *****************************************************************************
00458 // oaConnectLayerType
00459 // *****************************************************************************
00460 class OA_BASE_DLL_API oaConnectLayerType {
00461 public:
00462                             oaConnectLayerType(oaConnectLayerTypeEnum   type);
00463                             oaConnectLayerType(const oaString   &name);
00464 
00465     const oaString          &getName() const;
00466                             operator    oaConnectLayerTypeEnum() const;
00467 
00468 private:
00469     static const oa::oaString   *initNames();
00470 
00471     oaConnectLayerTypeEnum      m_type;
00472 
00473     static const oaString       *s_names;
00474 };
00475 
00476 
00477 
00478 // *****************************************************************************
00479 // oaSpacingType
00480 // *****************************************************************************
00481 class OA_BASE_DLL_API oaSpacingType {
00482 public:
00483                                 oaSpacingType(oaSpacingTypeEnum type);
00484                                 oaSpacingType(const oaString    &name);
00485 
00486     const oaString              &getName() const;
00487                                 operator    oaSpacingTypeEnum() const;
00488 
00489 private:
00490     static const oaString       *initNames();
00491 
00492     oaSpacingTypeEnum           m_type;
00493 
00494     static const oaString       *s_names;
00495 };
00496 
00497 
00498 
00499 // *****************************************************************************
00500 // oaSpacingMeasureType
00501 // *****************************************************************************
00502 class OA_BASE_DLL_API oaSpacingMeasureType {
00503 public:
00504                                 oaSpacingMeasureType(oaSpacingMeasureTypeEnum   type);
00505                                 oaSpacingMeasureType(const oaString &name);
00506 
00507     const oaString              &getName() const;
00508                                 operator    oaSpacingMeasureTypeEnum() const;
00509 
00510 private:
00511     static const oaString       *initNames();
00512 
00513     oaSpacingMeasureTypeEnum    m_type;
00514 
00515     static const oaString       *s_names;
00516 };
00517 
00518 
00519 
00520 // *****************************************************************************
00521 // oaEnclosedCutType
00522 // *****************************************************************************
00523 class OA_BASE_DLL_API oaEnclosedCutType {
00524 public:
00525                                 oaEnclosedCutType(oaEnclosedCutTypeEnum type);
00526                                 oaEnclosedCutType(const oaString    &name);
00527 
00528     const oaString              &getName() const;
00529                                 operator    oaEnclosedCutTypeEnum() const;
00530 
00531 private:
00532     static const oaString       *initNames();
00533 
00534     oaEnclosedCutTypeEnum       m_type;
00535 
00536     static const oaString       *s_names;
00537 };
00538 
00539 
00540 
00541 // *****************************************************************************
00542 // oaNeighborLayerMetalType
00543 // *****************************************************************************
00544 class OA_BASE_DLL_API oaNeighborLayerMetalType {
00545 public:
00546                                     oaNeighborLayerMetalType(oaNeighborLayerMetalTypeEnum type);
00547                                     oaNeighborLayerMetalType(const oaString    &name);
00548 
00549     const oaString                  &getName() const;
00550                                     operator oaNeighborLayerMetalTypeEnum() const;
00551 
00552 private:
00553     static const oaString           *initNames();
00554 
00555     oaNeighborLayerMetalTypeEnum    m_type;
00556 
00557     static const oaString           *s_names;
00558 };
00559 
00560 
00561 
00562 // *****************************************************************************
00563 // oaConstraintParamDef
00564 // *****************************************************************************
00565 class OA_BASE_DLL_API oaConstraintParamDef : public oaSessionObject {
00566 public:
00567     static oaConstraintParamDef *create(const oaString  &name,
00568                                         oaType          valueType);
00569 
00570     static oaConstraintParamDef *find(const oaString &name);
00571     static oaConstraintParamDef *get(oaConstraintParamType type);
00572 
00573     void                        getName(oaString &name) const;
00574     oaType                      getValueType() const;
00575     oaBoolean                   isBuiltIn() const;
00576 
00577     void                        destroy();
00578     void                        remove(oaObject *database);
00579 
00580     enum {dtIndex = oacBaseConstraintParamDefDataType};
00581 };
00582 
00583 
00584 
00585 // *****************************************************************************
00586 // Traits
00587 // *****************************************************************************
00588 template<>
00589 class oaTraits<oaConstraintParamDef> {
00590 public:
00591     typedef oaSessionObject                 parentType;
00592     typedef oaConstraintParamDefModTypeEnum modTypeType;
00593     enum {domain = oacNoDomain};
00594     enum {isMultiDomain = false};
00595     enum {dbType = oacBaseDBType};
00596     enum {isConcrete = true};
00597     enum {dtIndex = oacBaseConstraintParamDefDataType};
00598     enum {objectTypeEnumVal = oacConstraintParamDefType};
00599     enum {dataTypeEnumVal = oacBaseConstraintParamDefDataType};
00600 };
00601 
00602 
00603 
00604 END_OA_NAMESPACE
00605 
00606 #endif
00607 

Return to top of page