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 Aaron,
you'd like to rotate the box before you insert it?
Well, the solution is to use a polygon (a box won't rotate by an arbitrary angle) and to use a transformation:
# Rotation by 15 degree, no mag, no mirror, no displacementrot15 = RBA::IC…
Hi David,
thanks for that awesome lot of input :-)
Here are my comments:
1.) this is handled by Qt ... I agree that's not a nice behaviour and I'll try to figure out whether that is possible.
2.) I'm not aware of this. Basically there are differ…
Hi mabi,
it's quite unusual to have a randomly generated top cell name.
Here's is script which does a reload plus selects the top cell of the layout:
mw = RBA::Application::instance.main_window# reloadmw.cm_reload# set the top cell of the current…
Hi Bob,
It is :-)
This question arises quite often. A frequent thread covering that topic is this one: http://klayout.de/forum/comments.php?DiscussionID=25&page=1#Item_14.
You will find some information there how to use the DRC functionality …
Hi Itamar,
there is no such feature right now, but there are two solutions:
Use this script: http://178.77.72.242/svn-public/klayout-resources/trunk/scripts/show_markers.lym. It will list all markers in the view (up to 100). Please see the disclai…
Hello,
I guess you are missing the actual tech file.
Basically you need three files: the cadence tech file (preferably exported text), the drf file (can be called anyname.drf, but there has to be one *.drf file) and a layers file. The layers file …
Hi David,
there is a tiny, but severe bug in the script:
lib_proxy = layout.add_lib_cell(lib,lib_cell_index)cia = RBA::CellInstArray.new(lib_proxy,RBA::Trans.new)
In other words: don't instantiate the cell from the library, but the cell you get f…
Hi Shirly,
you just need to save the layout with a new database unit. Scaling is done automatically when you do so and the layout will look identical when you load it again.
However, if you change the database unit in "Layout Properties"…
Hallo,
I noticed that you might need "cell_view.update_content" before "save_image". That is not quite obvious and it should not be necessary, but "update_content" (among other things) basically synchronizes changes in…
Hi David,
thank you for that example. I have not figured out yet what causes the memory issue. Basically a 64bit machine should be able to address much more memory, but first, a 64bit binary also requires more (because pointers will be 8 byte inste…
Hi David,
that appears to be some extreme case - maybe the formation of the complex hole inside the polygon is requiring more memory than expected.
In general, a lot of memory is consumed by the point array which is built before the polygon is mad…
Hi Shirly,
1e-5 is simply too small. GDS supports 32bit coordinates, that is roughly -2e9 to 2e9 database units. With 1e-5 micron, the layout area available is -20mm to 20mm. Change the database unit to 1e-4 for example (or even better, 1e-3) by sa…
Hi Shirly,
the database unit is an internal unit and represents the finest grid you can draw a layout on. Your layout may be much bigger or drawn on a coarser grid, but the database unit is the very limit imposed by the file format. 1nm is a good c…
Hi Itamar,
I'm confused. "File/Open" should always replace the current layout with the new one. "File/Open in new panel" should add a new tab. Dragging and dropping a layout however will ask you whether to replace the layout or …
Hi Aaron,
the solution is the two-argument version of "Layout#write" which takes a SaveLayoutOptions object:
layout = ... # a RBA::Layout with your dataopt = RBA::SaveLayoutOptions::newopt.gds2_libname = "waveguide"opt.format =…
Hi Itamar,
the Cursor class is part of the Plugin framework and it is not employed outside of it. So unless you plan to implement extensions based on that framework, that class will be of little use.
If you have a build with "Qt binding"…
Hi David,
CIRCLE is not a good example - the "handle" is basically an internal parameter which is not a shape, but a single-point box which represents the handle by which you can graphically edit the radius.
A CIRCLE PCell does not need …
Hi David,
thank you for that impressive example and sorry for the late answer.
The problem is simply that the transaction is not finished by "commit":
... p 'Done!' ensure lv.commit endend
When a transaction is pending, redrawi…
Hi Joel,
thank you for reporting that issue. It was very important since it demonstrated a lack a backward compatibility.
I have fixed the problem in the latest 0.23.4 release. With that release, the serialization of parameters into GDS compatible…
Hi Arided,
there are many sizing functions - DRC, user interface, scripts ... which are you talking about? Can you be more specific on what you are planning?
And yes, the basic versions are flat. This is to avoid problems with touching instances o…
Hi David,
I see what you mean - it's not that you like to create a watchpoint which triggers a debugger halt when the value is changed. That will be difficult but adding expressions that are evaluated automatically will be feasible.
On the contrar…
Hi David,
Regarding 1.), I just answered a similar request here: http://klayout.de/forum/comments.php?DiscussionID=439&page=1#Comment_1873. In your case, since you have a STROKED_POLYGON PCell, the parameters are
name type unit d…
Hi Ayata,
Well, if your goal is to create texts through scripting, then you might consider coding the text generation individually. You'll need a function that produces a polygon object for each letter or digit and apply that function to generate t…
Hi Itamar,
Ruby is not VB and I am not sure whether it can be done within the constraints of the Ruby interpreter. I'll have a look into the ruby debugger and check whether I can copy their implementation if there is one.
Matthias
Hi ayata,
this should be possible without having to use a script.
* Create an new instance
* Choose cell "TEXT" from the "Basic" library.
* On the PCell tab enter the text, select the layer and choose a magnification (that will…
Update: I tried to link KLayout/VC10 against MinGW Ruby from RubyInstaller, but I ran into serious trouble with some standard C functions. I suspect that they are routed into MinGW via the Ruby library and that leads to a mixing of VC and MinGW code…
Hello,
did you have a look into the "tiling tool" feature already? Please see http://klayout.de/doc/manual/tiling.html for details.
Maybe ruby scripting is not require for that purpose.
Matthias