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 Gerard,
I have created a ticket to enable the corner-to-edge measurements. It's probably not difficult. The main reason it's not working is that points lack direction information, hence the edge relation cannot be identified as "opposite&qu…
Hi @charavan,
So you mean that "test.lyp" is actually a symbolic link? If by Design Management Tool you mean Clearcase, it is not.
The ".lyp" file can reside somewhere else than ".lyt", but the path is resolved relati…
Hi @Tabra,
A picture, the complete script and a sample would be extremely helpful to understand what you're trying to say.
In general, I guess that dots don't count as real edges. I will check this.
But you don't need corners, maybe. If I underst…
Hi @tbenz,
Could you provide some sample layout?
The fill itself does not imply a grid, but it takes original layout vertexes as reference points. If all of them are on-grid, the fill should be on-grid as well.
The fill script you are using is no…
The "Cell" class has a "move" method while allows moving shapes from one cell/layer to another cell/different layer.
But eventually the implementation is not much different from yours. So I don't think you will gain a lot.
Matt…
What exactly do you mean by "process blocks"? You can put a sequence of etch steps for example into a procedure and mimic a different form of etching. But for example, if you want to generate you own etch profile in a way that cannot be em…
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