@Matthias
(Quote)
Great, I like simplicity :smile:
(Quote)
Awesome, that was quick! B)
(Quote)
My main reason for looking into GenericDeviceParameterCompare was that the default comparator only seemed to compare one parameter, namely the resist…
Hi @Matthias, thanks for looking into this. Glad my testcase could help with finding the problem, looking forward to the 0.27.1 release :smile:
If we can skip the equal implementation, does that mean this method will go (e.g. will be deprecated) fr…
@Matthias
(Quote)
Hmmm, I just tried it and it did in fact work. Either I was looking at a different netlist (potentially yet another format), or I was still using KLayout version 0.26 ... either way, I'll let you know once I come across a problem …
OK, luckily I already had a variant of your si4all sample's devices.gds with some added texts at the device pins as terminals to play around with and a LVS netlist file I created for it; in the attached si4all_withpins.zip file.
The si4all_lvs_res…
@Matthias,
(Quote)
That is important information, thanks for letting us know.
Following your advice (also on the important floating point comparison issue), I have now changed the code of my ResistorComparator to the following:
class ResistorComp…
OK, the first problem with my script was that the loop simply exited after the first comparison, which explains my surprises no. 1 and no. 3. Fixing the equal method to
def equal(device_a, device_b) result = true [ [RBA::DeviceClassRe…
@Matthias
(Quote)
Thank you so much for this, your proposed changes to the Spice reader would certainly ease the netlist preparation. This reminded me, another "feature" of many Spice netlists is the "line continuation" using th…
Hi everyone, thanks for your comments.
@laurent_c you're correct, one original netlist format is subcircuit-based as you said, but slightly different from your example:
XR netA netB bulk model R=value
As far as I understand (but haven't tried yet…
Thanks for your comment @dick_freebird. What is interesting about the result I mentioned is that when I use the 3-terminal resistor extraction, the layout (extracted) netlist already has all three terminals A, B and W connected to the correct nets. …
@tagger5896 : I imagine this to be feasible for layouts with a small number of nets. Say we have 3 nets, A, B and C. For the checks Shida referred to in the initial post - namely, checking the distance between different nets on layer NW, for example…
Hi @Matthias,
Out of interest on one thing you said:
(Quote)
...which branch are you referring to, and do you currently have a specific release version in mind which should have this feature?
I noticed for the upcoming 0.27 release, you noted the…
Hi Matthias, thanks for the explanation and the documentation link. The following section cleared up my question about why the vector in my example wasn't transformed:
(Quote)
Also thanks for the code examples. To keep my scripts as close to the or…
Hi Matthias, thanks for the Region code.
I had looked into Regions, but I couldn't think of a way to get the original shapes back from the resulting Region of "selected" objects.
To explain, I want to manipulate/delete (via Ruby code) th…
After playing around with the different APIs, I think I'm reasonably happy with the following approach:
* Since I'm interested in shapes from a single cell (i.e. not hierarchical), I'm using Cell.shapes to get my selection candidates.
* There's a P…
I just tried in a virtual box with Xubuntu 14.04 in it, the error isn't there and the message box displays as expected.
So here's a summary, KLayout version is always 0.24.10. I also included the reported Qt version from KLayout's About Qt dialog. …
The current link to the documentation is here:
http://www.klayout.de/doc-qt4/about/technology_manager.html
I was also looking for the file in which the "Layer Stack" information is stored and finally found it in my local user's klayoutrc…
Well, at least I found a workaround, by starting KLayout in Non-GUI mode (hidden views) instead of Non-GUI mode (database only, implies -nc):
klayout -z -r my_script.rb my_layout.gds
Otherwise I'd use the -zz parameter instead of -z to run scri…
Hi Matthias,
Thanks for the hint, my problem must have indeed been related to modified shapes: For example, I executed a prototype of the script which (inadvertently) modified the shape, and while I subsequently had fixed the script, the layout was…
Hi Matthias,
I've come across another case of this error (note I meanwhile have switched to KLayout 0.24.10), but this time I don't see any obvious way around the problem. Here is what I initially wanted to do:
alv.object_selection.each do |obj_i…
Hi Matthias,
Thank you very much for this information, I had indeed used a single loop to go through and modify the list of instances. Separating the loop into a "collect" loop followed by another "modify" loop as you suggested…
Hi David,
since 0.24 there already is a similar function: It is accessible via a Layout object and called create_cell which takes the name and a parameter map (see the documentation for more info).
By the way, some time ago I had pretty much the s…
Hi Matthias,
I am trying to understand/debug some behaviour when I start KLayout on the command line using the -zz option for batch-processing. This is the command:
klayout_app.exe -zz -rd input=original.gds -rd output=fixed.gds -r ./layerfix.rb
…
Hi Matthias,
Thanks a lot for your helpful reply!
As we tend to often have multiple top cells in intermediate steps while assembling the final layouts, I changed the test case construction code to create more interesting GDS files:
['ABC', 'XYZ']…
Matthias,
After a bit of research and spending some time on writing a rather minimal example exposing the problem, here it finally is:
Object.send(:remove_const, :PCell_gds_read_bug) if Object.constants.include?(:PCell_gds_read_bug)module PCell_gd…
Hi Matthias,
Thanks for your input. Not so much of a trick question but more of a slight uncertainty about expected PCell behaviour :-)
When I talked to my colleagues about the cake question, they also seem to think that having the ingredients fir…
Hi!
The easiest option would be to simply Save As... GDS text. As GDS isn't as rich as OASIS, the file might be missing some information that exists within OASIS, but depending on your specific use case, it might be enough.
Regards, Chris
Hi again,
Using the following code I derived from my previous example, I was able to get the key codes for pressed keys using the original QTableWidget object:
include RBAdock = QDockWidget::new("My Dock", Application.instance.main_windo…
Hi Dave,
I am not sure I understand your last comment - does that mean you did find a way now to catch events with the original QTableWidget instance?
If you're using the code from your previous comment, i.e.
class QTableWidget def keyPressEve…
Hi Dave,
I think the QWidget's keyPressEvent method is probably protected because only subclasses of QWidget are meant to override it.
Here is some code compatible with KLayout 0.24-python-eval which shows a QDockWidget in the main window which co…
Very nice, thank you for sharing, David!
I had a quick look at some of the files and think even if I don't need to use some of the functions, they are a great collection of KLayout's scripting capabilities and contain valuable "how-to" in…