Home › Forums › Nazca › Specify gds layer number, and draw objects on the different gds layer numbers
Tagged: gds layer number
- This topic has 1 reply, 2 voices, and was last updated 3 years ago by Xaveer.
-
AuthorPosts
-
17 August 2021 at 19:28 #6560CameronMember
Very simple task: how do I draw different waveguides, each with their own specified dimensons, onto different specified gds layer numbers in a single cell, where I can see all layers overlapping?
For example, I want box 1 = 10 x 10 on gds layer 1, box 2 = 12 x 12 on gds layer 2, and box 3 = 14×14 on gds layer 3.
A related question: when I run this code and export the gds:
wgl=10
wgw=0.5
demo.shallow.strt(length=wgl, width=wgw).put(0)
It draws the structure I specified in layer #1, with the 10 x 0.5 dimensions. Then it adds a second layer #2 object bounding the layer #1 but with a greater width around the waveguide, but I have no control over that width or length, nor can I add a 3rd or 4th box? It makes no sense to me.
My goal is to simply draw multiple overlapping waveguides, each onto a different gds layer number which I specify, and each with a separate specified width and length. I’ve spent 2 hours and can’t figure out how to do this seemingly simple task.
Many, many thanks in advance for your help.
22 August 2021 at 17:32 #6564XaveerModeratorDear Cameron,
To start with the second question: what you see is the effect of the way “cross sections” are implemented.
This is done to have a single structure write all relevant layers, typically of a waveguide.
In demofab this is done for (in your example) the “Shallow” cross section. You can find the cross sections by calling
nd.show_xsections()
.You can see which layers are part of the cross sections by calling
nd.show_xsection_layer_map()
, which shows indeed that there are two layers: “Shallow” and “ShallowTrench” that get drawn, where the second is 8 microns wider than the first. The first is as wide as the specified width of the waveguide.How to work with cross sections is explained in tutorial https://nazca-design.org/xsections_and_layers/ and https://nazca-design.org/implement-a-cross-section/
To make use of this, a post-processing step may be needed in order to subtract one structure from the other. This is efficiently done in KLayout. See my answer to this post for some explanation: https://nazca-design.org/forums/topic/creating-priority-rule-for-overlapping-layers-in-specific-regions/
The answer to your first question is related: you can specify an absolute or relative “grow” in x and y to achieve what you want. This example will use an absolute grow.
import nazca as nd nd.add_layer(name="Main", layer=(1, 0), accuracy=0.001) nd.add_layer(name="Grow1", layer=(2, 0), accuracy=0.1) nd.add_layer(name="Grow2", layer=(3, 0), accuracy=0.1) nd.add_layer2xsection("Myxs", layer="Main") nd.add_layer2xsection("Myxs", layer="Grow1", growx=2, growy=2) nd.add_layer2xsection("Myxs", layer="Grow2", growx=4, growy=4) nd.strt(xs='Myxs', width=10, length=20).put() nd.export_gds()
Xaveer
-
AuthorPosts
- You must be logged in to reply to this topic.