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 @Tabra,
Thanks for the connectivity tracer tech stack conversion. This code is pretty much the same thing that the net tracer does internally. I still don't think that the net tracer stack description is a good one given the much more evolved ca…
Hi Chris,
callbacks arise from deep inside the Qt system. Basically those are translated Qt signals. There is little I can do against this, except maybe filtering them, but finally there is a certain risk someone misses the important ones.
What sp…
Eh ... that will not change anything :)
I found some article that suggests something like this:
require 'etc'...threads(Etc.nprocessors)
However, (hierarchical) DRC and LVS does not necessarily scale well with the number of cores. I usually find …
Hi @Tabra,
first of all, DRC is build upon Ruby, which is essentially pya, but in Ruby binding. There is no disadvantage of Ruby vs. Python. All DRC features are routed to corresponding API calls, so simply translating them to pya would give you th…
As the scripts are Ruby, you can form process blocks as procedures. The engine itself does not support anything apart from the documentation features.
Matthias
Hi @jiunnweiyeh,
there is no test or something like this which tells you if scripts are still functional - except testing them.
Usually, all features are backward compatible. Only very rarely, things change in a way that scripts stop working. I th…
Why do you say, it's not accurate?
The extractor does "square counting" as it says. The metal2 strip on layer 32 has a length of 2.617 (via center to center) and width of 0.23. That makes 11.37826 squares. With 0.04 Ohm/square this gives …
Hi Laurent,
as a sample how this can be done, here is my Metal1 fill implementation for the IHP sg13g2 PDK. It puts the Metal1 fill in the cell "METAL1_FILL":
verbosencpu = 4chip = input(189, 4)chip.output(189, 4)# Prepare a hierarchy be…
Hi @Tushar_Mayank,
I think @blueman_44's approach is valid. But please note that KLayout is not a PCB tool. The features offered are specific to the VLSI world with their own conventions and slang. It is common to have complex boolean operations th…
Hi @dick_freebird,
Cursor movement follows the grid applied to the specific tool.
This is best seen when you enable "Mouse tracking" in File/Setup -> Application/Tracking with a cross hair cursor.
If you do so, the tracking cursor be…
Please paste a sample, so I can reproduce the problem. Your approach should work, but not if your layer names are not matching the ones that you listed in the reader options.
You can .zip your file to attach it to your posts.
Matthias
"load_layout" simply takes a string which ideally is an absolute path. Otherwise it will simply read that file relative to the current directory and that is usually something defined by the operating system. There is nothing special here. …
Hi @Yessnr,
A GDS does not have layer names or layer descriptions. It's just numbers.
But every Design Manual (the most basic document of a PDK for a specific technology) has a table called "Drawing layers" or something like that, with D…
Sorry, there was a typo.
It's supposed to be "inst", not "instance" (see https://www.klayout.de/doc-qt5/about/custom_queries.html#k_4 for a full description):
select path_dtrans*inst.dbbox.center from instances of $(CellView.ac…
Hi @jonathan,
"test2.oas" is not an OASIS file, because the default format is "GDS2" in "SaveLayoutOptions". Use "set_format_from_filename" to establish the right format (https://www.klayout.de/doc-qt5/code/c…
Hi Thomas,
thanks a lot for sharing the script. I recall there has been a discussion with exactly the same issue, but I can't find it. Maybe that was also a discussion on GitHub.
Unfortunately the Forum system I am using is our of maintenance (pro…
Did you check this concept: https://www.klayout.de/doc-qt5/about/about_libraries.html ?
It allows installing external files as sources of cells for your main layout. Refreshing the library file will update the cells in the main layout when you load…
You cannot directly. DRC is for checking thresholds, not for measuring.
You can iterate the objects in a layer:
layer = ... # a polygon layerlayer.each do |poly| .. do something with poly ..end
"poly" will be a DPolygon object (https:/…
I don't understand. Your script does not involve layer 2/0 (l2 is not used). So how can c be flagged in that script?
Plus maybe you should upload your sample file (.zip it before). It's hard to see how the red and blue layers overlap.
Matthias
Hi @sekigawa,
thanks, I think this is helpful.
So the console is closed initially on MacOS? But it's docked correctly at the bottom. Correct?
Thanks,
Matthias
Hi @Sharon,
If the instances you want to delete are made from array instances, the code becomes quite tricky. In the user interface, you can select the instances you want to delete. But if you select a part of an array, you first have to resolve ar…
TIFF is not installed with Qt by default.
In my case (Ubuntu 24.04), I had to install this package:
sudo apt install qt5-image-formats-plugins
After this, I was able to use TIFF images.
Matthias
Hi @Sharon,
there is some confusion.
First, you probably have not enabled "Select Top Level Objects" from the "View" menu. So in your first scenario, if you select things, you actually select shapes inside the pillar cell "…
That appears to be a MacOS specific issue (I'm not a MacOS user). The console seems to be docked at the very right border by default vertically. There is some splitter handle on the right side which you may be able to pull.
I can't reproduce the pr…
@Joel_Even I am not really eager to correct the nonsense that ChatGPT/Copilot/etc produce. Some cheery people tell us that guys like me will no longer be needed in the near future. This means war.
The concept of LayoutDiff is explained here: https:…
If you have OASIS, it may store the top cell as an explicit property. Extracting that without reading the file is not a feature of KLayout, but I'm sure it's there is other tools. For example this one: https://github.com/klayoutmatthias/dump_oas_gds…
Hi @dixit,
There are no hooks you could attach such a function to. Of course, the sources are public, so basically anyone can implement whatever function you wish for.
I feel however, that you have a specific application in mind. It's possible (by…
Ah, yes. That is because there is still an empty property set attached. BTW: if you really want to know if a shape has properties, ask for "has_prop_id = True && prop_id != 0". Because the API differentiates between shapes with an …