Hi Olivier,
A Gerber file does not make much sense as a single entity. A "project" describes a PCB board. A board will almost always consist of multiple files - artwork, drill files and maybe others. Hence, to import PCB data to a multila…
Hi Tyanata,
the window geometry including full-screen mode is encoded in
<window-geometry>...</window-geometry><window-state>...</window-state>
But the value is some binary string that Qt uses internally to store the windo…
You tyanata,
you can configure all of that in the Setup menu. The configuration is stored in a file called klayoutrc in KLayouts home folder (on Windows typically in a folder called "KLayout" in your home directory, on Linux in ~/.klayout…
Hi David,
error 13 means "permission denied". Maybe there is a file already called "drc.lyrdb" which you are not allowed to write? Or the directory is not writeable?
Anyway .. The pure Ruby object you're are looking for is &quo…
Hi Olivier,
Gerber import is not straightforward since Gerber files are not necessarily self-contained entities. You'll need a little background knowledge for that.
Did you have a look at http://klayout.de/doc/manual/import_gerber.html yet? I hope…
Hi David,
thank you for your comments.
The 0.21 PDF manual was contributed by a user and I really appreciated his work, so I put that on the server. Frankly, it got a little outdated, because I was working on the online documentation that time and…
Hi all,
I had a look into my sample CIF files and here is my explanation:
Although CIF is among the well documented formats, there is no strict specification how to represent the GDS top cells in CIF. CIF features one anonymous top level and an op…
Hi,
well, there are multiple ways to achieve that. A quick solution is the following:
* Draw any box on your target layer
* Double-click the box to show the box properties dialog
* Enter 21000 as the box width and height, click Ok.
* Hit Ctrl+B to…
Well, I guess you have a hierarchy here ...
What you see is the top cell - KLayout will not show the hierarchy in full detail initially by default. What you see is the top cell's bounding box. To get the full details, choose "Display/Full Hier…
Hi,
The solution is that simple script:
file = RBA::FileDialog::ask_open_file_name( "Select Layer Properties File", "c:\\", # Enter your favorite folder here "Layer Properties Files (*.lyp);;All Files (*)")file …
Hi Aaron,
the displacement is the forth parameter of the ICplxTrans constructor. The other parameters are: magnification, rotation angle, mirror flag.
The operations are applied in that order: magnification, mirror (at x axis), rotation and finall…
Hello,
thanks for the suggestion. In viewer mode, it has to be a "search only" tool naturally :-)
What do you mean by "hierarchically below"? Do you mean all cells below the current one, but only once? "All cells" wil…
Hi Bob,
there is actually no rounding involved. At least not one I can see. If you let the script print the absolute value of the area, is that correct or not? Maybe the cell's extension is bigger than the dimensions you assume (i.e due to layout o…
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 =…