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 David, I just released 0.23.11 - this issue should be fixed then. Best regards, Matthias
  • Hi Chris, KLayout does not have a state model for PCell's - they can be cached or in partially updated state. In other words: you cannot assume a certain history of events. KLayout only guarantees that before produce_impl is called, coerce_paramete…
  • Hi Dave, I doubt that QThread and Ruby will work as expected, since Ruby by itself is single-threaded. Once you enter the Ruby interpreter, the global interpreter lock will ensure that only one thread is active. Plus, as you mentioned, Qt is not fu…
  • Hi Dave, hi Chris, I am sorry for that confusion. I have mentioned the reason in a different thread: QFlags are classes in 0.24 and no longer mapped to integers. That enables a syntax close to C++ and all the features that QFlags offers, but lackin…
  • Hi Chris, thanks for mentioning this. Here are some statements from my side * Regarding Ruby: I'll surely shift to 2.x for the binary Windows release for 0.24. On Linux, it will depend on your choice which Ruby version you are building against. I'…
  • Hi chhung, Arrays with dimensions 0x0 are illegal for OASIS (see the last two arguments to CellInstArray). For GDS2 they can be produced, although their interpretation is implementation-dependent. I'd not use 0x0 arrays. If you want to create a si…
  • Hi David, I was able to fix the issue, but in all cases, the deleted cells will appear as new top cells after loading, because they exist in the original file or library. I can try to delete them afterwards but it will be a little tricky to sort ou…
  • Hi David, thanks for pointing that out ... the behaviour is not intended indeed. If you modify LIB_CELL1, it should be updated in the file, no matter what the changes are. I'll debug and try to fix that problem. Thanks for pointing that out. Mat…
  • Hi, (@David: thanks once again for your support! ...) You can use the "KLAYOUT_PATH" environment variant to configure the locations KLayout looks for scripts, .lyt files (inside "tech" below the KLAYOUT_PATH) etc. I admit, the…
  • Hi sapatra, hi David, you could use "variable path extensions", for which you can specify start and end extension separately. If you specify a start extension of 0 and an end extension of half the width you'll get exactly the 0110 extens…
  • Hi, you'll find a lot of details in the documentation about Ruby script programming: http://klayout.de/doc/programming/index.html. Here is a simple script that creates a layout with one layer and produces a rectangle on this layer. You can extend …
  • Hi Dave, KLayout is a not a Ruby extension, but instead Ruby is an extension to KLayout. I suspect that Rake starts the normal Ruby interpreter and that one does not know about the extensions that KLayout adds to the interpreter embedded into itse…
  • Hi, It's perfectly valid to reference cells from other libraries from within PCells. Your code wasn't wrong. The problem is only that the reference was a library reference and the source library was the library the PCell lived in. Regarding your d…
  • Hi friendfx, I was able to debug that issue somewhat. Apparently the problem arises due to the recursive library reference in the parent PCell. That needs a little explanation: a PCell imported from a library is actually a twofold indirection: fir…
  • Hi friendfx, thank you very much for providing that perfect test case. That makes debugging far easier. I can reproduce the issue, although I am able to save the file. But on closing the application crashes. I am debugging it right now, but the m…
  • Hi David, many thanks for taking care of this and me :-) Matthias
  • Hi Dave, The "-z" command line option is your friend. You can use it with "-r" to run a script without starting the application: Here is a sample: include RBAdialog = QDialog.new(Application.instance.main_window)dialog.setWind…
  • Hi, Can you try to disable this printer? I'm using Ubuntu 12.06 which allows disabling of printers in the Printer Setup Panel. I'm using Qt's printer support and I'm guessing it won't try to connect to disabled printers. Matthias
  • Hi, David, thanks again for your valuable comments. To be frank, "snap to objects" is only a weak approximation. It will snap the mouse pointer to existing edges or vertices when moving the mouse. This applies to drawing (dragging of edg…
  • Hi euzada, there is no way to directly bind a flavor of the align function to a key. You can bind "Align" as a whole, but not the specific subfunction. It's possible to recode the functionality in a script but that will suffer from some …
  • Hi, I don't know how the check is defined precisely, but here is some suggestion: # a inside b by 100nm except where a edges are coincident with b edgesae = a.edgesbe = b.edges# check:# first part: all a outside b# second part: all a edges not coi…
  • Hi all, thanks for performing these tests. I see some memory increase but not as pronounced. I assume the problem is caused by some events being sent to the widgets continuously (timer, mouse move etc.). A Qt widget needs the ability to reimplemen…
  • Hi gabry123, to initialize the point "pt" you'll have to use pt = RBA::Point::new(9742, 191932) Matthias
  • Hi covalent, I can see some memory allocation of roughly the same magnitude, but it seems to saturate in my case after allocating 20M of memory. I'll have to investigate that, I think it's the cost of some Ruby objects being allocated in background…
  • Hi all, I can reproduce the issue, although not that easily. Plus I can give an explanation: The problem is basically the nesting of layouts. As mentioned earlier, it's not possible for Ruby to tell whether an object is owned by Qt without further…
  • Hi gabry123, A simple solution is the RecursiveShapeIterator object: cell = ... # the top cell where you are startinglayer = ... # the layer indexpt = ... # the point (in database units) at which you are looking si = cell.begin_shapes_rec_overlapp…
  • Hi covalent, I think the problem is caused by a lifetime issue: if you create a Widget in a Ruby variable, Ruby basically controls the lifetime of the widget. But the variable "wdg" goes out of scope, so the Ruby garbage collector is free…
  • Hi David, thanks for mentioning this. Actually, polygons with holes are supported, but can neither be drawn, nor saved (they will be converted into simple polygons). So there are somewhat exotic. That's why editing of such polygons may have some …
  • Hi friendfx, The problem only exists on Windows - on Linux there is no such issue, because KLayout will simply take the system's Ruby installation and installing new packages is a matter of seconds. The basic problem on Windows is to build an appl…
  • Hi Ganesh, you're basically trying to take the application apart which means understanding the dependencies of roughly 500k lines of code. That use case was not planned for and the interfaces at which you'd have to cut the application are internal,…