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
@olisnr LVS is a physical verification tool. It takes polygons from GDS, regenerates the devices and their connections and compares that with the netlist. It will report success if both the layout-derived netlist and the schematic match.
What you a…
Hi Eugene,
Thanks for bringing this up. I created a new ticket for this: https://github.com/KLayout/klayout/issues/1512
From the code perspective I think I understand why non-active views don't get updated. Maybe the following is a workaround:
* …
@nsrgorgi You can format source code using a single line with three backticks before and after the code. Without that it's hardly readable. It's the same notation GitHub Markdown uses for example. I took the liberty to edit your text.
I just checke…
Currently there is no net annotation. You cannot import a netlist. As of now, KLayout is a purely graphical layout editor, not a layout system. I'm sorry.
Matthias
You're fundamentally wrong in your understanding of Python.
Here is what you do:
special_path = pya.Path
This does not create a path object, but gives you the Path type object.
special_path.end_ext = ...
This sets a new attribute on the type ob…
AFAIK the preferred way of computing weighted integrals over polygons (e.g. moments of inertia or Fourier coefficients) is using a Green's function - i.e. converting an area integral to an integral over the contour of the area.
As for a polygon the…
Hi @spark_aeon
I'm a bit confused as the code should be that:
Cell_C.insert(pya.CellInstArray(Cell_D, pya.Trans(0, 0)))
(not the "CellInstArray"). This should definitely create an instance of Cell D inside Cell C. If it doesn't somethin…
Very good. Thanks for sharing the code.
I did not have the time to test the code above, so apologies for the typo. The line was supposed to be "iter.shape().polygon" (without brackets) and I'd advise you to change your code too. Otherwise…
Hi @double0darbo,
I do not fully understand what you are trying to achieve. The code is overly complex and does not make much sense to me. E.g. why computing corners and then converting them to edges? Plus that path via strings is extremely ineffic…
Hi Thomas (@yrrapt),
When you create a "outside tub" bulk by using "chip_boundary - dti", KLayout will probably produce a flat netlist even in deep mode. The "holes" approach (dti.holes) may prevent this problem. You s…
At @wsteffe,
Relative paths to not make much sense as you noticed. A simple way to provide some doc is to simply use "https://github.com/wsteffe/layoutDD" in your case as GitHub renders the README.md file. Or you use GitHub pages. In that…
Hi Ayad,
labels should be detected, provided you include the label layers in the connectivity. So if your net carries a label on one of the layers participating in the stack definition, the name of the trace should reflect that.
Matthias
Hi @wsteffe,
Sorry for the delayed response.
You need to specify the equivalent of the Subversion (SVN) URL for GitHub. In your case this is:
https://github.com/wsteffe/layoutDD/tags/v0.2.3/grain.xml
(replace "tree" by "tags"…
Hi @wsteffe,
That information unfortunately is not directly available. It is used while reading, but once that is done, the information is not recorded.
You can obtain the information Indirectly through the technology attached to the layout:
if l…
Dear all,
thanks for this discussion!
I need to say I do not fully understand the initial request. "activated" is a callback that is not meant to triggering dialogs. It just says someone triggered this mode.
If you simply need a button …
Hi Thomas,
the "\n" needs to be embedded into the string - so you need to use "LINE1\\nLINE2".
There reason is probably that I wanted that you can enter "\n" into the text edit box of the TEXT PCell which is not multi…
Hi Giovanni,
you cannot just use another version of Python on Windows. Windows does not have package management and there are multiple flavors of Python that are incompatible on a binary level. One Python cannot use the modules of another.
KLayout…
Maybe some details would be helpful ... any error messages in the log (File/Log Viewer)?
My best guess is an encoding issue, but that should be logged. I am not aware of severe bugs in that area.
Matthias
Hi @wsteffe,
you can get the current technology with:
pya.MainWindow.instance().initial_technology
In order to gets the right DXF unit, it must be set accordingly in your technology. I can't see where I can find the "PCB" technology you…
Maybe you can elaborate what you already did? It appears that you already have some script.
KLayout's DRC can check Euclidian distance between edges of any angle.
Here is an example:
report("A space check")l1 = input(1, 0)l1.space(1.2.…
Hi @wsteffe,
if you explicitly pass a LoadLayoutOptions object, "load_layout" will take the default settings which will include 1µm DXF units.
In order to use the reader options from a technology, this should work:
# replace "tech_…
Hi Chris,
this setting is saved to klayoutrc. To change it by code, use
pya.Application.instance().set_config("drawing-workers", "4")
(here: 4 threads, Python).
Matthias
Hi @wsteffe,
The cell tree is not expanded, so I cannot see the full hierarchy.
The level settings indicates the number of hierarchy levels that will be shown. Below that level, only cell boxes are drawn.
Level 0 .. 0 means only a box for the top…