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
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
Hello,
I got somewhat further, but did not succeed yet.
Here's my main problem:
* KLayout is built on Qt
* Qt supported toolchain for 64bit is MSVC VC10 only, hence KLayout is built with VS2010
* Ruby is embedded into KLayout
* Hence the Ruby int…
Sorry, got confused :-)
In the Windows build I included everything that came together with the 1.9.1 tarkit. I think that is what stdlib-1.9.3 covers. I noticed however, that zlib support is missing (simply because I did not have zlib installed the…
Hi Pavlo,
you mean creating an array?
Well, KLayout does not offer edge-to-edge instance, but you can establish a pitch (cell to cell distance).
If you know your cell's dimension (i.e. measure with a ruler), you can compute the pitch (pitch = wid…
Hallo,
The reasoning was that typically you would not like to browse through more than 1000 errors ... :-)
But you can easily choose a million or more. But if you ask for a very high number of markers, you should consider using a layout for output…
Hi Bob,
thank you for that suggestion.
I figured out in the mean time that KLayout comes with the rubygems module included, but I have not found a way to use them to install gems. One problem is the zlib.
I'll keep you updated.
Matthias