Matthias

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

About

Username
Matthias
Joined
Visits
1,418
Last Active
Roles
Member

Comments

  • Hi @kareemfarid, If you are only interested in m1 shapes being somehow connected to m5, the easiest way is not to use "connect", but to traverse interactions downwards from m5: via4_connected_to_m5 = via4.interacting(m5)m4_connected_to_m…
  • Or maybe no one used it :) But thanks for reporting the issue. I don't know why my phone wasn't able to read it in the first place. But finally that problem was gone. Kind regards, Matthias
  • I have released a new version 1.1 of the QR code PCell which fixes the problem. Matthias
  • By coincidence, I just pasted some code here: https://www.klayout.de/forum/discussion/2670/basic-text-convert-to-static-cell-naming#latest Matthias
  • Hi @icplau, A small DRC script that snaps the layer to a given grid is this: # Example: snap layer 100/0 to 0.01.uml = input(100, 0)l = l.raw.snap(0.01.um)l.output(100, 0) The "raw" option will preserve the cutline, so the cut point is …
  • Hi @connan, How exactly do you do the merge? When you say, you are adding them to a library, do you mean you are doing that in KLayout or is that some other tool? When you merge with KLayout, there are ways to avoid the name clash. Renaming like s…
  • Hi @kareemfarid, First I should correct the above (second) solution. It has this be this: # select l2 shapes where exactly two l1 edges are touching# (NOTE: the boolean AND between L1 and L2 edges selects# only L1 edges that are parallel to L2 edg…
  • Hi @Johan_vdW, I guess this is the first bug reported for the QRCode PCell :) BTW: the code is here: https://github.com/klayoutmatthias/qrcode_pcell But it has been a while (8 years in fact) since I created it. I need to dig into the code and spe…
  • No, text string and cell name are entirely disconnected. The TEXT cell is a PCell which can be anything from a inductor coil to a memory block. Being a label does not qualify a PCell to decide about it's own name. Plus: * Text strings don't follow…
  • Hi @kareemfarid, Here is one solution that is based on the separation of edges into horizontal and vertical ones: report("discussion 2669")l1 = input(1, 0) # reddishl2 = input(2, 0) # blueishl1e = l1.edgesl2e = l2.edges# split l2e into…
  • Very good :) The fill feature will generate new cells when you feed it with "fill_pattern" things. Technically, the "fill_pattern" is just a collection of shapes, but as the fill feature internally needs a cell, it will make a c…
  • Hi @Emrecan, In GDS, the general interpretation of overlapping shapes is to "combine" into a single shape. This is called "merged semantics" in KLayout and is the default assumption in general. So the islands you highlight are b…
  • Hi @tomas2004, That's not a bug. "origin" for the fill pattern does something else than what you expected. First of all, this is my version: # 1st iteration (T1 @ 0,0)layer_to_fill.fill(tile_T1, hstep(3.0*tile_pitch_X), vstep(3.0*tile_p…
  • Hi @mole99, The open Sky130A PDK I have installed using volare, does not have these two kinds. Are you sure the special variant isn't intended for SRAM for example? In that case, maybe there is a marker layer you could use for detecting the differe…
  • Hi @gyger, thanks for these pointers. I will take a look. I basically feel that A* search can be tailored to my needs, but I need to investigate that. Anyway, thanks a lot. Matthias
  • Hi @IanD, you can iterate over the polygons of a layer using "each". This will give you a DPolygon object (see https://www.klayout.de/doc-qt5/code/class_DPolygon.html#k_1) which you can analyze using the provided methods. Here is an exam…
  • I tried the min_coherence = true approach. It works, but it is slightly inconvenient. First, it's not a DRC feature, but available as a somewhat cryptic option inside the Region class. The latter object can be accessed as the "data" membe…
  • Problem is that the time is wasted in C++, which Ruby can't control. There is no way to avoid that except delegating the operation to a subprocess - i.e. writing the edges to a file, running KLayout as a subprocess in batch mode and collecting the …
  • Hi @mrg, The first line says, pmap is not installed. I think your Docker instance does not have it. It's not a Ruby or KLayout issue. Matthias
  • Hi @jiunnweiyeh, No, currently you cannot select cells for overwriting. I consider that extremely dangerous as you need to be sure both cells are identical or otherwise you will get weird results. When you combine layout files by script, you can l…
  • Very good! :) But actually, when you map a layout to a pixel array without semi-filled pixels, you do introduce some layout distortion. That is inevitable. Either you accept to have a line overlapping pixels or you need to have perfectly aligned la…
  • Hi Giovanni, yes, that is intended. Actually, when you create a Region with a recursive shape iterator, it becomes a special kind of Region called an "original layer region". It is not a replica of the layer, but represents the actual la…
  • Hi Nguyen, You can capture the parts intruding the marked area using such a DRC code: report("Discussion 2656")inp = input(1, 0)inp.drc(primary.sized(0.08, 0.11) & foreign).output("Errors") This will give you these markers…
  • Update: I would be specifically interested in a quality convex decomposition that guarantees rectangular pieces when possible, ideally maximizing the aspect ratios of the pieces. Another thing I am interested in is an algorithm that finds the maximu…
  • Hi @gyger, That is actually very interesting. You seem to have done some research and maybe you can share some publication links? You can also send information privately through the contact mail address if you wish. I found this nice overview page…
  • That's a duplicate, is it? The other post is https://www.klayout.de/forum/discussion/2656
  • Hi @nguyenajt, Are there any additional warranties? Your code suggests so. Like: is the horizontal distance always 21nm? Is the orientation always long side vertically? Matthias
  • Hi @JSS, what do you mean by "design grid accuracy"? The "ongrid" check will report all polygon vertexes whose x or y coordinate is not a multiple of the grid value. Paths are converted to polygons, so the path outline is check…
  • Hi @gyger, the first version is actually the better one IMHO as it blends nicely into the DRC scheme. But it is not efficient as it uses a loop over the polygons. The second version is faster, but does a "decompose_trapezoids" which is no…
  • Hi @illyjustfine, I am releasing 0.29.11 version right now. There was a bug that may have triggered this issue (https://github.com/KLayout/klayout/issues/1955). Can you try with 0.29.11 version? Thanks, Matthias