Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The KLayout LVS tests should be run using GitHub Actions #4

Closed
mithro opened this issue Jul 20, 2022 · 16 comments · Fixed by #12
Closed

The KLayout LVS tests should be run using GitHub Actions #4

mithro opened this issue Jul 20, 2022 · 16 comments · Fixed by #12
Assignees

Comments

@mithro
Copy link
Contributor

mithro commented Jul 20, 2022

The KLayout LVS tests found at https://github.com/google/globalfoundries-pdk-libs-gf180mcu_fd_pr/tree/main/rules/klayout/lvs should be run using GitHub Actions.

@atorkmabrains
Copy link
Collaborator

@mithro, @mohanad0mohamed is currently working on it.

@mithro
Copy link
Contributor Author

mithro commented Jul 27, 2022

We should probably use the KLayout distributed using PyPi for this.

@mithro
Copy link
Contributor Author

mithro commented Jul 27, 2022

See comments at #8 (comment) and #8 (comment)

@mithro
Copy link
Contributor Author

mithro commented Jul 27, 2022

FYi - @proppy / @joamatab

@atorkmabrains
Copy link
Collaborator

@mithro Klayout LVS doesn't work from Klayout Python package. All verification code in Klayout is strictly Ruby and their is not representation in Python.

@proppy
Copy link
Member

proppy commented Jul 28, 2022

@atorkmabrains are you talking about the possibility of:
a/ implementing new LVS/DRC checks in python
b/ triggering existing LVS/DRC check (written in Ruby) from the PyPI klayout package.

while a/ is interesting my understanding is that only b/ would be required for this particular issue?

@atorkmabrains
Copy link
Collaborator

Hi @proppy ,

For a, Klayout doesn't have python implementation for LVS/DRC. It's only based on Ruby. We would have implemented it in Python if there was one.

For b, I'm not sure if that's feasible and I don't think it is. The only way that we know triggers LVS/DRC run is by using the command line: Klayout -b .....

We have written a python script the prepare the correct command line options and we are currently working on a parallel version that would run much faster than the current version.

@proppy
Copy link
Member

proppy commented Jul 28, 2022

@atorkmabrains there is a new version of the klayout python package in the work (KLayout/klayout#1082) that include the layout and the macro engine.

I gave it a try here: https://colab.research.google.com/gist/proppy/6956a38ce1a69c710719c7edb40377c6/klayout-playground.ipynb#scrollTo=yiyyIZYbYTSH but it looks like it doesn't include the ruby/lym interpreter nor the high level DRC module (which is also implemented in ruby https://github.com/KLayout/klayout/blob/7a5737d55fa04f641ee20f94f706f89a1ee43a2b/src/drc/drc/built-in-macros/_drc_engine.rb as you commented in #4 (comment)).

I'm curious if @klayoutmatthias is also planning to include gsi/rba/drc/lvs in the PyPI klayout package in the near future? Or if that would be out of scope (it kinda get in a scary territory as we nest interpreter context "just for the convenience" of being able to make structured call from python).

@atorkmabrains
Copy link
Collaborator

atorkmabrains commented Jul 28, 2022

@proppy That's really nice. I didn't know that @klayoutmatthias was working on this. Seems really nice.
BTW Matthias has mentioned that their is no intention for him to support DRC using python:

https://www.klayout.de/forum/discussion/1402/support-drc-using-python

I think he might change his mind with the effort you guys are doing with him.

BTW, it's not a think interface as mentioned in the link above. It have some functional code. I have reviewed the ruby.

@proppy
Copy link
Member

proppy commented Jul 28, 2022

BTW Matthias has mentioned that their is no intention for him to support DRC using python:

That's slightly different in my opinion (i.e the a/ mentioned in #4 (comment)), here we're only talking about b/ (launching existing ruby's DRC check from klayout python package).

@atorkmabrains
Copy link
Collaborator

Ah, I see. that's what we do in run_drc.py and run_lvs.py

@proppy
Copy link
Member

proppy commented Jul 28, 2022

Ah, I see. that's what we do in run_drc.py and run_lvs.py

Yes, exactly! And I think @mithro was saying in #4 (comment) that it would be nice to be able to use the PyPI for that instead of the full featured klayout binary.

@klayoutmatthias
Copy link

klayoutmatthias commented Jul 28, 2022 via email

@proppy
Copy link
Member

proppy commented Jul 28, 2022

@klayoutmatthias thanks for taking the time to lay out (no pun intended) your thoughts, I think having a standard DRC language would be a great step for the ecosystem and IIRC @RTimothyEdwards (from magic VLSI) suggested that the small DSL/expression based subset you demonstrated at FSiC could be a good foundation?

In this particular issue, we weren't really after re-writing DRC rules in Python but rather discussing if the existing interpreter for the pseudo-Ruby rules could be included in the PyPi wheel to allow them to be triggered from the Python API.

@klayoutmatthias
Copy link

Yes, I recall the discussion with Tim :)

I personally think integrating Ruby into a Python module (if this is what you mean) will be difficult. Basically Ruby is just another library to link against, but it takes control over the stack for implementing the garbage collector and I think interference cannot be avoided. However, my experiences date back to Ruby 1.8.

Matthias

@mithro mithro closed this as completed in #12 Aug 3, 2022
atorkmabrains added a commit to christoph-weiser/globalfoundries-pdk-libs-gf180mcu_fd_pr that referenced this issue Dec 18, 2022
Adding drop down menu for klayout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
5 participants