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
The result file is a "report database". The structure is explained here: https://www.klayout.de/rdb_format.html
For analyzing this structure, there is an API. You can use the klayout Python module to include this into your project.
The r…
Here is some code. I hope the comments are self-explaining:
# Illustration of how to use Region.rasterize# This code takes the shapes from layer 66/20 # of the current cell and rasterizes a region# 0,1 .. 80,210 (µm) with a resultion of 100nmcell …
Hi Luciano,
You mean, setting windows dimension when starting KLayout? Every Qt application supports some Qt specific options, including "-geometry". For details see here: https://doc.qt.io/qt-5/qguiapplication.html#supported-command-line…
Is there such a thing in Virtuoso? I personally have this problem more often there than in KLayout. That is because KLayout's transient selection seems more reliable and selecting objects is looking for real edges first and cell box second. But of c…
@dick_freebird Ah, yes - actually I was assuming that there is such a thing than a positive "slot" layer. That is why the check takes positive shapes.
Apart from being easier to edit, you can use arrays to create slot arrays. I am pretty …
Hi @leo_cy,
You can use PixelBuffer#pixel to get the value for a specific pixel. You can iterate over the x/y range to get the values for a range of pixels.
There is no direct way to obtain the data from PIxelBuffer as a NumPy array. Image is some…
The image rendering functions are not made for high-precision rendering. Some users tried to render layouts to monochrome images for mask making. Don't do that. Rendering is for eye only and details may not be precise to a degree you need for mask m…
So you meant hierarchy levels. You mentioned "different layers".
As a general rule, the hierarchical booleans (AND + NOT + many other operations, with the exception of XOR) use the first layer as the hierarchical guidance - the results wi…
The multiorigin feature will align the fill pattern to existing features - either original ones or residuals which are left from previous fill steps. Provided the original features are on-grid and the fill pattern is too (pattern dimensions and step…
Hi @dick_freebird,
This was the easiest solution I could come up with. There are other solutions too.
Like, if you have checked the slot width and it is constant, you may check the area of the slot to confirm the length. Or separating edges into s…
There is a simple solution under these conditions:
* The slits are rectangles
* They are oriented either 0 or 90 degree
* They have a minimum aspect ratio of c/a
All these conditions can be checked before running the actual check. The actual check…
Hi Steffen,
The booleans do not guarantee to merge the inputs by default. For example, a NOT with an empty layer can be shortcut to a copy, if you drop the merge requirement.
On the other hand, KLayout uses "merged semantics" by default …
Hi @dick_freebird,
By though of using KLayout outside the restricted zone to install the packages there. This can be a different machine not inside the restricted network.
Basically, KLayout keeps packages in a folder called "salt" insid…
Hi JSS,
No, a period check is not a typical DRC check.
However, there is a solution maybe. As a period check is basically a check between two outer edges, it can be implemented by the "enclosed" check. There is a problem though: this che…
Hi @blueman_44,
Right now, the geometry is polygon-only and I do not plan to change that. What you see in the device extractor is a significantly modified version of the original geometry - for example, it is used as a cache key, so it gets normali…
Many thanks @sekigawa for this tutorial! :)
The easiest way to do that in my experience is to download all needed packages on a device outside the restricted zone and transfer the whole "salt" folder to your device inside the restricted z…
I sorry, I think I need a little more explanation.
What exactly are you trying to do?
NetTrace is somewhat obsolete now. There is LayoutToNetlist which can turn all nets of a cell into a circuit including subcells. That is embedded into the DRC/LV…
grml .... found the issue.
So here is the story:
You can turn on noisy debugging in the netlist compare code when you set
KLAYOUT_NETLIST_COMPARE_DEBUG_NETCOMPARE=1
It shows the backtracking algorithm goes into tentative evaluation due to massiv…
Sure, but boolean operations are not trivial. So offering them as built-ins in the source spec would provide a performance issue.
It was suggested already to do the booleans in pixel space. That is fast, but would easily render nonsense results in …
Hi @Default
That function is pretty complex and there is no binding for Ruby. I can probably be coded in Ruby or Python too, but that is not trivial.
But for rotating a group of objects, you do not need to make them into a cell. You only have to a…
Hi @dick_freebird
Are those monitors of a different quality - specifically one is "high DPI" (e.g. 4K) and the other isn't? In that case, resolution switching must happen. Maybe there is an issue with the Qt5 I am using as of now. I do li…
Of course :)
In most cases, "stuck LVS" comes from ambiguities - manifold parallel nets that share the same signature. This is typical for buses for example. In that case, helping LVS with proper net labels helps.
But I will check if tha…
I don't know if that helps, but the net names are taken from the topmost level in the hierarchy. The names from the lower levels are ignored. The reality is slightly more complex, but that is the basic idea. Nets are considered "full" alwa…
Dear all,
thanks for this discussion.
Actually KLayout has support for net classes, because you can form nets and filter names by glob pattern. So here is a solution if you name your HV nets like "...!HV". This sample is assume three lay…