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
Hello @kazzz,
specifically the tolerances are not available when you load a LVS database. Recording the tolerances is kind of difficult as the compare operator can be a complex class beyond simple numeric tolerances.
The problem with device mismat…
Hi Eugene,
LayoutView used to be a QWidget, but that turned out no longer to be feasible with the upcoming of a Qt-less LayoutView for the klayout Python module.
Instead there is LayoutViewWidget if you want to embed a LayoutView into your own use…
@Sneha_123 your code becomes more readable if you add code block Markdown markup (a single line with triple backticks before and after the code - same as on github for example).
One way to achieve the desired behavior is by putting an annotated rec…
@dick_freebird Thanks for these insights.
I found some cases, where parametrized circuits are used to wrap devices - passing down the parameters to the actual "M" elements for example after manipulation. These parametric cells are never t…
I think you're confusing PyQt with KLayout's Qt binding, which is not PyQt (although similar).
In KLayout, the notation is "add" instead of "connect". There are a number of other differences and in general, KLayout's Qt bindings…
@mrg You can attach any file type to the forum if you put it inside a .zip archive.
In your case, first it is important to change the devices to "M" in the reference netlist:
.subckt sky130_fd_sc_hd__inv_1 A VGND VNB VPB VPWR YM0 VGND A …
@dick_freebird Thank you for this hint. I did know this either.
It may be possible to use a SpiceReaderDelegate to implement this feature, but in general I'd like to support SPICE natively if possible. Although I fixed a number of issues recently (…
@thor No, "$" disambiguators are only added if you create two or more cells with the same name. So I assume your code is not just creating a cell instance ("place it"), but somehow creating new cells, all called "AAA".
…
Hi,
I see such an issue, but only when running scripts from the IDE and with the debugger on. I also do not see the effect when I open the dialog in modal mode (using exec_). Also in my case, when I close the IDE, the dialog starts behaving normal.…
@LaserJon For (1) to work, you will need to draw the blanking rectangle. Then first select the things you want to cut. Use a rectangle select, so everything you want to cut is selected in one step. Then shift+click on the blanking rectangle to make …
Hi Vincent,
no, that is not related. The HAlign and VAlign classes are used to represent text alignment in ruler definitions for example.
In order to align shapes, you have to code the shape positions accordingly when you create them.
Matthias
@tomas2004 Yes, you're right. I'm asking myself however whether overlapping circles should be treated as errors. In that case, not using "raw" is the the right approach.
Matthias
@ashkan No, there is no "diameter" check. "Line width" is defined not in terms of radius, but in terms of edges facing each other. You can narrow down the interactions by using projection metrics - this means that only opposite e…
Hi Thomas,
according to the Qt documentation (Qt5 and later) that should work by assigning a QScreen object to the dialog before you show it:
dialog.screen = the_screen_you_want_to_show_it
However, I have never used that feature myself, not even …
@nairica Python is very hard to read when not formatted as code. Please use three backticks in one line before and after the code like described here: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating…
That feels more like it should go into a technology option.
The code changes will affects many places, so that isn't a straightforward change, but manageable. Some functions such as the Fill (tiling) or the Adjust cell origin function already allow…
Understood - I need to add "Scale and snap" as a UI feature :)
Side note: "scale and snap" is too heavy - and has side effects such as generating cell variants - to become included in the writer. I'll deprecate downscaling / sn…
@dick_freebird I understood (from @kazzz's slides) that the original confusion came from the fact, that all permutations - also the incorrect schematics - matched with MOS. Right?
I guess me swapping S and D in the Spice reader (https://github.com/…
I see. Problem is that there is no annotation in GDS that allows me differentiating a layer for a specific purpose. So this can only work with a specific layer properties file.
I think of allowing layers to adopt some special purpose - maybe also i…
I guess the problem is with a specific detail of the standalone view. It still inherits concepts from it's UI times, specifically that is depends on some form of event loop. You need to call "lv.timer()" to establish a proper configuration…
Many thanks. Nicely prepared test case.
BTW: you can significantly improve the space check speed on 0.28.5 using this space check (note the added "merged"):
input(2, 0).merged.space(0.05.um).output(100,0)
I have to debug the issue. A ti…
Hi Thomas,
I would not call that weird behavior of OASIS. OASIS has a much more elaborate concept than GDS for storing shapes. Like repetitions which duplicate a shape rather than producing it again. Also, polygon edges are represented in different…
A sketch would be helpful :)
Usually, it's a good idea to focus on one G, then collect S/D close to it. But that applies to traditional planar MOS geometry.
In the general case, the strategy is to have isolated polygons as recognition features (G …
RBA::LayoutView::current().selected_layers().each { |i| i.current.valid = false }
But this is off-topic for this discussion. Please consider opening a new one.
Matthias
That sounds weird. I have not heard of such a mode before, neither is that implemented here.
I guess that "padding_ignore" will give a similar result. If will decrease the window size in case of overlaps by the area outside the chip. At l…