Disconnected waveguides DRC


I am new in Macro Development in Klayout, as such, my code skills here are rudimental.

I need to write a simple DRC that at the end can check if there is any disconnected waveguides and tell me how much and where the violation occurs, since in some complex draws I can not check all waveguides (cells) one by one to see if everything is connected!

I am trying in Macro Development, DRC part to write something that would give me this output, however I am getting errors.

I thought that writing out this output: layer.space(value [, options]))

report("Check gaps between waveguides")
input(1).space(0um, projection).output("Violation","Gap between waveguides higher than 0µm.")

However it does not run and gives me error (unexpected tIdentifier..)

Can you please help me to understand and what/how should I write such code to be able to get if there is gaps in my structure?

Thank you in advance.
Best regards


  • Hi,

    "0um" is not a valid specification that's why the error happens. Unit and value have to be separated by a dot.

    You cannot check "disconnection" by a space check, except if you have a threshold. A space check will detect spaces and if lets say, 10nm is regarded a "disconnection, but not intended space" you can check this by "space(10.nm, ...)". And note the dot between 10 and "nm".


  • Hi,

    I assume you have a waveguide to waveguide design rule. You can use the spacing design rule to check for disconnections.

    input(1).isolated(0.50.um).output("Violation", "Gap between waveguides less than 0.5µm.")

    Where the assumed design rule is 0.5um spacing (I am just making up this number)

    Note1: per documentation, the isolated check is "space" check across separate polygons.
    Note2: a space check or isolated check is checking for space less than what you have specified.


  • Hi Matthias and Vikas,

    Thank you for your input.
    I've tried your examples and none of the options work in my example layout. Maybe I am not understanding well the concept of space nor isolated...

    I've tried both in the .GDS file attached (I deleted some waveguides in the spiral to have a big gap):

    report("Check waveguides width")

    inlayer = input(5, 0)
    inlayer.isolated(0.50.nm).output("WG_iso", "Gap between waveguides less than 0.50 nm.")
    inlayer.space(0.50.nm).output("WG_space","Gap between waveguides higher than 0.50 nm.")

    Do you know what am I doing wrong?

    Thank you once again.


  • This link got removed ...

    You cannot just replace um by nm and except it will work. The problem is: how do you define a gap? If gap for you is something "small", than you can define a distance threshold and try to detect every situation in which there is a space less than this threshold.

    In every technology there is such a threshold: the minimum space that can be manufactured. I was guessing that this value is 0.5.um (= 500nm). If your technology has a different threshold, use this value. I doubt that it is 0.5.nm.

    Please take a look into the DRC documentation for some introduction into DRC (https://www.klayout.de/doc-qt4/manual/drc.html).


Sign In or Register to comment.