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,515
Last Active
Roles
Member

Comments

  • Hi Max, you indicated the problem already - there are too many ways to go and everybody prefers his or her favourite language. One feasible and language-independent way is to write a text file in KLayout's GDS text format and use KLayout to convert…
  • Hi Max, Well, at least you can blame me ... :-) I can't confirm the missing text visibility in the default configuration. I removed the configuration file in my installation and texts still appear. But it's pretty easy to disable texts when playin…
  • Hallo, your problem is typically solved by scripting the generation of such layout. You can use KLayout's built-in scripting feature to do so, but now it's up to you whether you want to spend time to learn how to do so or still create the layout m…
  • Hi Laurent, Maks is basically right - you can disable texts. But that will disable text plus the tiny dot for the text location. The dot itself can't be separated from the text, since often the dot is the actual information of the text. You can h…
  • Hi Max, of course it's supposed to work :-) My personal experiences with CygWin are somewhat limited - I tend to use the MinGW shell rather than CygWin. Are you using the CygWin build or are you using the native Windows binary in a CygWin shell? I…
  • Hi Laurent, your sample is actually fine. In particular the Ok button handling is the way KLayout's Qt binding suggests. You could also bind the conventional Qt signals to slots using QObject#connect, but there is not substantial advantage of one m…
  • Hi Laurent, You can use the QComboBox in place of the four QRadioButton objects. So you need just one widget instead of four. The most important methods available for a QComboBox are * addItem(string) to add a new item to the combo box * current…
  • Hi Ania, Your description is somewhat short, so I can just guess. "Add new layers" can be used together with a layer properties (.lyp) file that contains some layers, but maybe not all. All layers not given in the .lyp file will then be a…
  • You'll need coded libraries to provide PCell's. That is something else - a coded library is not a layout file but a piece of code that registers something like a dynamic library in the system. There is a lot of information available on how to code …
  • Just a rough guess: you came across the Windows-backslash-double quoted string-incompatibility issue. In double-quoted strings, the backslash starts an escape sequence and will insert control characters (or something else), but not the backslash cha…
  • Hi, A "library" is in the most simple form (static layout, no PCell's) a plain layout file with multiple top cells, one for each library component (note that the components have to be top cells). That file is put into a specific place so …
  • Hallo, the easiest way to do so is by binding a macro to a toolbar button. Open the macro's properties and enter a toolbar menu path into the "Menu path" edit box. This will usually be "@toolbar.end" which means a new tool butto…
  • Hi Loren, here is the basic code: view = RBA::Application.instance.main_window.current_viewimage = RBA::Image::new("/home/matthias/Pictures/IMAGE.JPG")# TODO: set image.trans to establish a pixel-to-layout space conversionview.insert_ima…
  • Hi Tiboy, I don't see the difference between a ruler and your request. when you pick a point and drag a ruler, the relative coordinates will be shown in the status bar. And snapping to objects is provided too. What is inconvenient with the ruler? …
  • Hi Dean, the Cadence binary format is closed and not open to the public. Technically, it's possible to access the data through the ITK library or the OpenAccess API. Both are not open source - the ITK is a licensed feature and OpenAccess is availab…
  • Hallo, I guess "mrubyioroy" is the one who built the KLayout binary you are using. The paths where he (or she?) did so are compiled-in so they are visible to you in that specific case. The error message is a bad one and not specific. Bas…
  • Hi, Thanks :-) Well, but it's not quite that Cadence-like to copy all concepts. First of all, a layout file is a library by itself in the sense that it can contain cells which you can use inside other cells. So if you create a file with "new…
  • Hi Dean, that expression is ugly, right :-) My suggestion is to decompose it into binary expressions: l1 = NN NOT GPl2 = l1 AND OLl3 = l2 AND NWl4 = l3 SIZING 0.15l5 = NOT NWl6 = l5 SIZING 0.25l7 = l4 AND l6l8 = l7 OR l1l9 = l8 SIZING 0.20l10 = l…
  • Hi, first of all, I'd add 'include RBA' after the module command. That includes the RBA namespace and makes the classes (Point, Path) known to your module. You can also write "RBA::Point" or "RBA::Path" instead. Next, you'll ha…
  • Hi Ha, well, renaming a cell does what it's supposed to ... It changes the name of the cell. Instances are not made by name, they are made by cell index. If you want to make instances point to another cell, you have to use code like this layout_c…
  • Hi, there is no build-in function for that, but it's possible to code that in a script. The "Useful script samples" may serve as a starting point (http://www.klayout.de/useful_scripts.html#calc_area_hier.rbm). Matthias
  • Hi David, thank you for the note. Actually, defining classes and using them in the top-level context is even more the "Ruby-way" :-) Matthias
  • Hi David, there is a good reason for separating GDS layer/datatype and layer index - there is not necessarily a correspondence between both. Layers can be temporary (no GDS layer), there are file formats without layer numbers, just names (CIF, DXF)…
  • Hi David, you can find the C++ PCell code in the "libBasic*" files. Each PCell has a .h and .cc file and the name corresponds to the PCell. But as I mentioned, I currently don't advertise this method of creating PCell's, because I don't w…
  • Hi Michael, from your description I guess the array of cells got expanded into many identical cells. This can happen if you select all shapes from the array and create variants - KLayout will assume you want to edit every individual instance and cr…
  • Hi David, I got some time now ... Having a layer= method actually is a good suggestion. It's the OO style of thinking - but behind the scenes that method has to be mapped to code very similar to the one you presented above. But your code does not…
  • Hi David, it's basically quite simple - you have to apply the relevant transformations. It's easy if you choose to output the results to the current cell, because then the transformation is readily available through ObjectInstPath#trans as a CplxTr…
  • Here's one more comment: The boolean operations are available with EdgeProcessor#boolean_p2p: # "not" aka "erase":edge.boolean_p2p([ polygon_1 ], [ polygon_2 ], EdgeProcessor::ModeANotB, false, false)# "xor" aka "…
  • Hallo, "erase" in the menu is basically a boolean "not", "mask" is "and" and "diff" is "xor". Is that comment helpful? Matthias
  • Hi David, again, please be patient. I'll need some days to comment on this. Acually I am on vacation and my laptop's battery is running low ... :-) Matthias