Hi,
You could duplicate the cell you want to copy deep and all of its called cells as well. Then, inside these duplicated cells you make all the instances point to these newly duplicated cells... Not sure if there is a method who does this on the f…
Hi Kumaran,
Check out this link:
https://www.klayout.de/forum/discussion/comment/8606#Comment_8606
Note Matthias' comment about the definition of "emptiness"!
You can also use custom queries from the "Search And Replace" tool…
Hi Matthias,
Thanks a lot for the "dark mode" script! Personally, I prefer to use "dark mode" whenever it is available.
I noticed two things:
1) The top bar of the main window (with the menus) and the top bar of the layout pan…
Hi,
The main window instance can be obtained with: Application.instance().main_window()
import pyamw = pya.Application.instance().main_window()mw.create_layout(0)
Cheers,
Tomas
Hi jiunnweiyeh,
The points need to be instances of the Point (DBU units) or DPoint (um) class:
include RBA layout_view = Application.instance.main_window.current_view cell_view = layout_view.active_cellview layout = cell_view.layout viewed_c…
Hi jiunnweiyeh,
A path should have (at least) an array of points and a path width as parameters:
RBA::Path::new([point1, point2, point3, ...], pathwidth)
See also: https://www.klayout.de/doc-qt5/code/class_Path.html
Cheers,
Tomas
Hi,
You can run the script below after specifying the following variables:
instance_region_layer = "2/0"
regional_layer_sizing = 0.01
touching = false
resolve_arrays = true
I've also attached a small gds test case.
I would not use it f…
Hi,
It's quite simple to do using the method "is_empty":
module MyMacro include RBA layout = Application.instance.main_window.current_view.active_cellview.layout empty_cell_count = 1 layout.each_cell do |cell| if cell.is_empty …
Hello hwest,
The enclosing check works as intended...
If you would like the blue layer to be fully inside the red one with a margin you could check for:
blue_layer.outside(red_layer.sized(-sizing_value))
Cheers,
Tomas
Totally agree: there's no match for KLayout's .lyp format and Layer Window features... Take some time to look a bit deeper into it, it's worth it... :smiley:
Hello,
I like this concept and extended it a bit:
1) when there is only 1 lyp file in the layout directory, it will be loaded.
2) when there are multiple lyp files in the layout directory, and one has the same name as the layout file, it will be l…
Hello,
Not sure what is allowed but I would stick to alphanumeric characters and the underscore character "_", the same as for variables in Ruby...
Cheers,
Tomas
Hi Jack,
Here's a workaround that should work. The example below has 3 metal layers and 1 via layer which connects metal3 with both metal2 and metal1. Split the via layer in two layers, vias that stop on metal2 and vias that stop on metal1 using la…
Hello,
Indeed, you cannot draw perfect circles, only polygons with a specific number of vertices. Matthias' BASIC.Circle PCell does that: creating a polygon with a number of points (parameter) to come close to a perfect circle. The higher the numbe…
Hi Dirk,
You need to update the transformation "t" by adding ".to_i" twice:
t = Trans.new((x[i]/dbu).to_i,(y[i]/dbu).to_i)
I had to do this in some very old scripts of mine as well, which worked in the past, but due to one of …
Hello,
You can use layers.each:
report("on grid")design_grid = 0.1layers.each { |layer| input(layer).ongrid(design_grid).output("#{layer.to_s}_on_grid", "#{layer.to_s} grid violations")}
Cheers,
Tomas
Hello,
You cannot merge cells, only shapes, so you have to flatten your instances first (Pcells and static cells):
1) Select the instances > Edit > Selection > Flatten instances
2) Select the shapes > Edit > Selection > Merge sha…
Hello,
I dug a bit deeper in the Qt designer and it works all nicely but I still cannot make the cancel button to work (the rest of the script is still run). See the code below. I also attached the .ui file. Any idea how to get it working?
Here is…
Hello,
I just started to look into the QDialog magic. The last script from Laurent is very interesting. I've got two questions though:
1) How to add a "Cancel" button, and how to put it on the same line as the "OK" button?
2) H…
Hello,
Please ignore the question above. An old discussion explains this very well: https://www.klayout.de/forum/discussion/334/inputdialog-with-multiple-input-fields
Cheers,
Tomas
lol... For design report purposes, this ground plane might be a bit distracting, that's all... It will be my pleasure to include the watermark in all the screenshots... :blush:
Cheers,
Tomas
Hi Weiling,
You should "refuse" such kind of designs, they cause a lot of troubles...
Once you merged the polygons, maybe you could iterate over the points of the new polygons by script: look at ΔX and ΔY of two adjacent points and when i…
Hi Weiling,
The snapping grid is used when drawing new shapes or moving existing shapes. Normally it is the global grid, but you can quickly override it by defining an "Other grid...". Putting the "Other grid..." to 0.001 does n…
Hi,
In your case, the "v1" cell should contain your via on layer 1/0, and a square on layer 2/0 (boundary layer). The layer 2/0 square defines the via pitch so it should be larger than your via size. The "Fill Cell margin" field…