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 all,
thanks for this discussion. Actually on Windows, the problem is much deeper than just Python versions. There is also an incompatibility between the binary APIs of different builds (based on gcc/MinGW, MSVC etc.). For example, KLayout builds…
Hi Andrew,
Does this post belong to this discussion? If not, please open a new one.
KLayout comes with it's own Python interpreter and does not take any interpreter provided by the system. This leads to manifold issues usually due to incompatibili…
You're right - GDS-based tools don't offer this functionality.
That's basically because GDS (and OASIS) lacks significant features for providing the infrastructure required for a real design system. I have tried to add a library reference feature i…
Hi photonicsbishal,
you mean you want to generate as new layers?
Basically DRC can output to a marker DB (into the marker window) or to new layers.
For creating a marker DB use:
report("My DRC")drawn = input(1, 0)drawn.width(200.nm).ou…
Hi Olivier,
sorry for the sloppy description. The reason is history: first there was only "trans" (or "dtrans" if you like). But there was a flaw in the design: for selected instances this transformation included the transformat…
Hi dai,
I'm sorry, but I don't have experience with QSqlDatabase myself. First thing is that you should be sure you understand and know how to use the Qt API (i.e. using PyQt or C++). If you know that it's basically working, you can start porting t…
Hi Bishal,
Maybe you can detect such cases with edge-length checks:
# assumes that 10nm is a good indicator for misalignmentshort_edges = layer.edges.with_length(0, 10.nm)
Matthias
Hi Jon,
thanks for the explanation. Single-sided path would be a nice feature, but they cannot represented in GDS or OASIS. So that's a difficult decision.
The wish list of geometric extensions is pretty long already (specifically smooth features)…
Hi,
yes, session files are pretty compatible. Maybe future versions might be able to store more details, but basically old versions should be able to read session files written by newer versions too.
However, when distributing session files, you m…
Hi Chris,
for 1.) I just can say the "coerce" function is called latest on Apply. Using it for dynamic normalization isn't a use model I had in mind and I'd say it's coincidence rather than intention that it is called on a change of a com…
Hi ocasta,
"instances of ...THE_CELL" is a modification of the original query: while the original suggestion was looking for all cells (that's how I understood the question), the modified query looks for one specific cell. That should def…
Hi Jon,
It's been some years since I did Skill the last time and I guess a lot happened in between (I used to have Cadence 4.x on CDB).
But I guess your code will create some interest. I'm hoping for some community effect and maybe someone is able…
Hi Olivier,
The LayoutQuery was just an suggestion. It's not good for finding the instances of a single cell. The question in the mentioned post was generic and so was my answer.
If you look for a specific cell (e.g. "THE_CELL"), a query…
Hi Chris,
regarding 1.) the parametrization is a two-stage process: the parameters are edited and then transferred to the PCell in "Apply". Only then the layout is modified. While editing, "coerce_parameters" is called to "…
Hi Jon,
That's really exciting :-) I have not even dared to imagine such a thing was possible!
Let me know if you have suggestions for the Python API - I guess compatibility can be enhanced so the code migration is smoother.
Best regards,
Matth…
Hi dai,
here is small example how to use the grab_mouse method. It's used when you want to capture the mouse from a menu callback.
class OnMouseClickPluginFactory(pya.PluginFactory): def __init__(self): super(OnMouseClickPluginFactory, self)._…
Hi Oscar,
please, please, please .... use Markdown to format your code! Put a line with triple backticks before and after the code.
The correct way of writing this is
input(210, 0).shift(1, 0).output(210, 1)
Matthias
Hi,
you can set these values inside your .xs script using "height(15.0)" etc. Please see https://klayoutmatthias.github.io/xsection/DocReference for the respective functions.
Matthias
Hi Chris,
This really is a long post. Here are some answers:
1.) you're probably not doing something wrong. I'm not aware that drop-down list changes would trigger callbacks. That's kind of questionable as the contract is that layout won't change …
Hi,
I see I need to explain the concept here. The main difference between 0.25.x and 0.24.10 was a cleaner type system of geometrical primitive types.
One concept is that of vector vs. point (see https://www.klayout.de/doc-qt4/programming/geometry…
Hi,
you can try using "region_a.merged_semantics = false". This should leave the shapes unmerged.
But regions are collections of polygons and everything will be polygonized. If you want to the other shape types such as paths your code is…
Hi,
yes, exactly this is the right way to do it :-)
I did not know about "next(...)". Thanks for this sample. This looks pretty useful.
Regards,
Matthias
Hi,
sorry for the delayed reply.
Your solution isn't bad although I'd say the Ruby loop is probably going to be a bit slow.
The solution I'd suggest is to use Region objects. Regions are the basic building blocks of DRC scripts and they provide a…
Hi,
a plugin is a tool option - if the plugin is active, it will take full control over the mouse. Hence you cannot have both select mode and your own tool feature while the plugin is active.
The net tracer's approach is to grab the mouse and rele…