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
Yes, actually that is a good question.
I think, organizing PCells that way is already very clear. Usually you would base your PCell code on other utility modules which then sit in further modules.
If you make your PCells thin wrappers around some …
Hi @BigPanda,
thanks for these suggestions. Problem is that the Vanilla Forum software is no longer maintained (https://open.vanillaforums.com/discussion/39620/higher-logic-has-terminated-open-source-vanilla). Hence, my options are limited.
I woul…
Hi @lukasc,
I tried with the PCell example code (the Circle). This creates a hidden parameter called "ru" which is the effective radius. It is determined from the handle or the input, whatever is more recent.
I used this call to get that…
In the solution above, where you use a width to detect the blue area, you can basically derive the bounding box of the error marker, like:
bboxes = l1.width(0.2.um).extents
Now, if the length you want to check is larger than the width, you can use…
Hi @"안준용",
the intention of a DRC check is to indicate the positions where the desired width or space is violated. The goal is to have zero violations - i.e. you have to fix them, regardless how much the space or width is violated. Cor…
If you have OASIS with large coordinates, you need to use an 64bit coordinate build. For Windows it's available as the "c64" binary. On Linux, you will need to build it yourself with the "-with-64bit-coord" option.
By default, c…
I think that's possible, but in Python, multi-line comments are simply made by putting the text in triple quotes, right? Is that much more difficult than having a shortcut.
Frankly, I don't intend to compete with PyCharm. The IDE is a basic thing a…
Hi @BigPanda,
I'm not sure I understand.
I think you have a number of design rules you need to implement.
Do you have some drawing that explains these rules?
Matthias
Hi @wsteffe,
I don't have such an editor, but I like to point out, that the notation of KLayout is actually very complex.
It embeds the DRC engine which allows generating layers before using them for stackup.
Reason is that in VLSI, geometries ar…
Hi @BigPanda,
the "D" types are not extensions of the "non-D" types, but different flavors. By convention, the "D" types carry coordinates in micrometer units, while the "non-D" types carry coordinates in int…
Yes, basically I just need to add them to the build system.
Problem is often that these packages require a system update and that often breaks other things. So I am very cautious with these kind of upgrades. But I can try.
The Windows installers a…
That is because "extent" without a layer is a global bounding box and this will always include all objects, texts included.
I meant you should take the bounding box of some polygon layer. Usually there is some design layer defining the ch…
@Liyuan,
Yes, texts are counted too.
But only, if you use "input" to read a layer. If you use "polygons" instead, the layer will not contain the texts. In the same fashion, when you use "labels", the layer won't conta…
@sekigawa Thanks for the explanation :) This is exactly the reason.
Here is the rationale: with Trans there is no "free angle". The only allowed angles are 0°, 90°, 180° and 270°. Instead of reducing any number to one of these allowed val…
XSection is a separate project hosted here: https://codeberg.org/klayoutmatthias/xsection
But I don't attend it currently.
So as of now it is "as is", unless someone wants to maintain this project.
Matthias
Hi Dave,
as you are passing "true" to the "raw" argument of "SimplePolygon.new" this should already be the case.
Here is an example:
pts = [ [0,0], [1000,0], [2000,0], [1000,1000] ]p = RBA::SimplePolygon::new(pts, fa…
Hi @double0darbo,
I saw the other thread and replied. But it makes more sense as a separate one.
All the working shape objects (Polygon, Box, ... and corresponding D... types) have a method called "moved". You can create a displaced vers…
Hi @tomas2004,
Yes, that's how it is defined. When you don't specify a tile origin, the tiles will be centered on the input layer's bounding box. This minimizes the number of tiles in general.
Only if you specify the origin, the raster is fixed.
…
Hi @jiunnweiyeh,
No, there is no sorting order. The order of shapes is more or less random.
You can get some kind of sorting if you employ the "<" and "!=" operators of the Polygon object:
die.data.each.sort { |a,b| a != b …
Hi @double0darbo,
Regarding your question: all work objects (Polygon, DPolygon, Box, ...) have a "moved" method that creates a shifted version of that object. Use that to move the object by the specified distance before inserting it.
Mat…
Hi @jiunnweiyeh,
Are you using some (quite) old version maybe?
It works in 0.30.1:
(Image)
Older versions want to see a list of DPoint objects:
pts = [RBA::DPoint::new(-5000,-5000),RBA::DPoint::new(-5000,5000),RBA::DPoint::new(5000,5000),RBA::…
Hi @BigPanda,
thanks for the explanation. I think I understand what you want to do.
I think the solution is easier if you start from scratch.
I have drawn a sample on layer 1/0:
. Or you want to know the dimension of the yellow polygon in some way?
I'm fa…
So, you mean, you have two polygons and want to have the closest distance, any two points on those two curves have?
If you want to check such a condition against a preset value, the DRC feature can be used. Like this:
poly1 = RBA::Polygon::new(RBA…
Hi @jiunnweiyeh,
"Polygon" takes an list of points, for example this way:
pts = [ [ -2348.275000,-4985.623000 ], [ -2348.275000,-4985.624000 ], [ -2347.906000,-4986.132000 ],...]layer1 = layout.layer(1, 0)top = layout.cell(current_…
Hi @diarmuid,
looks like your layout does not have an substrate and nwell tie. The body terminals of the NMOS and PMOS devices are not connected.
But without the layout files I can't say.
Matthias
You mean you want to find the shortest distance between the shapes in your design?
Maybe here is your solution: https://www.klayout.de/forum/discussion/2299/bisection-of-drc-checks-to-find-min-distance#latest
Matthias