pdaXsectionGridToLayerItem
is handled in this section where many map's can be defined.Each mapping adds a possibly modified copy using the widening or lengthening of the data to the respective gdslayer.
Structure
This element does not have elements. The attributes are shown below, in a sorted per type fashion.<map accuracy="..." lengthen="..." lengthen_OptoDesigner="..." pdkSelect="..." widen="..." widen_OptoDesigner="..." width="..." ... > ... </map>
XSD The schema file can be downloaded or viewed at xPDK_Base.
Details
Type pdaGDSlayerReference
Type pdaIdentifier
Identifiers are used in the Python library for the
getName()
and
setName()
function and can thus be used to identify the different elements in list
s.In text the specification is a letter, followed by letters, numbers, underscore. The XSD schema validation is a regular expression: [A-Za-z]([A-Za-z0-9_])*
accuracy
approximated and does not directly relate to a GDS database grid. For photonic waveguides the 0.001 default is typical, while metal routing can use a lower accuracy like 0.01 um.A rule of thumb is that each 10x more accurate approximation gives about 3x data size increase.
<!-- define GDS layers for the <map> sections -->
<layer name="layer1">
<gds_number>1</gds_number> <gds_datatype>0</gds_datatype>
</layer>
<!-- define MCS layers -->
<xsection name="WG">
<grid>
<map accuracy="0.1">layer1</map>
</grid>
</xsection>
Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
lengthen
xmlCodeBlock("examples/mcslayer_grid_lengthen.xml",17,2); ?> Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
lengthen_OptoDesigner
It can be width-dependent in OptoDesigner, for example to auto-taper a RF GSG track correctly. Other software may or may not have this capability, but if so, they can use this field also.For OptoDesigner the style should be one of:
- functor (preferred & fast option)
{functor= #+10.0}
. Here the # is the local waveguide width and this example shows a 10 um widening.
Using something like{functor= #*#+10.0*#+5}
would lead to a quadratic widening. - local function (more flexible / general)
{w -> w+ 10}
. You can use define your own variable name before the -> and can use any expression possible in OptoDesigner.
Note If both lengthen_OptoDesigner and lengthen are available, OptoDesigner will use only the former.
<!-- define GDS layers for the <map> sections -->
<layer name="layer1">
<gds_number>1</gds_number> <gds_datatype>0</gds_datatype>
</layer>
<!-- define MCS layers -->
<xsection name="WG">
<grid>
<map lengthen_OptoDesigner="{functor= #+4}">layer1</map>
<map lengthen_OptoDesigner="{functor= #^2+4}">layer1</map>
<map lengthen_OptoDesigner="{w -> cos(w)+4}">layer1</map>
</grid>
</xsection>
This is vendor specific and can be defined as functor {functor #} or expression {a -> f(a)} style. These are used in the lengthening and widening of curves for example.
pdkSelect
Type pdkSelect documentation: Use in layout.xml's to have a single foundry database, where you select layer/xsection/.. sub-sets for a given PDK.widen
xmlCodeBlock("examples/mcslayer_grid_widen.xml",17,2); ?> Type pdaExpression documentation:Expression need to be commonly evaluated by many software, so having a restricted set of math / types and so on is key. In PDAFlow lib2/expr there is a yacc/lex parser available with some unit support as well as double / complex expressions. An alternative is tinyexpr, but this is more restrictive, so may be very unhandy for things like waveguide model expressions.
widen_OptoDesigner
the curve.It can be width-dependent in OptoDesigner, for example to auto-taper a RF GSG track correctly. Other software may or may not have this capability, but if so, they can use this field also.
For OptoDesigner the style should be one of:
- functor (preferred & fast option)
{functor= #+10.0}
. Here the # is the local waveguide width and this example shows a 1 um widening.
Using something like{functor= #*#+10.0*#+5}
would lead to a quadratic widening. - local function (more flexible / general)
{w -> w+ 10}
. You can use define your own variable name before the -> and can use any expression possible in OptoDesigner.
<!-- define GDS layers for the <map> sections -->
<layer name="layer1">
<gds_number>1</gds_number> <gds_datatype>0</gds_datatype>
</layer>
<!-- define MCS layers -->
<xsection name="WG">
<grid>
<map widen_OptoDesigner="{functor= #+4}">layer1</map>
<map widen_OptoDesigner="{functor= #^2+4}">layer1</map>
<map widen_OptoDesigner="{w -> cos(w)+4}">layer1</map>
</grid>
</xsection>
This is vendor specific and can be defined as functor {functor #} or expression {a -> f(a)} style. These are used in the lengthening and widening of curves for example.