<?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 Development — KLayout</title>
        <link>https://www.klayout.de/forum/</link>
        <pubDate>Fri, 13 Mar 2026 07:37:51 +0000</pubDate>
        <language>en</language>
            <description>KLayout Development — KLayout</description>
    <atom:link href="https://www.klayout.de/forum/categories/klayout-development/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>Drag objects with a single click</title>
        <link>https://www.klayout.de/forum/discussion/2837/drag-objects-with-a-single-click</link>
        <pubDate>Fri, 09 Jan 2026 11:55:49 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2837@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I'm using several handles for PCells and it's getting a bit bothersome to keep doing a second click to apply transformations.<br />
I understand the philosophy behind why to do it this way (I read it somewhere in the docs a while ago), like being useful to move things around and allow for comfortable pan/zoom.</p>

<p>I saw others asking for the same, so I'd like to propose 2 different solutions which I think either would make everyone happy:</p>

<ul>
<li>Config toggle to change behaviour of the "Move" mode</li>
<li>Smart handling of the event:

<ul>
<li>If the user does a <code>click: down → up</code>, behave like currently</li>
<li>If the user does a <code>click: down → drag → up</code>, apply the transformation right away</li>
</ul></li>
</ul>

<p>I think 2nd option would be best for seamless workflow and user practicality. I doubt any user is doing <code>click: down → drag → up → down → up</code> without the intention of applying the transformation on the first <code>up</code>.<br />
A <code>drag threshold</code> or <code>click timer</code> may be added to not consider <code>drag</code> a very small movement of mice and/or "user intention" when clicking fast.</p>

<p>Thanks!</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>Feasibility and Approach for Opening GDSII Files in KLayout via Plugin</title>
        <link>https://www.klayout.de/forum/discussion/2834/feasibility-and-approach-for-opening-gdsii-files-in-klayout-via-plugin</link>
        <pubDate>Fri, 19 Dec 2025 09:38:01 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>simransingh14</dc:creator>
        <guid isPermaLink="false">2834@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Team,</p>

<p>We have a requirement where a GDSII file is stored in our application, and the file needs to be opened in KLayout directly.</p>

<p>Our approach is to develop a KLayout plugin that will:</p>

<ol>
<li><p>Authenticate and create a session with the application via REST APIs.</p></li>
<li><p>Download the GDSII file locally.</p></li>
<li><p>Programmatically load the file into KLayout.</p></li>
</ol>

<p>Please let us know:</p>

<ol>
<li><p>If this use case is supported via KLayout plugins.</p></li>
<li><p>Any recommended guidelines or steps for implementing this integration.</p></li>
</ol>

<p>Thanks,<br />
Simran</p>
]]>
        </description>
    </item>
    <item>
        <title>KLayout DRC .space() algorithm</title>
        <link>https://www.klayout.de/forum/discussion/2833/klayout-drc-space-algorithm</link>
        <pubDate>Wed, 17 Dec 2025 11:48:58 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>katherine</dc:creator>
        <guid isPermaLink="false">2833@/forum/discussions</guid>
        <description><![CDATA[<p>Hello!</p>

<p>I have a question about implementing a method for checking the minimum distance between geometries on the same layer.</p>

<p>Recently, I ran a script to check spacing between shapes on a layer using the .space() method, and I wanted to implement a similar algorithm in C++. I couldn't find a description of this algorithm in the repository, so I'm asking for help with its implementation. As far as I know, it uses a sweep-line algorithm and compares edges.</p>

<p>Currently, I'm trying to use an approach that checks distances between cells: first determining if cells are close to each other, then checking distances between geometries inside them (currently using min/max coordinates). The problem arises when working with the GDSII format because I don't know how to properly parse geometries considering transformations (offsets, rotations, mirrors) without excessive copying, which requires a lot of memory.</p>

<p>I tried to build the project in Visual Studio but didn't succeed. I would like to know where in the KLayout source code the implementation of the space() function is located so I can write a similar educational algorithm. I'm interested in how you handle such complex topology hierarchy.</p>
]]>
        </description>
    </item>
    <item>
        <title>ERROR: Signal number: 11 Address: 0x0 Program Version: KLayout 0.28.12 (2023-09-12 r8212b7c)</title>
        <link>https://www.klayout.de/forum/discussion/2400/error-signal-number-11-address-0x0-program-version-klayout-0-28-12-2023-09-12-r8212b7c</link>
        <pubDate>Mon, 23 Oct 2023 19:01:10 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>gkamendje</dc:creator>
        <guid isPermaLink="false">2400@/forum/discussions</guid>
        <description><![CDATA[<p>I sometime get the following error message while closing some windows or when leaving Klayout.<br />
ERROR: Signal number: 11<br />
Address: 0x0<br />
Program Version: KLayout 0.28.12 (2023-09-12 r8212b7c)</p>

<p>Backtrace:<br />
/usr/lib64/klayout/libklayout_lay.so.0 +0x291ebe lay::enable_signal_handler_gui(bool) [??:?]<br />
/lib64/libpthread.so.0 +0xf630 __restore_rt [sigaction.c:?]</p>

<p>Crash log written to ./klayout_crash.logmake</p>

<p>I am running on CentOS<br />
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch<br />
Distributor ID: CentOS<br />
Description:    CentOS Linux release 7.9.2009 (Core)<br />
Release:        7.9.2009<br />
Codename:       Core</p>
]]>
        </description>
    </item>
    <item>
        <title>how to create a layer properties file &quot;.lyp&quot;?</title>
        <link>https://www.klayout.de/forum/discussion/2811/how-to-create-a-layer-properties-file-lyp</link>
        <pubDate>Wed, 05 Nov 2025 13:45:08 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>cwings</dc:creator>
        <guid isPermaLink="false">2811@/forum/discussions</guid>
        <description><![CDATA[<p>Hi:<br />
  I load a gds file with klayout, the layer shows gds number. I need a layer properties file to get the layer name, but how to create such a layer properties file?</p>

<p>I have the layermap file for Virtuoso, where defines the map between layer name/purpose and gds number, like showing below:<br />
M1               drawing                  15          0                 OASISLayerName:M1                                                # M1</p>

<p>Is here an automatic way to generate .lyp file? I don't care about the color/strippe/style, just want to get layer name instead of gds number.</p>

<p>Thanks.</p>
]]>
        </description>
    </item>
    <item>
        <title>PCell tweaking UI/UX issues, ideas &amp; proposals</title>
        <link>https://www.klayout.de/forum/discussion/2813/pcell-tweaking-ui-ux-issues-ideas-proposals</link>
        <pubDate>Fri, 07 Nov 2025 18:13:22 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2813@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>Lately I've been working with PCells and these are awesome.<br />
I got used to working with them by drag-dropping an instance from the library, double-clicking and tweaking properties from the "Object Properties window".<br />
I have some comments about the workflow that are somewhat annoying, and couldn't figure out an obvious way to circumvent.<br />
I listed them in no special order, in a hopefully easy to digest format:</p>

<ol>
<li><p>Keep "Editor Options" for created instances</p>

<ul>
<li>When creating a new PCell, a very convenient view "Editor Options-PCell" is available to be used before placing a PCell.</li>
<li><strong>Proposal</strong> → Keep the view operative when selecting an instance/PCell and allow further tweaking from it.</li>
<li><em>Benefits</em> → Avoids opening "Object Properties" every time a PCell is tweaked || Reserves opening "Objects Properties" for a more involved parameter insertion.</li>
<li>Technicalities: It could add overhead to the software, and the "Editor Options" would be updating every time something is selected, and I understand it could be distracting.</li>
</ul></li>
<li><p>Object Properties window gets in the way</p>

<ul>
<li>From time to time, while using "Object Properties" I'd like to pan/zoom the Layout so I can see better the resulting PCell.</li>
<li>The Layout seems to be unresponsive while "Object Properties" is open, and then the main KLayout window is made active, leaving "Object Properties" window behind.</li>
<li>It kills the flow to have to go find the "Object Properties" window buried under the main KLayout every time that happens.</li>
<li><strong>Proposal</strong> → Make "Object Properties" always-on-top in a KLayout instance</li>
<li><strong>Proposal</strong> → Allow Layout mouse pan/zoom while "Object Properties" window is present</li>
<li><strong>Proposal</strong> (not as convinced) → Dynamically change contents of "Object Properties" window if another PCell/instance is selected || If (1.) is done, this shouldn't be as interesting.</li>
<li>Technicalities: This would require to open the window in another thread, something I'm not sure easly doable or not. If another "Object Properties" were to be opened, I would automatically close the previous one to avoid confusion.</li>
</ul></li>
<li><p>Object Properties with custom positioning of PCell parameters</p>

<ul>
<li>Currently parameters are displayed in a vertical sequence.</li>
<li>This is completely fine for the "Editor Options-PCell" view as it has to be narrow</li>
<li>But for wider views like extending the "Editor Options" view or in "Object Properties", there's much space unused, and it's a nuance to scroll down the list of parameters.</li>
<li><strong>Proposal</strong> → Implement system to customize arrangement of parameters, be it HTML/CSS/XML style, table style, Qt injections, etc. Ideally it should be responsive to width changes, but horizontal scrollbar is fine (not so much for Edit Object narrow view, but that's on PCell developer, not KLayout's).</li>
<li><p>It would be also very useful to have some kind of built-in/intended delimeters, setting margins or proper labels to organize the parameters. Currently I'm using a readonly text field:<br />
<img src="https://www.klayout.de/forum/uploads/editor/42/1djyzaum5o2s.png" alt="" title="" /></p></li>
<li><p>Of course sliders, images and other widgets would be much welcome too.</p></li>
<li>Technicalities: It would be a very involved KLayout development</li>
</ul></li>
<li><p>Parameter changing callbacks (kind of discussed <a rel="nofollow" href="https://www.klayout.de/forum/discussion/2785/callback-impl-pass-through-value-changes#latest" title="here">here</a>)</p>

<ul>
<li>When implementing PCells, sometimes I would find it useful/convenient for them to be able to read and expose data from the current Layout.</li>
<li><strong>Proposal</strong> → Having a callback button capable of rewritting or updating a list of items in a drop-down list for example would be very useful.</li>
<li><em>Benefits</em> → For this usecase, it would make "typeLayer" much less obscure, as it's exposing data relative to Layout, unavailable to expose otherwise.</li>
<li>Technicalities: Could cause infinite loops if used wrong, but I guess that's always a possibility with custom code.</li>
</ul></li>
</ol>

<p>Hopefully this list helps to come up with ideas to improve UX of KLayout.</p>

<p>Thank you very much!</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>Use PCell's &quot;display_text&quot; when converting PCell to static</title>
        <link>https://www.klayout.de/forum/discussion/2804/use-pcells-display-text-when-converting-pcell-to-static</link>
        <pubDate>Wed, 15 Oct 2025 10:37:01 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2804@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I love PCells, but if I ever want to "freeze" or export them by converting them to static, the basic name plus an index is used. I would like to keep the meaningful name defined in <code>display_text</code> to keep the distinction between different instances of the same PCell, not just a number.</p>

<p>Is there a way to do it? (Other than the hacky and inconvenient way of accessing the layout from <code>pya.Application</code> and try to map which is which)</p>

<p>I understand the reasoning for keeping the basic name in order to identify them when reloading libraries. Maybe this is the preferred way of having PCells converted (reason unknown to me), but having an internal PCell flag to the <code>display_text</code> insead seems to me like a very nice addition when executing <code>Convert To Static Cell</code>. I checked <code>dbLayout.cc</code> and it seems feasibe.</p>

<p>Thanks!</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>force edge angle</title>
        <link>https://www.klayout.de/forum/discussion/2800/force-edge-angle</link>
        <pubDate>Tue, 07 Oct 2025 11:31:40 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>laurent_c</dc:creator>
        <guid isPermaLink="false">2800@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>In CMOS layout design, usually, the only angle allowed are 0, 45 or 90 degrees.<br />
A nice feature to add would be to force an edge angle. <br />
For instance, if an edge has an angle of 1°, it would be nice to select it, check that its angle is 1°, and force it at 0°.<br />
Actually, 45° is usually more to difficult to correct. Once, I also got the very case where 2 edges of 2 different polygons should be parallel (i.e. same angle), and not necessary at multiple of 45°.<br />
The very  nice option is to keep it on-grid  <img src="https://www.klayout.de/forum/resources/emoji/confused.png" title=":/" alt=":/" height="20" /></p>

<p>Thanks, BRgds,<br />
Laurent</p>
]]>
        </description>
    </item>
    <item>
        <title>&quot;Edit Layer Stack&quot; layers do not save on FreeBSD</title>
        <link>https://www.klayout.de/forum/discussion/2791/edit-layer-stack-layers-do-not-save-on-freebsd</link>
        <pubDate>Tue, 23 Sep 2025 18:45:16 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>kevinz</dc:creator>
        <guid isPermaLink="false">2791@/forum/discussions</guid>
        <description><![CDATA[<p>I've built KLayout v0.30.4 from source on FreeBSD. I'm investigating an issue with connectivity tracing that only seems to happen on this platform and am looking for pointers on how to troubleshoot this issue. The problem is that layers entered in Tools → Edit Layer Stack do not appear to save after pressing OK.</p>

<p>The steps to reproduce are:</p>

<ol>
<li>Be on FreeBSD</li>
<li>Open KLayout in Editor mode</li>
<li>File → New Layout</li>
<li>Tools → Edit Layer Stack</li>
<li>Press the + button at the bottom of "Technology Stacks", automatically-named STACK1 appears</li>
<li>Press "OK"</li>
<li>Tools → Edit Layer Stack again. On Windows, the newly added stack is still there. On FreeBSD, the window is empty again.</li>
</ol>

<p>Do you have a feeling for what might be going on or suggest a few things that I can try to debug this issue?</p>

<p>I have been poking around <code>src/plugins/tools/net_tracer/lay_plugin/layNetTracerTechComponentEditor.cc</code> but am having trouble understanding where <code>NetTracerTechComponentEditor::commit</code> "commits" the data.</p>
]]>
        </description>
    </item>
    <item>
        <title>Optimizing Shape Movement Between Cells</title>
        <link>https://www.klayout.de/forum/discussion/2775/optimizing-shape-movement-between-cells</link>
        <pubDate>Wed, 27 Aug 2025 02:03:35 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>dion</dc:creator>
        <guid isPermaLink="false">2775@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias，</p>

<p>I use the following code to move shapes from a source cell into a target cell. However, since there are numerous cells and shapes involved, this code runs quite slowly. For both the source layout and the target layout, the database unit (dbu) is identical. Is there a faster method to move these shapes? Instead of creating new shapes in the target cell and then clearing the shapes from the source cell, can the shapes be moved directly? This would improve speed and reduce memory usage. Could you please advise on the appropriate function interface to use?  Thank you very much</p>

<pre><code>                  db::Cell &amp;source_cell = source_layout.cell(source_cid);
                  db::Cell &amp;target_cell = target_layout.cell(target_cid);

                  for (std::map&lt;unsigned int, unsigned int&gt;::const_iterator lm = layer_mapping.begin (); lm != layer_mapping.end (); ++lm) {
                    target_cell.shapes (lm-&gt;second).insert (source_cell.shapes (lm-&gt;first));
                     source_cell.shapes (lm-&gt;first).clear();
                  }
</code></pre>
]]>
        </description>
    </item>
    <item>
        <title>Cursor grid snapping</title>
        <link>https://www.klayout.de/forum/discussion/2689/cursor-grid-snapping</link>
        <pubDate>Tue, 01 Apr 2025 06:42:14 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>mpee</dc:creator>
        <guid isPermaLink="false">2689@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>Is there a way to allow the cursor snapping to the grid while moving the mouse?<br />
It is quite difficult to draw shapes or reading the coordinates at the lower right corner in the GUI.</p>

<p>Many thanks,<br />
Martin</p>
]]>
        </description>
    </item>
    <item>
        <title>AutoCAD .dwg -&gt; .dxf, .dxf to .gds</title>
        <link>https://www.klayout.de/forum/discussion/2740/autocad-dwg-dxf-dxf-to-gds</link>
        <pubDate>Sun, 15 Jun 2025 01:04:34 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>dick_freebird</dc:creator>
        <guid isPermaLink="false">2740@/forum/discussions</guid>
        <description><![CDATA[<p>I've been able to edit DXFs (at least R12 version)<br />
but most AutoCAD these days seems to come as<br />
.dwg format.</p>

<p>I was able to find one teaserware dwg to dxf demo<br />
that got me from .dwg to R12 .dxf but its eval period<br />
has expired. I had tried dxf format options in that<br />
converter and they didn't open right until I got to <br />
"good ol' R12" at the bottom.</p>

<p>Wondering whether we could get .dwg (to R12 dxf)<br />
conversion "internalized" to klayout? Maybe there is<br />
open source code somewhere that could be pulled <br />
in?</p>

<p>I could stand any hints about using klayout to pull <br />
in dxfs (like from package vendors) and then <br />
exporting to GDSII, like when I have to make bond <br />
figures for my chips. I need to get their cavity <br />
drawings at right scale. Need to keep absolute <br />
dimensions right (microns:microns) despite<br />
whatever the vendor drawing might have been<br />
(lots of the packages I like, still have inches as<br />
drawing units).</p>
]]>
        </description>
    </item>
    <item>
        <title>About conda klayout distributions, any limitation ?</title>
        <link>https://www.klayout.de/forum/discussion/2731/about-conda-klayout-distributions-any-limitation</link>
        <pubDate>Mon, 26 May 2025 14:49:52 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>wsteffe</dc:creator>
        <guid isPermaLink="false">2731@/forum/discussions</guid>
        <description><![CDATA[<p>Looking at <a href="https://anaconda.org/LiteX-Hub/klayout" rel="nofollow">https://anaconda.org/LiteX-Hub/klayout</a> I have seen that somebody (don't know who) has made available klayout as a conda package but this activity ended with the release 0.28.1.</p>

<p>I would like to know if the conda distribution is affected by any limitation compared to the windows installer. If not I think that, perhaps, it could facilitate the integration with other open source codes like, in example, FreeCAD or pythonOCC. FreeCAD and pythonOCC are both available from conda reposository: <a href="https://anaconda.org/conda-forge/freecad" rel="nofollow">https://anaconda.org/conda-forge/freecad</a> and <a href="https://anaconda.org/conda-forge/pythonocc-core" rel="nofollow">https://anaconda.org/conda-forge/pythonocc-core</a>.</p>

<p>In the developmemnt of my klayout package layoutDD, pythonOCC could be a lighter replacement of the FreeCAD modules.</p>
]]>
        </description>
    </item>
    <item>
        <title>Color mixing of geometry</title>
        <link>https://www.klayout.de/forum/discussion/2729/color-mixing-of-geometry</link>
        <pubDate>Fri, 23 May 2025 07:12:10 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>luismaie</dc:creator>
        <guid isPermaLink="false">2729@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I find the way KLayout mixes the colors of geometries in different layers marked as transparent or opaque very good and want to understand how this is done in detail.<br />
As I am not very experienced with the KLayout code base, could anyone point me to the right file on github or give me an idea, what type of color mixing is used?</p>

<p>Regards,<br />
Luis</p>
]]>
        </description>
    </item>
    <item>
        <title>Is there a hotkey for multi-lines comment in Macro?</title>
        <link>https://www.klayout.de/forum/discussion/2722/is-there-a-hotkey-for-multi-lines-comment-in-macro</link>
        <pubDate>Mon, 19 May 2025 09:53:26 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>BigPanda</dc:creator>
        <guid isPermaLink="false">2722@/forum/discussions</guid>
        <description><![CDATA[<p>Hi, Matthias, when I write code in KLayout Macro, I find it is quite difficult to do multi-lines comment. For example in PyCharm, we can use <code>Ctrl + /</code> to realize this. Could you add this feature?</p>
]]>
        </description>
    </item>
    <item>
        <title>Adding FreeCAD python module in ucrt build.</title>
        <link>https://www.klayout.de/forum/discussion/2716/adding-freecad-python-module-in-ucrt-build</link>
        <pubDate>Thu, 15 May 2025 15:24:06 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>wsteffe</dc:creator>
        <guid isPermaLink="false">2716@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>My layoutDD package makes use of the python modules included in the FreeCAD package (which is composed of several submodules and binary files). The FreeCAD modules are available in MSYS2-ucrt and also in MSYS2-clang (see at <a href="https://packages.msys2.org/base/mingw-w64-freecad" rel="nofollow">https://packages.msys2.org/base/mingw-w64-freecad</a>)</p>

<p>Looking inside "klayout/script/deploy-win-ucrt64", it seems to me that these modules would be automatically included in the klayout distribution if previously installed in your system.<br />
May I ask to add them ?  I could add them in my package, but the inclusion in the klayout distribution would assure the alignment with the related python compiler. Another problem is that if all these modules (a large quantity of data) are downloaded during package installation, the process can take a long time.</p>

<p>PS:<br />
Th last release of layoutDD has bee made compatible with mainstream FreeCAD (<a href="https://github.com/FreeCAD/FreeCAD" rel="nofollow">https://github.com/FreeCAD/FreeCAD</a>) which is the same version available in MSYS2.</p>
]]>
        </description>
    </item>
    <item>
        <title>Inconsistent in Trans and CplxTrans convention</title>
        <link>https://www.klayout.de/forum/discussion/2712/inconsistent-in-trans-and-cplxtrans-convention</link>
        <pubDate>Wed, 07 May 2025 03:43:24 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>BigPanda</dc:creator>
        <guid isPermaLink="false">2712@/forum/discussions</guid>
        <description><![CDATA[<p>Recently, I tried to use Trans and CplxTrans class. And I find that, there are some inconsistent between them, for example. If I define a Trans class like below:</p>

<pre><code>t = pya.Trans(45, False, 0, 0) # r90 0,0
t = pya.Trans(45, True, 0, 0)  # m45 0,0
</code></pre>

<p>The result is behind <code>#</code> simbol above. However, for CplxTrans class.</p>

<pre><code>t = pya.CplxTrans(1, 45, False, 0, 0) # r45 *1 0,0
t = pya.CplxTrans(1, 45, True, 0, 0) # m22.5 *1 0,0
</code></pre>

<p>See, the results are not inconsistent. Is this a bug or something? Maybe we should keep these two conventions consistent?</p>
]]>
        </description>
    </item>
    <item>
        <title>compile problem (Macos / 0.30.0 / qt@6.9.0)</title>
        <link>https://www.klayout.de/forum/discussion/2709/compile-problem-macos-0-30-0-qt-6-9-0</link>
        <pubDate>Tue, 29 Apr 2025 13:30:53 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>tonysong</dc:creator>
        <guid isPermaLink="false">2709@/forum/discussions</guid>
        <description><![CDATA[<p>MacOS 15.4.1<br />
qt is homebrew qt.<br />
qt@6.8.2 and qt@6.7.2 have been tested and are fine.<br />
qt@6.9.0 will cause "&lt;build4mac.py&gt;: failed to build KLayout".</p>

<hr />

<p>../../../../src/gsiqt/qt6/QtGui/gsiDeclQAccessibleEvent.cc<br />
../../../../src/gsiqt/qt6/QtXml/gsiDeclQDomNodeList.cc:171:50: error: no member named 'operator!=' in 'QDomNodeList'<br />
  171 |   ret.write ((bool)((QDomNodeList *)cls)-&gt;operator!= (arg1));<br />
      |                           ~~~~~  ^<br />
../../../../src/gsiqt/qt6/QtXml/gsiDeclQDomNodeList.cc:209:50: error: no member named 'operator==' in 'QDomNodeList'<br />
  209 |   ret.write ((bool)((QDomNodeList *)cls)-&gt;operator== (arg1));<br />
      |                           ~~~~~  ^<br />
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -std=c++17 -fvisibility=hidden -O2 -std=gnu++1z  -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk -mmacosx-version-min=14.0 -Wall -Wextra -pedantic -Woverloaded-virtual -Wsynth -Wno-deprecated -Wno-long-long -Wno-strict-aliasing -Wno-deprecated-declarations -fPIC -DHAVE_QTBINDINGS -DHAVE_PYTHON -DHAVE_GIT2 -DHAVE_RUBY -DHAVE_RUBY_VERSION_CODE=30403 -DHAVE_QT -DHAVE_QT_UITOOLS -DHAVE_QT_NETWORK -DHAVE_QT_SQL -DHAVE_QT_SVG -DHAVE_QT_PRINTSUPPORT -DHAVE_QT_MULTIMEDIA -DHAVE_QT_DESIGNER -DHAVE_QT_XML -DKLAYOUT_VERSION=0.30.0 -DKLAYOUT_VERSION_REV=LatestSourcePackage -DKLAYOUT_VERSION_DATE=2025-04-29 -DKLAYOUT_MAJOR_VERSION=0 -DKLAYOUT_MINOR_VERSION=30 -DKLAYOUT_TINY_VERSION=0 -DMAKE_GSI_QTSQL_LIBRARY -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_DESIGNER_LIB -DQT_UIPLUGIN_LIB -DQT_UITOOLS_LIB -DQT_OPENGLWIDGETS_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -DQT_MULTIMEDIA_LIB -DQT_SVG_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_NETWORK_LIB -DQT_CORE5COMPAT_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../../../../src/gsiqt/qt6/QtSql -I/Users/lycore_ssw/Downloads/klayout-0.30.0/qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/gsiqt/qt6/QtSql -I../../../../src/tl/tl -I../../../../src/gsi/gsi -I../../../../src/gsiqt/qtbasic -I/opt/homebrew/lib/QtPrintSupport.framework/Headers -I/opt/homebrew/lib/QtDesigner.framework/Headers -I/opt/homebrew/include -I/opt/homebrew/include/QtUiPlugin -I/opt/homebrew/lib/QtUiTools.framework/Headers -I/opt/homebrew/lib/QtOpenGLWidgets.framework/Headers -I/opt/homebrew/lib/QtMultimediaWidgets.framework/Headers -I/opt/homebrew/lib/QtWidgets.framework/Headers -I/opt/homebrew/lib/QtOpenGL.framework/Headers -I/opt/homebrew/lib/QtMultimedia.framework/Headers -I/opt/homebrew/lib/QtSvg.framework/Headers -I/opt/homebrew/lib/QtGui.framework/Headers -I/opt/homebrew/lib/QtXml.framework/Headers -I/opt/homebrew/lib/QtNetwork.framework/Headers -I/opt/homebrew/lib/QtCore5Compat.framework/Headers -I/opt/homebrew/lib/QtSql.framework/Headers -I/opt/homebrew/lib/QtCore.framework/Headers -I/Users/lycore_ssw/Downloads/klayout-0.30.0/qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/gsiqt/qt6/QtSql -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/AGL.framework/Headers -I/opt/homebrew/include -I/opt/homebrew/share/qt/mkspecs/macx-clang -F/opt/homebrew/lib -o gsiDeclQSqlRecord.o ../../../../src/gsiqt/qt6/QtSql/gsiDeclQSqlRecord.cc<br />
2 errors generated.<br />
make[3]: *** [gsiDeclQDomNodeList.o] Error 1<br />
make[2]: *** [sub-QtXml-make_first] Error 2</p>

<h2>make[2]: *** Waiting for unfinished jobs....</h2>

<p>ln -s libklayout_QtGui.0.30.0.dylib libklayout_QtGui.dylib<br />
ln -s libklayout_QtGui.0.30.0.dylib libklayout_QtGui.0.dylib<br />
ln -s libklayout_QtGui.0.30.0.dylib libklayout_QtGui.0.30.dylib<br />
rm -f ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.30.0.dylib<br />
mv -f libklayout_QtGui.0.30.0.dylib ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.30.0.dylib<br />
rm -f ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.dylib<br />
rm -f ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.dylib<br />
rm -f ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.30.dylib<br />
mv -f libklayout_QtGui.dylib ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.dylib<br />
mv -f libklayout_QtGui.0.dylib ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.dylib<br />
mv -f libklayout_QtGui.0.30.dylib ../../../../qt6Brew.build.macos-Sequoia-release-Rhb34Phb311/libklayout_QtGui.0.30.dylib<br />
make[1]: *** [sub-qt6-make_first] Error 2</p>

<h2>make: *** [sub-gsiqt-make_first] Error 2</h2>
]]>
        </description>
    </item>
    <item>
        <title>undefined method error!</title>
        <link>https://www.klayout.de/forum/discussion/2697/undefined-method-error</link>
        <pubDate>Fri, 18 Apr 2025 07:42:02 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>mykim</dc:creator>
        <guid isPermaLink="false">2697@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>can you help me to guess where's the problem lies ?</p>

<pre><code>====================================================
ck_layer = input(130, 0)
output = ck_layer.drc(width &lt; 5.um).output(333,1, "violation")

output.not_interacting(ck_layer).output(100, 0)

======================================================
</code></pre>

<p>and I got below error msg</p>

<p><img src="https://www.klayout.de/forum/uploads/editor/0s/a7req05hplo0.jpg" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>DRC - Touching edges on the same layer</title>
        <link>https://www.klayout.de/forum/discussion/2673/drc-touching-edges-on-the-same-layer</link>
        <pubDate>Thu, 13 Feb 2025 20:34:05 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>14darcia</dc:creator>
        <guid isPermaLink="false">2673@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>I'm looking for a way to flag places where two edges of adjacent polygons touch on the same layer.</p>

<p>For example, it should highlight the following two polygons near where they touch along x=1:<br />
poly1=[0 0 1 1;0 1 1 0]<br />
poly2=[1 1 2 2;0 1 1 0]</p>

<p>I'm aware of the two similar tests: <br />
1. overlap within the same layer - different shapes from the same layer overlap.<br />
2. gap detection within the same layer - different shapes from the same layer are separated by a distance smaller than x.</p>

<p>My thinking was to use either of these operations for the touching operation:<br />
1. Bias the input layer up by a small amount using layer_input.sized(+x) and check for overlaps.<br />
2. Bias the input layer down by a small amount using layer_input.sized(-x) and check for gaps.</p>

<p>However, these solutions don't work because the sized operation appears to merge the shapes before biasing. This method would also assume that the gap/overlap of that size isn't present elsewhere in the layout.</p>

<p>Do you have any suggestions? Am I on the right track or would you recommend an entirely different path?</p>

<p>Thanks in advance,<br />
Adam</p>
]]>
        </description>
    </item>
    <item>
        <title>Basic.TEXT --&gt; Convert To Static: Cell Naming</title>
        <link>https://www.klayout.de/forum/discussion/2670/basic-text-convert-to-static-cell-naming</link>
        <pubDate>Tue, 04 Feb 2025 17:41:27 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>connan</dc:creator>
        <guid isPermaLink="false">2670@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,<br />
would it make sense to make the textstring, given in the basic.TEXT-PCell, to be part of the cell name after the conversion to a static cell?<br />
Right now the cells are just numbered after the conversion, which looks really ugly and makes it hard to find the corresponding cell.</p>

<p>Best regards<br />
Sascha</p>
]]>
        </description>
    </item>
    <item>
        <title>Is there a matrure routing algorithm in KLayout or in pya Package?</title>
        <link>https://www.klayout.de/forum/discussion/2648/is-there-a-matrure-routing-algorithm-in-klayout-or-in-pya-package</link>
        <pubDate>Mon, 30 Dec 2024 07:07:46 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>BigPanda</dc:creator>
        <guid isPermaLink="false">2648@/forum/discussions</guid>
        <description><![CDATA[<p>I find a lot of PDK tools use A* algorithm to link ports of PCells. And I really want to know is there an integrated tools like this in KLayout? Or some python code we could directly use.</p>
]]>
        </description>
    </item>
    <item>
        <title>Parallelization schemes for polygon operations</title>
        <link>https://www.klayout.de/forum/discussion/2642/parallelization-schemes-for-polygon-operations</link>
        <pubDate>Tue, 24 Dec 2024 07:09:36 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>Rocky_Tseng</dc:creator>
        <guid isPermaLink="false">2642@/forum/discussions</guid>
        <description><![CDATA[<p>KLayout uses a Quadtree to partition a region, ensuring that each node contains a similar number of polygons. For polygon merging within the same region, is it possible to distribute the leaf nodes of the Quadtree across multiple threads or processes? This approach could enable each thread to independently merge polygons within its assigned node, achieving a balanced workload distribution across threads.</p>

<p>If this method is not generally applicable, I would be interested to know that what parallelization schemes currently supported by KLayout for polygon operations, such as merging, XOR, AND, OR, and NOT.</p>

<p>Thank you.</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>Tools &gt; Trace Net &gt; Layer Stack</title>
        <link>https://www.klayout.de/forum/discussion/2183/tools-trace-net-layer-stack</link>
        <pubDate>Fri, 04 Nov 2022 10:14:36 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>tomas2004</dc:creator>
        <guid isPermaLink="false">2183@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>Would it be possible to add a Load/Save option (to/from text file) in the Layer Stack pop-up window "Edit Technology"? This way you can quickly trace nets in the Default technology while switching between different designs without retyping the layer stack each time or setting up a technology for each of them.</p>

<p>Cheers,</p>

<p>Tomas</p>
]]>
        </description>
    </item>
    <item>
        <title>ERROR：Unexpected end-of-file (position=154180758, recordnumber=54457, cell=5)</title>
        <link>https://www.klayout.de/forum/discussion/2566/error-unexpected-end-of-file-position-154180758-recordnumber-54457-cell-5</link>
        <pubDate>Mon, 05 Aug 2024 01:22:27 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>lmz</dc:creator>
        <guid isPermaLink="false">2566@/forum/discussions</guid>
        <description><![CDATA[<p><img src="https://www.klayout.de/forum/uploads/editor/nx/71tsadnhxrcx.png" alt="" title="" /><br />
How can I fix the error in this file？<br />
While using KLayout, after completing my layout, I clicked save and immediately closed the KLayout software. This interrupted the saving process, resulting in a corrupted file.</p>
]]>
        </description>
    </item>
    <item>
        <title>How do I run KLayout's testsuite?</title>
        <link>https://www.klayout.de/forum/discussion/2533/how-do-i-run-klayouts-testsuite</link>
        <pubDate>Mon, 24 Jun 2024 03:03:17 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>yearningmare</dc:creator>
        <guid isPermaLink="false">2533@/forum/discussions</guid>
        <description><![CDATA[<p>So I have changed the code in a few places, and now I want to make sure that I didn't inadvertently break something.</p>

<p>Is there a manual on how to run tests? As far as I understand, KLayout officially supports all three major OSes, so I presume that I would have to run a copy of the KLayout reference Linux in a docker (based on python's "manylinux" quasi-distro?), as well as VMs for Windows and MacOS?</p>

<p>As far as I can see, the files are quite scattered over the source directory, with Jenkins, travis, azure, and maybe more ways to run the testsuite, so I would like to ask if there is a "safe choice" way of running tests locally, without signing up for all those "cloud providers" just to run the tests.</p>

<p>Something like "destroy 1 container and two VMs, sping new instances, built, test, print results" in a single script.</p>
]]>
        </description>
    </item>
    <item>
        <title>Can't publish KQCircuits as KLayout SALT package</title>
        <link>https://www.klayout.de/forum/discussion/2525/cant-publish-kqcircuits-as-klayout-salt-package</link>
        <pubDate>Fri, 14 Jun 2024 08:27:46 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>PavelSmirnov</dc:creator>
        <guid isPermaLink="false">2525@/forum/discussions</guid>
        <description><![CDATA[<p>I've managed to go through the process of updating KQCircuits package using <a href="https://sami.klayout.org/index" rel="nofollow">https://sami.klayout.org/index</a>, but it doesn't show up on the global package index when I browse <code>Tools &gt; Manage Packages</code> on KLayout app.</p>

<p>So I started by pushing a commit with tag <code>v4.8.0</code>. I understood that KLayout has relatively new feature to pull packages using GIT rather SVN, so I tested succesfully using <code>KLAYOUT_SALT_MINE</code> env var that the package gets pulled correctly if I specify <code>&lt;url&gt;</code> tag in <code>grain.xml</code> as <code>git+https://github.com/iqm-finland/KQCircuits.git/tags/v4.8.0/klayout_package</code>. Then I notice in the SALT package update form that the recommended url form is <code>git+https://github.com/iqm-finland/KQCircuits.git+klayout_package[v4.8.0]</code>. Changing in the form the <code>Package URL</code> value to either url format causes the package defintion link to redirect to the error page with attached message:</p>

<p><img src="https://www.klayout.de/forum/uploads/editor/cc/zbhv8ppssqe3.png" alt="" title="" /><br />
<img src="https://www.klayout.de/forum/uploads/editor/p1/cglx21z4gx3c.png" alt="" title="" /></p>

<p>So I thought I would power through and submit the form anyway. I received confirmation email, updated KQCircuits is now listed in <a href="https://sami.klayout.org/index" rel="nofollow">https://sami.klayout.org/index</a>, but the <a rel="nofollow" href="https://sami.klayout.org/preview?url=git%2Bhttps%3A%2F%2Fgithub.com%2Fiqm-finland%2FKQCircuits.git%2Ftags%2Fv4.8.0%2Fklayout_package" title="https://sami.klayout.org/preview?url=git%2Bhttps%3A%2F%2Fgithub.com%2Fiqm-finland%2FKQCircuits.git%2Ftags%2Fv4.8.0%2Fklayout_package">package link</a> for it doesn't work, and in KLayout app it is not listed.</p>

<p>I thought it fails because <code>git+https://github.com/iqm-finland/KQCircuits.git/tags/v4.8.0/klayout_package</code> format doesn't work, so I pushed a new commit tagged as <code>v4.8.1</code> where I change the <code>&lt;url&gt;</code> tag in <code>grain.xml</code> to recommended format. Tested using <code>KLAYOUT_SALT_MINE</code> that KLayout pulls correct package. But now as I want to update the package again, the preview link again gives me an error page.</p>

<p>So I thought at this point I should stop and ask for help. Which url format is recommended to use, is the error caused by this or something else?</p>

<p>Thanks,<br />
-Pavel</p>
]]>
        </description>
    </item>
    <item>
        <title>Undo/Redo</title>
        <link>https://www.klayout.de/forum/discussion/2520/undo-redo</link>
        <pubDate>Fri, 07 Jun 2024 20:20:41 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>tomas2004</dc:creator>
        <guid isPermaLink="false">2520@/forum/discussions</guid>
        <description><![CDATA[<p>Hello Matthias,</p>

<p>Would it be feasible to add an undo/redo list with the latest xx actions performed (where xx can maybe be specified in the setup) when selecting Edit &gt; Undo/Redo? Sometimes it is a bit cumbersome to undo/redo many actions, especially when I play a lot with layer visibilities in between editing actions.</p>

<p>Cheers,</p>

<p>Tomas</p>
]]>
        </description>
    </item>
    <item>
        <title>Multiple &quot;layer views&quot;?</title>
        <link>https://www.klayout.de/forum/discussion/2531/multiple-layer-views</link>
        <pubDate>Sat, 22 Jun 2024 16:45:45 +0000</pubDate>
        <category>KLayout Development</category>
        <dc:creator>dick_freebird</dc:creator>
        <guid isPermaLink="false">2531@/forum/discussions</guid>
        <description><![CDATA[<p>I'm working on a PDK for a foundry that's had "Brand X"<br />
and "Brand Z" (evidently made by dead-copying plus a<br />
few transcription errors) PDKs made in the past. These<br />
have nearly 200 valid layer/datatype pairs (and Brand X,<br />
a whole mess of "-1/###" ones evidently for internal <br />
point-tool use).</p>

<p>Now this is obviously unwieldy and many layers have<br />
zero value in any particular activity. Many are just <br />
legacy / artifacts of "how Brand X likes to do things".</p>

<p>I wonder whether there is, or could be, "multiple layer<br />
table views" which make visible, valid, displayed, some<br />
subset of the master layer table which is more compact<br />
and maybe purposeful. Like maybe there's one ".lypv" <br />
for plain polygon pushing, another for DRC that maybe<br />
shows derived layers (?), another for just drawing bond <br />
figures (top metal, pad, bulk and bondWire) or whatever,<br />
that the user / PDK developer could define, save, edit, <br />
and then invoke at will by (say) some layers-window <br />
right-click selector?.</p>
]]>
        </description>
    </item>
   </channel>
</rss>
