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
And regarding the the question of @dick_freebird:
As you say, a CMOS gate is not symmetric, but if you wire the pins correctly on upper levels, the topology matches and the labels do not matter.
But it is possible to treat the inputs symmetric and…
Hi @Lil_ner,
so you are very ambitious, are you? :)
To be honest, KLayout is not a good starting point if you're not familiar with Python. KLayout's API is not very Pythonic, as it reflects the C++ nature beneath. So it is somewhat likely you rath…
Hi @Wanchus,
Please consider opening a new discussion rather than reusing an old one.
The option you ask for is not available in the DRC language. It is a special option for the UI feature.
You can try using deep mode:
deepinput(2, 0).merged.out…
Hi @barlow,
The LVS is basically name agnostic and does a topological match. It finds - correctly - that the topology matches. What it also finds is, that what is called "A" in the schematic is called "B" in the layout and vice …
Hi @JSS,
for the second problem, I propose this solution (caution: needs 0.29.x version):
# see belowbad_corner_edge_pairs = l1.corners(0.0 .. 59.9, as_edge_pairs) + l1.corners(60.1 .. 180.0, as_edge_pairs)all_corners = l1.corners(as_dots)# needs …
Hi @JSS,
Of course, width also works on trapezoids. However, as there are corners with angle < 90 degree, and that formally qualifies as a width violation (the edges are facing each other):
(Image)
together with the intended violation:
You…
Hi @JSS,
The first question is easy: that is the definition of "enclosing":
l2.enclosing(l1, 0.5).output("l2 is enclosing l1 by at least 500nm")
which gives:
(Image)
The second question is difficult. There is no function to…
Hi @PavelSmirnov,
yes, you're right. Push failed because of an outdated token :(
I have fixed that. You need to uninstall and re-install the package.
Best regards and thanks for the notice,
Matthias
I don't have a simple solution to this problem.
That is a feature for the future, for example by sending the results of a "Search" query to the selection.
Matthias
Hi @srooks10,
thanks for this nice problem description.
This is a bug of the reader. It should turn the empty string into a generic device, which is does not. This issue is probably easy to fix.
I have created a ticket for this problem: https://g…
Hi @JSS,
thanks for the picture. This makes things easier to discuss.
Here is my solution (needs version 0.29.0):
report("Discussion 2500")l1 = input(1, 0)l2 = input(2, 0)coincident_edges = (l1.edges & l2.edges)# needs 0.29.0:error …
Hi Vincent,
DXF does not really support filled polygons (except through hatches). All that KLayout does is trying to stitch the lines. There are different strategies you can find on the "DXF" page in the "File/Reader Options" di…
Very good :)
I have released version 1.8 for the benefit of other users. But I have also frozen development except for maintenance. The project feels like having opened Pandora's Box.
I wish you better luck with your implementation :)
Matthias
I guess you are using some flow. Please consult the flow documentation.
Basically you can view the report with klayout <layout-file.gds> -mn <lvs report file>.
Matthias
Hi @Ege_Bey,
0.27.13 is already pretty old. So you never used 0.28, I assume.
What OS and which Python version are you on? I assume there is no support for your OS/Python combination and pip tries to build from sources. This fails if you do not ha…
Hi @PavelSmirnov,
Sorry for missing the issue in the XSection repo. I am not really active there - I personally consider the XSection thing some toy tool. It is hard to believe what people actually use it for.
But you're right. Batch mode needs th…
The more elaborate solution is to load into two separate layouts and merge:
ly1 = pya.Layout()ly1.read("file1.gds")ly2 = pya.Layout()ly2.read("file2.gds")# merge ly2's top cell into ly1's top cell# NOTE: "move_tree" wi…
I think security features are not responsible here.
Basically, when you run a binary, it is always built against a certain version of a library. When KLayout calls functions from another library, it will do so under the assumption that these functi…
Hi @Default,
You mean the PCell drawing code decides itself, what the parameter value is?
In short: don't do such a thing.
KLayout's design is based on the assumption that same parameters mean same layout. This is the basis for caching and persis…
Hi @tgustafson,
I would call it a bug in the old version to accept illegal GDS files. Basically the results are unpredicable, and it is very easy to spoil your design this way. KLayout may show you a layout this way, but once you submit it to manuf…
My opinion as well! Thanks @StefanThiede.
Technically, GDS references cells by name. So if two cells carry the same name you cannot decide which cell is targeted when a cell is instantiated.
The GDS reader initially joined cells with the same name…
Yes, exactly.
Hidden parameters are a way to store information persistently (i.e. inside GDS files). That is the only way to store information generated inside PCells. Everything else is "write only".
Matthias
Hi @sekigawa,
That is interesting, but it is kind of unintended ... I need to check myself why this is working. It may depend heavily on Python internals which is not good as it would change with other Python versions :(
Thanks,
Matthias
Hi @Peter123,
I am sorry, but that is not supported natively.
Unlike Unix, on Windows, a link (*.lnk) is not handled by the file system, but by the shell. A "lnk" file is a binary file, nothing more, so an application needs to be coded i…