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

Comments

  • Hi Laurent, The correct Python statement is: from pya import *dialog = QDialog(Application.instance().main_window()) (note the brackets). You don't need "new" - it works too but that is not "pythonic". If you want to show the…
  • Hello, to be frank, I have not tried on OpenSuse myself. I will need to install it in order to reproduce the problem. From the stack trace I can only deduce an incompatibility of Ruby with KLayout's code. Once I have an installation and I am able …
  • Hi Hutch, thanks :-) But good point: I did not have angles in mind yet. Here is a script that measures the angle between two rulers: mw = RBA::Application::instance.main_windowlv = mw.current_view lv || raise("No layout loaded")rulers …
  • Hi Ben, a working code is this: # set the parameters# set some sample parameters (uses GDS layer 10/0):r1 = 20.0r2 = 30.0param = { "layer" => RBA::LayerInfo::new(1, 0), "actual_radius1" => r1, "actual_radius2"…
  • That's pretty simple - "cell" is unknown. You'll have to put the code into the "done" method before the "write". There you can use "@top" member variable instead of "cell" to address the top cell. …
  • Hi Mattseng, both pieces of code look fine to me. Some tools impose restrictions on the way arrays are created, hence using "-ax" for the array pitch may create some issues when using GDS2. But those tools are rare now and I don't think …
  • Hi, are you familiar with mask layout procedures in general? Basically, every polygon (box, path ...) is "filled" on a mask. The stipple is only provided for visualization - if multiple layers are overlapping the stipple pattern helps to…
  • Hi Post, first of all, 0.23.2 is not the latest version - but lacking hardware to fully support the Mac platform I am depending on the Mac community to provide binaries. But I don't think the problem is related to that version. There are some con…
  • Hi Mattseng, You have to open the file before the loop and put the loop into the block after the open :-) To write the values, there are many ways to do that in Ruby. Here's some "Rubyish" way: values = [ nc, nr, lc+kr, lr, kc, 5000*nc+…
  • Hi, "top_cell" just means the cell where you want to put the PCell into. That may be a "top" cell (means this cell is not called itself), but this can also be a child cell somewhere in the tree. You can take the current cell: …
  • Hi mattseng, I conducted some experiments on your code and my findings are that the text cells are a major contribution. You can bring that down by using the letter-by-letter approach. Specifically, in the initialization code you create cells with…
  • Hi beginner :-) Thanks for the feedback. Let me warn you about PCell's and scripting: right now, the PCell API is not quite simple and I recognized that as a weakness of the design. I will update that in the next major release and provide a simpli…
  • Hi rellachs, thanks for the hint about the missing "site-packages". I'll add that to the final version too. I simple forgot that. My reasoning was that having an external installation allows to check the new packages before cross-referen…
  • Thank you :-) 14G is still a lot, but I think that is what it takes. Maybe it's possible to reduce that - I guess the sample above is not representative, so I'll have to do a little guessing. Here are some thoughts: * Cells (not instances) create …
  • Hello, Here is the Python code for the script in the other thread: DISCLAIMER: I have not tested with the released eval version yet, but with a development snapshot of mine. EDIT: I noticed that I messed up the threads - the other one is called &…
  • Hi, There is some basic documentation in the "Resources" part of this site referring to the evaluation version: http://www.klayout.de/python_preview.html. This gives some sample already for creating a layout. Regarding the PCell instant…
  • Hi, I had a look at that problem and I can confirm the runtimes. The reason seems to be the PCell cache which grows due to many PCell instances with different texts. It's not optimized for a huge number of variants and I will try to solve that iss…
  • Hi, something is going wrong here. It should not take that long and take that much memory. I'll have a look. Matthias
  • Hi rellachs, This forum supports Markdown formatting - see http://daringfireball.net/projects/markdown/syntax for details about the syntax. Regarding the issues with Python: First of all, KLayout integrates Python which is something different fro…
  • Hi, I think the main problem is the big chunk of code you will generate in this setup. I don't know precisely the variables in your scheme, so I can only guess what the Excel sheet will do. But I'd suggest to put as much computation in the script …
  • Hi tyanata, that is not a menu function. It's a PCell. PCells are placed like ordinary cells (choose BASIC library and cell TEXT when placing that cell). You can configure the text and the parameters on the "PCell" tab of the cell instanc…
  • Hi, the solution depends in the system you are working with: On Linux: just install the numpy package. Done. On Windows: * The evaluation binary is built against Python 3.4.2 with Visual Studio Express 2010. Fortunately that is a pretty common c…
  • Hi, There is not straightforward "cut" function, but you can use "erase" background combination mode to draw a thin line across your shape. This line will then be subtracted from your shape basically creating two separate parts.…
  • Hi Laurent, you're right - my mistake. You could also apply the idea of using the edge versions without the shielding and without the interacting: M1.space(0.23,euclidian).output("M1_space", "Min. Metal1 spacing : 0.23um")Mbig…
  • Hi ks, the path to polygon conversion using the points is just half the truth. Emulating what the DXF reader does is far more complex - the issues are hole resolution, orientation normalization and such. Here is a script which basically does what …
  • No, there is no such feature. And I don't know anybody who needs it, apart from the DXF users. And for them there is the reader option. Give me a thousand "likes" and I'll be motivated enough to implement it ... Matthias
  • Hi Laurent, The separation won't work because of shielding. "Shielding" means that the measurement functions won't look through objects in the path of the distance measurement. Shielding is only effective for polygon layers and in your ca…
  • Hi tyanata, you mean a text generator? Maybe you want to have a look into the TEXT PCell - this one generates a text. It does not precisely have the parameters you as for, but it features a bias option which allows to adjust the final line width t…
  • Hi, one way to solve the problem, thanks :-) To convert a path or box to a polygon, you can use "Edit/Selection/Merge Shapes". The main functionality of that function is to join overlapping shapes into one polygon. But a side effect is t…
  • Hi rellachs, There is a tiny switch which makes a big difference for you: if you check "Select Top Level Objects" in the "View" menu, you'll notice that the tool behaves rather differently. Let me explain: if you have cells and…