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
@dick_freebird I recall the three functions have been introduced on your request :)
@tagger5896 This code is essentially what some users use to establish a fixed configuration. For the conversion of the mapping array to a string, KLayout provides a…
Hi Jim,
"shallow select" is identical to "View/Select top level objects only". So if it's off, selection may also select boxes from subcells and I suspect the contacts live in a cell of their own. So essentially you delete the b…
Just specify the box you want to draw instead of leaving the decision to the function.
Here is some code:
lv = pya.LayoutView.current()ly = pya.CellView.active().layout()# top cell bounding box in micrometer unitsbbox = ly.top_cell().dbbox()# comp…
Well, KLayout comes with everything it needs (apart from some very basic system libs such as kernel32.dll). In the past the OpenSSL DLL was missing, but I fixed that. So it's not quite likely that this fails.
However, custom macros may cause such a…
@tagger5896 Well, actually "Polygon#ellipse" is already doing that but I enjoyed this conversation :)
Here is an example (12-point circle with a diameter of 1000 DBU and centered around 500, 500):
pya.Polygon.ellipse(pya.Box(0, 0, 1000,…
@sheikh_nir The layer numbers you need for "copy" are "layer indexes", not particular design layers. A layer index is an internal number of the layer. A design layer is given by a combination of layer number and datatype number o…
Ok, maybe I need to be more specific.
In a layout, you can have many cells. Most cells will be placed inside other cells. There are cells however which are not placed in other cells. These are "top" cells. The form the root of the cell tr…
@kannan It's like the message says. DXF can only have a single top cell but your layout seems to have multiple of them. Delete all top cells you don't need and save to DXF for click and the cell and use "Save Selected Cell As" from the con…
@djdougherty Hi Dave
I can't confirm your observation but I have an explanation.
With a simple, flat test case, your example works without errors for me.
However, it's possible to screw up things: if I select shapes from subcells and select the s…
Not now. But there is such a feature in the next version, 0.27. I target end of April for the release.
You can try that now with the beta version from here: https://www.klayout.org/downloads/master/
The feature is "covering" ("enclo…
Hi Thomas,
looks like it's working at least for my version:
(Image)
Most formats except GDS do not preserve text alignment as there no such feature there. Maybe you're looking at texts you have writted and read back?
Matthias
@world_locus This isn't a compatibility constraint. It's a limitation of the format. You cannot go beyond this limitation with GDS.
You can use the approach @dick_freebird sketched or switch to OASIS which does not have such a limitation.
Matthias
@Adonix Thanks for your feedback :)
Actually that's how it's implemented. "Size Shapes" is a flat function and will operate on the cell layout you're working at. Pulling shapes from a child cells will put them into the current cell.
My r…
Well, I think QProcess can fork too, but forking is a special technique and with QProcess it's up to you to join the results again.
I have not seen fork used productively in recent years. Today's solutions go for distributing a task over a number o…
I meant XOR as a general concept. How to integrate that into your flow is a different topic. I don't know your proposed flow, so I can't give more advice.
To compare two files for identity there are two separate tools called "strmcmp" (do…
I'm sorry, but bookmark management is not part of the API yet.
And I actually dropped bookmark management from my TODO list for 0.27 as otherwise it's never going to be ready.
Matthias
Well ... under X every window manager behaves differently :(
If you're entirely lost, there is "View/Restore Window". If will dock the small tool windows again in the original arrangement.
Matthias
Dear all,
thanks for this discussion. It's actually hitting the point.
But: "Blending" will not just blend the shapes but also instances. So consider you have a hierarchy "A->B->C" (C is child cell of B, B of A) and blend…
@sebastian Thanks from my side too. You saved me some research in this topic :)
I never used multiprocessing myself. Is "Process" doing what I think it does? Then maybe it's equivalent to QProcess?
Matthias
@wishalpha Thanks for sharing the code.
Usually KLayout does a cleanup of such unused cells itself. If it doesn't, you can call
layout.cleanup([])
to clean up. The argument is an empty list - if there are precious orphan PCell variants you want t…
@vandhana Sorry for the late reply ... and very good your figured it out :) The code will give you the instantiation paths of a specific cell. That's pretty much how the instance browser does it - very good! :)
The mystery about the size() > 1 i…
@tagger5896 Sorry, you're right :)
@fatsie Are you able to paste the full script? Something before "extract_devices" makes the netlist extracted already. You can also check for "netlist.something" calls before extract_devices.
…
@MoBe @EugeneZelenko is right. You should use "None" instead of "False".
But there are more issues:
* DBox isn't the right version for fc_box. Use Box and use DBU coordinates. Same for fill_margin which should be a Vector and u…
@tagger5896 Are you able to paste the full script? Something before "extract_devices" makes the netlist extracted already. You can also check for "netlist.something" calls before extract_devices.
As a general rule, extract_devic…
The transient selection is handled by the default selection tool which is bypassed when you capture the mouse.
You can use "top_cell.begin_shapes_rec_touching" with a small search box around the mouse. You'll need to repeat that for all l…
Dear all,
thanks to all for this discussion and the code.
I'd like to add that extracting the coordinates of texts should not be time consuming. If the code above is too slow, you can specialize the RecursiveShapeIterator to only deliver texts:
s…
Cool! Thanks a lot! :)
Would you mind formatting the text in Markdown? I guess there are some "#" characters which make the text super large (those are taken as H1 markers).
Thanks,
Matthias