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, there is a brief description here: http://www.klayout.de/doc/about/basic_lib.html#h2-44. Regards, Matthias
  • Hi Joonas, thank you for the patch. I had a look at it and basically it's complete with all the necessary extensions. Let me allow some remarks: Basically the static get_properties method could go into the db::Shape class. But it is part of Ruby …
  • Hallo, That did not change in version 0.22.6. So it should still load .rbm files from the installation path. I have verified that on Linux and I will do so on Windows as well. But if an environment variable named "KLAYOUT_PATH" is set, i…
  • Hi Jian, bbox returns the bounding box of the current cell and is not a layer method. It is used like this: bbox.not(input("1/0")).output("10/0") This sample inverts layer 1/0 by subtracting it from the bounding box and deliv…
  • Hi there was another forum entry about the same question: http://klayout.de/forum/comments.php?DiscussionID=230&page=1#Item_4. I shall explain a little regarding the concepts and the question you raised in your code: * "biblay.cells"…
  • Hi Joonas, it's definitely not easy to modify the shape iterator - this is a high-level iterator scheme that provides all the abstraction atop of the binary data structures (which is a lot). Serialization into a specific order is simply not designe…
  • Hi Joonas, basically your idea is correct, but unfortunately there is no warranty the the shape container stores the shapes in the order they are inserted. The shape container's order is optimized by KLayout to reflect the quad tree for quick looku…
  • Hi Natalie, yes you're right, The DBU multiplication is doing the trick and again you're right that you have to take the magnification in the instantiation path into account. I forgot that. Thank you for the hint. Just to add some final remark: yo…
    in Perimeter Comment by Matthias March 2013
  • Hi Natalie, please see me comments in the other forum entry. The problem was that this this discussion was basically about C++ code and you can't mix that with Ruby. Here is the correct code: total_perimeter = 0.0lv.each_object_selected do |obj| …
    in Perimeter Comment by Matthias March 2013
  • Hi Natalie, this discussion might be quite confusing. It mixes C++ code with Ruby code. The correct Ruby code to compute the perimeter of a polygon is: poly = ... # the RBA::Polygon that you want to compute the perimeter ofperimeter = 0poly.each_…
  • Hi Jared, sorry, I missed one important thing: inside a Module you need to write functions as class methods of the Module, i.e. module MyMacro include RBA def self.f(x,y) ... end f(100, 200)end The reason for that is not easy to explain in…
  • Hi Jared, Ruby is not a compiler language which uses the linker to resolve the target of a call. "def" is a statement like every other statement. Ruby runs the script once and while execution the function call, the function is not defined…
  • Hi Lital, here's some sketch. The basic issue is that after the clip, the cells are not necessarily aligned. You have to know how to align them. # assume you have two clips in cell "CLIP1" and "CLIP2"# with cell objects clip1 a…
  • Hi, well, having a width and spacing check would already be the very core of real DRC functionality. There is no such function (yet). You can mimic the effect with under/oversizing and XOR, i.e. # minimum spacing check (distance d)l = ... # inputm…
  • Hi, first of all, KLayout is not Calibre. So there is no INTERACT (yet). You can however combine boolean and sizing operations into scripts using the tiny layer processing framework. You can find that framework in the "Useful Ruby Modules&quo…
  • Hi Jared, the UI designer comes with the Qt package. On Linux it's easy to install - it usually comes with the qt developer tools package. On Windows it can be found inside the QtSDK. However right now it's not easy to find a download for the Qt 4 …
  • Hi Jared, that is pretty much domain the of Qt library. Qt uses a layout system which automatically will arrange the objects. There are numerous tutorials for Qt. The first one covering the layout system I found is http://www.digitalfanatics.org/pr…
  • Hi Jared, thank you for the code. I was confused a little because I did not find the move_layer command you were mentioning. But I guess I understand the intention. To change the layer, you have several options. You're basically right that you ca…
  • Hi Jared, are you trying to move shapes from one layout/cell to another? That does not work yet. Can you given some sample code? Matthias
  • Hallo, you can load a shared object using the -p command line option. Such shared objects can register new functions inside KLayout. Many internal functions are implemented through interfaces that don't require recompilation. For example, it is pos…
  • Hi Jared, Do you mean the length of the string? That is "abc".length # gives 3 Or do you mean the number of distinct characters? That is "abc".split(//).uniq.count # gives 3"aab".split(//).uniq.count # gives…
  • Hi Yaroslav, well, you basically have much more choices. KLayout is open source, so you could create you own interfaces. It is also possible to write C++ plugins in the form of shared objects/DLL which interface directly with the core code. That wi…
  • Hi Jared, Inside the script you basically create two layouts: one per "new" and another with "mw.create_layout". The second is empty and "new_top" is only valid in the context of the first one. I guess that is why the …
  • Hi, if you want to display layout information as overlay over an existing layout, maybe you should consider writing a layout file from your data and displaying that in the same view than the original layout. That is by far the most efficient way an…
  • Hi Jared, there is no one-line copy method for KLayout yet. One user found, that you can use the clip method for that purpose, if you specify a clip box larger than the cell's bounding box. A single-line copy method is on my TODO list yet. In gene…
  • Hi Yaroslav, is the XML file already in the format of KLayout's report database? Then the solution is that: lv = RBA::Application::instance.main_window.current_viewrdb_index = lv.create_rdb("database_name")rdb = lv.rdb(rdb_index)rdb.loa…
  • Hi Canny, Name equivalence is only a weak indicator for content equivalence, so KLayout refuses to reuse cells just because their names are the same. That is at least true for the import function. This is a safety feature since exchanging cells wit…
  • Hi Jared, A hole is actually a feature of a polygon, not an individual shape you can insert. You can insert a hole into a polygon, not a hole into a shapes collection, i.e. hull_points = ... # array of RBA::Pointp = RBA::Polygon::new(hull_points)h…
  • Hi Jared, basically this message means that there is no method variant (of several) which expects the arguments given in the call. You'll get this message for example on this line: RBA::SimplePolygon::new("balbla") because there are two…
  • Hello, You're right. That functionality is missing currently. I'll take that as a suggestion for the next major release. For separating single instances out of arrays there is the "make cell variant" function. In you case, that is not an…