<?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 Support — KLayout</title>
        <link>https://www.klayout.de/forum/</link>
        <pubDate>Sun, 08 Mar 2026 19:05:06 +0000</pubDate>
        <language>en</language>
            <description>KLayout Support — KLayout</description>
    <atom:link href="https://www.klayout.de/forum/categories/klayout-support/feed.rss" rel="self" type="application/rss+xml"/>
    <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>
    <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>Trace path bugfix #2201 now causes trace net to fail?</title>
        <link>https://www.klayout.de/forum/discussion/2824/trace-path-bugfix-2201-now-causes-trace-net-to-fail</link>
        <pubDate>Fri, 28 Nov 2025 23:58:16 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>footang</dc:creator>
        <guid isPermaLink="false">2824@/forum/discussions</guid>
        <description><![CDATA[<p>I raised an issue with trace path in <a rel="nofollow" href="https://www.klayout.de/forum/discussion/2810/trace-path-issue#latest" title="https://klayout.de/forum/discussion/2810/trace-path-issue#latest">https://klayout.de/forum/discussion/2810/trace-path-issue#latest</a>.  Thanks for addressing it in bugfix <a rel="nofollow" href="https://www.klayout.de/forum/search?Search=%232201&amp;Mode=like">#2201</a>.  After switching from 0.30.4 to 0.30.5, unfortunately now "trace net" no longer works for me (in addition to "trace path" still not working).  A similar behavior as I reported before now occurs for "trace net", where there is a prompt at the bottom of the screen "Click on a point in the net", but when I click, nothing happens and Klayout just returns to normal behavior (if I click a second time, it just selects the geometry that is being highlighted).  This is true for somewhat complex nets.  If I click on a very simple net (e.g. just one single floating rectangle of metal layer), it does trace and highlight it successfully.  This seems to be an issue that occurs specifically going from 0.30.4 to 0.30.5, so I suspect it has something to do with the fix <a rel="nofollow" href="https://www.klayout.de/forum/search?Search=%232201&amp;Mode=like">#2201</a>.</p>
]]>
        </description>
    </item>
    <item>
        <title>Modifying PCell parameters</title>
        <link>https://www.klayout.de/forum/discussion/2836/modifying-pcell-parameters</link>
        <pubDate>Fri, 26 Dec 2025 06:30:06 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Manio</dc:creator>
        <guid isPermaLink="false">2836@/forum/discussions</guid>
        <description><![CDATA[<p>Hi! <br />
I would like to modify a photodetector's PCell parameters from a PDK (e.g. length of photodetector, transition length, etc), but I'm not sure how. <br />
I am unable to add the components from the library as I don't see the PDK in the librarys panel. When I tried to open the individual .oas files, the PCell properties were greyed out too.</p>

<p>I do see the different layers (.lyp) and I'm able to run a DRC rule check (.lydrc).The PDK includes .lyp, .yaml, .lydrc, .lyt and .oas files, and was provided mainly to use with GDSFactory.</p>

<p>Did something went wrong during the importation of the PDK into KLayout? Or could it be that the foundry does not allow us to acess the PCell properties? Are there any other ways to edit the PCell parameters besides manually modifying the lengths of the polygons?</p>

<p>PS. I am new to photonics, and would appreciate any help!</p>
]]>
        </description>
    </item>
    <item>
        <title>ERROR ON XSECTION - KLAYOUT 0.29.0</title>
        <link>https://www.klayout.de/forum/discussion/2825/error-on-xsection-klayout-0-29-0</link>
        <pubDate>Tue, 02 Dec 2025 14:27:30 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>lucky71</dc:creator>
        <guid isPermaLink="false">2825@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I have created few years ago some xsection files,  and I used them on klayout 0.25.</p>

<p>Now I'm trying to use the same files on klayout 0.29.0 but I received this error message:</p>

<p>**TypeError: no implicit conversion of RBA::Vector into Integer for argument <a rel="nofollow" href="https://www.klayout.de/forum/search?Search=%231&amp;Mode=like">#1</a> ('left') for argument <a rel="nofollow" href="https://www.klayout.de/forum/search?Search=%231&amp;Mode=like">#1</a> ('box') in Polygon::initialize<br />
**<br />
There is the possibility to convert the xsection from an old version to a new one?</p>

<p>Thanks and regards</p>

<p>Luciano</p>
]]>
        </description>
    </item>
    <item>
        <title>Batch Mode LVS Fails on Sky130 with &quot;Netlists don't match&quot; -Even with extracted netlist as reference</title>
        <link>https://www.klayout.de/forum/discussion/2817/batch-mode-lvs-fails-on-sky130-with-netlists-dont-match-even-with-extracted-netlist-as-reference</link>
        <pubDate>Sat, 22 Nov 2025 15:48:05 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>bunosingye</dc:creator>
        <guid isPermaLink="false">2817@/forum/discussions</guid>
        <description><![CDATA[<p>Hi everyone,<br />
I'm trying to run LVS checks for the Sky130 PDK in batch mode, but I consistently get a <code>Netlists don't match</code> error. I'm looking for help to understand what I might be doing wrong.</p>

<p>My Environment:<br />
<strong>KLayout Version:</strong> [ -- 0.29.9 -- ]<br />
<strong>PDK:</strong> SkyWater SKY130<br />
<strong>The Main Problem:</strong><br />
No matter which design I use, the LVS comparison fails with a "Netlists don't match" result.<br />
Here's what I have tried:<br />
1. <strong>Custom Designs:</strong> I started with my own custom GDS files (both a simple PMOS and a transmission gate) and their corresponding SPICE netlists. They all failed.<br />
2. <strong>Official PDK Standard Cell:</strong>  To rule out errors in my own files, I used a known-good standard cell from the PDK (<code>sky130_fd_sc_hs__and2_1.gds</code> and its <code>.sp</code> netlist). This also failed with the same error.<br />
3. <strong>Using the Extracted Netlist as a Reference:</strong> This is the most confusing part. I first ran LVS to generate an extracted netlist from the GDS file. Then, I ran LVS a second time, using this <strong>newly extracted netlist as the reference schematic</strong>. Logically, this should always pass, but it still fails with "Netlists don't match".</p>

<p>This last test makes me think the issue is not with the GDS or SPICE files themselves, but with my KLayout command or environment setup. It seems the comparison step is fundamentally broken for some reason.</p>

<p>My Question:<br />
Why would an LVS check fail when comparing an extracted netlist against itself? What could cause this behavior? Is there a common setup mistake or a required -rd parameter for Sky130 LVS that I might be missing?</p>

<p>I run these commands in the <code>klayout_sky130/lvs/</code> folder<br />
<code>python3 run_lvs.py --design="/home/OpenFASOC/openfasoc/generators/glayout/output/pmos_sky130.gds" --net="/home/OpenFASOC/openfasoc/generators/glayout/output/pmos_sky130.sp" --thr=16 --set_verbose --set_spice_comments</code></p>

<p><code>python3 run_lvs.py --design="/home/OpenFASOC/openfasoc/generators/glayout/output/transmission_gate_sky130.gds" --net="/home/OpenFASOC/openfasoc/generators/glayout/output/transmission_gate_sky130.sp" --thr=16 --set_verbose --set_spice_comments --lvs_sub="VSS"</code></p>

<p><code>python3 run_lvs.py --design="/home/OpenFASOC/openfasoc/generators/glayout/output/sky130_fd_sc_hs__and2_1.gds" --net="/home/OpenFASOC/openfasoc/generators/glayout/output/sky130_fd_sc_hs__and2_1.sp" --thr=16 --set_verbose --set_spice_comments --lvs_sub="VNB"</code></p>

<p>I have attached a zip file ([--klayout_lvs_debug.zip--]) containing the GDS, SPICE files, LVS rule deck and results, and the Python script I'm using to run the command.</p>

<p>Any help would be greatly appreciated. Thank you!</p>
]]>
        </description>
    </item>
    <item>
        <title>KLayout DRC on large layouts</title>
        <link>https://www.klayout.de/forum/discussion/2806/klayout-drc-on-large-layouts</link>
        <pubDate>Wed, 15 Oct 2025 17:50:08 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>spark_aeon</dc:creator>
        <guid isPermaLink="false">2806@/forum/discussions</guid>
        <description><![CDATA[<p>Hello! I have a question regarding DRC.</p>

<p>When running DRC on large &amp; complex layouts, I often run into an issue of hanging/crashing. This seems to be particularly present when there are many instances of waveguide structures and rules such as separation, space, or width are attempting to be checked. <br />
My local machine has 65GB ram &amp; an 8 core processor.</p>

<p>I have these DRC commands (where layer and o_l are defined as layer inputs, value is a number, and rule &amp; description are strings):<br />
    o_l.sep(layer, value).output(rule, description)<br />
    layer.width(value, angle_limit(45.degree)).output(rule, description)<br />
    layer.space(value) .output(rule, description)</p>

<p>And the behavior is that it slows my computer down, consuming all the memory, until KLayout becomes unresponsive for quite a while until eventually crashing. This behavior is also present when I implement tiling.</p>

<p>I am wondering what you suggest doing to be able to successfully run these kinds of DRC rules on layouts such as this with many structures present.</p>

<p>Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>Key-bindings for display Back and Forward - glitch?</title>
        <link>https://www.klayout.de/forum/discussion/2807/key-bindings-for-display-back-and-forward-glitch</link>
        <pubDate>Thu, 16 Oct 2025 00:09:57 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>jself</dc:creator>
        <guid isPermaLink="false">2807@/forum/discussions</guid>
        <description><![CDATA[<p>I'm wanting to key-bind the Back and Forward display functions. This is working for me in Linux, but not in Windows. Is this a known issue and/or is there a fix in Windows?</p>

<p>On both systems the setting is available within the Setup &gt; Application &gt; Customize Menu settings under Main Menu &gt; zoom_menu.prev_display_state titled Back and similar for Forward; however, setting this has no effect for me on either system. In Linux I am able to change the '<a href="https://www.klayout.de/forum/profile/toolbar" rel="nofollow">@toolbar</a>.prev_display_state' and '<a href="https://www.klayout.de/forum/profile/toolbar" rel="nofollow">@toolbar</a>.next_display_state' entries within the klayoutrc and these work, but this change does not work for me in Windows 11. Within the klayoutrc file these settings within the zoom_menu have no effect on either system, even when I set them to conflict with the above ​toolbar settings. Please advise.</p>

<p>Thanks! <img src="https://www.klayout.de/forum/resources/emoji/smile.png" title=":smile:" alt=":smile:" height="20" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Trace Path issue</title>
        <link>https://www.klayout.de/forum/discussion/2810/trace-path-issue</link>
        <pubDate>Fri, 24 Oct 2025 23:40:12 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>footang</dc:creator>
        <guid isPermaLink="false">2810@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,<br />
I have previously used "Trace Path" on quite complex layout (multiple layers and vias involved), and it worked nicely.  Recently I tried to use it again and am running into issues.  "Trace Net" works fine and highlights the entire net completely, as expected.  Along that net, I can use "Trace Path", click two points very close to each other on the net, and it highlights a rough path limited by the shapes in use, as expected.  However, as I go further and further apart on the net, eventually "Trace Net" fails to highlight.  After clicking the second point, KLayout seems to instantly return control to me, as if the command aborted or just finished extremely quickly.  I know the "Trace Path" command is being invoked because I see the "Click on the second point in the net" prompt at the bottom of the window.  Is there a way that "Trace Net" could work, but "Trace Path" fail?  (I figure the latter is somehow taking a subset of the shapes found by the former.)  Is there a way to log what "Trace Path" is doing after the second point is clicked?</p>
]]>
        </description>
    </item>
    <item>
        <title>What is the meaning of the appearance of horizontal lines in the layout layer?</title>
        <link>https://www.klayout.de/forum/discussion/2797/what-is-the-meaning-of-the-appearance-of-horizontal-lines-in-the-layout-layer</link>
        <pubDate>Thu, 02 Oct 2025 23:49:58 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Chen_0925</dc:creator>
        <guid isPermaLink="false">2797@/forum/discussions</guid>
        <description><![CDATA[<p>In the layout generated by KLayout, one can clearly observe the appearance of many horizontal lines. These horizontal lines have no spacing between them and are usually rather short, so the waveguide is essentially connected. However, in this particular case in the figure, there is one very long horizontal line that runs across the waveguide. This line originates from KLayout itself and cannot be merged (after applying merge, the line disappears, but once saved and reopened, the line reappears).</p>

<p>After fabrication, we found that this section of the waveguide exhibits unexpected reflection. Our current analysis suggests that this horizontal line may have a physical meaning in the stepper lithography process—namely, that when reaching a boundary, the stepper turns off the light source.</p>

<p>Therefore, I would like to know how such zero-distance horizontal lines are generated in KLayout, what their actual significance is, and how they can be eliminated? Thank you.<img src="https://www.klayout.de/forum/uploads/editor/b1/956atiu02no0.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Refresh library entries programatically</title>
        <link>https://www.klayout.de/forum/discussion/2787/refresh-library-entries-programatically</link>
        <pubDate>Fri, 19 Sep 2025 07:16:39 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2787@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I'm attempting to implement a PCell library which references itself to construct more complex PCells. In order to do that I need to populate the library without destroying it and rebuilding it since it would cause to unlink all existing PCells.</p>

<p>I achieved to do that by creating the library and using the Library reference instead of using the "self", but the library entries don't automatically refresh like it does when executing the regular <code>self.register(xx)</code>.<br />
I tried using <code>self.refresh()</code>, <code>lib.register(xx)</code> again, <code>lib.refresh()</code>, updating the QWidget associated with the libraries, and there's no <code>"library.unregister()"</code> function to try (actually nor <code>"layout.unregister_pcell()" but there is "remove_technology"</code>. I guess library.delete() would be the equivalent).<br />
The only solution I found was to switch the selected library view to the "Basic" one and then back.</p>

<p>Here's a sample:</p>

<pre><code>import pya, os
import importlib.util as ilib

lv = pya.Application.instance().main_window().current_view()
wid = lv.widget()
widLib = lv.widget().libraries_frame()

def ezimport(filePath):
  # Makes it less verbose to import modules found from the executing fileName
  # → Script executed from a technology
  extFilePath = filePath.split("/")
  selfPath = os.path.join(os.path.dirname(__file__),*extFilePath)
  spec = ilib.spec_from_file_location(extFilePath[-1], selfPath)

  md = ilib.module_from_spec(spec)
  spec.loader.exec_module(md)
  return md

ent1 = ezimport("ent1_PCell.py")
ent2 = ezimport("ent2_PCell.py")

class NEW_LIB(pya.Library):

  def __init__(self):

    lib = pya.Library.library_by_name("NEW_LIB")
    if not(lib):
      # Set the description
      self.description = "New Library"
      self.register("NEW_LIB")

    self.lib = pya.Library.library_by_name("NEW_LIB")

    # Create the PCell declarations
    # Register PCells to the already existing NEW_LIB already exists
    self.lib.layout().register_pcell("ENTRY1", ent1.PCell1())
    self.lib.layout().register_pcell("ENTRY2", ent2.PCell2())

    self.lib.register("NEW_LIB") # Only registers internally, won't update the library view
    self.refresh() # Won't do a thing
    lib.refresh() # Won't do a thing

    wid.update() # Won't do a thing
    wid.repaint() # Won't do a thing
    widLib.update() # Won't do a thing
    widLib.repaint() # Won't do a thing

# Instantiate and register the library
NEW_LIB()
</code></pre>

<p>Thank you,<br />
Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>top cell set criteria</title>
        <link>https://www.klayout.de/forum/discussion/2801/top-cell-set-criteria</link>
        <pubDate>Wed, 08 Oct 2025 14:14:28 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>husot</dc:creator>
        <guid isPermaLink="false">2801@/forum/discussions</guid>
        <description><![CDATA[<p>What is the criteria which cell will be on top?<br />
It does not look like an alphabetical order, I try to avoid having scripts and .lym session files to keep the top cell setting.</p>
]]>
        </description>
    </item>
    <item>
        <title>Klayout impoprt multi-GDS</title>
        <link>https://www.klayout.de/forum/discussion/2792/klayout-impoprt-multi-gds</link>
        <pubDate>Thu, 25 Sep 2025 05:09:21 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>jiunnweiyeh</dc:creator>
        <guid isPermaLink="false">2792@/forum/discussions</guid>
        <description><![CDATA[<p>Hi sir,<br />
When Klayout import multi GDS files into same library.<br />
Klayout will change the cell-name if file1  / file2 have same cell , (just  add a $1 ...)<br />
That is fine  ( we need to rename that cell if it have same name)<br />
[But , $ will been some issue , cause we have another software for GDS , "$ " will make some issue]<br />
But can we change the (new)cell name as OOOO_1 ?<br />
original <img src="https://www.klayout.de/forum/resources/emoji/smile.png" title=":smile:" alt=":smile:" height="20" /> <br />
file1-   cell :OOOO<br />
file2-   cell :OOOO</p>

<p>when we import both file into same libray (3rd file), that will been change to <br />
file3 , cell:OOO  and cell:OOO$1<br />
we want to change that as <br />
file3 , cell:OOO  and cell:OOO_1</p>

<p>does Klayout have any option to control that ?<br />
or , we just using a scribe to change the cell name?</p>
]]>
        </description>
    </item>
    <item>
        <title>Layers initialization failure</title>
        <link>https://www.klayout.de/forum/discussion/2777/layers-initialization-failure</link>
        <pubDate>Tue, 02 Sep 2025 08:38:06 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>charavan</dc:creator>
        <guid isPermaLink="false">2777@/forum/discussions</guid>
        <description><![CDATA[<p>Greetings,</p>

<p>Wanted to bring to your attention that when a KLayout "tech" folder has the below structure:</p>

<p>tech/<br />
  test.lyp -&gt; 2/test.lyp<br />
  test.lyt  -&gt; 1/test.lyt</p>

<p>It fails to initialize the Layers with the corresponding message:</p>

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

<p>I understand that KLayout assumes that .lyt and .lyp files should be in the same directory but when this directory is managed by a Design Management Tool it can happen that these files reside in different folders.</p>
]]>
        </description>
    </item>
    <item>
        <title>unsigned long value overflow</title>
        <link>https://www.klayout.de/forum/discussion/2719/unsigned-long-value-overflow</link>
        <pubDate>Mon, 19 May 2025 00:56:03 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Alexander</dc:creator>
        <guid isPermaLink="false">2719@/forum/discussions</guid>
        <description><![CDATA[<p>I tried to open an OAS file, but it failed with the error: unsigned long value overflow position = -1374275668, cell = "".<br />
I would appreciate any help or suggestions on how to resolve this issue.</p>
]]>
        </description>
    </item>
    <item>
        <title>DRC: Measure distance corner to edge</title>
        <link>https://www.klayout.de/forum/discussion/2776/drc-measure-distance-corner-to-edge</link>
        <pubDate>Fri, 29 Aug 2025 10:08:41 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2776@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I need to set up a DRC check where one layer is inside another, and then one of the outer edges can be closer than the other edge of the corner.<br />
To solve that, I thought on measuring the distance of each corner to the outer edges and only 1 shorter distance is to be allowed per corner.<br />
That requires to measure the distance between corners and edges.</p>

<p>As per docs, <code>corner(as_dots)</code> generate a list of dot_like edges (I guess very short/infinitesimal edges), and <code>primary.separation(secondary,value)</code> can measure the separations between 2 sets of edges.</p>

<p>When assembling everything however, no separation returns an error (error count is 0 always, no matter what value is set):</p>

<pre><code>M1.edges.separation(V1.corners(as_dots),value.um)
</code></pre>

<p>The usage of <code>V1.corners(as_dots).raw</code> or <code>V1.raw.corners(as_dots)</code> didn't help either.</p>

<p>I checked for <code>M1.edges.separation(V1.edges,1.um)</code> and it works as expected, so I'm wondering what's the way to measure point to edge distances.</p>

<p>Thank you.</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>Inconsistent resizing operation</title>
        <link>https://www.klayout.de/forum/discussion/2779/inconsistent-resizing-operation</link>
        <pubDate>Mon, 08 Sep 2025 06:40:08 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2779@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I'm testing the different functions available for manipulating polygons. I need one to resize the perimeter of the polygons and "size/sized" would do the trick. In docs it's commented that it would require an EdgeProcessor step to fix self-intersections.<br />
When doing so I discovered a weird behavior involving polygon type conversion and resizing magnitude. Here's a tested script:</p>

<pre><code>ly = pya.Application.instance().main_window().current_view().active_cellview().layout()
c = ly.top_cell()

c.clear_shapes()

if c == None:
  raise Exception("No valid top cell")

l1 = pya.LayerInfo(1,0)
l2 = pya.LayerInfo(2,0)
l3 = pya.LayerInfo(3,0)
l4 = pya.LayerInfo(4,0)

poly = pya.DPolygon([
  pya.DPoint(-0.4,-0.45),
  pya.DPoint(-0.4, 0.45),
  pya.DPoint( 0.4, 0.45),
  pya.DPoint( 0.4,-0.45)
])

# First size then convert

polySmall1 = pya.EdgeProcessor().simple_merge_p2p([ poly.sized(-0.06, -0.06).to_itype(0.001) ], False, False, 1)[0].to_dtype(0.001)
polyMid1   = pya.EdgeProcessor().simple_merge_p2p([ poly.sized(-0.21, -0.21).to_itype(0.001) ], False, False, 1)[0].to_dtype(0.001)
polyBig1   = pya.EdgeProcessor().simple_merge_p2p([ poly.sized(-0.22, -0.22).to_itype(0.001) ], False, False, 1)[0].to_dtype(0.001)

# First convert then size

polySmall2 = pya.EdgeProcessor().simple_merge_p2p([ poly.to_itype( 0.001 ).sized(-60,   -60) ], False, False, 1)[0].to_dtype(0.001)
polyMid2   = pya.EdgeProcessor().simple_merge_p2p([ poly.to_itype( 0.001 ).sized(-210, -210) ], False, False, 1)[0].to_dtype(0.001)
polyBig2   = pya.EdgeProcessor().simple_merge_p2p([ poly.to_itype( 0.001 ).sized(-220, -220) ], False, False, 1)[0].to_dtype(0.001)

#####################

# Base shape
c.shapes(l1).insert(poly)

# Small resizing is consistent
c.shapes(l2).insert(polySmall1)
c.shapes(l2).insert(polySmall2)

# Mid resizing is still consistent
c.shapes(l3).insert(polyMid1)
c.shapes(l3).insert(polyMid2)

# Big resizing is inconsistent: polyBig1 behavior is expected, polyBig2 returns a corner rectangle
c.shapes(l4).insert(polyBig1)
c.shapes(l4).insert(polyBig2)
</code></pre>

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

<p>I wanted to ask what's the correct approach to always get the expected result and have no surprises down the line (I'm guessing one is to always use Polygon instead of DPolygon).</p>

<p>Thank you,</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>Programmatic LayoutToNetlist with &quot;flat&quot; mode</title>
        <link>https://www.klayout.de/forum/discussion/2770/programmatic-layouttonetlist-with-flat-mode</link>
        <pubDate>Thu, 21 Aug 2025 06:17:44 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Tabra</dc:creator>
        <guid isPermaLink="false">2770@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I've been trying to set up a script or workflow that would allow me to extract the netlist of a big (2GB layout) and check for shorts or opens.</p>

<p>"Trace All Nets → Flat" + "netlist browser" works wonderfully, but as mentioned in other places I read, it doesn't allow for filtering of cells to hide dummys.<br />
Ideally, this process would also be nice to have it programatically, hence the use of DRC or using the "pya" API.<br />
I found that any method I used it had some drawback that other ways don't, and viceversa:</p>

<table>
<thead>
<tr>
  <th></th>
  <th>UI</th>
  <th>DRC</th>
  <th>pya</th>
</tr>
</thead>
<tbody>
<tr>
  <td>Programmatic</td>
  <td>No</td>
  <td>Yes (limited)</td>
  <td>Yes</td>
</tr>
<tr>
  <td>Cell selection</td>
  <td>No wildcard support</td>
  <td>Yes</td>
  <td>Yes</td>
</tr>
<tr>
  <td>Flat netlist</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Can't find a way to do it/unclear for me in docs</td>
</tr>
<tr>
  <td>Convenience</td>
  <td>Fastest</td>
  <td>Slow, bottleneck when executing "input()"</td>
  <td>Fast, but requires manual opening in correct layout</td>
</tr>
</tbody>
</table>

<p>"pya" I think would be best as it can import other functionalities seamlessly, and I'm most familiar with python syntax.</p>

<p>Btw:</p>

<ul>
<li>Is there a way to load the "pya netlist" to the "netlist browser" after <code>execute_netlist</code> so no manual opening is needed, like <code>netlist</code> does in "DRC"?</li>
<li>Is there a way to load the connectivity of an existing technology to the LayoutToNetlist?  I can't find the method to load the <code>pya.Technology().technology_by_name("technology_name").component("connectivity")</code> directly, and I'm currently forced to hardcode it or perform an inconvenient "for loop" for each <code>connect()</code></li>
</ul>

<p>Thanks!</p>

<p>Gerard</p>
]]>
        </description>
    </item>
    <item>
        <title>XSection Loops/User Defined Process Blocks</title>
        <link>https://www.klayout.de/forum/discussion/2772/xsection-loops-user-defined-process-blocks</link>
        <pubDate>Thu, 21 Aug 2025 19:16:55 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>CreatedByCreator</dc:creator>
        <guid isPermaLink="false">2772@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>I see in previous comments that you've stopped working on the XSection portion, but in it's current implementation, are there any options to define functions (process blocks) within the xsection script? Or would I have to build my own XSection with modifications to allow for process blocks and/or loops of process steps?</p>

<p>Thank you!</p>
]]>
        </description>
    </item>
    <item>
        <title>Multiple redundant callback triggers in the PyCell creation,update flow</title>
        <link>https://www.klayout.de/forum/discussion/2774/multiple-redundant-callback-triggers-in-the-pycell-creation-update-flow</link>
        <pubDate>Mon, 25 Aug 2025 16:34:08 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>charavan</dc:creator>
        <guid isPermaLink="false">2774@/forum/discussions</guid>
        <description><![CDATA[<p>Greetings,</p>

<p>I would like to ask your support on a callbacks-related issue.<br />
Currently using KLayout 0.29.12</p>

<p>The flows I raise my concern about are:<br />
    1. The instantiation of a PyCell.<br />
    2. The update of it's parameter set.</p>

<p>More specifically, when instantiating a PyCell, I get multiple redundant triggers of the callbacks some for empty string and others for None values. Filtering None values was easy but i can't filter empty string values as no callback would trigger upon instantiation.</p>

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

<p>Opening the Object properties widget also triggers one unnecessary callback, each time I open the window.</p>

<p>Lastly, updating the PyCell's parameter set again triggers the callbacks multiple redundant times.</p>

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

<p>If there is anything more that you require from me to further explain the issue let me know.</p>

<p>Kind Regards,<br />
Chris</p>
]]>
        </description>
    </item>
    <item>
        <title>what's the meaning of Absolute (accumulated)transformations</title>
        <link>https://www.klayout.de/forum/discussion/2765/whats-the-meaning-of-absolute-accumulated-transformations</link>
        <pubDate>Sat, 09 Aug 2025 16:22:08 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>YCW1026</dc:creator>
        <guid isPermaLink="false">2765@/forum/discussions</guid>
        <description><![CDATA[<p>i can't find any defination of this <em>Absolute (accumulated)transformations</em>, any one can give me clear example to describe this Absolute (accumulated)transformations？<br />
<img src="https://www.klayout.de/forum/uploads/editor/kk/nmtc6907ea5j.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>How export cell with fixed name in hierarchy to csv file in fixed format?</title>
        <link>https://www.klayout.de/forum/discussion/2744/how-export-cell-with-fixed-name-in-hierarchy-to-csv-file-in-fixed-format</link>
        <pubDate>Mon, 23 Jun 2025 10:02:34 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>Weiling_Zheng</dc:creator>
        <guid isPermaLink="false">2744@/forum/discussions</guid>
        <description><![CDATA[<p>Hi,</p>

<p>I try to export cells information with fixed names to csv file using search and replace function.<br />
I have several questions?<br />
1): it shows cells information, but only in hierarchy, how to get them in flat?<br />
2):the csv file have some information, but I only need xy points, how to get them without reprocessing data？</p>

<p>Best regards!<br />
Weiling</p>
]]>
        </description>
    </item>
    <item>
        <title>what versions of python and python packages are needed to get skywater and gf180mcu PDK work</title>
        <link>https://www.klayout.de/forum/discussion/2747/what-versions-of-python-and-python-packages-are-needed-to-get-skywater-and-gf180mcu-pdk-work</link>
        <pubDate>Thu, 03 Jul 2025 01:06:21 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>ckarnstedt</dc:creator>
        <guid isPermaLink="false">2747@/forum/discussions</guid>
        <description><![CDATA[<p>I've run into a major wall as a new klayout user.</p>

<p>I built version 30.2 from source on Rocky Linux 8, using python 3.12.  For both the skywater and gf180mcu PDKs, I get error messages that make it look like there are incompatibilities between the PDKs and the Python packages kfactory and/or gdsfactory.   I get error messages for most pcells when I try to instantiate them.   I installed the salt packages for both in klayout.  What is going on here?   Examples are below.  Thanks.  --Curt.</p>

<p>Like for skywater, when instantiating pcell "nfet":<br />
ERROR: AttributeError: module 'kfactory.kcell' has no attribute '_get_default_kcl' in PCellDeclaration.produce<br />
  /home/cate/Downloads/klayout/salt/Efabless_sky130/tech/sky130/python/cells/pdk.py:32<br />
  /home/cate/Downloads/klayout/salt/Efabless_sky130/tech/sky130/python/cells/draw_fet.py:550<br />
  /home/cate/Downloads/klayout/salt/Efabless_sky130/tech/sky130/python/cells/fet.py:261<br />
  /home/cate/Downloads/klayout/bin-release/pymod/klayout/db/pcell_declaration_helper.py:274</p>

<p>or for gf180mcu, when instantiating "cap_pmos"<br />
ERROR: TypeError: 'builtin_function_or_method' object is not subscriptable in PCellDeclaration.produce<br />
  /home/cate/Downloads/klayout/salt/gf180mcu/pymacros/cells/draw_cap_mos.py:62<br />
  /home/cate/.local/lib/python3.12/site-packages/kfactory/decorators.py:383<br />
  /home/cate/.local/lib/python3.12/site-packages/cachetools/_cached.py:173<br />
  /home/cate/.local/lib/python3.12/site-packages/kfactory/decorators.py:432<br />
  /home/cate/.local/lib/python3.12/site-packages/kfactory/decorators.py:458<br />
  /home/cate/.local/lib/python3.12/site-packages/kfactory/layout.py:1003<br />
  /home/cate/Downloads/klayout/salt/gf180mcu/pymacros/cells/draw_cap_mos.py:193<br />
  /home/cate/Downloads/klayout/salt/gf180mcu/pymacros/cells/cap_mos.py:182<br />
  /home/cate/Downloads/klayout/bin-release/pymod/klayout/db/pcell_declaration_helper.py:274</p>
]]>
        </description>
    </item>
    <item>
        <title>[DRC]-Why do identical structures only partially report width errors?</title>
        <link>https://www.klayout.de/forum/discussion/2727/drc-why-do-identical-structures-only-partially-report-width-errors</link>
        <pubDate>Thu, 22 May 2025 03:11:24 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>dbsdyhxx</dc:creator>
        <guid isPermaLink="false">2727@/forum/discussions</guid>
        <description><![CDATA[<p>As a newcomer to using the KLayout Design Rule Checker , I have observed that during width checks, the DRC reports errors for only instances of identical structures, while other  identical structures are not flagged. I am unsure whether this behavior is an inherent characteristic of the DRC tool or if there is an underlying issue in my design setup. Could you please explain why this occurs and whether it reflects a standard behavior of the DRC? As you can see in the image below, I'm not sure if you can see it.Thank you very much for your assistance!<br />
<img src="https://www.klayout.de/forum/uploads/editor/7b/1tvraedmvrz7.png" alt="" title="" /></p>
]]>
        </description>
    </item>
    <item>
        <title>Should we make answered discussions closed in KLayout?</title>
        <link>https://www.klayout.de/forum/discussion/2723/should-we-make-answered-discussions-closed-in-klayout</link>
        <pubDate>Mon, 19 May 2025 09:59:09 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>BigPanda</dc:creator>
        <guid isPermaLink="false">2723@/forum/discussions</guid>
        <description><![CDATA[<p>Hi, Matthias, do you think we should make some discussions in our Forum closed? I think maybe we could do this as in Github issues, people can make discussions closed when they get the satisfied answer. Or just give it a  tag such as <code>solved</code> or something. Then people who has same problem could search and read this discussion and if they have further question, they can cite this dicussion, like stack overflow. In case to have a lot of repeated questions, maybe you can also add a <code>vote</code> and <code>reputation(scores)</code> function. Then we can make this community better and better.</p>
]]>
        </description>
    </item>
    <item>
        <title>cell.bbox in DRC</title>
        <link>https://www.klayout.de/forum/discussion/1391/cell-bbox-in-drc</link>
        <pubDate>Mon, 02 Dec 2019 20:20:01 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>laurent_c</dc:creator>
        <guid isPermaLink="false">1391@/forum/discussions</guid>
        <description><![CDATA[<p>How to use the cell.bbox in a DRC file ?</p>

<pre><code>nwell = input (1,0)
cellBulk = RBA::CellView::active.cell.bbox
pwell = cellBulk - nwell
</code></pre>

<p>But, the last command does not work, because I cannot mix a bbox with a polygon.<br />
Here, I cannot use make_polygon : I need it for the extraction of NMOS in triple well.</p>

<p>Thank you,</p>

<p>Laurent</p>
]]>
        </description>
    </item>
    <item>
        <title>Xsection snapshot pop up default location location</title>
        <link>https://www.klayout.de/forum/discussion/2713/xsection-snapshot-pop-up-default-location-location</link>
        <pubDate>Fri, 09 May 2025 22:07:25 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>sciencezhu</dc:creator>
        <guid isPermaLink="false">2713@/forum/discussions</guid>
        <description><![CDATA[<p><img src="https://www.klayout.de/forum/uploads/editor/12/m5qyetwtuude.jpg" alt="" title="" /></p>

<p>You can see that the default pop up location always locate at the center of the Xsection, which always happen to be the important location that I want to view. In the script, I'm doing multiple snapshot so that I can check how the Xsection looks at different process steps. But since this popup always block the view, I have to move it away and then click the Yes button so that It can continue. But the next popup will again appear at the center location. Is there away to automatically adjust the popup position to a edge location, so that I can only need to click the YES button without the need to drag this to the edge from the center location?</p>

<p>thank you.</p>
]]>
        </description>
    </item>
    <item>
        <title>How the data sort in Klayout?</title>
        <link>https://www.klayout.de/forum/discussion/2705/how-the-data-sort-in-klayout</link>
        <pubDate>Mon, 28 Apr 2025 04:00:58 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>jiunnweiyeh</dc:creator>
        <guid isPermaLink="false">2705@/forum/discussions</guid>
        <description><![CDATA[<p>Hi sir,<br />
if I using the coda as this one.</p>

<pre><code>die=input(71,0)
die.data.each do |xx|
puts  xx
end
</code></pre>

<p>Klayout DRC will output what the data of layer 71 , 0.<br />
but do you have sort the data before ouptut?</p>
]]>
        </description>
    </item>
    <item>
        <title>DRC False Flags on Bent Paths - path-to-polygon bug?</title>
        <link>https://www.klayout.de/forum/discussion/2682/drc-false-flags-on-bent-paths-path-to-polygon-bug</link>
        <pubDate>Mon, 17 Mar 2025 22:57:35 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>14darcia</dc:creator>
        <guid isPermaLink="false">2682@/forum/discussions</guid>
        <description><![CDATA[<p>Hi Matthias,</p>

<p>I'm scratching my head over a strange false flag scenario.</p>

<p>I've boiled it down to a very simple shape - a path with 3 points. How I arrived at these points is somewhat convoluted but it is part of a much larger structure that has been giving me trouble with false DRC flags. Here is the shape:<br />
<img src="https://klayout.de/forum/uploads/editor/od/97j404j7oa7n.png" alt="" title="" /></p>

<p>And here are the vertices:</p>

<p>-8763.84300 -11243.48400<br />
-8763.72400 -11243.60500<br />
-8763.60500 -11243.72400</p>

<p>I've attached the simple GDS (with both path and polygon interpretations) and DRC script in the zip file. I'm getting two errors flagged:<br />
<img src="https://klayout.de/forum/uploads/editor/tz/39mfj87su5ml.png" alt="" title="" /><br />
1. The leftmost corner is likely being flagged as an acute angle. This sort of makes sense to me if you chalk it up to machine precision. I know you can also filter out angles if needed. Let me know if I'm wrong in that assumption though.<br />
2. The middle of the top right edge is being flagged. This is where I believe the path-to-polygon bug comes into play.</p>

<p>I'll just focus on the second point. When I 'merge shapes' on the path object, I get this jagged tooth where it is flagged.<br />
<img src="https://klayout.de/forum/uploads/editor/2f/e10zxw5mer0k.png" alt="" title="" /><br />
It makes sense to me why this is flagged, but a) I don't know why this tooth is present in the merged shape, and more confusingly b) why does the error appear to be on a scale larger than the database unit of 1nm (1nm in y but 2nm in x) - similar to the error in (1), I'd expect a rounding error to be at most off by the database grid.</p>

<p>Curious to hear your thoughts on this. I haven't yet looked too far under the hood, but happy to be pointed in the right direction!</p>

<p>Thanks,<br />
Adam</p>
]]>
        </description>
    </item>
    <item>
        <title>gds file with electrical  layers</title>
        <link>https://www.klayout.de/forum/discussion/2700/gds-file-with-electrical-layers</link>
        <pubDate>Tue, 22 Apr 2025 18:52:05 +0000</pubDate>
        <category>KLayout Support</category>
        <dc:creator>lra</dc:creator>
        <guid isPermaLink="false">2700@/forum/discussions</guid>
        <description><![CDATA[<p>Hello,</p>

<p>I am using xic for schematic capture and LVS/DRC, which stores the schematic in some gds layers. trying to import the layers in Klayout. I changed the lyp file .. the electrical layers from the xic gds file don't show up and a Klayout write to gds file don't include the electrical layers.</p>

<p>Thank you.</p>
]]>
        </description>
    </item>
   </channel>
</rss>
