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

SiEPIC functional verification #240

Closed
wants to merge 19 commits into from
Closed

Conversation

lukasc-ubc
Copy link

Adds to gdsfactory the verification checks used by SiEPICfab, the edX Silicon Photonics course, and SiEPIC workshops.

Requires:

Presently the test case is a small OAS file, as I could not get the ubcpdk to install.

image

lukasc-ubc and others added 6 commits October 28, 2023 23:44
Adds the verification checks used by SiEPICfab, the edX Silicon Photonics course, and SiEPIC workshops.
import os
import sys

path_GitHub = "/Users/lukasc/Documents/GitHub/"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hardcoded path?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Joaquin,
The hardcoded path section is temporary to use the module from GitHub, rather than the pip-installed one. It can be removed.

@joamatab
Copy link
Contributor

Hi Lukas,

you can check out the verification flow from kfactory, which is what we plan on using for gdsfactory8 release

for the PCells, how about using kfactory?
gdsfactory/kfactory#53

@sebastian-goeldi

@lukasc-ubc
Copy link
Author

Interesting. Good that you are interested in supporting the KLayout database and KLayout PCells.

I look forward to seeing the verification flow from kfactory. In the meantime, we've been using the SiEPIC-Tools verification for 8 years, so I would be happy to share our experiences as to the types of rules that are missing in regular DRC.

Will the kfactory verification work natively within KLayout, and via external Python?

The SiEPIC one works both inside the KLayout Application window, as well as outside in VSCode (without the KLayout application running, just using import klayout).

thanks

Hi Lukas,

you can check out the verification flow from kfactory, which is what we plan on using for gdsfactory8 release

for the PCells, how about using kfactory? gdsfactory/kfactory#53

@sebastian-goeldi

@lukasc-ubc
Copy link
Author

Hi again,
I just looked through the kfactory code, and I see that the PCells are not using the KLayout PCell standard. I like the way KLayout defines PCells, where they can be used both procedurally, as well as graphically. Perhaps now that kfactory is running in the KLayout database, it would be simple to create a wrapper that reads the kfactory PCell, and creates a KLayout PCell?

@lukasc-ubc
Copy link
Author

@joamatab

I added a test using an example from the ubcpdk.

image

@lukasc-ubc
Copy link
Author

@joamatab
It looks like I have succeeded with the automated checks for this PR!

@joamatab
Copy link
Contributor

This looks great Lukas!

it's nice to see a pip installable SiEPIC python package and allowing SiEPIC to be used directly from python

because the verification is specific to the SiEPIC ebeam PDK i was thinking it would be better to move it to the ubcpdk

What do you think? I can help making a PR

@lukasc-ubc
Copy link
Author

@joamatab

We use the SiEPIC-Tools verification for AMF, Tower, SiEPICfab, Ligentec, and EBeam (ubcpdk). So I would prefer to have this verification standard available for multiple foundries.

The test example I provided is using the EBeam / ubcpdk, since that is the only one that is publicly available.

One thing we could do is copy the files in the SiEPIC-EBeam-PDK into the ubcpdk, specifically those required for verification: DFT.xml, Verification.xml, EBeam.lyt.

Presently the Unit Tests require the original PDK installed (rather than the ubcpdk).

Is there a way to have your automated system pull do a "import siepic_ebeam_pdk" only for the Unit Test, but not make it a requirement for the actual module?

@lukasc-ubc
Copy link
Author

I could also put a minimal set of files in a test folder directly here.

c = gf.import_gds(file_path, read_metadata=True)

# Run verification
layout_check(c, techname, show_klive=True)
Copy link
Contributor

@joamatab joamatab Nov 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

module is missing

@joamatab
Copy link
Contributor

why don't you put the files in the SiEPIC module and siepic_ebeam_pdk?

@lukasc-ubc
Copy link
Author

lukasc-ubc commented Nov 21, 2023

why don't you put the files in the SiEPIC module and siepic_ebeam_pdk?

Hi Joaquin

I would like to contribute a plugin to GDSfactory. How would you suggest splitting this up? The idea is that gdsfactory users could create designs using gdsfactory and use SiEPIC-Tools for verification.

The files that go in gplugin could be barebones without any links to the EBeam PDK, but I thought it would be useful to provide a test case. That test case can be a layout created by GDSfactory using the ubcpdk -- but the test can be moved to the ubcpdk as you suggest, where the ubcpdk would depend on the siepic gplugin.

thank you

@joamatab
Copy link
Contributor

I would recommend moving this PR, (once the tests pass) into the ubcpdk

@joamatab joamatab closed this Dec 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants