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 Christian, thanks for this nice feedback :-) The Basic.TEXT PCell already has a "inverse" option. With this option, the text will be "holes". Did you try this option? It's available below the "magnification". Rega…
  • Hi Olivier, LEF/DEF is undergoing some development and there are flavours out there which may behave differently. Without a testcase I can't give any advise. I am not aware of renaming vias so I cannot tell whether this is the reason. The usual ap…
  • Hi Allon, which version are you using? Version 0.24.3 and before had a bug that rendered inverted boxes when sizing down layers containing a single box. Newer versions should not exhibit this problem. If you still see this issue, you can send a te…
  • Hi, There are basically two kind of layers: edge and polygon layers. You can ask a layer for it's type using polygon?. This method will return true if the layer is of polygon type. You can use this method in an if statement for example to perform d…
  • Hi, There is another Matthias around but it's not me :-) I had some trouble getting the code to work without the indents but I guess I got the idea. The code contains some bugs and here is my version. It requires KLayout 0.24.x or later. The main…
  • Hi, There is no "write only top level cell without subcells" option currently, but you can emulate this feature. To do so, expand the tree of your top level cell so you see the child cells. Select all child cells in the cell tree and sel…
  • Hi Allon, 1.) A plugin can register and act on menu entries. You can basically grab the mouse in such a handler and act on mouse events. Is that what you are looking for? 2.) If you go for the solution of 1.) you can decide yourself when the plugi…
  • Hi Mike, no sorry - I did not pursue this thread much further. Decomposition into parts is available but I don't know the requirements of FastCap. I understood this is tessellation and not just decomposition. I assume that a dumb trapezoid decompos…
  • Hi Thomas, what do you mean by "shape coordinates"? Like the polygon points: shape.polygon.each_point_hull { |p| ... } Or the bounding box center: shape.bbox.center Matthias
  • Hi Lukas, Maybe here is a script which does what you want: it will selected paths and join them by concatenating the segments. I guess handling of end and start extensions and redundant points is missing but it may serve as a staring point: mw = R…
    in merge path Comment by Matthias June 2016
  • Hi Dave, as discussed before, opening the progress reporting API to Ruby code has severe implications. Which is why I am not considering this option right now. But I think that the proposed solution is helpful in your case - if any user interface …
  • Hello, There is a simple way to do this using a DRC script: Layer0 = input(1, 0)Layer1 = input(2, 0)(Layer0 - Layer1).output(10, 0) the basic way using plain Python is via the pya.Region object. A Region object is basically a collection of polygo…
  • Hi Dave, The solution should come with 0.24.7. This version shows a popup progress bar when you use a script with -z and perform some long running operation. It should work, but to be frank, I am not happy with it. Now, progress bars pop up, even …
  • Hi, Maybe that needs some explanation: A view can show multiple layouts. Or more precisely: multiple specific cells (plus context) within multiple layouts. These parts are called "cellviews". The are referred to by "@1", "…
  • Hi, a bit hard to read because of missing formatting, but it looks right. (BTW: you can format code by using the Markdown formatting: just indent the code lines with four blanks). One remark: you can use "RBA::CplxTrans" instead of &quo…
  • Hi Allon, the RecusiveShapeIterator keeps the path internally, but right now it's not accessible through Ruby. Writing your own recursive search is a feasible solution for this problem. To get the global transformation you just need to multiple al…
  • Hi Canny, that's simple: replace cells[c][pc] += 1 by cells[c][pc] += pi.inst.size Matthias
  • Well, maybe not blind ... but creative :-) Thanks for sharing the sample. You can format it as code by prepending four blanks for every code line (that's Markdown markup). That is in particular important for Python. Thanks, Matthias
  • Hi Thomas, I have not tried Ubuntu 16 myself. I assume that you can build it from source, but I have not tried myself. I have only limited computing resources available and cannot support all distributions. I am focusing on Ubuntu 14 currently. M…
  • Hi, what do you mean by "pointers"? Rulers/arrows? These are not part of GDS files but are pure annotations. You can save rulers as "sessions" (File/Save Session). Matthias
  • Hi Thomas, yes, that's what I meant. Maybe "klayout.exe" is left over from an old installation? Does "klayout_app.exe" work? Matthias
  • Hello, I cannot specify precisely how the rounding is performed. That depends on many factors and finally may be different on different CPU models. What do you mean by "depend on angle"? The intersection between two lines can be computed…
  • Hi Thomas, Maybe something is wrong with your %PATH%? I guess it locates some old klayout.dll or something like that. You can use the dependency walker from http://www.dependencywalker.com/ to check where the system draws the DLL's from. You are …
  • Hi Thomas, if you are about to produce data, a flat engine is not the best choice. It will always produce a big amount of data. If you combine all your steps into one DRC run and use tiling, the data is kept only for the tiles and this will reduce…
  • Hi (1) I'd never use Java for applications where performance and memory footprint are critical. Switch to C++ and you will be able to use the zlib to do CBLOCK inflation. (2) I'm sorry, but I don't understand that question. You mean how it's done?…
  • Hi Thomas, A DRC script is basically Ruby, but it requires a special environment. You can run a DRC script like this: # "drc" is a string containing the DRC scriptdrc = <<DRC# A sample DRC scriptl10 = input(10)l1 = input(1)(l10 ^ …
  • Hi, nice picture :-) The sketched case is a very simple one. To compute points 4 and 9 from 1 compute the unit normal vector of the 1->2 vector, multiply with the half width and add/subtract to point 1 to get point 4 and 9. The unit normal vec…
  • Hi Taha, thanks for your feedback :-) Building from source is not quite unusual on Linux. I am using Ubuntu myself, but I have not upgraded to 16 yet. I actively support 12 and 14. For other version and distributions there is the build script. If…
  • Hi, this is not a complete log, so I cannot help. Please include at least the gcc call. I guess you are using a too old ruby version. You will need 1.8.7 at least. I'd recommend any 2.x version. Matthias
  • Hi Thomas, I see I forgot a small detail above: the class of the parameter value needs to be checked too. If you have a layer and datatype you can simply create a RBA::LayerInfo object like this: from_layer = RBA::LayerInfo(layer, datatype) the …