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
No, the actual values are not accessible directly. That's how simple DRC usually works. Just error flags.
Regarding the previous question: you're right, "is_empty?" can be used on EdgePairs currently. But you can use "CapRDSpace.size…
Thanks :)
@rovinski I do not fully understand why the 0.26 does it correctly in your case, but I can say that FreePDK45.lyt does not provide any layer mapping for DEF. 0.27 and 0.26 do layer mapping slightly differently, but without a proper LEF/DE…
@jiunnweiyeh You're in the DRC section. Switch to the "Ruby" tab to write Ruby scripts.
BTW: thanks for sharing the screenshot. Makes debugging easier :)
Matthias
@mliberty,
I will consider doing so if you provide me with a TESTCASE. The DEF files I have access to (which is limited) do not use FILL. My experience with LEF/DEF is limited and my personal level of interest for this overly complex and badly desi…
It's slightly more text (this is Ruby):
subcell_index = layout.cell("SubCell").cell_index()transformation = RBA::DTrans::new(x, y) # x, y in micrometer unitscellx.insert(RBA::DCellInstArray::new(subcell_index, transformation))
Matthias
First, CapRDWidth = input(254,1) is supposed to take the current status from "254/1"? So why not just taking the result of the "width" operation?
"is_empty?" can have a "do". So you mean "while"?
S…
Please be careful ... 0.27 is just "master" and it's still under development.
LEF/DEF has received a major rework (e.g. to support MASK). If you can point me to the .lyt file I'll take a look.
Regards,
Matthias
Hi Austin,
first of all, the match is not case sensitive.
There are two possibilities:
* The transistor models are not matched
* The W parameter is not matching (I don't see the one from the first column)
In your case I assume the first, because…
Oh yes, the tool bar thing ...
Actually and unfortunately counter-intuitive, the tech button in the toolbar does not reflect the current layout's technology but rather the one you will apply if you push this button. It's the same logic that you hav…
Hi,
By "size" you mean "area"?
You can get the area using "Region#area". This gives you the total area of the (merged) polygons in square database units.
Matthias
Hi,
I think this line has not been translated:
layout.rename_cell(ci, "") # this prevents a name clash on the next read
and Python's. "try ... except .." in the second loop isn't the same as "if ... else ..." in Ruby…
@world_locus Like jheinsoo pointed out, you can't cross reference a cell into a different layout.
I see you're trying to extract a sub-cell from a layout, right? So you need the additional top cell you built?
Couldn't you just use "Save selec…
Hi James,
Is there a reason you're using PyPI packages with klayout? klayout itself comes with "pya" built in.
I think the message you see basically means a redeclaration of the same C++ class into Python space. This happens when you loa…
@jonathan I'm sorry, but real n:m mapping isn't supported currently. You can't map a single source layout to multiple destination layers. I know this may be desired, but the reader's code simply doesn't support this application currently.
You can d…
@jheinsoo You're right. Confining the search does the trick.
But you do not necessarily need a Region. Iterating probably won't hurt if you confine the search to a small area around the test point. This will return only those polygons whose boundin…
Hi Giovanni,
I don't think is actually the solution.
I don't know what "insert_cells" does. But I assume it alters the state of the cells you're iterating over. It' s recommended not to modify the hierarchy while doing a recursive iterat…
Hi,
currently there is no link to a cell instance. The names are there only to represent subcircuit names from Spice (or other) netlists. You can basically identify a subcircuit through it's transformation (placement), that's all.
In a standard co…
Hi,
as you discovered, the angle representation is not in degree for "Trans". "Trans" is limited to rotations which are multiples of 90 degree and accepts the angle as an integer which gives multiples of 90 degree. "ICplxTr…
Hi Leo,
I stand corrected. OASIS also has a reason to modify the arrays as it employs type 1 repetitions for orthogonal arrays. These impose a definition of "row" and "column".
I general, don't rely on the exact representation …
Yes, that's one option.
You can also use
cm = ltn.const_cell_mapping_into(original_layout, original_top_cell)
to get a CellMapping object. With this you can get the corresponding original cell index this way:
if cm.has_mapping(internal_cell): o…
This is what "prop_id" is for. It can be used to retrieve the full property set via the layout:
# gets a list of key/value pairs (list of two-element lists) props = layout.properties(shape.prop_id) # you can create a dict from this li…
I guess this was after you saved the file to GDS.
Saving to GDS will "normalize" the arrays as some tools (Cadence Virtuoso in older versions for example) insist on a certain convention. "Rows" for these tools are supposed to be…
Make sure you use floats.
trans1 = DTrans(50.0, 50.0)
works.
The problem is some ambiguity here and a match with this constructor:
DTrans(int rot, bool mirr = false, const DVector u = 0,0)
The safest way is to be explicit using a Vector:
tran…
You get cell indexes from Cell object using "cell_index()" on the Cell object. Cell indexes are basically equivalent to Cell objects, but they don't suffer from object lifetime issues.
With the new method you will not get "$x" c…
Sure you can do this. It's just not a single liner.
Here is how you can create a rectangle with lower left corner at 0,0 and width of 0.5 and height of 1 micrometers on layer 7/0 in the current cell:
> cell = pya.CellView.active().cell> laye…
Hi Sophie,
thanks a lot.
Unfortunately I don't recall this script. Maybe it's posted somewhere here or on GitHub. Could you give me a pointer?
Thanks,
Matthias
I assume you delete layers from the layer list. This will not delete a layer from the file, but only from the list of layers shown. The data is still there.
You'll see that is working in Viewer mode too.
To delete a layer from the database, use ed…