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
Maybe you could just explain what you intend to do.
You can enable a mode using "switch_mode". In my example the name of the plugin is "plugin_name" (the second argument to register), so I can switch to that plugin using
view.s…
No, that is not how it is intended.
When the "test_plugin" is not activated, there is no mouse_click_event with prio=False because the active plugin (Select) claims that event.
When the "test_plugin" is not activated, there is …
@taylorn, thanks for chiming in :)
You're right, the RecursiveShapeIterator first of all finds shapes whose bounding box is touching the given search box. That is a first level of identification.
Once you have a shape and you know it is a polygon …
So then let's start with a minimum example:
import pya as klclass Discussion2841PluginFactory(kl.PluginFactory): def __init__(self): self.register(100000, "plugin_name", "test_plugin") def create_plugin(self, manager, dispa…
You have two options:
* After you pasted, the pasted objects are selected. You choose "Move" mode, click on the selection and place it where you want it to be.
* Bind "Interactive Paste" to a key of your choice: go to "Fi…
Hi @CreatedByCreator,
You're using "DTrans" for the transformation, but put it into a "CellInstArray" object, which is by definition using integer DBU units. That is not consistent and the effect is that "CellInstArray"…
Hi Noah,
did you check the documentation?
https://www.klayout.de/doc-qt5/programming/application_api.html#k_11 explains the concept of the mouse events. Specifically it says:
(Quote)
Here is more example code: https://www.klayout.de/doc-qt5/code/…
Hi @engrvip,
The error message is an assertion - so an unexpected condition inside the code.
Checking against the main branch of the IHP PDK, line 388 seems to be a "simplify" call on the schematic netlist. I assume it is related to the …
Hi @Scafir,
thanks for the pointers. I will take a look. I just can't promise a swift response. Performance issues are usually ugly to trace back.
Matthias
Hi @Scafir,
I'd not try parallelization inside the application. Qt and large parts of the application are not thread-safe. You need to provide strict thread isolation and there are too many side effects beyond your control. Specifically I don't tru…
You will find it more cumbersome if you don't have it - because then you cannot enter the width of a path, the text string of a label or the parameters of a PCell or quickly access the snapping modes. It makes sense to have it.
Why don't you just p…
@thangzero please consider opening a new discussion for a new case.
Actually, there is no direct way of changing the shortcuts for these items, as these are mode switches and not functions. But it is possible to install a script which changes the s…
Small update: "extent_refs" (see https://www.klayout.de/doc-qt5/about/drc_ref_layer.html#extent_refs) can actually be used, if you first convert the edge pairs to rectangular polygons using "extents" and use "raw" to sw…
Hi Andy,
thanks for the image, I got the idea now.
The general strategy I'd like to suggest is to create edge pairs of vertical edge pairs and then compute the centerlines of the two involved edges.
For getting the edge pairs, you can use the &qu…
No no no ...
It's too easy to introduce a tiny move when you just click. It may be a single pixel. It's essentially impossible to decide if you wanted to click or move. So a single click can be mistaken as a small move and unless you're not super c…
Hi Leo,
I have started an implementation of the "copy whole net as marker" (https://github.com/KLayout/klayout/pull/2257).
With this patch "evaluate_nets" will have a new feature that allows finer control over what is produced.…
Hi @sekigawa,
thanks for this impressive survey :)
@simransingh14: regarding the plugin-based approach: it is not possible to explicitly capture the "File/Open" event. "Plugins" are scripts that make use of a special API to hoo…
Hi @Manio,
I don't know which PDK you are using, but when you don't see the library, that means something went wrong during installation. Typically a PDK will provide a PCell Library by through scripts which are auto-loaded on startup of KLayout. F…
Hi @mikamar,
at first glance I'd say the "diagonality" of the upper-left 2x2 matrix of the example case should give you a similarity. That matrix is
(0.05, 0) (-0.000505, 0.0505)
That is pretty "diagonal". It's obviously…
Hi Simran,
I think you need to be more specific. What is the requirement UI-wise and what are the details?
Basically, KLayout can download from HTTP(S), but authentication supports Basic only, is per-session and requires the user to enter a passwo…
Hi @katherine,
technically, the entry point to the space check is Region::space_check in dbRegion.h, line 725. However, that's just the entry point, the details are complex.
I need to say that KLayout is not an educational, but a practical impleme…
You can create a Application shortcut on Windows that includes the "-rm" option with the macro you are using.
But I don't want to give Windows support here - there should be many resources which tell you how to create an application short…
Oh, I'm sorry. You are right. Arrays of layers are not supported as of now. I left my brain at some Christmas party obviously.
You can pass any value to variables, including arrays, but one should not use that for layers.
But it should still be po…
Hi Leo,
The expressions syntax is somewhat limited - there are no loops. You can still pass arrays:
# ANTENNADIFFSIDEAREARATIO-like antenna checkdef antenna_check_gf180mcu(gate, antenna_layer, thickness, limit, diodes) expression = "var gare…
Hi @simransingh14,
the option that comes to my mind is using a file type binding like
klayout.exe -rm yourmacro.lym -rd input="%1"
(I assume Windows style for file associations and %1 is replaced by the file name).
In that case "y…
Very good :)
KLayout does not have curves - only piecewise linear polygons (after all, it's a VLSI tool and most layouts are manhattan style). So no curve fitting :(
Matthias