Skip to content

Potential regression in KLayout 0.30.10 #2423

Description

@mole99

Hi Matthias,

When upgrading from KLayout 0.30.9 to 0.30.10, I suddenly see violations in a layout where there were none before.

The changelog for 0.30.10 shows a number of bug fixes, so it's possible that this is wrong behavior that has been fixed.
But if a layer is fully covered by another layer, then the separation operator should not generate any edge markers, is that right?

Image

Here, we have GUARD_RING_MK and Metal5 in the sealring. GUARD_RING_MK fully covers Metal5, and yet separation generates edge markers.

2026-08-17 15:16:08 +0200: Memory Usage (484752K) : DRC RESULT: FAILURE (24 violation(s))
2026-08-17 15:16:08 +0200: Memory Usage (484752K) : Violated Rules:
2026-08-17 15:16:08 +0200: Memory Usage (484752K) :   'GR.2'               :    24 violation(s)
2026-08-17 15:16:08 +0200: Memory Usage (484752K) : # DRC Total Run time 0.241625524 seconds

I tried to reproduce the same issue in a smaller DRC script, like this one:

report("A simple script")

deep

guard_ring_mk = input(167, 5)
metal = input(81, 0)

gr2_l1 = metal.separation(guard_ring_mk, 10.um)
gr2_l1.output('GR.2', "GR.2 : Min GUARD_RING_MK space to prime die Metal5: 10")

Unfortunately, I cannot trigger it this way. Therefore, I have packaged a reproducible with the full gf180mcu DRC runner.

You can find it here: reproducible_klayout_0_30_10.zip
To start the DRC, simply run: klayout -b -r gf180mcu.drc -rd input=sealring.gds -rd decks="guard_ring" -rd report=report.lyrdb

Please let me know if you need any more information.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions