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
Hi Ege,
Thanks for reporting this. As with a quick check I could not reproduce it. I loaded two files and then used this Python line. No crash.
One question: have you tried with the latest version (which is 0.26.1)?
Thanks,
Matthias
The solution depends on your expectations: delete a shape when it's entirely outside? Delete it partially? What about shapes embedded in a hierarchy?
The easiest solution is a boolean AND with a circle shape. This is cut off everything outside the …
Hi Shawn,
the way I do it is to use KLayout in batch mode and configure DRC with variables taken from the command line.
For example, in your DRC deck (e.g. "run.drc") you specify a source and report this way:
source($input)report("…
I really don't encourage doing this - it's not just the IDE format, it's also the compiler which has changed. 2010 is the earliest version I was able to compile KLayout on.
Why would anyone like to go back to such an outdated compiler?
Matthias
There is no direct call point for this. But there is some discussion about how to manipulate layer lists in Python safely: https://www.klayout.de/forum/discussion/comment/5919#Comment_5919
Matthias
You can check this with layer.is_empty?
But I'd prefer a general ticket with the request to optimize this case on GitHub. This will improve the performance for all the others who do not include this statement in their rule decks.
Matthias
Thanks for these posts - my understanding of "deactivation" wasn't "hiding".
I'd still like to debug the crash. Taking the above code from Dec/10, can I modify it in a way so I can reproduce the crash?
Thanks,
Matthias
Hi Chris,
you cannot create a layer within a PCell - you can just access an existing one.
I need to repeat once again that a PCell is not executed within the target layout. In fact, the layout object a PCell is run in is unspecified. Whatever you …
Hi Laurent,
That's right, unfortunately :(
Unfortunately, an hierarchical cell extension is difficult to do as you cannot easily tell what the cell's true boundary is and how it is to be distributed on parent and child cells. This might be a box -…
Hi Jim,
this looks worse than it actually is. You just selected shapes and cell instances and cell instances can't be merged. The message basically says "can't merge cell instances because they aren't polygons".
Here is a ticket for this…
Hi Chris,
well, a crash should not happen - but there is a always a risk of things going out of sync when an object is destroyed. I'm trying the harden the code against this, but there are too many paths to destruction ...
Regarding your question:…
Hi,
I'm fairly sure that "pya.MainWindow.instance().close_all()" should basically remove all layouts and references.
I'm a bit worried to hear you're getting crashes. Maybe it's worth debugging that. Are you able to reproduce one an tell…
Hi Eugene,
currently not. Menus in general don't show a tool tip (maybe a Qt limitation). The toolbar can be used to show an icon with a tool tip. Is that an option?
In general you have more flexibility if you do menu registration yourself. It's p…
Hi Laurent,
the "extent" function will simply return the bounding box of the input layout:
nwell = input(1,0)cellBulk = extentpwell = cellBulk - nwell
(you just need to be careful not to define a layer with this name).
Best regards,
M…
I think this can be done - I have created a ticket for this: https://github.com/KLayout/klayout/issues/444
Although I need to say that this breaks with the concept of schematic/layout correspondence which is deeply built into the LVS implementation…
Hi Shiv,
I think that I recently made this possible (https://github.com/KLayout/klayout/issues/353). So if you include relative image file paths in the .lys file, the image file should be looked up relative to the .lys. Looking up relative to GDS/D…
You are supposed to move it with "Move" :)
"Partial" apparently spoils the point that makes up the handle. Something I need to fix.
These handles are part of the "guiding shape" concept of PCells. You can disable thos…
That's why the standalone module on PyPI is called "klayout", not "pya".
If you're using KLayout to run scripts in, pya should be loaded by default. No need to import it.
Matthias
Hi haru_f,
thank for you this nicely prepared material :)
connect_implicit(...) acts on the top level only. This is a safety feature to avoid false matches due to virtual connections where physically they are missing.
connect_implicit("VSS&q…
Please see my other comment. You cannot. 10x10nm on 1x1mm is too small for this kind of processing. Another approach is required.
Ideally there is an algorithm to approximate a circle by a boxes - e.g. an inner square and boxes attaching to that an…
Hi,
You can use if/else in the DRC script. It's a Ruby script.
You can ask whether a cell exists this way:
if source.layout.has_cell?("THE_CELL_NAME") ... executed if a cell called "THE_CELL_NAME" exists ...else ... otherwis…
Hi Chris,
The second comment is valid if you don't need the layer index .. if your code does then "layer" is the right function to use.
Regarding the question about the PCell error layer: currently you can't create a hidden, but visible …
Hi,
That's kind of a challenge because you would create 100000x100000 (10^10) squares. So flat shape generation rules out. GDS does not support anything except matrix arrays, so you cannot just draw it.
I tried the Fill utility which errors out wi…
Hi Chris,
actually, this is is the best way I can think of as well. It features everything you require in the general case.
The API underwent some development, so in the forum there might be outdated versions. Yours is making the right use of the …