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,377
Last Active
Roles
Member

Comments

  • Hi @filmartinelli, A simple way is to use a DRC script in "tiled" mode. Here is a sample that merges layer 14/0 and produces polygons clipped to 500x500µm tiles. The output is written to layer 1014/0. # Use 500x500µm tilestiles(500.0)la…
  • Hi @Tabra, You can register multiple PCells per library. Why not just doing: class PCell2(pya.PCellDeclarationHelper):...class PCell1(pya.PCellDeclarationHelper): def __init__(self, lib): super(PCell1, self).__init__() self.lib = lib se…
  • Hi Leo, You're correct, the layout context is not there and it's not just the DBU, with a layout context for example you can obtain layer indexes using angle brackets (e.g. "<2/0>" turns into the layer index). Bottom line is: a &quo…
  • Hi @Tabra, The value attribute inside "callback_impl" was intended to provide information about the current value to allow status change dependent on a value. Setting the value has the potential of creating a loop of callback invocations,…
  • Can you provide a simple sample? You can attach .zip archives to this forum's discussions. Matthias
  • No, there is a converter. You can write one with the Qt objects provided, but there is a good reason this is not provided: logos taken from a vector graphics hardly make good designs on a chip. You wouldn't be the first one to create a defect hazard…
  • Hi @charavan, that raises the question what symbolic links and what not. The original problem was that the whole folder itself was a symbolic link, like klayout -> somewhere/klayout Now klayout/tech/tech.lyt would be (klayout->somewhere/kla…
  • Plugin and PluginFactory is still in lay, but it got tied to the presence of Qt, which is not the case in the klayout Python module. How can you use "Plugin" from an application without Qt? Plugin is a concept that goes into the layout vi…
  • Hi Thomas, I am not quite sure how the actual fill rules need to look like. The Magic-based fill uses a threefold fill pattern, which I have tried to replicate. Here is my script for Metal 1 which I tested on Greyhound and which uses 0.30.4 feature…
  • Hi @mpee, Here is a sample for a script like the one @thomas2004 mentioned (Ruby): vw = RBA::LayoutView.currentselection = vw.object_selectionselection.each do |s| shape = s.shape if shape # The transformation consists of these parts: # 1.…
  • Hi @kurisu, I have created a ticket for this request: https://github.com/KLayout/klayout/issues/2147 @dick_freebird People are working on this, but as always, it's a matter of funding. In this case, it's public money. Company sponsorship is hard t…
  • Hi @Tabra, My first advice is not to use this outdated part of the API. A much better option is the Region class. It's a collection of polygons. A sizing operation in the general case produces multiple polygons (think of a negative sizing that make…
  • So you're implying that the scheme works, if the files are real files, but not if the files are symbolic links? That may be true, because the effective location of ".lyt" then is somewhere where ".lyp" is not seen. But I recall …
  • Hi @jiunnweiyeh, no sorry, that is far too much effort for me. I am still mostly alone on this project. Providing this information is a hell of a work (we are talking about 1000+ functions and methods) and I feel that it's just covering up for user…
  • Hi Gerard, I have created a ticket to enable the corner-to-edge measurements. It's probably not difficult. The main reason it's not working is that points lack direction information, hence the edge relation cannot be identified as "opposite&qu…
  • Hi @charavan, So you mean that "test.lyp" is actually a symbolic link? If by Design Management Tool you mean Clearcase, it is not. The ".lyp" file can reside somewhere else than ".lyt", but the path is resolved relati…
  • Hi @Tabra, A picture, the complete script and a sample would be extremely helpful to understand what you're trying to say. In general, I guess that dots don't count as real edges. I will check this. But you don't need corners, maybe. If I underst…
  • Hi @tbenz, Could you provide some sample layout? The fill itself does not imply a grid, but it takes original layout vertexes as reference points. If all of them are on-grid, the fill should be on-grid as well. The fill script you are using is no…
  • The "Cell" class has a "move" method while allows moving shapes from one cell/layer to another cell/different layer. But eventually the implementation is not much different from yours. So I don't think you will gain a lot. Matt…
  • What exactly do you mean by "process blocks"? You can put a sequence of etch steps for example into a procedure and mimic a different form of etching. But for example, if you want to generate you own etch profile in a way that cannot be em…
  • Hi @Tabra, Thanks for the connectivity tracer tech stack conversion. This code is pretty much the same thing that the net tracer does internally. I still don't think that the net tracer stack description is a good one given the much more evolved ca…
  • Hi Chris, callbacks arise from deep inside the Qt system. Basically those are translated Qt signals. There is little I can do against this, except maybe filtering them, but finally there is a certain risk someone misses the important ones. What sp…
  • Eh ... that will not change anything :) I found some article that suggests something like this: require 'etc'...threads(Etc.nprocessors) However, (hierarchical) DRC and LVS does not necessarily scale well with the number of cores. I usually find …
  • Hi @Tabra, first of all, DRC is build upon Ruby, which is essentially pya, but in Ruby binding. There is no disadvantage of Ruby vs. Python. All DRC features are routed to corresponding API calls, so simply translating them to pya would give you th…
  • As the scripts are Ruby, you can form process blocks as procedures. The engine itself does not support anything apart from the documentation features. Matthias
  • Hi @jiunnweiyeh, there is no test or something like this which tells you if scripts are still functional - except testing them. Usually, all features are backward compatible. Only very rarely, things change in a way that scripts stop working. I th…
  • Why do you say, it's not accurate? The extractor does "square counting" as it says. The metal2 strip on layer 32 has a length of 2.617 (via center to center) and width of 0.23. That makes 11.37826 squares. With 0.04 Ohm/square this gives …
  • Hi Laurent, as a sample how this can be done, here is my Metal1 fill implementation for the IHP sg13g2 PDK. It puts the Metal1 fill in the cell "METAL1_FILL": verbosencpu = 4chip = input(189, 4)chip.output(189, 4)# Prepare a hierarchy be…
  • Hi @Tushar_Mayank, I think @blueman_44's approach is valid. But please note that KLayout is not a PCB tool. The features offered are specific to the VLSI world with their own conventions and slang. It is common to have complex boolean operations th…
  • Hi @dick_freebird, Cursor movement follows the grid applied to the specific tool. This is best seen when you enable "Mouse tracking" in File/Setup -> Application/Tracking with a cross hair cursor. If you do so, the tracking cursor be…