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
@nofal There is a klayout module on PyPI already.
It does not provide the DRC engine as this is a Ruby wrapper around the Region, Edges, EdgePairs and Texts classes. I can't wrap Ruby into a Python module and the DRC engine has more integration int…
@Bian I noticed one detail which is actually rather non-intuitive and I'm considering the change that. But in your case it would help getting rid of the DeviceComparer.
If you specify a tolerance, only those parameters with a tolerance are consider…
@Bian Device combination across hierarchies is not supported, but you can flatten the RES1 and Res1 subcircuits:
...connect(met1_dg, cont)connect(p1trm, cont)netlist.flatten_circuit("Res1")schematic.flatten_circuit("RES1&…
Hi Jim,
To be frank, I'm trying to avoid the odd Ubuntu versions. They did not turn out to be stable in the past. I'm focussing on the even LTS versions (16, 18, 20, 22 ...).
KLayout does not have too many dependencies fortunately. But it's always…
@yangwoo Thanks for this information. I have conducted some experiments with AutoDesk DWG TrueView. This tool can read AC1006 version DXF files produced by KLayout in all cases except SOLID, but not read AC1024 version.
Some experimental debugging …
@dick_freebird "Schematic realism" - I like that :)
@Bian Would that be a decision based on the device class (model) or does it need to be an individual decision based on each individual instance of a device?
In the next minor release (0…
@kazzz Thanks for taking care of this! :)
Let me know when the new version is ready so I can put it on the server.
BTW: I'll publish 0.27.3 soon.
Matthias
Hi @jiunnweiyeh,
here is some sample code how to do cell placement in DRC. It places a cell called "PLACEME" over all locations where layer 45/0 overlaps with layer 37/0:
placeme = source.layout.cell("PLACEME")layer1 = input(45…
@jiunnweiyeh A don't see the layout, but I assume there is no cell called "UBM_feature". In this case, "layout.cell(instance_cell)" will return nil and this error will happen.
Matthias
I'm not sure I can follow. But maybe "@rpath/..." is not pointing the to right place?
Another thing I see on other OS: if the message is "shared object not found" this may also mean that this shared object is found, but it depen…
Thanks for these inputs. I'm more worried about the triple fails even for AC1006. @yangwoo is there a chance you can share your test cases?
I'm trying to avoid online viewers because I think first of all they want your data and their implementation…
@Tristian I see there are some good suggestions here already :)
I personally think that the motivation for this rule is to establish special conditions for pads (e.g. slotting like @dick_freebird mentioned). But that means that such rules should no…
@jiunnweiyeh You should take the layer from the Layout object, not from the LayoutView:
...out_cell = lv.active_cellview.celllayout = lv.active_cellview.layoutlayer = layout.layer(86, 0) ...
Matthias
No, of course that isn't!
That's a bug. I created a ticket for this: https://github.com/KLayout/klayout/issues/864
As a workaround you can do it layer per layer:
layout.layer_indexes.each do |li| viewed_cell_copy.shapes(li).insert(view…
@frostchu You'll need to use "db.DCellInstArray" (note the "D")
The "D" types are operating with micron-unit coordinates while the "non-D" type are working with integer units (multiples of the DBU). You'll ne…
@tomas2004 Thanks for the answer :)
I agree, but like to add you need to write it too ... so the above example equals to the DRC one-liner:
input(1, 0).merged.output(1, 0)
("merge" as a method will merge a copy of the layer, not the lay…
@jiunnweiyeh KLayout employs a menu abstraction instead of direct Qt element access. The reason is that I cannot ensure compatibility of the Widget hierarchy across multiple releases.
The involved classes here are AbstractMenu and Action:
Here is …
@tomas2004 Thanks for the code!
In a different post I have mentioned a general rule to not delete anything while iterating. In this case it works as deleting the instances has a linear effect on the list we're iterating over, at least in editor mod…
@nlyeenho No sorry, the net tracer is purely based on polygons. There are no global nets like the LVS has. The net tracer is very simplistic in fact.
But you can draw a big rectangle over everything and connect to that if you need to.
Matthias
@tomas2004 First of all iterating while manipulating is always a bad idea. When you do "convert_to_static", cells will be created and others removed. When you iterate, you may come across cells which have already been removed.
Usually it'…
This isn't a DRC script - it's a plain API script. Run that as "Ruby Macro".
And yes, within such a script, you can generate cells and instances.
Matthias
I think this is wrong:
currentcell = source.cell(compareCell)puts "compare cellname: #{compareCell}"#########################################layer1=currentcell.input(layer1num,layer1pur)layer2=currentcell.input(layer2num,layer2pur)...
J…
@nofal It's difficult to open a DEF file from the command line as there are some many configuration options you cannot specify that way.
It's possible to write a script which opens a file after configuring all the options. Such a script could be tr…
@nofal That is weird. There are no specific flavours of GDS you cannot trace. Did you check the layer numbers? DEF may produce different layer numbers than you're used to.
Matthias
@dick_freebird there actually is a generic extractor already. It should offer all the flexibility possible. Plus there is the netlist reader and writer delegate which can take care of the way the devices are read or written to SPICE.
But that's not…