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
Hi @jself,
Thanks :)
However, regarding the font, there are only fixed fonts available. The TEXT PCell is intended for simple labels with emphasis on DRC and process compatibility rather than beauty. The font you used above would most likely viola…
Great discussion :) Thanks!
@Chen_0925: I don't know the system you're working with, but I think it has a flaw when it creates lithography artefacts in such cases. Cut lines are very common in GDS as they cannot be avoided. You can do decomposition…
You can build with the "-nolibgit2" option. But in that case, you will not be able to use the package manager with the Git protocol.
Otherwise, I'm afraid you need to have libgit2-devel to build KLayout. CentOS8 has libgit2-devel, so mayb…
Hi @kevinz,
Seems like that scheme is not supported for technologies. I think that's a bug, but I need to check first if there is some issue preventing that path enabling in general.
My proposed workaround is this:
import pyaimport sysimport ospy…
That's a recent Qt version.
Maybe the problem is a read-only technology or something. Can you edit other things in your default technology?
You can start from a clean slate:
KLAYOUT_HOME=/dev/null klayout -e
This will basically disable all prese…
"Random salad brings mystery chunks" ... I love that :)
@taylorn The official builds are done with Qt4. Here are the packages I am using on the deployment container:
gcc g++ libz-dev libqt4-dev-bin libqt4-dev ruby ruby-dev python3 python…
I script that replaces the dollars would be this:
ly = RBA::Layout::newtop1 = ly.create_cell("TOP")# actually creates "TOP$1"top2 = ly.create_cell("TOP")# Would conflict with TOP$1# top3 = ly.create_cell("TOP_DOLL…
Hi @Tushar_Mayank,
thanks for the samples. A script that compares them is this:
sch1 = RBA::Netlist::newsch1.read("orio.sp", RBA::NetlistSpiceReader::new)sch2 = RBA::Netlist::newsch2.read("short.sp", RBA::NetlistSpiceReader::ne…
Very good, thanks for the pointers :)
However, I wonder if there is any advantage placing a PCell. A PCell is just a very complicated way to generate layout.
The easiest way to generate a circle polygon in a Python script is using Polygon#ellipse …
Yes, "$" is internal and cannot be changed be the user.
But "$" is often used inside GDS cell names - for example Cadence also uses "$" and I have not seen other tools that have trouble reading such files.
If you want…
Hi @kevinz,
There are actually two paths for Python and Ruby code:
* pymacros (Python) and macros (Ruby) is supposed to contain "rich" macros. Such macros are not plain Python or Ruby files, but XML files. These files contain the code, b…
Hi Leo,
The way I know variable fill is implemented is by placing some grating pattern over your layout, the subtract the non-fill regions with some sizing and then clean up the cut grating parts with a under/oversize to remove the pieces where the…
Hi @PavelSmirnov,
thanks for letting me know - I actually received another request related to that: https://github.com/KLayout/klayout/issues/2154. I will publish a fix for the Python module that brings back the original classes to avoid further co…
Hi @filmartinelli,
A simple way is to use a DRC script in "tiled" mode.
Here is a sample that merges layer 14/0 and produces polygons clipped to 500x500µm tiles. The output is written to layer 1014/0.
# Use 500x500µm tilestiles(500.0)la…
Hi @Tabra,
You can register multiple PCells per library.
Why not just doing:
class PCell2(pya.PCellDeclarationHelper):...class PCell1(pya.PCellDeclarationHelper): def __init__(self, lib): super(PCell1, self).__init__() self.lib = lib se…
Hi Leo,
You're correct, the layout context is not there and it's not just the DBU, with a layout context for example you can obtain layer indexes using angle brackets (e.g. "<2/0>" turns into the layer index). Bottom line is: a &quo…
Hi @Tabra,
The value attribute inside "callback_impl" was intended to provide information about the current value to allow status change dependent on a value. Setting the value has the potential of creating a loop of callback invocations,…
No, there is a converter. You can write one with the Qt objects provided, but there is a good reason this is not provided: logos taken from a vector graphics hardly make good designs on a chip. You wouldn't be the first one to create a defect hazard…
Hi @charavan,
that raises the question what symbolic links and what not. The original problem was that the whole folder itself was a symbolic link, like
klayout -> somewhere/klayout
Now klayout/tech/tech.lyt would be (klayout->somewhere/kla…
Plugin and PluginFactory is still in lay, but it got tied to the presence of Qt, which is not the case in the klayout Python module.
How can you use "Plugin" from an application without Qt? Plugin is a concept that goes into the layout vi…
Hi Thomas,
I am not quite sure how the actual fill rules need to look like. The Magic-based fill uses a threefold fill pattern, which I have tried to replicate. Here is my script for Metal 1 which I tested on Greyhound and which uses 0.30.4 feature…
Hi @mpee,
Here is a sample for a script like the one @thomas2004 mentioned (Ruby):
vw = RBA::LayoutView.currentselection = vw.object_selectionselection.each do |s| shape = s.shape if shape # The transformation consists of these parts: # 1.…
Hi @kurisu,
I have created a ticket for this request: https://github.com/KLayout/klayout/issues/2147
@dick_freebird People are working on this, but as always, it's a matter of funding. In this case, it's public money. Company sponsorship is hard t…
Hi @Tabra,
My first advice is not to use this outdated part of the API. A much better option is the Region class. It's a collection of polygons. A sizing operation in the general case produces multiple polygons (think of a negative sizing that make…
So you're implying that the scheme works, if the files are real files, but not if the files are symbolic links?
That may be true, because the effective location of ".lyt" then is somewhere where ".lyp" is not seen. But I recall …
Hi @jiunnweiyeh,
no sorry, that is far too much effort for me. I am still mostly alone on this project. Providing this information is a hell of a work (we are talking about 1000+ functions and methods) and I feel that it's just covering up for user…