<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>KLayout Forum</title>
        <link>https://www.klayout.de/forum/</link>
        <pubDate>Fri, 24 Apr 2026 20:53:19 +0000</pubDate>
        <language>en</language>
            <description>KLayout Forum</description>
    <atom:link href="https://www.klayout.de/forum/discussions/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Layout sanity checks for IHP submission system</title>
        <link>https://www.klayout.de/forum/discussion/2869/layout-sanity-checks-for-ihp-submission-system</link>
        <pubDate>Thu, 23 Apr 2026 10:11:44 +0000</pubDate>
        <category>Layout</category>
        <dc:creator>Krzysztof</dc:creator>
        <guid isPermaLink="false">2869@/forum/discussions</guid>
        <description><![CDATA[<p>During our submission we have detected some issues related mainly to zero length path/polygons, what crushes our internal tools. <br />
We would like to develop some kind of layout sanity check in order to detect these cases and give the opportunity to the designer to correctly fix them.  Right now we heave this script;</p>

<pre><code>dry_run = true
eps = 1.dbu

layers.each do |spec, name|
  l = input(spec)
  l.raw.with_area(0).output("Zero-area polygon on #{name} (#{spec})")
  l.raw.edges.with_length(0).output("Zero-length edge on #{name} (#{spec})")
  l.raw.width(eps).output("Zero/near-zero width spike on #{name} (#{spec})")
  l.raw.notch(eps).output("Zero/near-zero gap notch on #{name} (#{spec})")
end

</code></pre>

<p>Unfortunately it does not detect this two cases: <br />
1. Path spike <code>Spike in path at location (2221.925,2907.7) in cell SoC7610 on layer 50 datatype 0.</code></p>

<pre><code>Path of width 1.02  on metal4 50/0 
2271.28000 2901.51500
2271.28000 2907.70000
2221.92500 2907.70000
2222.02500 2907.70000
</code></pre>

<ol start="2">
<li>Metal polygon</li>
</ol>

<pre><code>99.78500    12.30000
99.78500    43.46000
84.50500    43.46000
103.03500   43.46000
103.03500   43.26000
100.08000   43.26000
100.08000   12.30000
</code></pre>

<p>with the problematic point <code>84.50500    43.46000</code></p>

<p><a rel="nofollow" href="https://private-user-images.githubusercontent.com/141824113/571682642-07471284-1b7e-4abb-8089-63751d34007d.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzY5Mzg3MjQsIm5iZiI6MTc3NjkzODQyNCwicGF0aCI6Ii8xNDE4MjQxMTMvNTcxNjgyNjQyLTA3NDcxMjg0LTFiN2UtNGFiYi04MDg5LTYzNzUxZDM0MDA3ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNDIzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDQyM1QxMDAwMjRaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNzNlNTExNzk5MzI1OTQxZmQ5ODQxYmQ1ZjE2MDFmMTNlZmIwZDdhZWY4MmE4ZGFjNGE5NTJlZmY5YzNmZmQyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.kfOZofQnNs60DJzdimwetKrOEt3Xsk0q0h4iW_YuUqU">image</a></p>

<p>We suggest to save the layout with the option <code>"Eliminate zero-length paths (conver to BOUNDARY)"</code> but still it does not filter out all cases. <br />
Any suggestion on how we could proceed ?</p>
]]>
        </description>
    </item>
    <item>
        <title>Editor Options (F3) is not working in all 0.30.4 to 0.30.7 builds</title>
        <link>https://www.klayout.de/forum/discussion/2867/editor-options-f3-is-not-working-in-all-0-30-4-to-0-30-7-builds</link>
        <pubDate>Thu, 16 Apr 2026 08:13:57 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>merlos</dc:creator>
        <guid isPermaLink="false">2867@/forum/discussions</guid>
        <description><![CDATA[<p>Editor Options (F3) is not working in all 0.30.4 to 0.30.7 builds<br />
In 0.30.3 versions is working properly.<br />
That problem was presented ans solved in previous builds. I don't know if it is the same bug or not.</p>
]]>
        </description>
    </item>
    <item>
        <title>Change search box default setting in layer panel</title>
        <link>https://www.klayout.de/forum/discussion/2868/change-search-box-default-setting-in-layer-panel</link>
        <pubDate>Tue, 21 Apr 2026 05:43:56 +0000</pubDate>
        <category>Layout</category>
        <dc:creator>Yadong_Lian</dc:creator>
        <guid isPermaLink="false">2868@/forum/discussions</guid>
        <description><![CDATA[<p><img src="https://www.klayout.de/forum/uploads/editor/yf/cp2qtep6g35o.jpg" alt="" title="" /><br />
How to change default settings of these check boxes? For example, I'd like to make "Case sensitive search" uncheck and "Apply as filter" checked for default settings.</p>
]]>
        </description>
    </item>
    <item>
        <title>Editor Options showing empty in 0.30.5 version</title>
        <link>https://www.klayout.de/forum/discussion/2816/editor-options-showing-empty-in-0-30-5-version</link>
        <pubDate>Wed, 19 Nov 2025 08:45:22 +0000</pubDate>
        <category>Help wanted, Jobs wanted</category>
        <dc:creator>lyw123</dc:creator>
        <guid isPermaLink="false">2816@/forum/discussions</guid>
        <description><![CDATA[<p>Editor Options is not working, only press "move" button, it is appear editor options as usual.</p>
]]>
        </description>
    </item>
    <item>
        <title>New installation - KLayout doesn't run on macOS Monterey (Intel)</title>
        <link>https://www.klayout.de/forum/discussion/2675/new-installation-klayout-doesnt-run-on-macos-monterey-intel</link>
        <pubDate>Thu, 20 Feb 2025 01:08:48 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>SRF</dc:creator>
        <guid isPermaLink="false">2675@/forum/discussions</guid>
        <description><![CDATA[<p>Is there a current version of Klayout that can run on my Intel 2015 MacBook Pro running macOS Monterey?</p>

<p>I tried HW-klayout-0.29.11-macOS-Sonoma-1-qt5MP-RsysPhb311.dmg but this doesn't open - it only crashes when run (crash report window appears)</p>

<p>Next I tried ST-klayout-0.29.11-macOS-Ventura-1-qt5MP-RsysPsys.dmg  but nothing happens when I try to open this version of Klayout.</p>

<p>There are a vast number of *dmg files to pick from.   I have no idea what would run on my laptop.</p>
]]>
        </description>
    </item>
    <item>
        <title>Select and select filter</title>
        <link>https://www.klayout.de/forum/discussion/2866/select-and-select-filter</link>
        <pubDate>Fri, 10 Apr 2026 19:36:06 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2866@/forum/discussions</guid>
        <description><![CDATA[<p>Not sure if this problem has been reported already, I did not find anything about it, in the forum.<br />
klayout 30.4 the edit-&gt;select allows to set what object get selected. The problem is about 'enable all' and 'disable all' do not update the filters.<br />
filters = the objects that should be part of selection or not.</p>

<p>How to reproduce the problem</p>

<ol>
<li>enable all                (all filters are mark as active, everything is selectable)</li>
<li>disable instance    (all filters are mark as active but instance, work as expected instances are not selectable )</li>
<li>disable all               (all filters are mark as active but instance ! <strong>nothing is selectable</strong> )</li>
<li>enable all                (all filters are mark as active but instance !   everything is selectable )</li>
<li>enable instance     (all filters are mark as active,  <strong>instance are not selectable</strong>)</li>
</ol>

<p>After I few back and forward between 'enable/disable all' and filter selection, the meaning of the check mark<br />
on the filter is completely out of sync with what happen in the real layout.</p>

<p>I guess the intent was to have 'enable/disable all' to turn ON/OFF all the filters, then use the filter check mark to turn ON/OFF each<br />
individual object selection.</p>
]]>
        </description>
    </item>
    <item>
        <title>Klayout update</title>
        <link>https://www.klayout.de/forum/discussion/2864/klayout-update</link>
        <pubDate>Wed, 08 Apr 2026 05:56:34 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>jiunnweiyeh</dc:creator>
        <guid isPermaLink="false">2864@/forum/discussions</guid>
        <description><![CDATA[<p>Hi sir,<br />
When KLayout is updated to a new version, is there any kind of subscription that allows users to receive update notifications  or e-mail ?<br />
(So users can determine whether they need to update along with the new version.)</p>
]]>
        </description>
    </item>
    <item>
        <title>Questions about Libraries</title>
        <link>https://www.klayout.de/forum/discussion/2859/questions-about-libraries</link>
        <pubDate>Wed, 25 Mar 2026 12:18:43 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>jonathan</dc:creator>
        <guid isPermaLink="false">2859@/forum/discussions</guid>
        <description><![CDATA[<p>I can see that there is a library system in Klayout,<br />
<a href="https://www.klayout.de/doc-qt5/about/about_libraries.html" rel="nofollow">https://www.klayout.de/doc-qt5/about/about_libraries.html</a></p>

<p>I am researching if this could help me into what I am trying to achieve.<br />
My first target is to understand if this can enable to completely deconstruct/reconstruct (import/export) a layout into a library.<br />
Maybe you have already an answer to that, otherwise:</p>

<ul>
<li>is it possible in a library layout file  to have cells coming from itself</li>
<li>When a layout containing library references is saved, KLayout stores some meta information: does it also save the layout, or is it possible to not save the layout?</li>
<li>if both points are valid, when we import a cell from a library with a reference to another cell it is possible to have the full hierarchy ?</li>
<li>finally what is the format of the metadata, is there any python APIs to code it?</li>
</ul>

<p>Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>Returning value of : cell_name vs filename</title>
        <link>https://www.klayout.de/forum/discussion/2865/returning-value-of-cell-name-vs-filename</link>
        <pubDate>Thu, 09 Apr 2026 00:12:57 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2865@/forum/discussions</guid>
        <description><![CDATA[<p>Based on the documentation<br />
<a href="https://www.klayout.de/doc-qt5/code/class_CellView.html#h2-138" rel="nofollow">https://www.klayout.de/doc-qt5/code/class_CellView.html#h2-138</a></p>

<pre><code> [const]    string  cell_name       Gets the name of the target cell currently addressed
 [const]    string  filename        Gets filename associated with the layout behind the cellview
</code></pre>

<p><code>pya.LayoutView().current().active_cellview().cell_name -&gt; "test"</code><br />
expected</p>

<p><code>pya.LayoutView().current().active_cellview().filename -&gt; &lt;built-in method filename of CellView object at 0x7f2ff9f280d0&gt;</code><br />
not what I expected !</p>

<p>both are  '[const]  string' should both return a string ?</p>

<p>However <br />
<code>pya.CellView().active().filename() -&gt; test.GDS</code><br />
does what I was expecting from <br />
pya.LayoutView().current().active_cellview().filename</p>

<p>feature, bugs or missing something ?</p>
]]>
        </description>
    </item>
    <item>
        <title>Density for a layer</title>
        <link>https://www.klayout.de/forum/discussion/167/density-for-a-layer</link>
        <pubDate>Sun, 15 Apr 2012 15:40:54 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>okguy</dc:creator>
        <guid isPermaLink="false">167@/forum/discussions</guid>
        <description><![CDATA[It would be nice to have a module to be added in the menus to help us to calculate the density of a layer.<br />
Thanks to this module : http://www.klayout.de/useful_scripts.html#cell_bbox.rbm<br />
and this routine : klayout.de/forum/comments.php?DiscussionID=164<br />
<br />
But, I don't know how to make a window to select a layer to calculate its density :(<br />
<br />
Thanks,<br />
OkGuy]]>
        </description>
    </item>
    <item>
        <title>Unable to load the library cells using library_by_name</title>
        <link>https://www.klayout.de/forum/discussion/2862/unable-to-load-the-library-cells-using-library-by-name</link>
        <pubDate>Thu, 02 Apr 2026 16:35:24 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Niharika04</dc:creator>
        <guid isPermaLink="false">2862@/forum/discussions</guid>
        <description><![CDATA[<p>Hi,</p>

<p>I am trying to access library cells through python scripting. <br />
I can see the list of all libraries- when I use print(pya.Library.library_names())<br />
But when I try to access that library using pya.Library.library_by_name() it gives an output "None"<br />
The technology file was loaded using Tools--&gt; Manage Technologies, and is also copied in the "tech" and "salt" folders.<br />
How can I access this library through scriting. Please help!</p>

<p>Niharika</p>
]]>
        </description>
    </item>
    <item>
        <title>Reading Huge OASIS OOM</title>
        <link>https://www.klayout.de/forum/discussion/2861/reading-huge-oasis-oom</link>
        <pubDate>Mon, 30 Mar 2026 12:20:59 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>ryanke</dc:creator>
        <guid isPermaLink="false">2861@/forum/discussions</guid>
        <description><![CDATA[<p>Hi,</p>

<p>My current case would encounter OASIS &gt;500G, and for Klayout, when I do layout.read(), the memory basically uses &gt;10x the oasis file size.<br />
Is there a way to do streaming or another technique to deal with such huge memory usage scenario?</p>

<p>thx</p>
]]>
        </description>
    </item>
    <item>
        <title>DRC for via</title>
        <link>https://www.klayout.de/forum/discussion/2857/drc-for-via</link>
        <pubDate>Fri, 20 Mar 2026 00:27:38 +0000</pubDate>
        <category>Verification</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2857@/forum/discussions</guid>
        <description><![CDATA[<p>klayout 0.30.4</p>

<p>Implementing via check<br />
apparently klayout does not provide a check for via, in the sense the width is fix for instance 0.26um.</p>

<p>The obvious solution will be to check for size &gt; 0.26 and &lt; 0.26.</p>

<p>via1.drc(width &gt; 0.26).output("VIA1.W.1", "VIA1 width &gt; 0.26") (expected true if via width &gt; 0.26um) failed !<br />
via1.drc(width &lt; 0.26).output("VIA1.W.2", "VIA1 width &lt; 0.26") (expected true if via width &lt; 0.26um) works !<br />
or<br />
via1.drc(width != 0.26).output("VIA1.W.3", "VIA1 width != 0.26") (expected true if via width != 0.26um) failed !</p>

<p>projection, no help <br />
Does width work only for &lt; ?</p>

<p>if yes then there is some problem with these examples</p>

<p>errors = in.drc(width &lt; 0.2.um)<br />
errors = in.drc(width &lt;= 0.2.um)<br />
errors = in.drc(width &gt; 0.2.um)<br />
errors = in.drc(width &gt;= 0.2.um)<br />
errors = in.drc(width == 0.2.um)<br />
errors = in.drc(width != 0.2.um)<br />
errors = in.drc(0.1.um &lt;= width &lt; 0.2.um)</p>
]]>
        </description>
    </item>
    <item>
        <title>Pcell inside GDSII</title>
        <link>https://www.klayout.de/forum/discussion/2863/pcell-inside-gdsii</link>
        <pubDate>Thu, 02 Apr 2026 20:11:38 +0000</pubDate>
        <category>File Formats</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2863@/forum/discussions</guid>
        <description><![CDATA[<p>As far I remember GDSII does not support pcell but klayout use GDSII to store them.<br />
I guess it store the parameters with function/macro name used, with the hope that when the layout is opened back the macro is there.<br />
Is this correct ?<br />
Give that, is this GDSII still compatible with GDSII create by other tools ?</p>
]]>
        </description>
    </item>
    <item>
        <title>Ruler labels print far larger than they display</title>
        <link>https://www.klayout.de/forum/discussion/2860/ruler-labels-print-far-larger-than-they-display</link>
        <pubDate>Sun, 29 Mar 2026 01:07:29 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>dick_freebird</dc:creator>
        <guid isPermaLink="false">2860@/forum/discussions</guid>
        <description><![CDATA[<p>Using klayout to mess with some old survey DXFs,<br />
the ruler label text is set up sensibly but hard copy<br />
magnifies the ruler text by about 10X and looks a<br />
bit kooky.</p>

<p>What controls that scaling, for the print process? <br />
Other features look same-same vs display.</p>
]]>
        </description>
    </item>
    <item>
        <title>Box tool not snapping to text corners, but ruler does (KLayout 0.30.4)</title>
        <link>https://www.klayout.de/forum/discussion/2858/box-tool-not-snapping-to-text-corners-but-ruler-does-klayout-0-30-4</link>
        <pubDate>Mon, 23 Mar 2026 02:04:36 +0000</pubDate>
        <category>General</category>
        <dc:creator>zakaria</dc:creator>
        <guid isPermaLink="false">2858@/forum/discussions</guid>
        <description><![CDATA[<p>Hi everyone,</p>

<p>I’m working in KLayout (version 0.30.4) and running into a snapping issue that I can’t seem to resolve.</p>

<p>I need to draw rectangular boxes around some text. When I use the Ruler tool, it correctly detects edges/corner points of the text — the cursor changes and snaps precisely to those points.</p>

<p>However, when I switch to the Box tool, the cursor does not snap to those same points, and I cannot accurately align the box to the text corners.</p>

<p>On another machine (work PC), KLayout does snap correctly when drawing boxes, so I believe this functionality exists but may depend on some configuration, mode, or template setting.</p>

<p>Can anyone please tell me how to fix this. Any guidance would be greatly appreciated.</p>

<p>Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>How to get the current layer used in the GUI ?</title>
        <link>https://www.klayout.de/forum/discussion/2854/how-to-get-the-current-layer-used-in-the-gui</link>
        <pubDate>Tue, 17 Mar 2026 00:32:30 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2854@/forum/discussions</guid>
        <description><![CDATA[<p>I am trying to code a simple script that detect what is the active layer in the menu<br />
and use it to draw some polygon. (in this case it should be POLY1 )</p>

<p><img src="https://www.klayout.de/forum/uploads/editor/43/ezvj4enpt4h3.png" alt="" title="" /></p>

<p>I thought I can find something inside 'current_view()'</p>

<p>pya.Application.instance().main_window().current_view()</p>

<p>it seems I cannot find anything useful at this level</p>

<p>I tried to examine the content of</p>

<p>pya.Application.instance().main_window().current_view().begin_layers()</p>

<p>(with this simple script, that print some property of the layer, like : valid,.visible ...)</p>

<p>print("\n\nbegin_layers")<br />
ap=pya.Application.instance().main_window().current_view().begin_layers()<br />
while not ap.at_end() :<br />
 cur=ap.current()<br />
 print(cur)<br />
 print(cur.name,cur.valid,cur.visible)<br />
 ap.next()</p>

<p>Still nothing is telling what is the current active layer in the gui (may is there but I do not know how to access)<br />
I also trying a "promising" LayerInfo(),  pya.LayerInfo(), apparently intuition does not help.<br />
I am on the wrong track...</p>
]]>
        </description>
    </item>
    <item>
        <title>How to use DRC to find gaps due to non-manhattan ports connection?</title>
        <link>https://www.klayout.de/forum/discussion/2856/how-to-use-drc-to-find-gaps-due-to-non-manhattan-ports-connection</link>
        <pubDate>Thu, 19 Mar 2026 08:50:27 +0000</pubDate>
        <category>Help wanted, Jobs wanted</category>
        <dc:creator>Loïc_</dc:creator>
        <guid isPermaLink="false">2856@/forum/discussions</guid>
        <description><![CDATA[<p>Hi</p>

<p>I have recently tried to detect gaps which can appear in our gds files (generated by gdsfactory) when we have an instance with a non-manhattan rotation (neither half-mahattan) to which we connect another instance.<br />
The kind of artifacts we would get are gaps which are around 0.2-0.8nm long (DBU=1nm) as it can be seen in the following image:<br />
<img src="https://www.klayout.de/forum/uploads/editor/la/szlh6o8dbk3p.png" alt="" title="" /><br />
The unzoomed image is:<br />
<img src="https://www.klayout.de/forum/uploads/editor/jk/ka4xgzhot59c.png" alt="" title="" /></p>

<p>For finding them, I tried the following script</p>

<pre><code>LAYER = input(400, 0)
threshold = 0.005
merged = LAYER.merged
closed = merged.sized(threshold).sized(-threshold)
issues = closed.not(LAYER)
# Then output either to report or layer, whatever
</code></pre>

<p>However the issues layer I have at the end is not covering the gaps at all if they're too small, or weirdly if large enough (which works sufficiently for my use case I'd say)<br />
Also a side effect of using this sized method is that the <code>issues</code> layer tend to appear here and there on the edges of my non-manhattan oriented polygons</p>

<p>From my understanding all of this happens due to the points snapping on the grid as precisely as possible and thus producing those artifacts.<br />
Is there any other way I could try to detect them? I can provide more examples if needed.</p>

<p>Thanks</p>
]]>
        </description>
    </item>
    <item>
        <title>Setters for the Netlist Database Browser</title>
        <link>https://www.klayout.de/forum/discussion/2851/setters-for-the-netlist-database-browser</link>
        <pubDate>Mon, 09 Mar 2026 13:12:55 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>openorchestrator_dev</dc:creator>
        <guid isPermaLink="false">2851@/forum/discussions</guid>
        <description><![CDATA[<p>Hi everyone,</p>

<p>I am currently working on a Python Macro that can receive probes for Nets or Cells from a Schematic Editor by the name specified in the netlist.</p>

<p>I am resolving the name using the .lvsdb and would theoretically only need to set the selection to the corresponding  NetlistObjectsPath.</p>

<p>The documentation tells me that both selected_paths and current_path are setters (moving either one would work for my purpose).</p>

<p>Is there any workaround that would allow me to set the selected path in the Netlist Database Browser like a mouse click would without altering the C++ code?</p>

<p>Thank you very much in advance!</p>
]]>
        </description>
    </item>
    <item>
        <title>How to fracture or decompose shapes into pure rectangles instead of trapezoids?</title>
        <link>https://www.klayout.de/forum/discussion/2855/how-to-fracture-or-decompose-shapes-into-pure-rectangles-instead-of-trapezoids</link>
        <pubDate>Wed, 18 Mar 2026 01:49:12 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>Flyingmyd</dc:creator>
        <guid isPermaLink="false">2855@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>I am currently trying to fracture and decompose non-orthogonal shapes (such as circles or polygons with slanted edges) into purely orthogonal rectangles.</p>

<p>I have already tried using the decompose_trapezoids() and decompose_convex() methods via the Python API. However, they do not quite achieve what I am looking for.</p>

<p>What I actually want to achieve is a "staircase" approximation. As shown in the attached image, I am looking for a result where the shape is filled with a maximum inner rectangle (main field), and the curved edges are approximated by smaller, stepped rectangles (sub-fields).</p>

<p>(Please see the attached image for my desired output)</p>

<p>My questions are:<br />
Is there any built-in method or parameter in KLayout that can enforce decomposition into pure rectangles?<br />
If not natively supported, what would be the recommended approach or workaround using Python scripts?</p>

<p>Any guidance or code snippets would be greatly appreciated. Thank you in advance!</p>
]]>
        </description>
    </item>
    <item>
        <title>Drc spacing based on layer connectivity</title>
        <link>https://www.klayout.de/forum/discussion/2852/drc-spacing-based-on-layer-connectivity</link>
        <pubDate>Mon, 09 Mar 2026 20:25:57 +0000</pubDate>
        <category>Verification</category>
        <dc:creator>alto</dc:creator>
        <guid isPermaLink="false">2852@/forum/discussions</guid>
        <description><![CDATA[<p>It is common to have rules that depend upon the layer connectivity. Very common is NWELL spacing based on same net or different net.<br />
Does Kayout support this check ?</p>
]]>
        </description>
    </item>
    <item>
        <title>DRC scripts, reports and parallelism</title>
        <link>https://www.klayout.de/forum/discussion/2839/drc-scripts-reports-and-parallelism</link>
        <pubDate>Mon, 19 Jan 2026 10:55:49 +0000</pubDate>
        <category>Verification</category>
        <dc:creator>Scafir</dc:creator>
        <guid isPermaLink="false">2839@/forum/discussions</guid>
        <description><![CDATA[<p>Hi,</p>

<p>Hope you are doing well,</p>

<p>In the context of gf180, I've been experimenting with DRC, how to make it faster and improve quality of life from a GUI user point of view.<br />
My initial issue was the speed of the DRC deck. For a somewhat simple full chip design, deep DRC, I was getting run times of more than 20 minutes on my beefy computer when starting the DRC from the GUI.<br />
I knew that there should be some way to improve this, because CPU utilization was generally low, albeit with some large spikes. That gave me the feeling that the process was memory-bound instead of cpu bound.<br />
The gf180 pdk (same with IHP) also provides a python utility, where each file was run in its own klayout process. This considerably improves speed (~5x), but suffers from a few issues:<br />
1) Each run generates its own reports, checking for DRC clean is a nightmare<br />
2) General layers have to be recomputed each time. While this does not always result in longer run time depending on number of cores, it is a certain limitation. Moreover, the general layers are duplicated in ram for each process, causing a larger memory usage.</p>

<p>I've experimented a bit and implemented my own <a rel="nofollow" href="http://https://github.com/wafer-space/gf180mcu/pull/26" title="DRC approach">DRC approach</a> to try and solve both issues. It is implemented fully in ruby using forks, and has great performance (similar performance as the python script with untapped potential and less RAM usage).</p>

<p>Here are the currently issues preventing it from being merged to upstream PDK</p>

<h3>GUI Cancel</h3>

<p>Due to something in QT/graphics driver panicking when joining threads in GUI, I have to run the forking script in a klayout batch mode process. This means that (1) the project has to be saved to disk before running DRC, but more importantly that (2) there are currently no way of canceling a DRC run from the GUI.<br />
(2) is because it seems there are no cancel flags exposed from the C++ to ruby API. From my understanding, the cancel action causes the C++ side DRC calculation function to throw an exception, which is caught from ruby. In my case, I do not think I can use this approach in a clean manner.</p>

<h3>Report merging and report files</h3>

<p>My first issue with drc reports is that there is currently no way of obtaining one without creating a file. That means that in case of parallel DRC runs, I have to create one temporary file per run, which is not so clean. I implemented a basic functionality allowing to get reports as a string rather than a file <a rel="nofollow" href="http://https://github.com/Scafir/klayout/tree/rdb_string" title="here">here</a>, but I don't think it is very good. I then reverted to using files.</p>

<p>My second and bigger issue is that there is no way of merging report files together, so that it is presented cleanly in the GUI report view.  In the present case, we only need a simple approach, as we are guaranteed that the top cell of all report files is the same. I've implemented this outside klayout <a rel="nofollow" href="https://github.com/Scafir/gf180mcu/blob/c7974dc75c8c2f14526f64c81a5fe0a591cb8017/gf180mcuD/libs.tech/klayout/tech/drc/parallel_rule_checker.rb#L21">here</a>. Beware, that specific part is mainly AI (goal was proof of concept).</p>

<h3>Conclusion</h3>

<p>Do you think that this approach to DRC is sane?<br />
How would you see the cancel functionality implemented? Is there some way I did not think of, or new functionality is need on the klayout side?<br />
Same thing with the report file merging. If you guide me a bit (where to implement this function), I could try to make an MR.</p>

<p>Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>Map layer and datatype before writing a GDS</title>
        <link>https://www.klayout.de/forum/discussion/2853/map-layer-and-datatype-before-writing-a-gds</link>
        <pubDate>Tue, 10 Mar 2026 08:43:00 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>klayanoob</dc:creator>
        <guid isPermaLink="false">2853@/forum/discussions</guid>
        <description><![CDATA[<p>Hi everyone,</p>

<p>I am asking some help, because there is something that I can do using the GUI of klayout but I want to do it using a python script.<br />
Using the GUI in edit mode, I read a GDS, I go to Edit/Layer/Edit Layer Specification and I update the layer number and datatype of some layer before writing down a new GDS.</p>

<p>However I did not success to do it using a script in batch mode.<br />
The first thing I tried was to use a 'layer_map' from 'LoadLayoutOptions' but I do not retrieve the new layer in the written GDS.<br />
Then I thought I need to copy the layer content in a newly created layer and then remove the old layer. It could works but the thing is I would like to map many datatype layers into the same datatype (for example layer 4.0, 4.1 and 4.2 became 16.0). In that case, does that mean I should perform a boolean operation to get that unique layer ?</p>

<p>Should I dig in the 'layer_map' solution ? Should I switch to OR operation solution ? Or is there another wy to do it ? <br />
Thank you for your help</p>

<p>Note : Here is a trial with layer map</p>

<pre><code>import pya as kl

ly = kl.Layout()
option = kl.LoadLayoutOptions()
option.layer_map.map("*/* : *+12/0", 0)
ly.read("my_file.gds", option)
## Display layer and datatype
for layer_idx in ly.layer_indexes():
  info = ly.get_info(layer_idx)
  print("Layer "+info.name+" : ",info.layer, info.datatype)

ly.write("my_new_file.gds.gz")
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>KLayout Does Not Launch on Windows After Installation</title>
        <link>https://www.klayout.de/forum/discussion/2850/klayout-does-not-launch-on-windows-after-installation</link>
        <pubDate>Fri, 06 Mar 2026 02:06:22 +0000</pubDate>
        <category>Help wanted, Jobs wanted</category>
        <dc:creator>Hun</dc:creator>
        <guid isPermaLink="false">2850@/forum/discussions</guid>
        <description><![CDATA[<p>I am currently using a computer running the Windows operating system and using KLayout to convert DXF files to GDS files. However, after installing KLayout on this computer, the program does not launch when I try to run it (there is no response). I would like to ask how to resolve this issue.</p>
]]>
        </description>
    </item>
    <item>
        <title>How to get the transfom of each instance to its refered cell</title>
        <link>https://www.klayout.de/forum/discussion/2849/how-to-get-the-transfom-of-each-instance-to-its-refered-cell</link>
        <pubDate>Fri, 27 Feb 2026 07:17:18 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>sysubeing</dc:creator>
        <guid isPermaLink="false">2849@/forum/discussions</guid>
        <description><![CDATA[<p><img src="https://www.klayout.de/forum/uploads/editor/3s/kbs5pzck5hoj.jpg" alt="" title="" /><br />
I have a layout with such hierarchy. How can I get the transfom of each instance to its refered cell(e.g. K01, K02) in python script?</p>
]]>
        </description>
    </item>
    <item>
        <title>Using an exclusion layer in DRC</title>
        <link>https://www.klayout.de/forum/discussion/2848/using-an-exclusion-layer-in-drc</link>
        <pubDate>Thu, 26 Feb 2026 00:57:07 +0000</pubDate>
        <category>Verification</category>
        <dc:creator>remco</dc:creator>
        <guid isPermaLink="false">2848@/forum/discussions</guid>
        <description><![CDATA[<p>Dear support,</p>

<p>I'm using KLayout (version 0.30.1 on Linux) for the DRC.<br />
In photonics, some layers can have complex structures (many curves), and running a DRC on these structures can take many hours (&gt;24 hours), and it is not uncommon that KLayout crashes in the end (because out of memory (&gt;96 GB)).<br />
Therefor, we want to exclude certain areas in a layer from the DRC.<br />
(Even for simple structures, this is necessary because for finding overlaps of polygons within a single layer, it is sometimes allowed to have overlaps at specific locations. In photonics, 2 waveguides in the same layer may sometimes cross each other. So, we want to exclude these areas also from the DRC.)</p>

<p>So, I create a new layer, and place some polygons (the exclusion areas) in it. And I do the DRC check on</p>

<p>layer.not(exclusion_layer)</p>

<p>But this doesn't work, because after the boolean NOT operation, the layer is in 'clean' state, and this causes problems finding the overlaps.</p>

<p>Let me explain this with an example.</p>

<p>The left red cross in the layout are 2 straights (a horizontal and a vertical) in the same layer (layer 1).<br />
I find the overlap with:</p>

<p>layer1 = input(1)<br />
layer1.merged(2).output("Overlap layer1")</p>

<p>This gives the expected overlap.</p>

<p>The right purple 'double' cross in the layout are 2 horizontal straights, and these straights overlap with a vertical straight. These 3 straights are in layer 2. When I run the same check again (without using an exclusion layer), I get 2 overlaps (as expected) Call this the 'top-overlap' and the 'bottom-overlap'.</p>

<p>layer2 = input(2)<br />
layer2.merged(2).output("Overlap layer2")</p>

<p>Now add the exclusion layer (layer 24, green).</p>

<p>exclusion_layer = input(24)</p>

<p>When I run the last overlap test again, I want to find the 'top-overlap', but not the 'bottom-overlap', because the exclusion layer has created a 'hole' at that spot.</p>

<p>layerEx = layer2.not(exclusion_layer)<br />
layerEx.merged(2).output("Overlap layer2 with exclusion layer")</p>

<p>But this doesn't work. The 'bottom-overlap' is gone (good!), but the 'top-overlap' is also gone (bad!).<br />
I discovered that the boolean NOT operation creates a layer in the CLEAN state (the merging has already been<br />
done by the NOT operation). (Calling merged(2) on an already merged layer is pointless.)</p>

<p>layer2.not(exclusion_layer).is_merged?  returns true.</p>

<p>I tried the following, but that didn't work:</p>

<p>layerExRawRaw = input(2).raw.not(input(24).raw)<br />
layerExRawRaw.merged(2).output("Overlap layer2 (RawRaw) with exclusion layer")</p>

<p>How do I use an exclusion layer that only creates 'holes' in another layer, while leaving the rest of that layer unchanged (the layer remains in raw-state)?</p>

<p>(We also need this exclusion layer for other checks than the overlap check.)</p>

<p>Thanks,  Remco</p>

<p>Remark: I also have the GDS file and the DRC file, but this forum blocks uploading these files. The "Attach file" only allows uploading images, which is the same as the "Attach image" button. Looks like a bug?</p>

<p><img src="https://www.klayout.de/forum/uploads/editor/9h/6u3so77lvgpn.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>vscode and klayout</title>
        <link>https://www.klayout.de/forum/discussion/2846/vscode-and-klayout</link>
        <pubDate>Sat, 14 Feb 2026 11:33:10 +0000</pubDate>
        <category>Python scripting</category>
        <dc:creator>99happyman80</dc:creator>
        <guid isPermaLink="false">2846@/forum/discussions</guid>
        <description><![CDATA[<p>Hi I'm Erik <br />
I want to do python coding by using vscode envirionment with Klayout <br />
How can i do for that?</p>
]]>
        </description>
    </item>
    <item>
        <title>Missing polygon point after substraction of two rectangles leads to &quot;flagging&quot; artefact</title>
        <link>https://www.klayout.de/forum/discussion/2847/missing-polygon-point-after-substraction-of-two-rectangles-leads-to-flagging-artefact</link>
        <pubDate>Mon, 23 Feb 2026 11:08:30 +0000</pubDate>
        <category>Layout</category>
        <dc:creator>ChristianP</dc:creator>
        <guid isPermaLink="false">2847@/forum/discussions</guid>
        <description><![CDATA[<p>When I substract or XOR two rectangles, Klayout transforms this into a polygon with a hole, as shown in the sketch below. I added the numbers to show the order of the polygon points for this example. When I now apply a rotation to the polygon, a small gap along the line between points 2 and 3 appears. I assume this is due to snapping of the points to the grid, which leads to slightly different angles for the lines 2-3 vs. 6-7.<br />
This "flagging" artefact could be overcome if point 3 was included as an additional point between 6 and 7. Is there a way to tell KLayout to do so in the substraction algorithm?<br />
Thanks for any assistance with this.</p>

<p><img src="https://www.klayout.de/forum/uploads/editor/sg/k71e5cqv29wg.png" alt="" title="" /></p>

<p><img src="https://www.klayout.de/forum/uploads/editor/si/hqesv6jgbfxv.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Change Font size</title>
        <link>https://www.klayout.de/forum/discussion/1104/change-font-size</link>
        <pubDate>Mon, 06 Aug 2018 20:56:56 +0000</pubDate>
        <category>General</category>
        <dc:creator>mchase</dc:creator>
        <guid isPermaLink="false">1104@/forum/discussions</guid>
        <description><![CDATA[<p>Ok, This is a dumb question. Somehow I changed the size of the fonts in the menu item, layer list items, Navigator... The normal windows menu text is unchanged.</p>

<p>Not sure how to get it back down to a reasonable size. Any suggestions?</p>

<p>Thanks Mike<img src="https://www.klayout.de/forum/uploads/editor/27/d4vxhwcyjg6o.jpg" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Hide markers frames</title>
        <link>https://www.klayout.de/forum/discussion/2844/hide-markers-frames</link>
        <pubDate>Mon, 09 Feb 2026 14:44:21 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>mikamar</dc:creator>
        <guid isPermaLink="false">2844@/forum/discussions</guid>
        <description><![CDATA[<p>Hi-</p>

<p>I noticed that on latest versions (i tried on 0.30.5), markers frames always show when adding a marker to LayoutView (0.28.5 does not do that).<br />
Is there a way to turn off marker frames?<br />
I also tried to set the frame color to be the same as the background color but it sets both the marker and the frame.</p>

<p>Thanks!</p>

<pre><code>def addTextMarker(self,layoutView, x,y,string,color):
  m = pya.Marker(layoutView)
  bgColor = pya.QColor(layoutView.get_config("background-color"))
  m.color = color.red*65536 + color.green*256 + color.blue
  m.frame_color = bgColor.red*65536 + bgColor.green*256 + bgColor.blue      
  m.set_text(pya.DText(string,pya.DTrans(pya.DPoint(x,y))))   
  m.line_width = 10
</code></pre>
]]>
        </description>
    </item>
   </channel>
</rss>
