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 Thomas,
"each_overlapping" can act as a preselector. It's not precise in a sense that it really checks the overlaps.
For a precise check, it's first necessary to convert the shapes into polygons ("Shape#polygon"). You should…
Hi Thomas,
you can configure the way, net names are translated.
There is a big section in the "Reader options" for this:
(Image)
In this examples net names are translated into properties with key "#1" (integer 1) and attache…
Well ... this won't be a simple "if" then ...
Let me check what's possible. I have not started with this issue yet as I'm a bit short of time right now.
Regards,
Matthias
Hi Itamar,
That's possible of course, but the feature simply isn't there yet. I have created a ticket with this request: https://github.com/KLayout/klayout/issues/500
There may be another option: have you tried tracing all nets (Tools/Trace all ne…
Hi Itamar,
The method which achieves this is "Matrix3d.adjust". Here is a sample:
# Landmarks image (in pixel coordinates)landmarks_img = [ pya.DPoint(100, 100), pya.DPoint(200, 200), pya.DPoint(200, 101)]# Landmarks layout (in microm…
Hi sunSeeker,
I think the images above are the result of some additional processing. I assume you are at least doing a "merge", but maybe you're also doing a "round_corners" for softening? this might explain the issue. As the ro…
Hi sunSeeker,
what do you mean by "compile"?
You can use "require" or "load" in Ruby to import your library files.
Here is the concept:
In your KLayout application folder ("~/.klayout" on Linux or "c:…
KLayout isn't compiled as a console application on Windows (as then an ugly command terminal pops up), so it won't print anything to the console.
But if you use a bash from cygwin or MSYS it will do. Also redirection to a file should work.
Matthias
Hi,
yes, the code's readability has enhanced.
Here is some enhanced code. Micrometer units can be enabled by using "DBox" rather than "Box". Then "sq" and "p" become floating-point values in micrometer units…
Hi Jim,
yes, "NOT" is basically always "AND NOT". But I have not seen a layout so far without a boundary - every chip finally needs to have a physical size.
If you know the size, you can generate this layout inside your DRC:
b…
You can iterate the texts this way:
for s in cell.shapes(input_layer).each(pya.Shapes.STexts): position = s.bbox().center() text = s.text_string print("position: " + str(position) + ", text: " + text)
Regards,
Matthias
Hi Thomas (@dick_freebird: thanks for answering),
right now the geometrical relation is the best way I'm afraid.
Some metadata is translated into properties, such as DEF net names. But pin names are not. They are only translated into labels. I hav…
Hi Richard,
could you format the code above so it becomes readable? Markdown uses a single line with triple backticks before and after the code to format it.
But I think I'm not getting the idea. This discussion is about circular arrays, but the p…
Well, I need to say the search function isn't very smart. "fill_region" isn't cross referenced to "Fill Tool". And it's no full text search :(
Matthias
Very good :)
Thanks for sharing.
BTW: in the first post I forgot to delete the Delaunay import - I use it to check the decomposition. But I found that it only works on convex polygons. To me this looks like a too severe restriction as to be useful…
There are different batch modes available. Some have a main window, some don't. "klayout -b" will enter "bare metal" batch mode where there is no main window and "pya.MainWindow.instance()" will be None.
I tried your s…
Hi Thomas,
could you provide an example?
Basically 1.4 tries to reduce the number of points of the rounded features would not benefit from a large point count. I assume your case is a border case somehow.
I'd also appreciate if you could create a…
Thanks for your feedback.
Actually autorouting comes before LVS. LVS in that context is supposed to ensure the router has not made an mistake. There are a couple of free routers available (e.g. Coriolis). But KLayout comes into play only afterwards…
I'm also not a legal expert, but as far as I know there needs to be an export declaration for both the chip you receive from the foundry (as it is an item that is subject to export restrictions) and the data you send to the foundry (as it would allo…
Hi Mike,
The core idea is to work with layout views rather than layout objects (pya.Layout). Layout objects are standalone and not connected with the views.
* To create a layout within a view use
pya.MainWindow.instance().create_layout()view = py…
Hi Jim,
For "not" you always need a background layer (which is the chip's dimension). There needs to be a outer bound somewhere (no infinite space, sorry). You can take the layout's extension, but the cases I know always have some drawn b…
Hi,
PSLG is what you get from KLayout's polygons. But there is no output to the .poly format yet. I don't think this is difficult. Here is a starting point. This script prints the hulls (outer contours) and holes of all polygons on a given layer:
…
Thanks for the feedback about the search feature. It's not really elastic search yet, just a keyword query in a SQL database. It's not high on my prio list, but I'll try to consider it on occasion.
Thanks,
Matthias
Hi Richard,
creating a PCell which places a cell from the target layout cannot be done. The reason is that the PCell code isn't evaluated in the target layout but in the library it is defined in. Because this library does not have the cells of your…