Hi Kazz,
thanks for the test ... if the optimization does not make a difference, then I think we can rule out a compiler bug.
Just one more hypothesis: something writes the wrong memory and overwrites the contents of the iterators. Even more scary…
Hi Thomas,
For detection of identical cells there probably is a scriptable solution although I think there are several issues with that approach. The tasks you describe becomes very complex in the end if you consider the variety of possible hierarc…
Hi Simon,
It's a fancy feature, I see :-)
Basically that is possible. But it's not a low hanging fruit.
The reason is that KLayout keeps the layer information in bit planes internally and will combine the bit planes for generating the view. That …
Hi all,
I'm deeply impressed by your analysis!
However, I'm a bit scared. Basically the "reuse_vector_const_iterator" default constructor clearly says it will initialize the members to 0, so the content must be well initialized and m_fro…
Hi Michael,
Thanks! You're not alone ... popularity is both a gift and a burden :-)
Regarding your issue: that is a known problem and I tried to give a recipe to work around that issue: http://klayout.de/doc/about/technology_manager.html (see &quo…
Hi,
"Shape" is a geometrical shape taken from the layout database. In order to work with the ShapeProcessor, you'll need a layout database (RBA::Layout).
Since you have basic objects already (RBA::Box, RBA::Polygon etc.), the tool you lo…
Hi Alex,
The density map approach is based on the TilingProcessor class which has been created exactly for these kind of applications.
Basically, KLayout can load really huge layouts. But for processing them, advanced algorithms are required. The …
Oh sorry - the "Python eval" does not have it.
The current 0.24 does. I'm referring to the snapshot (http://www.klayout.de/build.html), but I'm aware not everybody likes to compile applications, specifically not on Windows.
I'm quite clo…
Hi Mattseng,
If I understand your problem correctly, you want to create a single instance of a cell containing a shape on layer 10 and an array instance of a cell containing shapes on other layers.
You cannot use the same cell for that (unit cell)…
Hi all,
thanks for that interesting discussion!
Maybe "density maps" are what you are looking for. Here is an interesting discussion regarding that: http://klayout.de/forum/comments.php?DiscussionID=476.
Matthias
Hi Dave,
I'm able to trigger a "got a click" message with the following code on my 0.24 working version:
include RBAOK_SYM = QDialogButtonBox::Okclass C < QDialog attr_reader :btn_box def initialize @btn_box = QDialogButt…
Hi Shoval,
@David: thanks for mentioning this solution!
A lean solution capable of producing big images is the screenshot script: http://www.klayout.de/useful_scripts.html#screenshot.lym.
If you're on a 64bit system, you can produce images of up …
Hi Dave,
I think you already guessed right that qApp is interfering with KLayout's internal QCoreApplication object. Before the ruby interpreter is shut down, KLayout will delete QApplication instance and that makes $qApp being deleted too.
Just a…
Hi Dave,
it's an ugly feature of the Ruby to C++ interface that I have to tell Ruby if an object's ownership is being transferred. I basically have to declare every method which is known to take this ownership. Only by doing so, Ruby can be told to…
Hi Dave,
Initially I have tried to include a UI test framework into KLayout. I basically recorded all events and tried to play them back. While doing so I learned that it's pretty important to really mimic the events with all their followers ("…
Hi Su,
it's kind of difficult to give the formula in simple form here.
If you look at the source code you'll find the computation in dbMatrix.cc, lines 631 and following.
The computation boils down to solving a linear equation system with 8 varia…
Hi all,
sorry folks ... a was wrong.
QFormBuilder will only generate "QTableWidget_Native" objects, never "QTableWidget" objects. In other words: you cannot overwrite the key event handler, since there is not derived class. You…
Hi m1a2tank,
There is no "centers" feature yet. But unlike Calibre you can access the objects inside your layers while the DRC script runs. This happens through the "data" method which returns a RBA::Region object.
This allows …
Hi David,
Regarding 1.): you can't save them to GDS or the other layout formats, but the "sessions" are supposed to handle that. Sessions keep all the setup, including rulers, images, views, layer properties and so forth. All except the l…
Hi,
"sel.trans" will give you the transformation of the polygon into the current cell. "sel.trans.trans(p)" will transform a point into the current sel. Hence:
ply.each_edge do |ed| p1_s = sel.trans.trans(ed.p1) # -> will …
Hi all,
I hope I can shed some light on this.
First of all, the Qt binding classes basically mimic the C++ Qt classes. The C++ way to implement a key event handler is to derive a class from the given one and reimplement the key event handler. It's…
Hi Chris,
thanks for that comment.
If you want to have a deep look into the OASIS internals, you can use the OASIS dump tool: http://www.klayout.de/dump_oasis.html. But that is just one-way and you'll see all these nitty gritty bits you are probab…
Hi David,
you cannot modify the cell's instantiation point from within the cell. Instance and cell live in different spaces (instance in the host layout, cell in the library). So basically it's not possible to access the instances properties from w…
Hi David,
are you using 0.24 Python eval? There was an issue with subclasses passed to arguments of basic class type. This will hit here. It has been fixed in 0.24, but it may be there in 0.23 as well.
In fact, "obj" is not a QKeyEvent a…
Hi Maximus (nice name, BTW),
do you mean by script or manually?
By script:
RBA::Polygon::new(RBA::Box::new(left, bottom, right, top)) .transformed(RBA::ICplxTrans::new(1.0, rotation_angle_in_degree, false, 0, 0))
Manually: draw a box and rotat…
Hi Chris,
session loading and restoring is actually available already (MainWindow#save_session and MainWindow#restore_session). I just forgot that feature.
Regarding the CellView: actually, CellView is an object on it's own and basically is someth…
Hi David,
I did not use the macro name because macro names do not need to be unique. So there was a certain risk of name clashes. That's why it picks a unique name. Maybe I can use the macro name and make it unique in case of a name clash.
Matthias
Great work, David! Thanks a lot.
I'll test them against my (final stage, I promise) 0.24 version.
I tried to checkout the code but git says it's an empty repository. I'd offer to contribute to the sources too in case of bug fixes or enhancements.
…