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
@world_locus Thanks a lot for sharing this script.
The script doesn't look bad. Specifically you're very right not to call "prune_cell" inside the search loop in "deleteOrphaned". Deleting cells while you loop over them is often…
Hi,
you can achieve this with a DRC script (see https://www.klayout.de/doc-qt5/manual/drc_basic.html). As you mention you have hierarchical layout, you can try the "deep" switch which enables hierarchical mode:
# enable hierarchical mode…
@EugeneZelenko thanks a lot for the code!
The problem still persists on master. As a workaround I'd suggest to check for "view.each_object_selected().size == 0". But of course "has_object_selection" should work.
I have created …
Hi Thomas,
thanks for trying.
I assume there is no auto-loading involved. So it's about the execution of Action instantiations.
How exactly do you run the top-level .lym? Is that autorun oder autorun-early? And maybe you can give a short example …
You mean mask coloring check? No, KLayout can't.
But if you're designing for a technology involving double patterning, you should have the money for a Calibre license. The tapeout will cost you a lot more.
Matthias
@tagger5896 Please forget about Skill .. I have not attempted to replicate this API. I also don't want to. Be aware that most vendor specific concepts in the EDA industry are protected by copyright. So I cannot and will not copy that.
I could be mo…
Hi Thomas,
I'm trying the comprehend what's going on. So I understand that you have one top-level .lym file which then loads other modules, i.e. "require", right?
So how did you make these other files specify a shortcut? Plain .rb files …
Hi Eugene,
thanks for reporting this. I'll verify that and create a ticket if necessary. I recall I have seen this issue myself, but I'm not sure. Maybe it's already fixed in master.
Matthias
@tagger5896
First, it's "Matthias" :)
Second: please don't indent your text - Markdown formatting will turn it into a code piece.
An third: the documentation (https://www.klayout.de/doc-qt5/manual/net_tracing.html) refers this this page…
Hi Tracy,
I took the liberty to edit your text so it becomes more readable. This forum supports Markdown, so please use it properly.
Regarding your problem: I assume that "net" is nil. Maybe because "value" is a string which is…
Hi Thomas,
Oh yes, there is still Ruby :) Most users prefer Python, that's why I was implicitly assuming that's the case here.
The animation speed is kind of fixed - of course it can be changed by modifying the C++ code. The background is that man…
Hi Thomas,
It's possible to modify the layer views through script, so that's how you can implement animation.
My recommendation is to create a plugin (see https://www.klayout.de/doc-qt5/code/class_PluginFactory.html). Plugins are intended to suppl…
@jiunnweiyeh
I usually don't see issues with "File.join" or "File.dirname" with proper paths, even on Windows network drives. The network path should be a valid UNC path however which is starting with a double backslash, like \\…
Hi Jim,
yes, well ... sorry for the effort created :(
But you may be happy to learn that I had an encounter with Virtuoso again after many years and I know what I owe my users. For 0.27 I have changed the behaviour to "apply when you enter&qu…
@Shida I'm sorry, but KLayout currently can't check distances between different nets. Thats a development branch which is not yet addressed.
Please don't expect you can easily substitute Calibre by KLayout. Mentor doesn't take the money for no reas…
@ahmedo Yes, that's correct. The problem is that the iterator will give you the original vias with the placements inside their local cell. You'll need to transform them into the initial cell so they appear as they are seen from the top.
The transfo…
Very good :)
Basically you don't always need a parent object. It's just Qt's way of handling object lifetime: whenever a parent is deleted, the child objects go as well. That's required in C++, but not in Qt, where the members of an object are auto…
@miller I'm sorry, no. KLayout comes with it's own flavour of DRC language.
Maybe it's possible to convert the files by a script, but as tool vendors are usually picky about their IP, such a converter may not be open sourceable. And I don't have ex…
Are you looking for something like this?
(Image)
This is the Python code which generates that:
# puts 5 boxes on 10 different layers in the current viewly = pya.CellView.active().layout()for l in range(0, 5): x = (l - 1) * 25.0 y = 0 # 10x10 …
@tnoradam
Thanks for sharing the script.
Just a question for my understanding: how do you use the script? Do you auto-run it on startup to get your key bindings?
Thanks,
Matthias
Really ... ist GPIB still around?
I had to code for IEEE488 in the early 90s (and I think there was already ni4882.dll!). This was when USB entered the scene. I was so happy this nightmare was over for me by this time.
If you need to poll, my sugg…
@jiunnweiyeh
"lydrc", "lym" ... are XML formats which KLayout understands but not Ruby or Python. KLayout will use the XML attributes to store meta information such as where and how to show the script in the menu.
In order to &…
Thanks for commenting on this.
And yes, the "..." statement is my recommendation too. "file" as mentioned works - you can use that for example for the entry point which then provides the to forward to one or multiple servers. I…
Hi Thomas,
Regarding 1: "set_config("key-bindings", ...) and using File->Setup should basically do the same. In fact, File-Setup is only a configuration editor. I could not produce this behaviour with a simple test. I wonder what'…
Nice idea, I agree!
But you're not the first one, I'm afraid :)
One is here: https://www.klayout.de/forum/discussion/comment/2214#Comment_2214
The first request dates back into the early days of KLayout (>10yrs back). I think there are even co…
For the Circle from Basic.CIRCLE, the radius to use for programmatic instantiation is "actual_radius", not "radius". This PCell has two ways of setting the radius: on through the entry box and by moving the handle. "actual_r…
Hi,
well, that's actually harder than it looks. There is a forum entry where I explain the topic: https://www.klayout.de/forum/discussion/comment/6738#Comment_6738
The problem is basically that DRC is based on Ruby which (like Python) is a modern …
Hi Thomas,
I'm a bit cautious with that. There is no active push to client applications. Instead, the application has to poll the server regularly. This needs to happen through a TCP/IP connection and HTTP requests.
KLayout is frequently used in s…
Hi Andy,
Yes, docker deployment is actually an option. Being made for web service deployment, Docker provides a too little support for native GUI applications to my taste, but it's perfect for build system maintenance and automation tasks.
Matthias