Matthias

Hi Jim, you can use master or any other branch, but without warranty. The usual approach (and the one favoured by GitHub) is: features are developed in branches. When they are considered stable enough they are integrated into the master (pull request). Hence the master is kind of "latest greatest", but with a certain risk of being spoiled. There are also forks from other user with their own masters and branches. Don't confuse them with the ones from the KLayout project. But eventually, when the master is considered to have a sufficient quality, a release is made by creating a release tag (https://github.com/KLayout/klayout/releases). A release is a snapshot which is then turned into Windows binaries, Linux packages, PyPI wheels etc. This this is a lengthy process and I don't want to do this too often. Matthias

About

Username
Matthias
Joined
Visits
1,513
Last Active
Roles
Member

Comments

  • Finally a working full sample :) Thanks for the code and reporting the problem. I can reproduce the issue. The event is working with Ruby, but not with Python. Maybe a object reference count issue. I need to debug that problem. I have created a ti…
  • @alexlpn I cannot debug or reproduce that isuee with partial code. Could you paste a full sample that allows me to reproduce the problem? The reason may be manifold. I'm not using the Qt classes to an extent I have much experience with that myself.…
  • Well, it's already in your code above. You don't need to do the copy_tree_shapes step, because you can read the partial layouts already into the target layout. The trick is to use the SkipNewCell option and do multiple reads into the same layout obj…
  • Thanks for this discussion. I personal prefer the definition of "emptiness" in a geometrical sense. I often use cell.bbox().is_empty() to check if a cell is empty. It's a matter of application I assume. A cell that calls empty child cell…
  • Update: here is a sample I generated from the documentation sources: https://www.klayout.org/downloads/dropbox/offline-manual.pdf It needs some polishing - for example, not all links are working - but basically that is the quality I can provide. I…
  • Hi @ykopur, Right now, you simply cannot change the UI dynamically. This means, you cannot make parameters hidden or disabled conditionally. "coerce_parameters_impl" is not a callback in the sense Virtuoso implements it. It is only conce…
  • Sorry, I do not fully understand what you are doing. Could you share your code please? After reading the files into a single layout, of course you have multiple top cells. But you can take this single layout and start constructing the single palett…
  • @ravn I'm slightly confused - as Jim mentioned a PDK usually does not document code but rather user facing things like devices, design rules, guidelines or physical things like electrical parameters, sheet resistances or nominal dimensions. I guess…
  • @vvslavavv Thanks again for the test cases. However I have difficulties reproducing the issue. I downloaded the first two samples from your dropbox. These files download as CELLA_1.1.oas and CELLA_2.1.oas. The OASIS structure is that: 000000000 …
  • Hi Joanne, currently there is no RC extraction support in KLayout. I considered a couple of times to start with that topic, but my resources are limited and eaten away by daily support topics, so there was not progress so far. I feel that RC extr…
  • @EugeneZelenko Thanks for this report and the nice test case. I can reproduce it and the problem is due to an internal loss of ownership of the QBrush object. I have created a ticket for this problem: https://github.com/KLayout/klayout/issues/1029.…
  • @dick_freebird Thanks, this is exactly what I have in mind too (I do not feel heroic enough to extract these things from plain metal polygons). @William1 You really need a kind of marker layer which allows you to recognize the capacitor. Recognizin…
  • Hi @mpegwmvavi, "select" does not change the initial cell, but only switches on or off certain cells. The method you are looking for is "cell" - i.e.: cell1= layout("@1").cell("Cell1Name")cell2= layout(&quo…
  • Thanks a lot. I'll take a look! Matthias
  • @alexlpn If you want to share child cells, you cannot separate the copy into multiple calls, but you have to specify multiple source cells plus multiple target cells in the same call to "copy_tree_shapes". I guess however this is difficu…
  • I am slightly confused now ... Actually, the comma way of adding rectangle filters is already there and seems to work. I just missed it. E.g. via.enclosed(metal, projection, 20.nm, one_side_allowed, two_sides_allowed, three_sides_allowed).output(…
  • I'm sorry, I could not reproduce the problem with a test case of mine. Maybe you can attach a GDS file that allows reproducing the problem. And what is the version and OS in your case? In general, you're using the fill feature for something it was …
  • Could you be a bit more specific? Like indicating what errors you encounter. kazzz is using the Anaconda environment to generate builds on MacOS and I did so experimentally on Windows with MSVC 2017, so basically it should work. I have no experienc…
  • The "Editor Options" is a floating panel and changes are effective immediately. Usually it'd docked on the left side of the view. In your case you have selected the "Basic" Library which is not what you want. Change "Librar…
  • No, each shape will not erase anything. But the code is lacking the body of the loop. It should look like top.each_shape(pin) do |shape| ... do something with "shape" ..end Matthias
  • No, there is no difference between both readers in terms of "read into" behaviour. There must be a different explanation. Matthias
  • I'm afraid with GDS there is no other elegant solution. The problem is you're basically fighting against a fundamental concept of GDS which is that touching or overlapping polygons are considered to form a large "painted" area. Edges essen…
  • Hi Laurent, first of all the rectangle filters work only this way round: VIA.enclosed(METAL, 0.01, ...) The reason is that filtering happens when rectangle edges are fully flagged. If you check via vs. metal, the via rectangle's edges are flagged…
  • @BWest When you have a target layout specified, it will only contain the layers that are output. And as @dick_freebird pointed out, if you overwrite the file the other layers will be gone :( Luckily, KLayout's DRC script language is actually a Ruby…
  • I'm on Ubuntu 20.04 as well and I've never seen this issue. I quick search reveals this: https://askubuntu.com/questions/1271976/could-not-load-the-qt-platform-plugin-xcb-in-even-though-it-was-found Have you tried that? Matthias
  • 0.27.8 is released. Let's see whether it works for you :) Matthias
  • "enclosing" checks whether layer1 extends beyond layer 2 at least by the given distance. This works as you can see here: (Image) (the layer 1 edges flagged are less than 2 µm outside of layer 2). "enclosing" does not check if…
  • Do you mean "klayout -b" with "no GUI" mode? In this case, you should still be able to create and use a technology. Technology information is stored inside $KLAYOUT_HOME/tech/... (~/.klayout/tech/.. by default on Linux) and is r…
  • The code is a little more complex than it needs to be. If you copy the shapes to a new layer, you do not need to collect the shapes first. This you only need to do if you plan to replace the shapes. Plus, you do not need to perform a logical AND (…
  • No, I'm sorry. There is no such feature in the API. You can disable or hide the Close menu item. And knowing the Qt widget hierarchy you can basically navigate to the tab widget of the main window to disable the close icon of the tabs. However, thi…