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
Hallo,
not .lym files but regular -rb files.
Let me explain that: .lym files are "annotated" scripts. They are script code plus some metadata that allow KLayout to determine the script language, the title and whether the script shall be …
Hi David,
well, it probably can be done, but the path is a stony one.
You cannot directly catch mouse events. KLayout implements functionality based on components called "plugins". A component can register itself inside the system and ad…
Hallo,
Code for generating a screenshot can be found here: http://www.klayout.de/useful_scripts.html#screenshot.lym
Fetching the shapes is easiest with the RecursiveShapeIterator object:
ly = RBA::CellView::active.layoutlayer = ly.layer(8, 0) …
Hi arided,
well, actually the behaviour is intended.
The implementation of "sized" and other functions which accept distance values is such:
* If the value is a Float type, it is taken as micron units
* If the value is a Fixnum type, it…
Oh yes ... maybe I forgot to mention that. The order of the commands is important. "select" is effective for subsequent input statements. Once a layer is created by "input", changing the cell selection (as well as layout, top cel…
Hi Laurent,
just changing the drop-down selector does NOT change the technology assigned to a layout. You'll have to PUSH that button too or select the technology in the layout properties (File/Layout Properties). See the description above.
If a t…
Hi Itamar,
what grid is the original layout drawn on? If the layout is on a 100nm grid originally for example, then you'll need 0.1nm database unit because 100nm will scale down to 2.8nm which needs 0.1nm for exact representation.
Matthias
Hi Laurent,
the script moved to a public SVN repository. I updated the URL above - you can download the script again.
Did you read the documentation about technology management? It says that .lyt files are intended to import and export technology …
Hi,
Here is a sketch (not tested):
std::vector<db::Polygon> a;a.push_back (db::Polygon ());a.back ().assign_hull (hull.begin (), hull.end (), db::cast_op<db::Point, db::DPoint> ());db::EdgeProcessor ep;// Produce small version (d = co…
Hi Itamar,
maybe the database unit is too big to accommodate a layout with smaller scaling?
Scaling won't change the database unit, which is a fundamental layout unit. So if for example, you scale down a line with width 1 um with a factor of 0.028…
Hi,
I did not want to create dependencies on Ruby installations, so KLayout comes with a built-in Ruby interpreter. It is capable of loading gems, but installing them is not going to happen the usual way.
On Linux, KLayout grabs the system-install…
Hi Euzada,
I can't confirm that. Let me explain, how I tested it:
* I create a new layout with cell "TOP"
* I create a new layer (1/0)
* I create a new cell "cell1" and draw a rectangle on layer 1
* I create a new cell "ce…
Hi Ken,
for including Ruby it's typically sufficient to include the Ruby interpreter (i.e. from ~/usr/ruby/bin in your case) in the PATH. If you do so, the build script will determine all the configuration paths from that installation. You'll just …
Hi,
I think you refer to the thread http://klayout.de/forum/comments.php?DiscussionID=208.
There is a Ruby script which allows to define cross section recipes by describing process steps (deposition, etch, planarization ...). The implementation is…
Hi Itamar,
I think what you are looking for is File.dirname:
File.dirname("/home/matthias/somefile.txt") -> "/home/matthias"
I think you mixed up "Expressions" with Ruby. "Expressions" are NOT Ruby. They…
Hi Euzada,
Without further specifications, KLayout will run the DRC on the current cell shown in the view. If that is the top cell, all child cells will be included.
You can however include and exclude parts of that hierarchy. Excluding something …
Hi Rohan,
You can save an OASIS file to textual GDS which is more or less accessible by other programs. But SQL? Do you have some database mapping in mind? I think you will blow any database system even with small-scale layouts, if you map an OASIS…
Hi,
Lacking MacOS hardware and the will to generate negative revenue by spending money on such, I am not actively supporting MacOS at the moment.
There are two options:
* ask Apple to donate hardware to me so I am able to support their system
* o…
Hi Luca,
you can try to link against the static ruby lib by using
build.sh -rblib /usr/local/lib/libruby-static.a
but static libraries have been deprecated in some Ruby versions and some symbols may be missing. Hence there is some chance it won't…
Hi Luca,
it looks like you don't have the ruby shared object on your system. Since you have Ruby, it's likely you have a static library (libruby.a) in /usr/local/lib for example, but KLayout won't build against that.
To solve the problem, you can …
Hello,
you can clip the part using the clip tool (Edit/Utilities). You'll need to somehow specify a rectangle (numerically, just the visible part or through a ruler). The clip tool will produce a new cell which you can save with "Save current …
Hi Marben,
well, that is the selection that is not accessible through Ruby - maybe it will in future versions, but I can't promise.
You can manipulate objects though. But that depends on what you want to do with the selection.
Matthias
Hi Laurent,
thank you for pointing that out.
It is even possible to extend the DRC language with a local density check:
# Adds a density check method## Synopsis:# out = polygon_layer# dens_check(out, input, tile_size, num_threads, min_density…
Hi Marben,
What do you mean by "select"?
The "selection" inside the view is not something you can control through Ruby currently. You can read and clear the selection but not select certain objects.
If you plan to manipulate t…
Hi Francois,
I'd like to mention there is an alternative method now inside the DRC engine.
The following DRC script prints the area of layer 16, datatype 0:
puts input(16, 0).area
That method is typically faster than the Ruby code. It will also …
Hi Marben
bascially you could have it as simple as that:
view = RBA::LayoutView::currentli = view.begin_layerswhile !li.at_end? lp = li.current new_lp = lp.dup new_lp.visible = (lp.source_layer == 16 && lp.source_datatype == 0) view.se…
Hi Itamar,
Instead of constants, you can use global variables, i.e. "$image" instead of IMAGE. That avoids these redefinition warnings.
Global variables are not common in Ruby. With global variables you risk potential name clashes with o…
Hi Marben,
that is a little bit more tricky since layers are not addressed directly. Instead the layer list is an object by its own and the concept is that you traverse the layer list tree with a LayerPropertiesIterator in a read-only fashion. Once…