# DEF 5.8 C/C++ Programming Interface -- 5
Describes the C/C++ programming interface used to read and write Design Exchange Format (DEF) files.
Author: Technical Publications

###
DEF 5.8 C/C++ Programming Interface (Open Licensing Program)

# 5

# DEF Writer Callback Routines

You can use the Cadence® Design Exchange Format (DEF) writer with callback routines, or you can call one writer function at a time.

When you use callback routines, the writer creates a DEF file in the sequence shown in the following table. The writer also checks which sections are required for the file. If you do not provide a callback for a required section, the writer uses a default routine. If no default routine is available for a required section, the writer generates an error message.

Section | Required | Default Available
Version | yes | yes
Bus Bit Characters | yes | yes
Divider | yes | yes
Design | yes | no
Technology | no | no
Units | no | no
History | no | no
Property Definition | no | no
Die Area | no | no
Rows | no | no
Tracks | no | no
Gcell Grid | no | no
Vias | no | no
Regions | no | no
Components | yes | no
Pins | no | no
Pin Properties | no | no
Special Nets | no | no
Nets | yes | no
Scan chains | no | no
Groups | no | no
Extensions | no | no
Design End | yes | no

## Callback Function Format

All callback functions use the following format.

int UserCallbackFunctions(
  defwCallbackType_e
callBackType,
  defiUserData data)

### Callback Type

The callBackType argument is a list of objects that contains a unique number assignment for each callback from the parser. This list allows you to use the same callback routine for different types of DEF data.

### User Data

The data argument is a four-byte data item that you set. The DEF writer contains only user data. The user data is most often set to a pointer to the design data so that it can be passed to the routines.

## Callback Types and Setting Routines

The following table lists the DEF writer callback-setting routines and the associated callback types.

DEF Information | Setting Routine | Callback Types
Blockages | void defwSetBlockageCbk (defwVoidCbkFnType) | defwBlockageCbkType
Bus Bit Characters | void defwSetBusBitCbk (defwVoidCbkFnType) | defwBusBitCbkType
Components | void defwSetComponentCbk (defwVoidCbkFnType) | defwComponentCbkType
Design | void defwSetDesignCbk (defwVoidCbkFnType) | defwDesignCbkType
Design End | void defwSetDesignEndCbk (defwVoidCbkFnType) | defwDesignEndCbkType
Die Area | void defwSetDieAreaCbk (defwVoidCbkFnType) | defwDieAreaCbkType
Divider | void defwSetDividerCbk (defwVoidCbkFnType) | defwDividerCbkType
Extensions | void defwSetExtCbk (defwVoidCbkFnType) | defwExtCbkType
Gcell Grid | void defwSetGcellGridCbk (defwVoidCbkFnType) | defwGcellGridCbkType
Groups | void defwSetGroupCbk (defwVoidFnType) | defwGroupCbkType
History | void defwSetHistoryCbk (defwVoidCbkFnType) | defwHistoryCbkType
Nets | void defwSetNetCbk (defwVoidCbkFnType) | defwNetCbkType
Pins | void defwSetPinCbk (defwVoidCbkFnType) | defwPinCbkType
Pin Properties | void defwSetPinPropCbk (defwVoidCbkFnType) | defwPinPropCbkType
Property Definitions | void defwSetPropDefCbk (defwVoidCbkFnType) | defwPropDefCbkType
Regions | void defwSetRegionCbk (defwVoidCbkFnType) | defwRegionCbkType
Rows | void defwSetRowCbk (defwVoidCbkFnType) | defwRowCbkType
Special Nets | void defwSetSNetCbk (defwVoidCbkFnType) | defwSNetCbkType
Scan Chains | void defwSetScanchainCbk (defwVoidCbkFnType) | defwScanchainCbkType
Technology | void defwSetTechnologyCbk (defwVoidCbkFnType) | defwTechCbkType
Tracks | void defwSetTrackCbk (defwVoidCbkFnType) | defwTrackCbkType
Units | void defwSetUnitsCbk (defwVoidCbkFnType) | defwUnitsCbkType
Version | void defwSetVersionCbk (defwVoidCbkFnType) | defwVersionCbkType
Vias | void defwSetViaCbk (defwVoidCbkFnType) | defwViaCbkType

Return to top of page

For support, see Cadence Online Support service.
Copyright © 2016, Cadence Design Systems, Inc.
All rights reserved.