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
Hi Andy,
I'm doing fine, thanks :)
"_finish" is actually still there, but there is a new method now: the counterpart of finish is "_start" and without calling this method, the object will behave strangely (I got "stop"…
First, you should use "true" (without quotes) for mirror:
mirror = true
Second, you still need to generate a CellInstArray. Just substitute "RBA::Trans" by "RBA::ICplxTrans", not the whole CellInstArray call like
…
@stolbikov The magic of Unix :)
Well the explanation is that Klayout keeps backups now - which was requested by some users who lost their work due to network issues while saving.
So what KLayout does is: when you save something, the existing file …
The Python module does not provide "pya", but "klayout.db" for most classes. Some special classes may be found in "klayout.lib" or "klayout.tl".
Usually you can do:
import klayout.db as pya...
I skipped tha…
@marwaneltoukhy The script is basically correct, but it's a bit weird: are you trying to use DRC or is that a basic Ruby API script?
When I rewrite it to Ruby, the script looks like this:
# set up input aa = source($a, $top_cell)lay_a = a.layout# …
@mayodesigner My personal experience matches with the previous statement from @dick_freebird
I assume that by "Cadence" you actually mean "Calibre" as most foundries only provide Calibre rule decks in their PDKs. It's not possib…
@nofal You can start reading a file this way:
ly = pya.Layout()ly.read(filename)...
There is some documentation you should read for an introduction: https://www.klayout.de/doc-qt5/programming/index.html and the subchapters.
Matthias
@Tristian You can loop through the polygons of a layer like this:
layer.data.each_merged do |polygon| ...end
"polygon" will be a RBA::Polygon object that you can analyse further. But I think this solution will be awfully slow.
Matthias
Yes, that's correct :)
The prehistoric GDS specification calls the leftmost (highest) bit "0". This corresponds to 0x8000 which in signed 16 bit int is -32768. Another lack of consistency in the GDS spec as most 16 bit values are meant to…
@stolbikov "Layout DBU" is the "target database unit". While DEF may specify a database unit of 10nm, the GDS database unit typically is specified as 1nm or smaller to provide a precision reserve for further computations.
That'…
Replace
RBA::Trans::new(...)
by the corresponding flavor of RBA::CplxTrans (RBA::ICplxTrans):
# mag: scaling factor (1.0 usually)# angle: rotation angle in degree(!)# mirror, dx, dy: as in RBA::TransRBA::ICplxTrans::new(mag, angle, mirror, RBA::V…
@marwaneltoukhy The script inside the tiling processor should not write anything. In order to receive something on the output, you need to call the "_output" function inside the script.
The TilingProcessor description gives an example.
M…
@duanhua That's not the new version. Please check if you have enabled "Select Top Level Objects" in the "View" menu. With this option enabled, you can only edit objects sitting in the current cell.
Matthias
@yangwoo I have not used the .exe builder, but the important point is to place the "db_plugins" folder with all the stream file drivers next to "dbcore.so" (or whatever the native db library is called in your case).
When this sh…
@Tristian I'm afraid this time there is no simple DRC function available. You could go for a maximum bend angle criterion between two edges. But that converts to a minimum radius only for a fixed edge length.
Matthias
@mdgingerich Thanks for reporting this observation.
But what "area calculation tool" are you referring to? There is no such feature in the standard feature set.
Thanks,
Matthias
@sheikh_nir Well, this works for me:
ly = pya.CellView.active().layout()topcell = ly.top_cell()# use layer 16/0layer_index_source = ly.layer(16, 0)for ss in topcell.each_shape(layer_index_source): a = ss.is_box() aa = ss.polygon resize = 10/ly.d…
@nofal Here is some sample code
ly = pya.CellView.active().layout()# equivalent of "a = input(7, 0)"layer_a = ly.layer(7, 0)a = pya.Region(ly.top_cell().begin_shapes_rec(layer_a))# equivalent of "b = input(16, 0)"layer_b = ly.la…
@jiunnweiyeh
In general, DRC is not optimized for cell specific operations. The concept of DRC is that of layers stretching across all cells and the hierarchy. This abstraction is crucial.
You can use the "Region" class for doing what yo…
Hi all,
One remark from my side: when you change a collected while you iterate over it, the behaviour is not defined. As "instance.explode" generates new instances, this is the case when you put this call into the loop.
A safe scheme in …
@ericjapon Almost perfect :)
There is one important thing about Python: if you use a function without the brackets, it's not called! In your case that would spoil the undoability.
So the last line has to have brackets:
...finally: view.commit()…
@Bian I have implemented the suggestion from GitHub already, but in a slightly different way.
My reasoning was that "tolerance+ignore" is a little weird for a concept, so there is simply an "ignore_parameter" feature.
Your test…
Hi Stijn,
can you check if this problem is gone again with 0.27.3? For the details please see this discussion: https://www.klayout.de/forum/discussion/1883/version-0-27-1-writes-dxf-with-ac1014#latest
Matthias
I was pointed to the original script and it's no longer working properly (it's from 2009!).
So here is the current version:
action = RBA::Action.newaction.title = "Image channels to layers"action.on_triggered do # Defines the GDS2 lay…
Hi Tristan,
maybe that is possible somehow, but it's a little beyond the abilities of a DRC tool.
Here is a proposal. It's based on the assumption that it's possible to identify the opening with a space check of 300nm space. It needs version 0.27.…
Hi,
The idea is to do the computation in "coerce_parameters_impl" (actually that is a generic callback executed whenever some other parameter changes) and not in "produce_impl". "produce_impl" is called to generate lay…