Features by Data Model


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.

Policy Definitions

Version History for New Features

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.

2.2 Feature List

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.

Data Model Revision 1

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

Huge Database

OpenAccess provides the ability to open very large database in which a single type of data takes over 4 Gbytes of memory. 

Data Model Revision 2

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
oacBlockDomain
oacGeometryCategory
oacFigGroupType
oacAdditionDataModelModType

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
oacNoDomain
oacConstraintsCategory
oacConstraintGroupType
oacAdditionDataModelModType

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
oacConstraintParamType oacAdditionDataModelModType

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
oacTechCategory
oacTechType
oacAdditionDataModelModType

New Material Type oacNewMaterialTypeEnumFeatureID Cannot open with compat. exception App data model rev.   <  2

oacTechDBType
oacTechCategory
oacPhysicalLayerType oacAdditionalDataModelModType

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

FigGroup

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:

Reference to FigGroup

This feature represents items in OpenAccess that make use of oaFigGroups. This feature is present if

Contains New Default Constraint Groups

Default constraint groups have been added to objects that formerly did not have default constraint groups.

For more information, refer to:

New Constraints of Existing Type

New oaLayerConstraints

New oaLayerPairConstraints

New oaSimpleConstraints

Modified Constraints In Rev1

Enhanced oaLayerConstraints and oaLayerPairConstraints

See oaConstraintParamType.

New Constraint Param

Built-in constraint parameters of the following type indicate the presence of this feature:

New Value Type in Rev1

Four new oaValue subclasses are added to support new constraints and derived layers:

Constraint ID

A numeric ID for constraints.

Constraint Description

A string description for constraints.

Gate Grounded Attribute on Tech

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.

New Material Type

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"
};

Layer Array Constraint

Defines constraints for three or more layers. Refer to oaLayerArrayConstraint for more information.

New Derived Layer

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] 

Derived Layer Param

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.

Reference to Derived Layer Param

This feature represents items in OpenAccess that make use of derived layer parameters.

Data Model Revision 3

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
oacNoDomain
oacTechCategory
oacTechType
oacChangeDataModelModType

IncrementalTech

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.

Data Model Revision 4

Feature Name ID Policy Applicable if ... Relevant Part of the Data Model
New GroupDef oacGroupDefInRev4FeatureID Cannot append OpenAccess libs < 22.04.003

oacTechDBType
oacDesignDBType

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
oacNoDomain
oacConstraintCategory
oacUnknownType
oacAdditionDataModelModType

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
oacNoDomain
oacConstraintCategory
oacUnknownType
oacChangeDataModelModType

New Constraint oacNewConstraintInRev4FeatureID Default policy only

oacTechDBType
oacDesignDBType
oacBaseDBType
oacNoDomain
oacConstraintCategory
oacUnknownType
oacAdditionDataModelModType

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
oacNoDomain
oacConnectivityCategory
oacPinType
oacAdditionDataModelModType

New ExceptPGNet Attribute oacNewBlockageExceptPGNetInRev4FeatureID Cannot append OpenAccess libs < 22.04.003

oacDesignDBType
oacBlockDomain
oacPlaceAndRouteCategory
oacLayerBlockageType
oacAdditionDataModelModType

New Spacing Attribute oacNewBlockageSpacingInRev4FeatureID Cannot append OpenAccess libs < 22.04.003

oacDesignDBType
oacBlockDomain
oacPlaceAndRouteCategory
oacLayerBlockageType 
oacAdditionDataModelModType

New Soft Attribute oacNewBlockageSoftInRev4FeatureID Cannot append OpenAccess libs < 22.04.003

oacDesignDBType
oacBlockDomain
oacPlaceAndRouteCategory
oacLayerBlockageType
oacAdditionDataModelModType

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

New GroupDef

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.

Constraint Group Operators

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.

New ConstraintGroupDef

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.

New Constraint Parameter

There are new built-in oaConstraintParamTypes for which applications can create corresponding oaConstraintParams.

Modified Constraint Parameter

Purpose Aware Constraint

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.

New Reserved Purpose

The following are new built-in purpose types:

Layer Derived From Purpose

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.

New Value Type

Layer Pair Exclusion

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.

Process Family

Foundries can set the processFamily attribute to ensure that technology databases in the same graph are from the same process family.

Modified Constraint

The following constraints accept new parameters:

New Constraint

The following new constraints rely on extending the enumerated type values of oaSimpleConstraintType, oaLayerConstraintType, oaLayerPairConstraintType, and oaLayerArrayConstraintType.

New Via Variant

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.

New PinType Attribute

This enumerated value sets and gets a new pinType attribute on oaPin.

New ExceptPGNet Attribute

The allowPGNet oaBoolean attribute on oaLayerBlockage indicates that the blockage does not apply to signals of type oacPowerSigType and oacGroundSigType.

New Spacing Attribute

The spacing oaDist attribute on oaLayerBlockage supports effective spacing.

New Soft Attribute

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.

LayerRangeBlockage

The oaLayerRangeBlockage object represents a blockage over a range of layers.

LayerRangeHalo

The oaLayerRangeHalo object represents a halo over a range of layers.

 

Return to top of page