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

Comments

  • In Ruby, you need to call "new" to create a new object. So it's ubm = RBA::Region::new(ly.top_cell().begin_shapes_rec(layer_a)) in both places. Matthias
  • Looks like you have not created instances. "add_cell" will create cells, but making a cell a child cell of a parent means you have to create an instance of that cell in the parent. Like here: https://github.com/KLayout/klayout/blob/master…
  • Hello @patrickmawet , thanks a lot for providing this test case. It's much better to discuss things on a real case. And there are some things to explain ... First a note which may be to interest: instead of putting a fixed path into the LVS script…
  • Here is an example how to search for the schematic according to the current cell name in the directory of the loaded file: schematic(File.join(File.dirname(source.path), source.cell_name+".cir") source.path will give you the path of the …
  • Hi Allon, I'm sorry, but right now, the check will just output the metal layers. Plus, it will output the metal layers for all fails on the same layer, so you cannot differentiate the different nets. The tool is intended as a pass/fail check. Matt…
  • Hi, I don't see how editing is required. Could you provide an example which demonstrates the issue? Internally, KLayout does not use the "m" parameter - it always calculates the total width (of MOS devices) or capacitance (for caps). Ma…
  • You have to use RBA::Region instead of pya.Region. "pya" is Python, "RBA" is Ruby. Plus, creating the Region in Ruby is done by using "new": UBM = pya.Region(ly.top_cell().begin_shapes_rec(layer_a)) I'd also recommen…
  • Very good ... Regarding your questions: 1. I have not seen any CMOS device PCells for KLayout myself. As they are very PDK specific, I assume they are not openly distributed if they exist. 2. That can be done - see https://github.com/KLayout/klayou…
  • Very good :) BTW: the lengthy second line can be simplified to: layout = pya.CellView.active().layout() Regards, Matthias
  • Yes, case A1 is a interaction with one polygon. So initially it cannot be distinguished from case B. But you can compute the touching edges (provided you're only interested in touching interactions) and check how many edges are interacting with one…
  • @dai lvs_data is a method of the Netter object, not a global function (although it should). I will enable it as a global function too for consistency. Until then you can access the LayoutVsSchematic object as a method of the default netter object u…
  • Hi Patrick, many thanks for this well-prepared test case. When looking at the layout and the extraction script, I'm fairly sure that via3 and metal4 are swapped and should be: via3 = input(35, 0)metal4 = input(36, 0) instead of 36 fo…
  • @dai Thank you for this explanation. This is a real glitch. I have created a ticket for this case: https://github.com/KLayout/klayout/issues/954 Thanks for reporting this issue. Matthias
  • You could script such a feature in KLayout, but it's probably easier to create a shell wrapper like this simplified one: #!/bin/env bashfile="$1"shiftklayout $file -l $(dirname $file)/*.lyp $* For a useful script you should at least add …
  • Thanks a lot for the test case. However I do not really understand the intention of the layout. It's just showing a single active region of p type separated by many gates which are not connected anywhere. So essentially, there will be many devices …
  • The query needs to use "inst" instead of "cell" for the coordinate check. Here is a sample for a test case of mine. Please also note I'm using "dbbox" which is like "bbox", but returns the micron-unit boundin…
  • Well, it was in the release notes of 0.27, although among many other changes: (Image) But I'll check what is a good way to enable the old way of doing it. Here is one proposal which also is backward compatible: if the PCell implementation provide…
  • Hi, here is some sample code which places a cell called "F" 8 times. It creates a new top cell called "TOP" for this purpose: import pyaly = pya.CellView.active().layout()# TODO: change namecell_to_place = ly.cell("F"…
  • @Grandement You need to put quotes around non-trivial names Like here: (Image) The first line is layer/datatype, the second one your (invalid) case. The third line shows how to do it correctly and the forth line is a specification including both …
  • @marwaneltoukhy Thank you for bringing this up. This maybe is related to this discussion here: https://github.com/KLayout/klayout/issues/922. I should also say that 0.27.5 should be somwhat faster here. Basically performance is heavily dependent …
  • This is surely possible, but it's not on my prio list. Please drop a ticket at GitHub (https://github.com/KLayout/klayout). Maybe someone will pick that ticket and implement the feature. BTW: layer stack section / symbolic layers are not related to…
  • Dear all, thanks for this discussion. Basically, XSection is a separate project and is hosted here: https://github.com/klayoutmatthias/xsection/issues However, I do not actively maintain it right now. There is a good reason for this: the tool is i…
  • @Romain Thanks for bringing this up Actually, all input fields (all shape or instance property fields) have been changed to have a direct effect. This is in accordance with some commercial tools and in many ways this is quite useful. Restoring the …
  • Dear all, thanks for participating in that discussion although I personally think the original post was done in a too sloppy fashion as to be taken seriously. Technically, OASIS allows circles and - in some way - GDS allows to specify circles too.…
  • layout file is empty the effect will be the same
  • Between a moment ago and the moment later you did something that spoiled your circles. Most of us believe in causality. So something made the circles break. That does not happen spontaneously. Think what you might have done and get back here once y…
  • You need to specify the full path in KLAYOUT_PYTHONPATH and as it's not set in advance, you cannot add to it: export KLAYOUT_PYTHONPATH=$(python3 -c "import sys; print(':'.join(sys.path))"):/your/path Of course it's easier to add your pa…
  • Forgot to mention that you can still set the current view's transformation (not affecting new ones) with this one-liner script: RBA::LayoutView.current.set_config("global-trans", "r90")
  • Hi Luciano, For the purpose of preparing special views there is another feature: layer view transformations (see here: https://www.klayout.de/doc-qt5/manual/layer_source_expert.html#k_3). You can attach arbitrary transformations (also shifts, rota…
  • Hi Nakul, The edge shift operation is called "sized" (https://www.klayout.de/doc-qt5/about/drc_ref_layer.html#sized). With a negative value you'll get a shrink. Matthias