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
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
@tagger5896
Thanks for the sample. To be frank it seems to be working, although it produces each resistor in a separate cell because that's how it was designed.
If you want to get rid of the RES2 device cell, use this:
netlist = l2n_data.netlist#…
In a PCell you can also use the Region class. Instead of using a RecursiveShapeIterator (such as delivered by begin_shapes_rec), populate the region by inserting polygons with "insert".
Matthias
This should basically work. I just confirmed that it does.
Two things to check: maybe base path of your technologies is not set properly. If not, the DRC scripts will not be found. Check if they can be seen in the Macro Development IDE. And DRC scr…
Verifying layout integrity is the domain of XOR, not of net extraction.
You can verify the cell in you assembled top level layout by doing an XOR of your subcell only against the reference.
Matthias
There are several bugs in that code.
First of all, you can't use micrometer units in Polygon#sized and second you skipped the last argument to "simple_merge_p2p" which is 1 and it's important here. Please check the documentation.
But bas…