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,
You mean by script?
I can recommend the "buddy tools" found next to klayout in the installation. To convert GDS with arbitrary DBU into one with 1nm DBU, use:
strm2gds -od=0.001 in.gds out.gds
Matthias
Oh yes ...
This is Python. I have also added code to navigate to a certain window before shooting the picture.
Matthias
import pya# coordinates for the window to screenshot in µml = -12.0 # leftr = 5.0 # rightb = -2.0 # bottomt = 7.0 # t…
Hi Man,
File paths are not automatically resolved relative to the DRC script's path but relative to the current directory. At least not now (but good suggestion).
To make a file being read relative to your DRC script, use Ruby's __FILE__ constant …
Yes, that's right.
The problem is basically that these constants are not enums. The Qt API is translated automatically by a (complex) script. It cannot deduce the need for these constants from the class interface. So these constants are skipped.
F…
Hi,
you can't open a GDS as "macro" (I guess you expect to see some script which generates a layout). There is no such "script dump of a layout file" yet.
Regarding "Shift+F5" and "F5":
* Shift+F5 will run …
Hi kmho,
in a DRC script you can clear layer(1,0) using:
polygon_layer.output(1, 0)
It will still be "there" in the layer list, but empty. You can't entirely delete a layer in a DRC script. But after you save and load such a file the la…
Hi guys,
thanks for discussing this :)
I need to say that looks like a bug :(
I'm suspecting an issue with shielding: I have sketched the situation from error 1:
(Image)
The two marked edges qualify as space violation (they are closer than 1 µ…
Hi Andy,
in the current version, the LayoutView cannot be used as a standalone widget. It's too rightly coupled with MainWindow.
However, this will become possible in the next major release. In this release, LayoutView is a widget that can be used…
The status bar can be accessed as RBA::MainWindow.instance().status_bar.
But this is outside the official API. I can't guarantee backward compatibility in future version.
Regards,
Matthias
Hi,
first of all you can speed up your code by taking out a few calls from your loop, e.g.
shapes_1000 = cell.shapes(layout.layer(1000, 0))row.times do |i| # x axis col.times do |j| # y axis ... shapes_1000.insert(RBA::Box…
Hi BN,
By default you're in "Edit in place" mode which means you access all objects regardless of the level of hierarchy.
To access the instances, you have two options:
* Decrease the number of hierarchy levels shown - if you see the ce…
Hi Laurent,
yes there is :)
In the marker browser's "File" menu (top right button) chose "Unload all" to purge all results
Best regards,
Matthias
(Image)
Hi Andy,
I consider it too risky to put the "dangerous" features into the persisted writer options. If you don't save all layers or you skip the PCell context information you might save your layout and loose parts or all of your work. Hen…
Yes, deep mode is the solution:
deepinput(1, 0).sized(0.01.um).output(101, 0)
This is usually equivalent to semi-hierarchical mode. It's precise in a sense that it takes cell interactions into account which semi-hierarchical mode doesn't. Hence I …
Hi,
for 1. just specify the full path (e.g. layout.write("c:\\users\\yourself\\documents\\t.gds")).
For 2. use pya.MainWindow.instance().load_layout("/home/matthias/x2.gds", 1). For more details see here: https://www.klayout.de…
Well, that's a challenge.
Maybe that's possible by utilizing low-level Qt features. But it never occurred to me to use this as a legend.
I did so by using rectangles and labels in the images here: https://www.klayout.de/doc-qt5/manual/lvs_device_e…
And regarding the "$" character: I see many GDS files streamed out from Cadence containing "$" characters. So unless the foundry doesn't want to be compatible with Virtuoso, "$" seems to be a valid character.
Matthias
Hi Andy,
you can clean your layout by dropping the PCell context information: choose "Save As" and in the save options dialog uncheck the "Store PCell and library context information" check box, like here:
(Image)
Matthias
Hi Martin,
basically there is a hierarchical mode. Just add a line in front of your DRC script:
deep
Please note that the implementation is somewhat restricted. It works nicely for "well-behaving" hierarchies. It's mainly intended as pr…
Hi,
First of all, if you just install KLayout there is not much else to do. You can run Python scripts inside KLayout because KLayout comes with it's own Python interpreter embedded. Note that in this case, the module is "pya".
You shoul…
Hi,
the easiest way to do this is a one-liner DRC script:
input(1, 0).sized(0.01.um).output(101, 0)
For more information about DRC scripts see here: https://www.klayout.de/doc-qt5/manual/drc_basic.html
Matthias
Hi Dima,
No, it's not LGPL, it's GPL. Sorry. I apply however a liberal view about the term "linking". In my view, calling KLayout code from Python isn't "linking" and I don't consider the Python code "derived work". Th…
The QFlags binding doesn't have them. But QDialogButton has them.
So you can use
pya.QDialogButtonBox.Ok
to get the constant like you would do in C++. The only difference is that Python doesn't have templates. So C++ QFlags<QDialogButtonBox::…
Hi,
Please don't paste code into the forum. It's unreadable. Use Markdown: a single line with triple backticks before and after your code to make the forum display it properly.
What do you mean by "is there any way to write something into the…