14 October 2020 at 09:23 #6263
Hello Nazca team,
I am facing a problem with the creating of a ring resonator device. The devices consists of rib waveguides so there are two layers: full thickness (blue) and partially etched (red).
My problem is that when creating the ring cell, the partially etched layer overlaps with the other, thus creating an issue with the rib waveguides of the ring and the bus close to the coupling region. The resulting GDS looks like in the first picture, but ideally I would like the highlighted sections of the second picture to be removed.
The title I have used is a bit vague because I am not sure what the best way to approach this problem would be.
I have tried to use the clipper operations from the example of https://nazca-design.org/inverted-mmi-creation/ and the Boolean operations in Klayout but I have not been successful so far because the priority I want is only local in those 2 highlighted sections, not global for the whole cells.
Any help or guidance will be greatly appreciated.
Thank you in advance.
Marios14 October 2020 at 11:20 #6265XaveerModerator
This is best done with a combination of nazca and klayout. Here is an example nazca script:
import nazca as nd nd.add_xsection("marios") nd.add_layer2xsection(xsection="marios", layer=1) nd.add_layer2xsection(xsection="marios", layer=2, growx=10) nd.add_layer2xsection(xsection="marios", layer=3, growx=12) marios = nd.interconnects.Interconnect(xs="marios", radius=100) marios.strt(length=200, width=2).put(-100, 0, 0) marios.bend(radius=100, angle=-45, width=1.5).put(0, -2.2, 0) marios.bend(radius=100, angle=45, width=1.5).put(0, -2.2, 180) nd.export_gds()
and the corresponding klayout script (save as “some_name.drc”):
# Run with: klayout -b -r some_name.drc source("nazca_export.gds") target("output.gds", "processed") # Input waveguide layer (and "heal" tiny gaps) wg = input(1).sized(1.nm).sized(-1.nm) red = input(2) blue = input(3) # Subtract waveguide from red layer and output blue and new red layers result = (red - wg) result.output(12) blue.output(13)
Run the latter script as argument to klayout from the command line:
“klayout -b -r some_name.drc” and your output will be in the output.gds file.
Xaveer14 October 2020 at 12:10 #6267
Thank you for your very prompt response.
Indeed this script seems to do exactly what I need!
I will try to incorporate it in my design and let you know if I face any issues.
Thank you very much, once again.
Marios16 October 2020 at 08:36 #6268
I was able to implement your idea in my design and it works very well.
However, I would prefer it if I could isolate this DRC script on specific cell(s).
Is this possible maybe when defining the source file on the DRC script, or elsewhere?
Maybe something like:
Thank you in advance.16 October 2020 at 09:17 #6269XaveerModerator
You can do almost anything with the DRC engine of Klayout. Please check the Klayout manuals on the website and the Klayout forum to find out.
It is possible to specify the cell in the source command:
will use that cell.
- You must be logged in to reply to this topic.