pdaSingleLayerOPS
Define single layer operations.Single layer operations are grouped in design rule checking (DRC) and derived layer operations.
Single layer "derived"
For general comments - please refer to multi layer operations.Some "single layer derived" layers are shown here.
<layer name="layer1">
<gds_number>1</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="10" G="20" B="30"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>3</gds_number>
<gds_datatype>8</gds_datatype>
<grid>0.01</grid>
<purpose>Deeper and deeper</purpose>
<!-- not making sense, just to show the setuip -->
<layerSize extentSize="2.0" A="layer1">
<msg>sizing</msg>
</layerSize>
<layerGrow growSize="2.0" A="layer1">
<msg>grow</msg>
</layerGrow>
<layerShrink shrinkSize="2.0" A="layer1">
<msg>shrinking</msg>
</layerShrink>
</layer>
Design rule checking
For general comments - please refer to Multi layer DRC.In short - be careful with the layer operations to make sure your DRC deck runs fast enough. And talk with your software partners to implement rules.
A simple exapmle is shown here.
<layer name="layer1">
<gds_number>1</gds_number>
<gds_datatype>0</gds_datatype>
<purpose>Waveguide layer</purpose>
<!-- DRC -->
<drcConvex/>
<drcMinSpace rule="R1" value="0.2"><doc>Min dist between gides</doc></drcMinSpace>
</layer>
Structure
This element does not have attributes. The elements are shown below, in a sorted per type fashion.In case a list is printed after an element, it indicates that you can have many, otherwise it should be a single element. With a optional it tells the element is not required.
<SingleLayerOps> ...
<countLayer> ... </countLayer> list
<doc> ... </doc> optional
<drcAngleCheck> ... </drcAngleCheck> list
<drcConvex> ... </drcConvex> list
<drcGlobalDensity> ... </drcGlobalDensity> list
<drcLocalDensity> ... </drcLocalDensity> list
<drcMaxArea> ... </drcMaxArea> list
<drcMaxVertices> ... </drcMaxVertices> list
<drcMaxWidth> ... </drcMaxWidth> list
<drcMinArea> ... </drcMinArea> list
<drcMinCornerSpacing> ... </drcMinCornerSpacing> list
<drcMinCornerWidth> ... </drcMinCornerWidth> list
<drcMinNotch> ... </drcMinNotch> list
<drcMinSpace> ... </drcMinSpace> list
<drcMinVertices> ... </drcMinVertices> list
<drcMinWidth> ... </drcMinWidth> list
<drcNoOverlap> ... </drcNoOverlap> list
<drcShortEdgeCheck> ... </drcShortEdgeCheck> list
<drcSingularPoint> ... </drcSingularPoint> list
<layerGrow> ... </layerGrow> list
<layerNot> ... </layerNot> list
<layerOr> ... </layerOr> list
<layerShrink> ... </layerShrink> list
<layerSize> ... </layerSize> list
<tex> ... </tex> optional
</SingleLayerOps>
XSD The schema file can be downloaded or viewed at xPDK_Layout.
Details
countLayer
Select polygons in the layer specified by A, where the overlap count is the same as given by the attribute count.This operation splits the layer in polygons that are not overlapping; so all unique polygons. For each of these polygons it counts in how many "source" polygons this unique polygon is in the given layer; if it matches the count then in the output layer you will see the unique polygon.
For example if you want to see where exactly 2 polygons in A overlap, use count=2. Attributes: count.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_countLayer.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
doc
This field can be a reasonable text (many paragraphs) to document the layer operations in more detail. This is often helpful to give an idea of the layer logic, in particular when complex DRC rules are defined. Your colleques will be happy if it is easy to follow what happens.Type pdaDocumentation documentation: Document anything relevant for the topic you want to define.
This field allows some (short, few lines) documentation to be written. It can be a long string, but the idea is not to replace a design manual.
This fields is like
tex
which allows documentation in LaTex format; doc
is restricted to plain text.drcAngleCheck
Validate sharp angles.Calculate edge-edge angle values on all (healed) polygons and validate they are in the specified range. The attribuites Amax and Amin should be set, the defaults are 75.0 and 285.0 degrees.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcAngleCheck.xml
drcConvex
This test ensures that all polygons can easily be splitted using any polygon splitter.For convex polygons many algorithms exist that are slower or less reliable for concave polygons, so if you need to do further GDS processing, you can test this.
The algoritms that split up polygons is examples of this, but the code in OptoDesigner supports concave polygons also. Splitting up polygons is needed for large polygons as GDSII is very limited - polygon size is limited to roughly 4000 points, which is often not enough for healed (waveguide / metal) layers. So even a single large bend may already be more.
This operation performs a layer-heal first, so polygons are merged prior to the test.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcConvex.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcGlobalDensity
The polygon density per layer can be important for a uniform process. This tests performs the density check on the complete layer.Attributes:
- MinDensity Use a fraction (0-1) to define the minimum density, default 0.45.
- MaxDensity Use a fraction (0-1) to define the maximum density, default 0.55.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcGlobalDensity.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcLocalDensity
The density per layer can be important for a uniform process. This version of the test checks density per area.Attributes:
- width(in um)
- length(in um)
- MinDensity Use a fraction (0-1) to define the minimum density, default 0.45.
- MaxDensity Use a fraction (0-1) to define the maximum density, default 0.55.
- windowStep(in um, default half the width)
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcLocalDensity.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMaxArea
Validate the maximum area of (healed) polygons.This test is oriented at process steps where loading-effects occur; therefore the area should not be too big, to avoid bad etch behaviouir.
Value is the maximum area (um^2).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMaxArea.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMaxVertices
Ensure that polygons have a maximum amount of vertices.N is the maximum amount of vertices
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMaxVertices.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMaxWidth
Validate the line width of (healed) polygons.This is often used to make sure that waveguides or metal tracks are not causing loading-effects, see also drcMaxAreas. This ensures reliable processing.
Value is the maximum width (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMaxWidth.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinArea
Validate the minimum area of polygons.This test allows to make sure polygons survive processing and should thus not be too small.
Value is the minimum area (um^2).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinArea.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinCornerSpacing
Validate the space between two corners on the same layer.Value is the minimum corner spacing (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinCornerSpacing.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinCornerWidth
Test the width of a corner.Value is the minimum corner width (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinCornerWidth.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinNotch
Test for the minimum space between the outer boundaries of a single polygon on the layer.Value is the minimum notch (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinNotch.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinSpace
Validate the space between (healed) polygons.This test is needed to make sure the etched lines are homogenous; in too thin tracks etching becomes different then.
Value is the minimum space (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinSpace.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
Value is the minimum space (um) between the centers.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinSpace.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinVertices
Ensure that polygons have a minimum amount of vertices.N is the minimum amount of vertices
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinVertices.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcMinWidth
Validate the line width of (healed) polygons.This is often used to make sure that waveguides or metal tracks are mechanically stable and can be processed reliably.
Value is the minimum width (um).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcMinWidth.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcNoOverlap
Ensure that a layer is not self-overlapping.Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcNoOverlap.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcShortEdgeCheck
Check edge length.This checks all (healed) polygon edges for a certain length. This can be specified with attribute minLength (in um, default 0.1).
The maxAngle attribute (degree, default 45).
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcShortEdgeCheck.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
drcSingularPoint
Ensure that no singular points are there.Singular points (two polygons touching each other in a single point) are typically not allowed in foundries as such sharp points can not be produced. Therefor the results on chip is not as intended.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_drcSingularPoint.xml
<purpose>Waveguide layer</purpose>
<color R="100" G="200" B="255"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
layerGrow
Grow the source layer.A layerGrow is a "round / ellips" operation. Attributes: growSize (in um, default 1.0), grid (in um, default 0.001) and numpointsperbend (>=3)
Output to this layer.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_layerGrow.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
layerNot
Perform the NOT operation on the source layer. Attributes: dx, dy (in um, default 1.0).Output to this layer.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_layerNot.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
layerOr
Perform the OR operation on a series of layers.Output to this layer.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_layerOr.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Software B</purpose>
<color R="255" G="200" B="100"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer3">
<gds_number>3</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Software C</purpose>
<color R="100" G="255" B="100"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layerTgt">
<gds_number>10</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Output</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
<layerOr>
<layer>layer1</layer>
<layer>layer2</layer>
<layer>layer3</layer>
</layerOr>
</layer>
<xsection name="Software_A">
<color R="100" G="200" B="255"/>
<grid>
<map accuracy="0.01">layer1</map>
</grid>
</xsection>
<xsection name="Software_B">
<color R="255" G="200" B="100"/>
<grid>
<map accuracy="0.01">layer2</map>
</grid>
</xsection>
<xsection name="Software_C">
<color R="100" G="255" B="100"/>
<grid>
<map accuracy="0.01">layer3</map>
</grid>
</xsection>
layerShrink
Shrink the source layer.A layerShrink is a "manhattan" operation. Attributes: shrinkSize, grid, numpointsperbend.
Output to this layer.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_layerShrink.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
layerSize
Size the source layer.A layerSize is a "manhattan" operation. Attributes: extentSize (um, default 1.0), grid (in um, default 0.001) and numpointsperbend (>=3)
Output to this layer.
Download the xsl/xml/xsd's and run the (bash) command line below to convert the XML to a SPT example in OptoDesigner (see short docu):
xsltproc --xinclude -stringparam standalone true -stringparam example drc0 xPDK_toOptoDesigner02.xsl layer_layerSize.xml
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>
</layer>
<layer name="layer2">
<gds_number>2</gds_number>
<gds_datatype>0</gds_datatype>
<grid>0.001</grid>
<purpose>Waveguide layer</purpose>
<color R="255" G="20" B="20"/>
<visible>true</visible>
<fillstyle>NOFILL</fillstyle>
<linestyle>fill</linestyle>