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
Easy:
my_layer = polygons # creates an empty polygon layerpolygon = RBA::Polygon::new(...) # NOTE: in database unitsmy_layer.data.insert(polygon) # adds the polygon
If you have micrometer-unit polygons, use this code (EDITED):
my_layer = pol…
First of all, you can format code by placing a line with three backticks before and after the code (I change it for you, otherwise it's very difficult to read).
The error message is this:
(Image)
I don't know why it does not show up in your case,…
@enuinc Please tell your boss the MEBES format is not public. The details are confidential and are protected IP owned by AMAT. Hence there is no open source code for the MEBES format in KLayout. I also will not disclose details for the same reason.
…
I see ... But honestly I was not aware that placing a property multiple times generates multiple instances of the same property. Right now, I'm treating properties as key/values with the implicit constraint that the key is unique. Not always, but in…
@jiunnweiyeh "round_corner" basically works, but for some reason (I don't recall) the number of points has to be at least 16 in the UI. But the core feature allows less points. You can basically use this script to use round_corner to apply…
Hi Bing,
not with KLayout. KLayout is intended to read and process layout files. The top cell information available as S_TOP_CELL is of little use. It can be determined efficiently as a side effect of the layout sorting step. Beside that, S_TOP_CEL…
@sebastian Thanks for these explanations also from my side. The reason why the recursive shape iterator does not have "each" is basically that the shape itself isn't quite useful - you will also need the current cell, the transformation in…
I took the liberty to format the above code with triple backticks so we all can see the indents.
In the code above, why don't you simply use "is_empty" for printing empty cells? Specifically list(cell.each_shape(layer)) can be a slow oper…
You can basically export a net from the net tracer and show that in the 2.5d view.
Here is the VDD net of the digital_pll block of the Caravel chip on Skywater 130:
(Image)
well, if you like that ... I personally think it is technically not quit…
No, the top cells are not marked specially in GDS. You have to analyze the hierarchy.
5-6 minutes is kind of long for reading 2GB binary GDS. GDS loading is usually limited by the file transfer rate. At moderate 50 MB/s I'd expect 40s max. Are you …
Thanks for this nice discussion! :)
I also wonder what sense it makes to keep the layer colors. After all maybe you actually need an image processing library?
Matthias
Have you tried this: https://www.klayout.de/doc-qt5/programming/python.html ?
Traversing the selected layers is complicated by the potential presence of multiple layouts. So this is a way to traverse the layers in the layer list in the general case…
@lemaitfl So I assume you are using the klayout module from PyPI - maybe there is an issue with the pthread library or the atomics implementation (from https://github.com/mbitsnbites/atomic). I'm not really an expert on this - maybe there are restri…
Hi @jiunnweiyeh
Basically, such polygons are valid ones in GDS, but some foundries or processing tools have trouble with these.
Another problem is self-overlapping or short-segmented paths like these:
(Image)
DRC has a feature to find them:
re…
Yes, DRC is able to do this. For details see here: https://www.klayout.de/doc-qt5/about/drc_ref_layer.html#h2-1080
Here is some sample:
to_fill = input(1, 0)# Create a fill pattern with a single box at 2/0# This is a 5x5 µm box pattern = fill_patt…
That depends how you define "width". Width can be defined in terms of bounding box, a path width or in case of general polygons by having this width in one place only.
Matthias
I'm afraid I do not see the issue also on Windows (version 0.27.12, Windows 10 Pro, 21H2). I increased to 10000 iterations and wasn't able to reproduce the problem a single time.
I don't think the original problem is a memory corruption issue. The …
Hi Florian,
thanks for this well-prepared test case.
As expected, I cannot reproduce it on Linux, but I will try on Windows.
Could you indicate which is the KLayout version you're using?
The error indicates some race condition, although there ar…
Here is some code that substitutes a cell in layout a.gds with the top cell from layout b.gds. Note that this sample does not have error checking - it is assumed that there is a cell with the name of layout b's top cell in a.
ly1 = RBA::Layout::new…
"for_multi_cells_full" takes first the target and then the source layout/cell combinations.
So it should be:
cm.for_multi_cells_full(target, target_cells, source)
Matthias
The corresponding parameters are "bgn_ext" and "end_ext". Set them to half the width to achieve the "square end" effect.
For more information see here: https://www.klayout.de/doc-qt5/programming/geometry_api.html#k_6
…