Thank you Mathias, but I tried it and it does not work.
The test case is fairly simple : connect 2 or 3 metals (M1, M2 ,M3) in series with proper vias and use a resistor marker :
RM1 = M1 & ResMkr
RM2 = M2 & ResMkr
RM3 = M3 & ResMkr
Th…
You are right : the best is to specify the type of device in the netlist.
The syntax is obvious for active devices, but what is the correct syntax for a resistor ?
Thank you,
Laurent
Thank you Matthias.
I tried it, but it is not compatible with deep (hierarchical) extraction. I works for a simple cell without hierarchy, but find different nets at higher level. The solution I use so far is a boundary layer for all cells includin…
You need to create a first cell with 8 points. When finished, you create your heptamer cell, add the first cell instance. Then, select that cell and edit its properties to create an array with N column and M rows. The 2 points on the left and right …
Maybe, you also have to add this line at the top :
report("sample DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sample.txt"))
Laurent
Hi,
From : https://github.com/klayoutmatthias/FreePDK45_for_KLayout
you have the layer file, as well as the KLayout DRC and LVS technology files.
Laurent
Ocasta, you are right for mask shops. But the foundries will refuse to process with such shapes on your circuit, because it does not pass their DRC.
Laurent
For information, here is the way I solved it :
# ---------------------------------# METAL1_Smin_metal1_s = 300.nmr_metal1_s = metal1.sized(-1.nm).space(min_metal1_s)r_metal1_s.output("METAL1_S: metal1 space < #{'%.12g' % min_metal1_s} µm&qu…
Thank you Ocasta. I was using the standard checks :
# ---------------------------------# METAL1_Smin_metal1_s = 300.nmr_metal1_s = metal1.space(min_metal1_s, euclidian)r_metal1_s.output("METAL1_S: metal1 space < #{'%.12g' % min_metal1_s} µm…
If you watch this conference : https://peertube.f-si.org/videos/watch/97eb2aca-1df0-451d-a47f-98ae68c29f55
with the slides : https://wiki.f-si.org/images/4/49/CoriolisDesignFlow.pdf
Corriolis is already a potential solution for auto-routing.
BRgds…
Matthias,
"projecting" does not exist, I guess you mean : (projection does not make the job properly)
metal1 - metal1.width(1.0.um, square).polygons
Laurent
The main difference I have foreseen between the 2 methods is that the first one (multi_clip) will take in account the shapes of the subcells, while the second one (region) will only consider the shapes of the topcell.
By the way, Matthias, Is there …
Hi Dirk,
I nearly had the same problem and solved it with a macro. See :
https://klayout.de/forum/discussion/1129/search-and-select-cells-in-a-given-area
BRgds,
Laurent
Thank you Matthias !
Collecting the instances before also allows to add a very useful Progress bar :
lv = RBA::Application.instance.main_window.current_viewtop = lv.active_cellview.cellinsts_to_flatten = []top.each_inst do |ci| cname = ci.cell.na…
I tried to write a macro, but I don't know how to flatten an instance :
Best regards,
Laurent
include RBAlv = RBA::Application.instance.main_window.current_viewlay = lv.cellview(lv.active_cellview_index).layouttop = lay.cell("toplevel")t…
Matthias,
I have tried to modify your script to select the cells but my syntax is not accepted, although you suggest it in another post.
Where is my mistake ?
# Batch run: klayout -b -r test.drc -rd gds1=a.gds -rd gds2=b.gds …
I have tried and it works fine, but I need to use the symbolic layers, otherwise the connections between layers is not done.
Beside, it would be nice to have the complete list of labels conflicting : a very nice feature for layout debug :)
Regards…
If you save the following script in a file called "cell_layers.rbm" in the same directory as the KLayout installation with the program klayout.exe, you will get it int the tools menu. It also save the layers in a file called "cell_lay…
When running net_trace , we get a list of net Net1, Net2, ... that we can manually rename by double-clic on them. The idea is to get automatically the net name :)
... or a warning if 2 or more names are given :(
Laurent
Yes, I have used several process, where for example :
- Metal1 is the layer 15/0 (a layer for routing polygons or paths)
- Metal1 text is the layer 15/1 (a different layer for names)
So, if we can attach / connect those 2 layers and if the 'Tr…
Here is a way I use it:
POLY.enclosing(GATE, 0.1, projection).polygons.without_area(0).output("PO.d POLY_enc_GATE", "PO.d : Min. Poly extention Gate : 0.1um")
Regards,
Laurent