Skip to content

Commit

Permalink
Merge branch 'SiEPIC:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
rmicanek authored Feb 10, 2024
2 parents 7f6d8f6 + 37d9c46 commit e9f61a6
Show file tree
Hide file tree
Showing 115 changed files with 1,234 additions and 48 deletions.
1 change: 1 addition & 0 deletions .github/workflows/merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ jobs:
# merge script always runs on any PR, this ensures link is only updated after a PR is merged into SiEPIC
- name: commit and push changes to README if we are in SiEPIC repo
run: |
git pull origin main
git diff
git config --local user.email "${{ github.actor }}@users.noreply.github.com"
git config --local user.name "${{ github.actor }}"
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/python-to-oas_gds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
# get added/modified py files
if [ "${{ github.event_name }}" == "push" ]; then
FILES=$(git diff --name-only --diff-filter=ACM ${{ github.event.before }} ${{ github.sha }} -- "submissions/KLayout Python" | grep -E '\.py$')
FILES=$(git diff --name-only --diff-filter=ACM ${{ github.event.before }} ${{ github.sha }} -- "submissions/KLayout Python" | grep -E '\.py$' | sed 's|^submissions/KLayout Python/||')
else
FILES=$(git diff --name-only --diff-filter=ACM FETCH_HEAD -- "submissions/KLayout Python" | grep -i -E '\.py$' | sed 's|^submissions/KLayout Python/||')
fi
Expand All @@ -60,6 +60,8 @@ jobs:
# run file and generate a gds / oas output
python "submissions/KLayout Python/$file"
# Lukas: for some reason, the "submissions/KLayout" part was showing up twice, and now it isn't.
# python "$file"
# get output and save to OUTPUT_FILES
gds_files=$(find submissions -type f -name "*.gds" -exec basename {} .gds \;)
Expand Down Expand Up @@ -107,10 +109,12 @@ jobs:
# git add all produced oas/gds files
for file in $OUTPUT_FILES; do
git add "submissions/$file"
echo "git add $file"
echo "done: git add $file"
done
git commit -m "Add oas and gds files produced from .py files"
echo "done: git commit"
git push
echo "done: git push"
if: github.event_name != 'pull_request'

9 changes: 7 additions & 2 deletions .github/workflows/run-verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ on:
pull_request:
branches:
- '**'

# by default, GitHub only runs workflows on pull requests for approved users; this should allow it to run workshops on new users as well:
pull_request_target:
#pull_request_target:
# removed, since this action runs on the base code, and not the PR code, so won't actually test the PR


jobs:
Expand Down Expand Up @@ -69,7 +71,7 @@ jobs:
if [ "${{ github.event_name }}" == "workflow_run" ]; then
FILES=$(ls ./binary_files)
else
if [ "${{ github.event_name }}" = "pull_request" ]; then
if [[ "${{ github.event_name }}" == "pull_request" || "${{ github.event_name }}" == "pull_request_target" ]]; then
# triggered on pull request, get all changed / added files from forked repo
FILES=$(git diff --name-only --diff-filter=ACM FETCH_HEAD | grep -i -E '\.(gds|oas)$' | sed 's|^submissions/||')
else
Expand Down Expand Up @@ -124,12 +126,14 @@ jobs:
# if file results in verification errors add to string files_with_errors
if [[ "$errors_from_output" -ge 1 ]]; then
echo "$output"
files_with_errors+="$file, $errors_from_output errors. "
fi
echo "Done verification on $file"
done
echo "$output" > verification_output.txt
echo "files_with_errors=$files_with_errors" >> $GITHUB_ENV
- name: move output lyrdb files to new folder
Expand All @@ -154,6 +158,7 @@ jobs:
if [ -z "$files_with_errors" ]; then
echo "No errors detected."
else
cat verification_output.txt
echo "Errors detected: $files_with_errors"
exit 1
fi
Expand Down
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

- The Canadian Silicon Photonics Foundry, <a href="https://siepic.ca/fabrication/">SiEPICfab</a>, presents the open electron beam lithography (EBL) fabrication process, where former and current students of <a href="https://siepic.ca/education/">SiEPIC</a> workshops and courses can submit their design for manufacturing and testing.
- More details about <a href="https://siepic.ca/openEBL/">openEBL</a>.
- Slides: <a href="https://docs.google.com/presentation/d/18B8UAUWxal7vW1-bIIp5o7Mb6nLZ9Ep64zdLF2bcjPQ">link</a>

# Fabrication process: Passive Silicon
## Technical summary:
Expand Down Expand Up @@ -33,7 +32,7 @@ The submission involves several steps. First, you need to create your design(s)
- Design tools and process design kit (SiEPIC-EBeam-PDK, KLayout implementation)<a href="https://github.com/siepic/SiEPIC_EBeam_PDK/wiki/Installation-instructions"> installation instructions</a>.

## Submission via GitHub

- [Watch this video for a demonstration](https://kaltura.clemson.edu/media/t/1_iwysnxub)
- Create an account on GitHub
- Fork a copy of this GitHub repository into your own account: <a href="../../fork">Create a new fork</a>.
- Turn on the GitHub Actions on your forked repository: <a href="../../actions">Actions</a> (In your repository's page on GitHub, click on Actions in the top-menu bar, and Enable the workflows).
Expand All @@ -42,6 +41,7 @@ The submission involves several steps. First, you need to create your design(s)
- EBeam_username.oas: for the <a href="https://www.edx.org/learn/engineering/university-of-british-columbia-silicon-photonics-design-fabrication-and-data-ana">edX Phot1x silicon photonics design course</a>
- ELEC413_username.oas: for the <a href="https://ece.ubc.ca/courses/elec-413/">UBC ELEC 413 course</a>
- SiEPIC_Passives_username.oas: for the <a href="https://www.cmc.ca/passive-silicon-photonics-fabrication-workshop-2023">CMC SiEPIC Passives silicon photonics workshop</a>
- openEBL_username.gds: for past participants in the above courses
- For example: EBeam_LukasChrostowski_rings.oas
- Upload your design(s) into the "submissions" folder, as a binary file, namely a .gds (GDSII format) or .oas (OASIS format) file.
- This can be done via the GitHub web page, by navigating to the <a href=../../tree/main/submissions>submissions folder</a>, then clicking on Add file, and Upload files.
Expand All @@ -50,17 +50,19 @@ The submission involves several steps. First, you need to create your design(s)
- Alternatively upload your Python file, which will be compiled by a GitHub Action.
- For KLayout designs, use the "submissions/KLayout Python" folder, namely a .py (Python format) file. e.g., EBeam_LukasChrostowski_MZI.py. The Python file should save a gds or oas file into the parent "submissions" folder. The Python script needs to be executable in non-GUI mode, namely using "import klayout SiEPIC SiEPIC-EBeam-PDK"
- Create a <a href="https://help.github.com/articles/using-pull-requests/">Pull Request</a> -- this will notify the team of your contribution, which we can aggregate into the main design file
- Return to the main repository, and ensure that your design is correctly merged
- Return to the main repository, and ensure that your design is correctly merged. Download the Latest Merge file, below.

## Automated GitHub Actions
<img width="1281" alt="image" src="https://github.com/SiEPIC/openEBL-2024-02/assets/15843200/e4785a27-b971-4a64-8796-1e351f30c00e">

1) Running the files in the "submissions/KLayout Python" folder, to generate the designs
## Automated GitHub Actions
Optional: The verification and merging is performed using GitHub actions. The repository implements the following:
1) Running the Python files in the "submissions/KLayout Python" folder, to generate the designs
2) Performing Manufacturing DRC verification on the designs in the "submissions" folder, and outputing the errors as an Artifact
3) Performing Functional verification on the designs in the "submissions" folder, and outputing the errors as an Artifact
4) Merging the designs from the "submissions" folder, and outputing merged layout as an Artifact
4) Merging the designs from the "submissions" folder, and outputing merged layout as an Artifact in the main repository

## Latest Merge Layout File

<!-- start-link -->
https://github.com/SiEPIC/openEBL-2024-02/actions/runs/7717637992/artifacts/1206952257
https://github.com/SiEPIC/openEBL-2024-02/actions/runs/7851812712/artifacts/1234961554
<!-- end-link -->
15 changes: 11 additions & 4 deletions merge/EBeam_merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Input:
- folder submissions
- containing files {EBeam*, ELEC463*, ELEC413*, SiEPIC_Passives*, SiEPIC_Actives*}.{GDS,gds,OAS,oas,py}
- containing files {EBeam*, openEBL_*, ELEC463*, ELEC413*, SiEPIC_Passives*, SiEPIC_Actives*}.{GDS,gds,OAS,oas,py}
Output
- in folder "merge"
- files: EBeam.oas, EBeam.txt, EBeam.coords
Expand Down Expand Up @@ -123,6 +123,8 @@ def log(text):
top_cell.insert(CellInstArray(cell_ELEC413.cell_index(), t))
cell_SiEPIC_Passives = layout.create_cell("SiEPIC_Passives")
top_cell.insert(CellInstArray(cell_SiEPIC_Passives.cell_index(), t))
cell_openEBL = layout.create_cell("openEBL")
top_cell.insert(CellInstArray(cell_openEBL.cell_index(), t))

# Create a date stamp cell
cell_date = layout.create_cell('.merged:'+now.strftime("%Y-%m-%d-%H:%M:%S"))
Expand All @@ -134,17 +136,22 @@ def log(text):
for f in [f for f in files_in if '.oas' in f.lower() or '.gds' in f.lower()]:
filedate = datetime.fromtimestamp(os.path.getmtime(f)).strftime("%Y%m%d_%H%M")
log("\nLoading: %s, dated %s" % (os.path.basename(f), filedate))
basefilename = os.path.basename(f)

# Load layout
layout2 = pya.Layout()
layout2.read(f)

if 'ebeam' in f.lower():
if 'ebeam' in basefilename.lower():
course = 'edXphot1x'
elif 'elec413' in f.lower():
elif 'elec413' in basefilename.lower():
course = 'ELEC413'
elif 'siepic_passives' in f.lower():
elif 'openebl' in basefilename.lower():
course = 'openEBL'
elif 'siepic_passives' in basefilename.lower():
course = 'SiEPIC_Passives'
else:
course = 'openEBL'

cell_course = eval('cell_' + course)
log(" - course name: %s" % (course) )
Expand Down
74 changes: 43 additions & 31 deletions run_verification.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,37 +18,49 @@
# gds file to run verification on
gds_file = sys.argv[1]

# load into layout
layout = pya.Layout()
layout.read(gds_file)

# get top cell from layout
top_cell = layout.top_cell()

# set layout technology because the technology seems to be empty, and we cannot load the technology using TECHNOLOGY = get_technology() because this isn't GUI mode
# refer to line 103 in layout_check()
# tech = layout.technology()
# print("Tech:", tech.name)
layout.TECHNOLOGY = get_technology_by_name('EBeam')

# run verification
zoom_out(top_cell)

# get file path, filename, path for output lyrdb file
path = os.path.dirname(os.path.realpath(__file__))
filename = gds_file.split(".")[0]
file_lyrdb = os.path.join(path,filename+'.lyrdb')

# run verification
num_errors = layout_check(cell = top_cell, verbose=True, GUI=True, file_rdb=file_lyrdb)

# Make sure layout extent fits within the allocated area.
cell_Width = 605000
cell_Height = 410000
bbox = top_cell.bbox()
if bbox.width() > cell_Width or bbox.height() > cell_Height:
print('Error: Cell bounding box / extent is larger than the maximum size of 605 X 410 microns')
num_errors += 1
try:
# load into layout
layout = pya.Layout()
layout.read(gds_file)
except:
print('Error loading layout')
num_errors = 1

try:
# get top cell from layout
if len(layout.top_cells()) != 1:
print('Error: layout does not have 1 top cell. It has %s.' % len(layout.top_cells()))
num_errors += 1

top_cell = layout.top_cell()

# set layout technology because the technology seems to be empty, and we cannot load the technology using TECHNOLOGY = get_technology() because this isn't GUI mode
# refer to line 103 in layout_check()
# tech = layout.technology()
# print("Tech:", tech.name)
layout.TECHNOLOGY = get_technology_by_name('EBeam')

# run verification
zoom_out(top_cell)

# get file path, filename, path for output lyrdb file
path = os.path.dirname(os.path.realpath(__file__))
filename = gds_file.split(".")[0]
file_lyrdb = os.path.join(path,filename+'.lyrdb')

# run verification
num_errors = layout_check(cell = top_cell, verbose=False, GUI=True, file_rdb=file_lyrdb)

# Make sure layout extent fits within the allocated area.
cell_Width = 605000
cell_Height = 410000
bbox = top_cell.bbox()
if bbox.width() > cell_Width or bbox.height() > cell_Height:
print('Error: Cell bounding box / extent (%s, %s) is larger than the maximum size of %s X %s microns' % (bbox.width()/1000, bbox.height()/1000, cell_Width/1000, cell_Height/1000) )
num_errors += 1
except:
print('Unknown error occurred')
num_errors = 1

# Print the result value to standard output
print(num_errors)
Expand Down
Binary file added submissions/EBEAM_CAROBUS.gds
Binary file not shown.
Binary file added submissions/EBEAM_rgeorge9.gds
Binary file not shown.
Binary file not shown.
Binary file modified submissions/EBeam_AJNMcDowell.gds
Binary file not shown.
Binary file added submissions/EBeam_Aakash.gds
Binary file not shown.
Binary file added submissions/EBeam_Ali_KHEIR_ALDINE.gds
Binary file not shown.
Binary file added submissions/EBeam_Ali_KHEIR_ALDINE_V2.gds
Binary file not shown.
Binary file added submissions/EBeam_Arefin_Islam_11.gds
Binary file not shown.
Binary file modified submissions/EBeam_ArriolaAlexander.gds
Binary file not shown.
Binary file modified submissions/EBeam_DrLongKahl.gds
Binary file not shown.
Binary file added submissions/EBeam_EthanJ_fpcavitiesCavitylen.oas
Binary file not shown.
Binary file added submissions/EBeam_EthanJ_fpcavitiesLargen.oas
Binary file not shown.
Binary file added submissions/EBeam_EthanJ_fpcavitiesMediumn.oas
Binary file not shown.
Binary file added submissions/EBeam_EthanJ_fpcavitiesPeriods.oas
Binary file not shown.
Binary file added submissions/EBeam_EthanJ_fpcavitiesSmalln.oas
Binary file not shown.
Binary file added submissions/EBeam_JC100.gds
Binary file not shown.
Binary file modified submissions/EBeam_JohnGerguis.gds
Binary file not shown.
Binary file added submissions/EBeam_JohnGerguis_B.gds
Binary file not shown.
Binary file added submissions/EBeam_JohnGerguis_C.gds
Binary file not shown.
Binary file added submissions/EBeam_JudsonR_githubA.GDS
Binary file not shown.
Binary file added submissions/EBeam_Judson_githubA.GDS
Binary file not shown.
Binary file added submissions/EBeam_KaailaashV.gds
Binary file not shown.
Binary file added submissions/EBeam_Krupamaya_23.gds
Binary file not shown.
Binary file added submissions/EBeam_LeelaQv1.gds
Binary file not shown.
Binary file not shown.
Binary file modified submissions/EBeam_LukasChrostowski_MZI.oas
Binary file not shown.
Binary file added submissions/EBeam_NDonahu.gds
Binary file not shown.
Binary file added submissions/EBeam_Rezakohandani.gds
Binary file not shown.
Binary file added submissions/EBeam_Safarim1.gds
Binary file not shown.
Binary file added submissions/EBeam_Safarim1_orig.gds
Binary file not shown.
Binary file added submissions/EBeam_SaharS_v1.gds
Binary file not shown.
Binary file added submissions/EBeam_SergeyNomoev.gds
Binary file not shown.
Binary file added submissions/EBeam_Thomasm.gds
Binary file not shown.
Binary file not shown.
File renamed without changes.
Binary file added submissions/EBeam_awifa.oas
Binary file not shown.
Binary file added submissions/EBeam_benf.gds
Binary file not shown.
Binary file modified submissions/EBeam_bkhosravi.gds
Binary file not shown.
Binary file added submissions/EBeam_bo212_v3.gds
Binary file not shown.
Binary file modified submissions/EBeam_c-godbold.gds
Binary file not shown.
Binary file added submissions/EBeam_danteprins200DC.gds
Binary file not shown.
Binary file added submissions/EBeam_devenchack_A.gds
Binary file not shown.
Binary file added submissions/EBeam_diego138.gds
Binary file not shown.
Binary file added submissions/EBeam_diego138_2.gds
Binary file not shown.
Binary file added submissions/EBeam_dmildenb.gds
Binary file not shown.
Binary file added submissions/EBeam_egordo_3_v2.gds
Binary file not shown.
Binary file added submissions/EBeam_erikch.gds
Binary file not shown.
Binary file added submissions/EBeam_jannatulnijhum.gds
Binary file not shown.
Binary file modified submissions/EBeam_jc1561.gds
Binary file not shown.
Binary file modified submissions/EBeam_johey5_v1.gds
Binary file not shown.
Binary file added submissions/EBeam_josephFridlander.gds
Binary file not shown.
Binary file added submissions/EBeam_julyastein_v1.gds
Binary file not shown.
Binary file modified submissions/EBeam_jw041565.gds
Binary file not shown.
Binary file added submissions/EBeam_kyle_johnson_ansys.gds
Binary file not shown.
Binary file added submissions/EBeam_lleustean_MZI.gds
Binary file not shown.
Binary file added submissions/EBeam_lleustean_rings.gds
Binary file not shown.
Binary file added submissions/EBeam_mariusminnen.gds
Binary file not shown.
Binary file added submissions/EBeam_matthiascoppens.gds
Binary file not shown.
Binary file added submissions/EBeam_mohamedb1_v2.gds
Binary file not shown.
Binary file added submissions/EBeam_mohsenreality_Filter.gds
Binary file not shown.
Binary file added submissions/EBeam_newmansc22.gds
Binary file not shown.
Binary file added submissions/EBeam_prayetnaa.gds
Binary file not shown.
Binary file added submissions/EBeam_raul3lopez.gds
Binary file not shown.
Binary file modified submissions/EBeam_s-konatham.gds
Binary file not shown.
Binary file added submissions/EBeam_sarahfwise.gds
Binary file not shown.
Binary file added submissions/EBeam_sarahfwise_v5.gds
Binary file not shown.
Binary file added submissions/EBeam_sfiafias.gds
Binary file not shown.
Binary file added submissions/EBeam_sfiafias1.gds
Binary file not shown.
Binary file modified submissions/EBeam_shahazhameed.gds
Binary file not shown.
Binary file added submissions/EBeam_tom_772.gds.GDS
Binary file not shown.
Binary file added submissions/EBeam_tomoshreedash.gds
Binary file not shown.
Binary file added submissions/EBeam_yannisbilliet.gds
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added submissions/ELEC413_EthanJ_Loopbacks.gds
Binary file not shown.
Binary file added submissions/ELEC413_GreyPoupon.oas
Binary file not shown.
Binary file added submissions/ELEC413_GreyPoupon_2.oas
Binary file not shown.
Binary file added submissions/ELEC413_TheTian.gds
Binary file not shown.
Binary file added submissions/ELEC413_Tsuchijo_a.gds
Binary file not shown.
Binary file added submissions/ELEC413_Tsuchijo_b.oas
Binary file not shown.
Binary file added submissions/ELEC413_ZahraJamalouei.gds
Binary file not shown.
Binary file added submissions/ELEC413_aakashramesh3007.gds
Binary file not shown.
Binary file added submissions/ELEC413_danteprinsA.gds
Binary file not shown.
Binary file added submissions/ELEC413_danteprinsB.gds
Binary file not shown.
Binary file added submissions/ELEC413_glojui00.gds
Binary file not shown.
Binary file added submissions/ELEC413_gourangkulkarni.gds
Binary file not shown.
Binary file added submissions/ELEC413_gourangkulkarni.oas
Binary file not shown.
Binary file added submissions/ELEC413_jaydensahl.gds
Binary file not shown.
Binary file added submissions/ELEC413_joshuaj7.gds
Binary file not shown.
Binary file added submissions/ELEC413_mohanadhmoud.GDS
Binary file not shown.
Binary file added submissions/ELEC413_polinashopina.gds
Binary file not shown.
Binary file added submissions/ELEC413_ratishj.gds
Binary file not shown.
Binary file added submissions/ELEC413_thomasm.gds
Binary file not shown.
Binary file added submissions/ELEC413_travis_innes.oas
Binary file not shown.
Binary file added submissions/ELEC413_trisse.GDS
Binary file not shown.
Binary file added submissions/Ebeam_BrianCLWu.gds
Binary file not shown.
Binary file added submissions/Ebeam_BrianCLWu_2.gds
Binary file not shown.
Binary file added submissions/Ebeam_BrianCLWu_3.gds
Binary file not shown.
Binary file added submissions/Ebeam_hashank_v1.gds
Binary file not shown.
Loading

0 comments on commit e9f61a6

Please sign in to comment.