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 @dion,
When you say "load" - what kind of loading is that? Are you sure that you are opening the file in read mode? Edit mode is much slower and has a much higher memory footprint.
20 Minutes for 2..3GB OASIS appears too much. The lar…
Hi @dai,
I think this is just a complicated way to do an AND :)
strmxor can't do AND right now. Maybe I should include that too. But a more general way is to run a DRC script for that purpose.
Matthias
Hi @nograd,
GDS is a format that puts all coordinates on a multiple of the database unit (for example 1nm). So if you rotate something by 45 degree, the new vertexes will have to snap (that's math). It will never stay identical. That is a basic lim…
I'm leaving that to commerical tools. I hate file caching. It is very hard to detect when you need to invalidate it.
Take Virtuoso Express PCells - they drive me crazy. Never the right layout.
Matthias
Hi Steffen,
you can "descend" into the cell. So you click on a shape, and press "Ctrl+D". This feature is sometimes called "edit in place". It means, you change the editor scope to edit inside the cell, but still displ…
@"Vincent Lin"
I had the same issue myself too many times ... you get used to that :)
Regarding your solution: a cheap way of getting the same effect is:
menu = pya.MainWindow.instance().menu()menu.insert_item("@toolbar.end", …
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…