OpenAccess can add new kinds of data to the data model as newer versions are released.
Each new kind of data added to the data model is called a feature. When a database contains one or more instances of the new kind of data, then it is using that feature. In many cases, older applications will not be able to use databases that have new features.
OpenAccess includes the infrastructure to support feature-based compatibility, which means that OpenAccess has the ability to control the access that an application has to an OpenAccess database based on
When OpenAccess releases a new feature, that feature has a set of policies that define how applications can access databases that include those new features.
This document includes:
For more information, refer to Feature-Based Data Compatibility in Compatibility for OpenAccess Applications and Data. In addition, OpenAccess provides API programming examples, which include an example that demonstrates how feature-based compatibility is used. Refer to the FeatureBasedCompatibility example in API Programming Examples for more information.
You can use oaDesign::getFeatures(), oaTech::getFeatures(), oaDMData::getFeatures() and oaWafer::getFeatures() to query for the features currently present in an in-memory database. These functions return an array of the features described in the following tables.
The following table shows the data model version history of OpenAccess releases and the new features defined and supported in each data model version.
Data Model Revision Number |
OpenAccess Version |
Feature |
---|---|---|
0 | 2.2.0 through 2.2.3 (or p032) | Base OpenAccess 2.2 data model |
1 | 2.2.4 (or P033) | Huge Databases |
2 | 2.2.6 (or P044) | FigGroups, Constraint features |
3 | 2.2.6 (or P044) | IncrementalTech |
4 | *22.04.001 | 45/65 nanometer constraints, layer-pair exclusivity constraints, and predefined via parameters. Important: All the features that are planned for data model revision 4 are included in this document. However, not all are implemented at this time. |
* The OpenAccess versioning format has changed starting with the release containing data model revision 4. For more information, refer to the release notes.
The following sections list the new features available in each OpenAccess data model revision.
For each data model revision, a table lists all the new features and shows their policies. A policy can pertain to the version of the OpenAccess shared libraries, or to the data model revision supported by the application. The tables also show the part of the OpenAccess data model that contains the new feature. More detailed descriptions of the features follow each table.
Important: Recognition of features in OpenAccess started with the OpenAccess 2.2.4 (p029) release. The default policy for all features is that no database with features can be opened by a version of the OpenAccess libraries earlier than 2.2.4 (p029) or an oacCannotUpgrade exception is thrown.
Feature Name | ID | Policy | Applicable if ... | Relevant Part of the Data Model |
---|---|---|---|---|
Huge Databases | oacHugeDatabaseFeatureID | Cannot open with compat. exception | App data model rev. < 1 | oacBaseDBType oacNoDomain oacFutureCategory oacUnknownType oacAdditionDataModelModType |
OpenAccess provides the ability to open very large database in which a single type of data takes over 4 Gbytes of memory.
Feature Name | ID | Policy | Applicable if ... | Relevant Part of the Data Model |
---|---|---|---|---|
FigGroup | oacFigGroupFeatureID | Cannot open with compat. exception | OpenAccess libs < = 2.2.5 (P035) | oacDesignDBType |
Cannot append | OpenAccess libs > 2.2.5 (P035) | |||
Reference to FigGroup | oacReferenceToFigGroupFeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacDesignDBType oacBlockDomain oacGeometryCategory oacFigGroupType oacAdditionDataModelModType |
Contains New Default Constraint Groups | oacDefaultConstraintGroupFeatureID | Cannot open with compat. exception | OpenAccess libs < 2.2.6 (P046) | oacDesignDBType |
New Constraint Of Existing Type | oacNewConstraintOfExistingTypeInRev1FeatureID | Default policy only | oacConstraintsCategory oacAdditionDataModelModType |
|
Modified Constraint In Rev1 | oacModifiedConstraintInRev1FeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacConstraintsCategory oacChangeDataModelModType |
New Constraint Param | oacDerivedLayerParamFeatureID | Default policy only | oacConstraintsCategory |
|
New Value Type in Rev1 | oacNewValueTypeInRev1FeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacConstraintsCategory oacAdditionDataModelModType |
Constraint ID | oacConstraintIDDataFeatureID | Cannot append | OpenAccess libs < 2.2.6 (P046) | oacConstraintsCategory oacAdditionDataModelModType |
Constraint Description | oacConstraintDescriptionDataFeatureID | Cannot append | OpenAccess libs < 2.2.6 (P046) | oacConstraintsCategory oacAdditionDataModelModType |
Gate Grounded Attribute on Tech | oacTechGateGroundedDataFeatureID | Cannot append (if set to non-default value) | OpenAccess libs < 2.2.6 (P046) | oacTechDBType |
New Material Type | oacNewMaterialTypeEnumFeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacTechDBType |
Layer Array Constraint | oacLayerArrayConstraintTypeFeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacConstraintsCategory oacAdditionDataModelModType |
New Derived Layer | oacNewDerivedLayerFeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacTechDBType oacTechCategory oacDerivedLayerType oacAdditionDataModelModType |
Derived Layer Param | oacDerivedLayerParamFeatureID | Cannot append | OpenAccess libs < 2.2.6 (P046) | oacTechDBType oacTechCategory oacDerivedLayerParamType oacAdditionDataModelModType |
Reference to Derived Layer Param | oacReferenceToDerivedLayerParamFeatureID | Cannot open with compat. exception | App data model rev. < 2 | oacTechDBType oacTechCategory oacDerivedLayerParamType |
The oaFigGroup object represents a collection that can be used by graphical design-entry tools to hold a set of figures that can be easily replicated and reused. An oaFigGroup is purely geometric and does not contain connectivity objects or anything else that is not a figure.
For more information, refer to:
This feature represents items in OpenAccess that make use of oaFigGroups. This feature is present if
Default constraint groups have been added to objects that formerly did not have default constraint groups.
For more information, refer to:
New oaLayerConstraints
New oaLayerPairConstraints
New oaSimpleConstraints
Enhanced oaLayerConstraints and oaLayerPairConstraints
New Valid Value Type | |
oaIntDualIntArrayTblValue | When an array of value pairs is assigned for a given width, width is expressed as an oaInt4, the array is an oaDualIntArray, and the value type is an oaIntDualIntArrayTblValue. |
New Parameters | ||
oacAntennaAreaFactorConstraintParamType | oaFloatValue | Specifies the metal factor. Depending on the value of the isSide attribute, this parameter represents one of the following:
The default value for this parameter is 1 in both cases. |
oacAntennaDiffPlusFactorConstraintParamType | oaFloatValue | Specifies the diffPlusFactor. The default value for this parameter is 0. |
oacAntennaDiffMinusFactorConstraintParamType | oaFloatValue | Specifies the diffMinusFactor. The default value for this parameter is 0. |
oacAntennaDiffAreaReduceFactorConstraintParamType | oaFlt1DtblValue | Specifies the diffAreaReduceFactor. This table stores the factors based on the diffusion area. These values typically are in the range of 0 to 1. The default value for this parameter is 1. |
oacAntennaCumRoutingPlusCutConstraintParamType | oaBooleanValue | Specifies the cumRoutingPlusCut. This parameter determines how the cumulative antenna ratios for metal and cut layers are calculated. The default value for this parameter is false. |
New Parameters | ||
oacWidthLengthTableTypeConstraintParamType | oaIntValue | Specifies how the oaInt2DTblValue table, supplied as the constraint value, is interpreted by applications. There are two possible interpretations:
|
oacDistanceMeasureTypeConstraintParamType | oaIntValue | Specifies whether the distances are measured as Euclidean (which is the the default) or Manhattan. |
New Parameter | ||
oacDistanceMeasureTypeConstraintParamType | oaIntValue | Specifies whether the distances are measured as Euclidean (which is the default) or Manhattan. |
New Valid Value Type | |
oaInt2DTblValue | Specifies the required clearance width as a function of two keys. |
New Parameter | ||
oacDistanceMeasureTypeConstraintParamType | oaIntValue | Specifies whether the distances are measured as Euclidean (which is default) or Manhattan. |
New Valid Value Type | |
oaInt1DtblValue | Specifies the dependency of the net spacing on the width of the shape on the net. |
Built-in constraint parameters of the following type indicate the presence of this feature:
Four new oaValue subclasses are added to support new constraints and derived layers:
A numeric ID for constraints.
A string description for constraints.
A new gateGrounded attribute on oaTech that indicates whether or not the gate is grounded. The default value is false.
The feature is present only if this attribute is set to true.
The oaMaterialTypeEnum includes a new enum value that can be used when creating physical layers.
enum oaMaterialEnum { // Existing enumeration values here ... oacPassivationCutMaterial }; const oaString oaMaterial::names[] = { // Existing names here... "passivationCut" };
Defines constraints for three or more layers. Refer to oaLayerArrayConstraint for more information.
The oaDerivedLayer class now provides the ability to create sized layers or layers based on operations. Also, layers can be derived from one or two layers. Derived layers can now have associated parameters.
Refer to the following functions in the oaDerivedLayer class documentation for more information.
oaDerivedLayer* oaDerivedLayer::create(oaTech* tech, const oaLayer* layer1, const oaDerivedLayerDef* def, const oaString& name, oaLayerNum number, const oaDerivedLayerParamArray * params = NULL ) [static]
oaDerivedLayer* oaDerivedLayer::create(oaTech* tech, oaLayer* layer1, oaLayer* layer2, oaLayerOp operation, const oaString& name, oaLayerNum number ) [static]
oaDerivedLayer* oaDerivedLayer::find(const oaTech* tech, oaLayerNum layer1Num, oaLayerNum layer2Num, const oaDerivedLayerDef* def, const oaDerivedLayerParamArray* params = NULL, oaBoolean local = false ) [static] oaDerivedLayer* oaDerivedLayer::find(const oaTech* tech, oaLayerNum layer1Num, const oaDerivedLayerDef* def, const oaDerivedLayerParamArray* params = NULL, oaBoolean local = false ) [static]
oaDerivedLayerParam describes additional information for derived layers. For example, a derived layer with an inside layer operation has two input layers and one parameter, which describes the net connectivity of the shapes.
oaDerivedLayerParamDef enforces the value type of a derived layer parameter.
This feature represents items in OpenAccess that make use of derived layer parameters.
Feature Name | ID | Policy | Applicable if ... | Relevant Part of the Data Model |
---|---|---|---|---|
IncrementalTech | oacIncrementalTechFeatureID | Cannot open with compat. exception | App data model rev. < 3 | oacTechDBType |
OpenAccess lets applications use incremental technology databases to provide technology information from multiple sources, such as the foundry, an IP provider, or a designer, to the application at different points in the design cycle. Applications can incrementally assemble technology information by creating references from one oaTech database to other oaTech databases. For more information, refer to Using Technology Databases in the Programmers Guide.
Note: The IncrementalTech feature is present in a technology database if that technology database contains references to other technology databases. However, even if the references are unset, if the technology database still contains any unbound object headers that cannot be resolved, the feature is still considered present.
Feature Name | ID | Policy | Applicable if ... | Relevant Part of the Data Model |
---|---|---|---|---|
New GroupDef | oacGroupDefInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacTechDBType |
Constraint Group Operators | oacConstraintGroupOperatorInRev4FeatureID |
Cannot append | App data model rev. < 4 | oacTechDBType oacDesignDBType |
New ConstraintGroupDef | oacConstraintGroupDefInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType oacDesignDBType |
New Constraint Parameter | oacNewConstraintParamInRev4FeatureID | Default policy only | oacBaseDBType |
|
Modified Constraint Parameter | oacModifiedConstraintParamInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacDesignDBType |
Purpose Aware Constraint | oacPurposeAwareConstraintInRev4DesignFeatureID oacPurposeAwareConstraintInRev4TechFeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType oacDesignDBType |
New Reserved Purpose | oacNewReservedPurposeInRev4DesignFeatureID oacNewReservedPurposeInRev4TechFeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType |
Layer Derived From Purpose | oacLayerDerivedFromPurposeInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType |
New Value Type | oacNewValueTypeInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType oacDesignDBType |
Layer Pair Exclusion | oacLayerExclusionInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacTechDBType |
Process Family | oacTechProcessFamilyInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacTechDBType |
Modified Constraint | oacModifiedConstraintInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacBaseDBType |
New Constraint | oacNewConstraintInRev4FeatureID | Default policy only | oacTechDBType |
|
New Via Variant | oacViaVariantInRev4DesignFeatureID oacViaVariantInRev4TechFeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacTechDBType oacDesignDBType |
New PinType Attribute | oacNewPinTypeInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacDesignDBType |
New ExceptPGNet Attribute | oacNewBlockageExceptPGNetInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacDesignDBType |
New Spacing Attribute | oacNewBlockageSpacingInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacDesignDBType |
New Soft Attribute | oacNewBlockageSoftInRev4FeatureID | Cannot append | OpenAccess libs < 22.04.003 | oacDesignDBType |
LayerRangeBlockage | oacLayerRangeBlockageInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacDesignDBType |
LayerRangeHalo | oacLayerRangeHaloInRev4FeatureID | Cannot open with compat. exception | App data model rev. < 4 | oacDesignDBType |
The usage of the oaGroupDef allows the definition of a group whose membership is restricted by a specified list of OpenAccess managed types. For example, it is possible to define a group that can contain only oaNets.
Refer to Using Group Definitions in the Programmers Guide for more information.
A constraint group can use the And operator to indicate that a set of constraints in the same group, such as minSpacing or minDualExtension constraints, must all be met.
A constraint group can use the Or operation to indicate that only one constraint in the group must be met.
By default, constraint groups use the Precedence operator to indicate that constraint group members are ordered, and their order implies precedence between constraints in the group.
Refer to the class documentation for oaConstraintGroupOperator and Combining Constraints in Constraint Groups in the Creating and Modeling Process Rules and Constraints section of the Programmers Guide for more information.
An oaConstraintGroupDef is a public object that specifies a definition for a constraint group. The definition contains a name, a type, a list of databases that the constraint group can be created in, a list of objects (by type) that the constraint applies to, a relationship type, and an indicator of whether or not there can be only one constraint group that uses this definition in any given database.
There are a set of built-in ConstraintGroupDefs with associated semantics:
Refer to Using Constraint Group Definitions in the Creating and Modeling Process Rules and Constraints section of the Programmers Guide.
Upgrade notes: When constraint group data created by an application that uses the shared libraries from data model 3 or earlier is opened in data model 4, the data is mapped into the new built-in constraint group definitions.
There are new built-in oaConstraintParamTypes for which applications can create corresponding oaConstraintParams.
The create functions of the following layer constraint objects now accept oaPurposeNums so that applications can limit the scope of a layer-based constraint to a specific set of purposes.
Upgrade notes: If an older database is loaded by an application that uses the shared libraries from data model revision 4 or later, any missing built-in purposes are added. OpenAccess reserves purpose numbers in the range 0xffff0000 to 0xffffffff inclusive for built-in purposes. If a database created before data model revision 4 includes a user-defined purpose that uses a purpose number in the reserved range, and that database is read by newer OpenAccess shared libraries, the user-defined purposes in the reserved range are removed from the database.
The following are new built-in purpose types:
A new built-in oaLayerOp allows for the selection of all shapes with a given purpose. In addition, new built-in oaDerivedLayerParamType captures the purpose information when the oaDerivedLayerDef operation selects all shapes with a given purpose.
For more information, refer to Deriving Layers and Performing Layer Operations in the Programmers Guide for more information.
Layers in an oaLayerNameArray can be excluded from a technology database or graph of technology databases.
Refer to Excluding Incompatible Layers in the Programmers Guide for more information.
Foundries can set the processFamily attribute to ensure that technology databases in the same graph are from the same process family.
New Valid Value Types | |
oaViaTopologyArrayValue | Provides a set of via specifications (oaViaVariants). |
oaViaTopology2DTblValue | Provides valid or default power routing vias. |
The following constraints accept new parameters:
New Parameter | ||
oacSpacingDirectionParamType | oaIntValue | Specifies horizontal, vertical, or any spacing direction. |
New Parameter | ||
oacNoSharedEdgeConstraintParamType | oacBooleanValueType | Controls whether vias on a shared edge are counted. |
oacCutDistanceConstraintParamType | oacIntValueType | If another cut exists within this distance across the length of the wire, this constraint does not apply, and the constraint associated with the minimum size wire applies. |
oacLengthConstraitParamType | oacIntValueType | Specifies the total length of the enclosure required for that extension pair. |
New Parameter | ||
oacDistanceWithinConstraintParamType | oaIntValue | Specifies a distance within which via cuts count toward the minimum required. |
New Parameter | ||
oacDistanceWithinConstraintParamType | oaIntValue | Specifies a distance below which via cuts are counted. |
The following new constraints rely on extending the enumerated type values of oaSimpleConstraintType, oaLayerConstraintType, oaLayerPairConstraintType, and oaLayerArrayConstraintType.
OpenAccess lets you store predefined parameterizations of oaStdVias and oaCustomVias, known as via variants (oaViaVariants). The oaViaVariant object represents a named pairing of an oaViaDef reference and a fully specified set of via parameters. The oacValidRoutingVias constraint can now store oaStdViaDefs with oaViaParams, and oaCustomViaDefs with oaParamArrays.
For more information, refer to Via Variants in the Representing Vias in OpenAccess section of the Programmers Guide.
This enumerated value sets and gets a new pinType attribute on oaPin.
The allowPGNet oaBoolean attribute on oaLayerBlockage indicates that the blockage does not apply to signals of type oacPowerSigType and oacGroundSigType.
The spacing oaDist attribute on oaLayerBlockage supports effective spacing.
The new soft oaBoolean attribute on oaAreaBlockage specifies that initial placement should not put standard cells within the blockage area during initial placement, though later optimization phases can use the blockage area. The new soft oaBoolean attribute on oaAreaHalo indicates that standard cells should not be placed within the halo, but later optimization phases can use the halo area.
The oaLayerRangeBlockage object represents a blockage over a range of layers.
The oaLayerRangeHalo object represents a halo over a range of layers.
Copyright © 2003-2010 Cadence Design Systems, Inc.
All rights reserved.