20
CDBA Photonics Functions
This chapter includes the following topics:
You need the Virtuoso_Photonics_Option license with Virtuoso_MultiTech_Framework (95022) to use the functionality discussed in this section. For more information, see License Checkout for Virtuoso Photonics Platform in
Photonics Functions
This section covers the photonics functions:
- dbGetPhotonicPinFigAngle
- dbGetPhotonicPinFigRadius
- dbGetPhotonicPinFigWidth
- dbIsPhotonicsEnabled
- dbCellViewHasPhotonicPinFig
- dbSetPhotonicPinFigAngle
- dbSetPhotonicPinFigRadius
- dbSetPhotonicPinFigWidth
- dbUnsetPhotonicPinFigAngle
- dbUnsetPhotonicPinFigRadius
- dbUnsetPhotonicPinFigWidth
Virtuoso_Photonics_Option license to use the functionality discussed in this section. For information about obtaining the required license, contact your local Cadence representative.dbGetPhotonicPinFigAngle
Boolean
dbGetPhotonicPinFigAngle( dbFigIdfigId, float *value);
Description
Returns the attribute value of the angle for the specified photonics pinFig.
Arguments
Return Value
|
|
|
|
|
Example
dbGetPhotonicPinFigAngle(figId, rtnValuePtr)
=> true
The attribute value of the angle for the photonic pinFig figId is retrieved.
dbGetPhotonicPinFigRadius
Boolean
dbGetPhotonicPinFigRadius( dbFigIdfigId, int *value);
Description
Returns the attribute value of the radius for the specified photonics pinFig.
Arguments
Return Value
|
|
|
|
|
Example
dbGetPhotonicPinFigRadius(figId, rtnValuePtr)
=> false
The pinFig figId is not a photonic pinFig or the radius attribute is not set.
dbGetPhotonicPinFigWidth
Boolean
dbGetPhotonicPinFigWidth( dbFigIdfigId, unsigned int *value);
Description
Returns the attribute value of the width for the specified photonics pinFig.
Arguments
Return Value
|
|
|
|
|
Example
dbGetPhotonicPinFigWidth(figId, rtnValuePtr)
=> true
The attribute value of the width for the photonic pinFig figId is retrieved.
dbIsPhotonicsEnabled
dbIsPhotonicsEnabled( );
Description
Confirms whether the photonics-related functionality is enabled.
Arguments
Return Value
dbCellViewHasPhotonicPinFig
Boolean
dbCellViewHasPhotonicPinFig(
dbCellViewId cvId
);
Description
Checks whether the specified cellview has a photonic pinFig.
Arguments
Return Value
|
|
Example
dbCellViewHasPhotonicPinFig(cvId)
=> true
The cellview cvId contains a photonic pinFig.
dbSetPhotonicPinFigAngle
Boolean
dbSetPhotonicPinFigAngle( dbFigIdfigId,floatvalue);
Description
Sets the given attribute value as the angle of the photonic for the specified pinFig.
Arguments
Return Value
|
|
|
Example
dbSetPhotonicPinFigAngle(figId, value)
=> true
The attribute value of the angle for the photonic pinFig figId is set to value.
dbSetPhotonicPinFigRadius
Boolean
dbSetPhotonicPinFigRadius( dbFigIdfigId, intvalue);
Description
Sets the given attribute value as the radius of the photonic for the specified pinFig.
Arguments
Return Value
|
|
|
Example
dbSetPhotonicPinFigRadius(figId, value)
=> false
The attribute value of the radius for the pinFig figId is not set. This may imply that figId is not a photonic pinFig or the cellview that contains figId is not a layout cellview type.
dbSetPhotonicPinFigWidth
Boolean
dbSetPhotonicPinFigWidth( dbFigIdfigId, unsigned intvalue);
Description
Sets the given attribute value as the width of the photonic for the specified pinFig.
Arguments
Return Value
|
|
|
Example
dbSetPhotonicPinFigWidth(figId, value)
=> true
The attribute value of the width for the specific pinFig figId is set to value.
dbUnsetPhotonicPinFigAngle
Boolean
dbUnsetPhotonicPinFigAngle(
dbFigId figId
);
Description
Resets the attribute value of the angle for the specified photonics pinFig.
Arguments
Return Value
|
|
|
Example
dbUnsetPhotonicPinFigAngle(figId)
=> true
The attribute value of the angle for the photonic pinFig figId is reset.
dbUnsetPhotonicPinFigRadius
Boolean
dbUnsetPhotonicPinFigRadius(
dbFigId figId
);
Description
Resets the attribute value of the radius for the specified photonics pinFig.
Arguments
Return Value
|
|
|
Example
dbUnsetPhotonicPinFigRadius(figId)
=> false
The attribute value of the radius for the pinFig figId is not reset. This implies that figId is not a photonic pinFig.
dbUnsetPhotonicPinFigWidth
Boolean
dbUnsetPhotonicPinFigWidth(
dbFigId figId
);
Description
Resets the attribute value of the width for the specified photonics pinFig.
Arguments
Return Value
|
|
|
Example
dbUnsetPhotonicPinFigWidth(figId)
=> true
The attribute value of the width for the photonic pinFig figId is reset.
Curvy Core Functions
Curvy shapes are building blocks of photonic devices such as ring resonators, waveguide bends, and Bragg gratings. You can use these C functions to get information related to existing CurvyCore objects.
This section describes the following curvy core functions.
- Functions to Check Curvy Core Objects
- Functions to query object attributes
- Generator functions
- Miscellaneous Functions
Functions to Check Curvy Core Objects
ccIsBoundary
Boolean
ccIsBoundary(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccBoundary object.
Arguments
Return Value
|
|
ccIsCurve
Boolean
ccIsCurve(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccCurve object.
Arguments
Return Value
|
|
ccIsFacet
Boolean
ccIsFacet(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccFacet object.
Arguments
Return Value
|
TRUE if the specified object is a ccFacet object. FALSE if the specified object is not a ccFacet object, or if an error occurred. |
ccIsLine
Boolean
ccIsLine(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccLine object.
Arguments
Return Value
|
TRUE if the specified object is a ccLine. FALSE if the specified object is not a ccLine object, or if an error occurred. |
ccIsMath
Boolean
ccIsMath(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a mathematical object, such as ccCurve, ccFacet, ccPolyCurve, or ccBoundary.
Arguments
Return Value
|
TRUE if the specified object is a mathematical object. FALSE if the specified object is not a mathematical object, or if an error occurred. |
ccIsPath
Boolean
ccIsPath(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccPath object.
Arguments
Return Value
|
TRUE if the specified object is a ccPath object. FALSE if the specified object is not a ccPath object, or if an error occurred. |
ccIsPolyCurve
Boolean
ccIsPolyCurve(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccPolyCurve object.
Arguments
Return Value
|
TRUE if the specified object is a ccPolyCurve object. FALSE if the specified object is not a ccPolyCurve object, or if an error occurred. |
ccIsPolyCurveSegment
Boolean
ccIsPolyCurveSegment(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccPolyCurve segment object, such as ccCurve or ccFacet.
Arguments
Return Value
|
TRUE if the specified object is a ccPolyCurve segment object. FALSE if the specified object is not a ccPolyCurve segment object, or if an error occurred. |
ccIsShape
Boolean
ccIsShape(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccShape object, such as ccPath, ccLine, or ccSurface.
Arguments
Return Value
|
TRUE if the specified object is a ccShape object. FALSE if the specified object is not a ccShape object, or if an error occurred. |
ccIsSurface
Boolean
ccIsSurface(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Checks whether the specified CurvyCore object is a ccSurface object.
Arguments
Return Value
|
TRUE if the specified object is a ccSurface object. FALSE if the specified object is not a ccSurface object, or if an error occurred. |
Functions to query object attributes
ccGetCurveSpec
ccCurveSpec
ccGetCurveSpec(
ccCurveId curveId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the curve specification for the specified ccCurve ID.
Arguments
Return Value
|
A ccCurveSpec object with curve data. The function allocates memory for the strings in the specifications in format (.x, .y). Returns a STRUCT filled with zeros and no memory is allocated. |
ccGetFacetSpec
ccFacetSpec
ccGetFacetSpec(
ccFacetId facetId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the facet specifications from the given ccFacet ID.
Arguments
Return Value
ccGetFromFig
ccShapeId
ccGetFromFig(
dbShapeId shapeId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the CurvyCore shapes for the specified database shape.
Arguments
Return Value
ccGetPathBeginFacet
ccFacetId
ccGetPathBeginFacet(
ccPathId pathId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the beginning facet of the specified ccPath object.
Arguments
Return Value
ccGetPathBoundary
ccBoundaryId
ccGetPathBoundary(
ccPathId pathId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the boundary of the specified ccPath as a ccBoundary.
Arguments
Return Value
ccGetPathCenterLine
ccPolyCurveId
ccGetPathCenterLine(
ccPathId pathId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the centerLine of the specified ccPath as an open polyCurve.
Arguments
Return Value
ccGetPathWidths
ccPathWidthSpec
ccGetPathWidths(
ccPathId pathId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the width specifications for the specified ccPath.
Arguments
Return Value
|
A ccPathWidthSpec object with width data. This function allocates memory for the strings in the width specification.
Use ccFreePathWidths to free the strings after the procedure is complete.
Returns a STRUCT filled with zeros and no memory is allocated. |
ccGetPathEndFacet
ccFacetId
ccGetPathEndFacet(
ccPathId pathId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the ending facet of the specified ccPath object.
Arguments
Return Value
ccGetPolyCurve
ccPolyCurveId
ccGetPolyCurve(
ccLineId lineId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the mathematical polyCurve of the given ccLine.
Arguments
Return Value
ccGetSurfaceBoundary
ccBoundaryId
ccGetSurfaceBoundary(
ccSurfaceId surfaceId
);
Description
(ICADVM20.1 Photonics Only) Retrieves the boundary of the specified ccSurface as a ccBoundary.
Arguments
Return Value
Generator functions
ccGenOAShape
Boolean
ccGenOAShape( ccGenState *pstate, dbShapeId *id);
Description
(ICADVM20.1 Photonics Only) Retrieves the ID of the next OpenAccess shape from the specified ccGenState created by ccStartGenOAShape.
Arguments
|
ID of the next OpenAccess shape produced by the generator. This value is undefined if |
Return Value
ccGenPolyCurveSegment
Boolean
ccGenPolyCurveSegment( ccGenState *pstate, ccMathId *id, ccTransform *xform);
Description
(ICADVM20.1 Photonics Only) Retrieves the ID of the next polyCurve segment and related ccTransform (in case of Facet segment) from the specified ccGenState created by ccStartGenPolyCurveSegment.
Arguments
Return Value
ccGenSurfaceHole
Boolean
ccGenSurfaceHole( ccGenState *pstate, ccBoundaryId *id);
Description
(ICADVM20.1 Photonics Only) Retrieves the ID of the next ccBoundaryId (hole) from the specified ccGenState created by ccStartGenSurfaceHole.
Arguments
|
Pointer to the memory location where ID of the next ccBoundaryId produced by the generator will be written. |
Return Value
ccStartGenOAShape
ccGenState
ccStartGenOAShape(
ccShapeId shapeId
);
Description
(ICADVM20.1 Photonics Only) Creates and initializes a generator for all OpenAccess shapes with the OpenAccess geometry of the specified shape. A generator state is returned, which is used with the ccGenOAShape.
Arguments
Return Value
|
State ID for the generator, which is: .type = ccIdGenTypeOAShape, In case of error, the following is returned: .type = ccIdGenTypeNone, |
ccStartGenPolyCurveSegment
ccGenState
ccStartGenPolyCurveSegment(
ccMathId pcId
);
Description
(ICADVM20.1 Photonics Only) Creates and initializes a generator for all the segments of the specified ccPolyCurve or ccBoundary. A generator state is returned, which is used with the ccGenPolyCurveSegment.
Arguments
Return Value
|
State ID for the generator, which is: .type = ccIdGenTypePolyCurveSegment, In case of error, the following is returned: .type = ccIdGenTypeNone, |
ccStartGenSurfaceHole
ccGenState
ccStartGenSurfaceHole(
ccSurfaceId surfaceId
);
Description
(ICADVM20.1 Photonics Only) Creates and initializes a generator for all the holes of the specified ccSurface. A generator state is returned, which is used with the ccGenSurfaceHole.
Arguments
Return Value
|
State ID for the generator, which is: .type = ccIdGenTypeSurfaceHole, In case of error, the following is returned: .type = ccIdGenTypeNone, |
ccStopGen
void
ccStopGen(
ccGenState *pstate
);
Description
(ICADVM20.1 Photonics Only) Clears the specified ccGenState data. At the end of a generator loop, you must call the ccStopGen function to end generation. This frees the generator state.
Arguments
Return Value
Miscellaneous Functions
ccFreePathWidths
void
ccFreePathWidths(
const ccPathWidthSpec *pathSpec
);
Description
(ICADVM20.1 Photonics Only) Frees the memory allocated for the given ccPathWidthSpec data. This function is often used by ccGetPathWidths.
Arguments
Return Value
ccReleaseObject
void
ccReleaseObject(
ccId id
);
Description
(ICADVM20.1 Photonics Only) Releases the object specified by the ccID. Additionally:
- For mathematical objects, such as ccCurve, ccFacet, ccPolyCurve, ccBoundary, it frees the underlying object. Therefore, for every call of a function that provides ID, such as ccGetPolyCurve and ccGen* there should be a matching ccReleaseObject call.
- For ccShapes, ccReleaseObject decreases the reference count by 1, so for every ccGetFromFig call there should be a matching ccReleaseObject call.
Arguments
Return Value
Waveguide Functions
This section covers the following topics and waveguide functions.
- Structs in the Waveguide Infrastructure
- Enumerated Types and Enumerated Constants used in the Waveguide Infrastructure
- techAllocWaveguideModePropArray
- techAllocWGDerivedShapeSpecArray
- techCreateWaveguideDef
- techDeleteWaveguideDef
- techFindWaveguideDef
- techFreeWaveguideModePropArray
- techFreeWGDerivedShapeSpecArray
- techGenWaveguideDef
- techGetWaveguideDefDerivedShapeSpecs
- techGetWaveguideDefLayer
- techGetWaveguideDefMinBendRadius
- techGetWaveguideDefMinWidth
- techGetWaveguideDefName
- techGetWaveguideDefPurpose
- techStartGenWaveguideDef
- techHasWaveguideDefMinBendRadius
- techSetWaveguideDefMinBendRadius
- techUnsetWaveguideDefMinBendRadius
Virtuoso_Photonics_Option license to use the functionality discussed in this section. For information about obtaining the required license, contact your local Cadence representative.Structs in the Waveguide Infrastructure
techWGDerivedShapeSpec
Enumerated Types and Enumerated Constants used in the Waveguide Infrastructure
Waveguide side direction
| Direction | Enumerated constants |
|---|---|
Waveguide derived shape type
Waveguide enclosure value type
techAllocWaveguideModePropArray
techWGModeProperty*
techAllocWaveguideModePropArray(
unsigned int numProps
);
Description
Allocates memory for the techWGModeProperty array. All members of the array are initialized to zero or NULL.
Arguments
|
Number of techWGModeProperty specifications that can fit in the allocated memory. |
Return Value
techAllocWGDerivedShapeSpecArray
techWGDerivedShapeSpec*
techAllocWGDerivedShapeSpecArray(
unsigned int numSpecs
);
Description
Allocates memory for the techWGDerivedShapeSpec array. All members of the array are initialized to zero or NULL.
Arguments
|
Number of WGDerivedShape specifications that can fit in the allocated memory. |
Return Value
techCreateWaveguideDef
techWaveguideDefId
techCreateWaveguideDef( techFileIdtechfile, constStringname, techLayerNumlayerNum, techPurposepurposeNum, dbDistanceminWidth, dbDistanceminBendRadius, unsigned intnumShapeSpecs, const techWGDerivedShapeSpec *shapeSpecs, const techWGModePropertySpec *modeProperties );
Description
Creates a waveguideDef in the specified technology file and returns its ID.
Arguments
|
Database ID of the technology file in which the waveguideDef object is to be created. |
|
|
Number of shape specifications to create the waveguideDef object. |
|
Return Value
|
ID of the new |
|
techDeleteWaveguideDef
Boolean
techDeleteWaveguideDef(
techWaveguideDefId wgDefId
);
Description
Deletes the specified waveguideDef.
Arguments
Return Value
techFindWaveguideDef
techWaveguideDefId
techFindWaveguideDef( techFileIdtechfile, techLayerNumlayerNum, techPurposepurposeNum);
Description
Searches for the specified waveguideDef object in the given technology database and returns its ID.
Arguments
Return Value
|
ID of the waveguideDef object, if found.
Returns |
|
techFreeWaveguideModePropArray
void
techFreeWaveguideModePropArray( unsigned intnumProps, techWGDModeProperty *props);
Description
Frees the memory allocated for a techWGModeProperty array.
Arguments
Return Value
techFreeWGDerivedShapeSpecArray
void
techFreeWGDerivedShapeSpecArray( unsigned intnumSpecs, techWGDerivedShapeSpec *specs);
Description
Frees the memory allocated for a techWGDerivedShapeSpec array.
Arguments
Return Value
techGenWaveguideDef
Boolean
techGenWaveguideDef( techGenStateIdpState, techWaveguideDefId *wgDefId);
Description
Retrieves the ID of the next waveguideDef object from the generator with the specified pState. ID of the waveguideDef is returned in wgDefId.
Arguments
|
ID of the next waveguideDef object produced by the generator. This value is undefined if |
Return Value
|
|
techGetWaveguideDefDerivedShapeSpecs
void
techGetWaveguideDefDerivedShapeSpecs( techWaveguideDefIdwgDefId, unsigned int *numShapeSpecs, techWGDerivedShapeSpec **shapeSpecs);
Description
Retrieves the derivedShapeSpecs for the specified waveguideDef object.
Arguments
|
Pointer to the memory area where the array of derivedShapeSpecs is placed. |
Return Value
techGetWaveguideDefLayer
techLayerNum
techGetWaveguideDefLayer(
techWaveguideDefId wgDefId
);
Description
Returns the layer number of the specified waveguideDef object.
Arguments
Return Value
techGetWaveguideDefMinBendRadius
dbDistance
techGetWaveguideDefMinBendRadius(
techWaveguideDefId wgDefId
);
Description
Returns the minimum bend radius of the specified waveguideDef object.
Arguments
Return Value
techGetWaveguideDefMinWidth
dbDistance
techGetWaveguideDefMinWidth(
techWaveguideDefId wgDefId
);
Description
Returns the minimum width of the specified waveguideDef object.
Arguments
Return Value
techGetWaveguideDefName
String
techGetWaveguideDefName(
techWaveguideDefId wgDefId
);
Description
Returns the name of the specified waveguideDef object.
Arguments
Return Value
techGetWaveguideDefPurpose
techPurpose
techGetWaveguideDefPurpose(
techWaveguideDefId wgDefId
);
Description
Returns the purpose number of the specified waveguideDef object.
Arguments
Return Value
techStartGenWaveguideDef
techGenStateId
techStartGenWaveguideDef(
techFileId techfile
);
Description
Initializes a generator for all the waveguideDef objects in the specified technology file. A generator state ID is returned, which is used with the techGenWaveguideDef function.
Arguments
Return Value
techHasWaveguideDefMinBendRadius
Boolean
techHasWaveguideDefMinBendRadius( techWaveguideDefId wgDefId, );
Description
Checks if the specified waveguideDef object has the minimum bend radius.
Arguments
Return Value
|
|
techSetWaveguideDefMinBendRadius
Boolean
techSetWaveguideDefMinBendRadius( techWaveguideDefIdwgDefId, dbDistanceminBendRadius);
Description
Sets the minimum bend radius of the specified waveguideDef object.
Arguments
Return Value
techUnsetWaveguideDefMinBendRadius
Boolean
techUnsetWaveguideDefMinBendRadius(
techWaveguideDefId wgDefId
);
Description
Unsets the minimum bend radius of the specified waveguideDef object.
Arguments
Return Value
Return to top