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?
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.
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
separationoperator should not generate any edge markers, is that right?Here, we have GUARD_RING_MK and Metal5 in the sealring. GUARD_RING_MK fully covers Metal5, and yet
separationgenerates edge markers.I tried to reproduce the same issue in a smaller DRC script, like this one:
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.lyrdbPlease let me know if you need any more information.