prefab 1.1.6__tar.gz → 1.1.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. {prefab-1.1.6 → prefab-1.1.8}/.github/workflows/docs-deploy.yml +1 -0
  2. {prefab-1.1.6 → prefab-1.1.8}/PKG-INFO +5 -5
  3. {prefab-1.1.6 → prefab-1.1.8}/README.md +0 -1
  4. prefab-1.1.8/docs/.markdownlint.json +6 -0
  5. {prefab-1.1.6 → prefab-1.1.8}/docs/CHANGELOG.md +10 -0
  6. prefab-1.1.8/docs/assets/prefab_logo_box.svg +23 -0
  7. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/.authors.yml +1 -1
  8. prefab-1.1.8/docs/fab_aware_design.md +126 -0
  9. prefab-1.1.8/docs/index.md +35 -0
  10. prefab-1.1.8/docs/models.md +8 -0
  11. prefab-1.1.8/docs/setup.md +55 -0
  12. prefab-1.1.8/docs/stylesheets/extra.css +81 -0
  13. {prefab-1.1.6 → prefab-1.1.8}/mkdocs.yml +21 -17
  14. {prefab-1.1.6 → prefab-1.1.8}/prefab/__init__.py +1 -1
  15. {prefab-1.1.6 → prefab-1.1.8}/prefab/__main__.py +16 -3
  16. {prefab-1.1.6 → prefab-1.1.8}/prefab/compare.py +4 -4
  17. {prefab-1.1.6 → prefab-1.1.8}/prefab/models.py +0 -50
  18. {prefab-1.1.6 → prefab-1.1.8}/prefab/predict.py +1 -1
  19. {prefab-1.1.6 → prefab-1.1.8}/pyproject.toml +16 -4
  20. prefab-1.1.6/docs/index.md +0 -72
  21. prefab-1.1.6/docs/models.md +0 -16
  22. {prefab-1.1.6 → prefab-1.1.8}/.gitattributes +0 -0
  23. {prefab-1.1.6 → prefab-1.1.8}/.github/workflows/python-publish.yml +0 -0
  24. {prefab-1.1.6 → prefab-1.1.8}/.gitignore +0 -0
  25. {prefab-1.1.6 → prefab-1.1.8}/LICENSE +0 -0
  26. {prefab-1.1.6 → prefab-1.1.8}/docs/CNAME +0 -0
  27. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/blog-cards/python-for-photonics.png +0 -0
  28. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/favicon.ico +0 -0
  29. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/images/flux_ID_nopredict.png +0 -0
  30. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/images/flux_ID_predict.png +0 -0
  31. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/logo-white.png +0 -0
  32. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/logo.png +0 -0
  33. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/prefab_logo_white.svg +0 -0
  34. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/promo_c.png +0 -0
  35. {prefab-1.1.6 → prefab-1.1.8}/docs/assets/promo_p.png +0 -0
  36. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/index.md +0 -0
  37. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0.md +0 -0
  38. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_11_1.png +0 -0
  39. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_11_2.png +0 -0
  40. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_13_2.png +0 -0
  41. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_13_3.png +0 -0
  42. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_13_4.png +0 -0
  43. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_3_1.png +0 -0
  44. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_3_2.png +0 -0
  45. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_3_3.png +0 -0
  46. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_7_2.png +0 -0
  47. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_7_3.png +0 -0
  48. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_7_4.png +0 -0
  49. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/prefab-v1.1.0_files/prefab-v1.1.0_9_2.png +0 -0
  50. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/posts/python-for-photonics.md +0 -0
  51. {prefab-1.1.6 → prefab-1.1.8}/docs/blog/prefab-v1.1.0.ipynb +0 -0
  52. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/1_prediction.ipynb +0 -0
  53. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/2_correction.ipynb +0 -0
  54. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/3_sidewall_angle.ipynb +0 -0
  55. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/4_SEM_generation.ipynb +0 -0
  56. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/5_prediction_simulation.ipynb +0 -0
  57. {prefab-1.1.6 → prefab-1.1.8}/docs/examples/6_fabrication-aware_inverse_design.ipynb +0 -0
  58. {prefab-1.1.6 → prefab-1.1.8}/docs/overrides/main.html +0 -0
  59. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/compare.md +0 -0
  60. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/device.md +0 -0
  61. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/geometry.md +0 -0
  62. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/models.md +0 -0
  63. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/predict.md +0 -0
  64. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/read.md +0 -0
  65. {prefab-1.1.6 → prefab-1.1.8}/docs/reference/shapes.md +0 -0
  66. {prefab-1.1.6 → prefab-1.1.8}/prefab/device.py +0 -0
  67. {prefab-1.1.6 → prefab-1.1.8}/prefab/geometry.py +0 -0
  68. {prefab-1.1.6 → prefab-1.1.8}/prefab/read.py +0 -0
  69. {prefab-1.1.6 → prefab-1.1.8}/prefab/shapes.py +0 -0
  70. {prefab-1.1.6 → prefab-1.1.8}/site/404.html +0 -0
  71. {prefab-1.1.6 → prefab-1.1.8}/site/assets/_mkdocstrings.css +0 -0
  72. {prefab-1.1.6 → prefab-1.1.8}/site/assets/favicon.ico +0 -0
  73. {prefab-1.1.6 → prefab-1.1.8}/site/assets/images/favicon.png +0 -0
  74. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/bundle.a7c05c9e.min.js +0 -0
  75. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/bundle.a7c05c9e.min.js.map +0 -0
  76. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ar.min.js +0 -0
  77. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.da.min.js +0 -0
  78. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.de.min.js +0 -0
  79. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.du.min.js +0 -0
  80. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.el.min.js +0 -0
  81. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.es.min.js +0 -0
  82. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.fi.min.js +0 -0
  83. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.fr.min.js +0 -0
  84. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.he.min.js +0 -0
  85. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.hi.min.js +0 -0
  86. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.hu.min.js +0 -0
  87. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.hy.min.js +0 -0
  88. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.it.min.js +0 -0
  89. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ja.min.js +0 -0
  90. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.jp.min.js +0 -0
  91. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.kn.min.js +0 -0
  92. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ko.min.js +0 -0
  93. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.multi.min.js +0 -0
  94. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.nl.min.js +0 -0
  95. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.no.min.js +0 -0
  96. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.pt.min.js +0 -0
  97. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ro.min.js +0 -0
  98. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ru.min.js +0 -0
  99. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.sa.min.js +0 -0
  100. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +0 -0
  101. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.sv.min.js +0 -0
  102. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.ta.min.js +0 -0
  103. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.te.min.js +0 -0
  104. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.th.min.js +0 -0
  105. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.tr.min.js +0 -0
  106. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.vi.min.js +0 -0
  107. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/min/lunr.zh.min.js +0 -0
  108. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/tinyseg.js +0 -0
  109. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/lunr/wordcut.js +0 -0
  110. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/workers/search.b8dbb3d2.min.js +0 -0
  111. {prefab-1.1.6 → prefab-1.1.8}/site/assets/javascripts/workers/search.b8dbb3d2.min.js.map +0 -0
  112. {prefab-1.1.6 → prefab-1.1.8}/site/assets/logo.png +0 -0
  113. {prefab-1.1.6 → prefab-1.1.8}/site/assets/logo_neue.svg +0 -0
  114. {prefab-1.1.6 → prefab-1.1.8}/site/assets/promo_c.png +0 -0
  115. {prefab-1.1.6 → prefab-1.1.8}/site/assets/promo_p.png +0 -0
  116. {prefab-1.1.6 → prefab-1.1.8}/site/assets/stylesheets/main.66ac8b77.min.css +0 -0
  117. {prefab-1.1.6 → prefab-1.1.8}/site/assets/stylesheets/main.66ac8b77.min.css.map +0 -0
  118. {prefab-1.1.6 → prefab-1.1.8}/site/assets/stylesheets/palette.06af60db.min.css +0 -0
  119. {prefab-1.1.6 → prefab-1.1.8}/site/assets/stylesheets/palette.06af60db.min.css.map +0 -0
  120. {prefab-1.1.6 → prefab-1.1.8}/site/css/ansi-colours.css +0 -0
  121. {prefab-1.1.6 → prefab-1.1.8}/site/css/jupyter-cells.css +0 -0
  122. {prefab-1.1.6 → prefab-1.1.8}/site/css/pandas-dataframe.css +0 -0
  123. {prefab-1.1.6 → prefab-1.1.8}/site/examples/1_prediction/index.html +0 -0
  124. {prefab-1.1.6 → prefab-1.1.8}/site/examples/2_correction/index.html +0 -0
  125. {prefab-1.1.6 → prefab-1.1.8}/site/index.html +0 -0
  126. {prefab-1.1.6 → prefab-1.1.8}/site/models/index.html +0 -0
  127. {prefab-1.1.6 → prefab-1.1.8}/site/objects.inv +0 -0
  128. {prefab-1.1.6 → prefab-1.1.8}/site/reference/compare/index.html +0 -0
  129. {prefab-1.1.6 → prefab-1.1.8}/site/reference/device/index.html +0 -0
  130. {prefab-1.1.6 → prefab-1.1.8}/site/reference/geometry/index.html +0 -0
  131. {prefab-1.1.6 → prefab-1.1.8}/site/reference/models/index.html +0 -0
  132. {prefab-1.1.6 → prefab-1.1.8}/site/reference/read/index.html +0 -0
  133. {prefab-1.1.6 → prefab-1.1.8}/site/search/search_index.json +0 -0
  134. {prefab-1.1.6 → prefab-1.1.8}/site/sitemap.xml +0 -0
  135. {prefab-1.1.6 → prefab-1.1.8}/site/sitemap.xml.gz +0 -0
@@ -30,6 +30,7 @@ jobs:
30
30
  - run: pip install mkdocs-material
31
31
  - run: pip install mkdocstrings[python]
32
32
  - run: pip install mkdocs-jupyter
33
+ - run: pip install mistune==3.0
33
34
  - name: Create CNAME file
34
35
  run: echo "docs.prefabphotonics.com" > docs/CNAME
35
36
  - run: mkdocs gh-deploy --force
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: prefab
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: Artificial nanofabrication of integrated photonic circuits using deep learning
5
5
  Project-URL: Homepage, https://prefabphotonics.com
6
6
  Project-URL: Repository, https://github.com/PreFab-Photonics/PreFab
7
7
  Project-URL: Docs, https://docs.prefabphotonics.com
8
- Author-email: Dusan Gostimirovic <dusan@prefabphotonics.com>
8
+ Author-email: "PreFab Photonics Inc." <hi@prefabphotonics.com>
9
9
  License: GNU LESSER GENERAL PUBLIC LICENSE
10
10
  Version 2.1, February 1999
11
11
 
@@ -511,17 +511,18 @@ License: GNU LESSER GENERAL PUBLIC LICENSE
511
511
 
512
512
  That's all there is to it!
513
513
  License-File: LICENSE
514
- Keywords: machine-learning,nanofabrication,photonics
514
+ Keywords: computer-vision,deep-learning,electronic-design-automation,integrated-photonics,machine-learning,nanofabrication,semiconductor-manufacturing
515
515
  Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
516
516
  Classifier: Operating System :: OS Independent
517
517
  Classifier: Programming Language :: Python :: 3
518
518
  Requires-Python: >=3.9
519
+ Requires-Dist: autograd
519
520
  Requires-Dist: gdstk>=0.9.55
520
521
  Requires-Dist: matplotlib
521
522
  Requires-Dist: numpy
522
523
  Requires-Dist: opencv-python-headless
523
524
  Requires-Dist: pillow
524
- Requires-Dist: pydantic
525
+ Requires-Dist: pydantic>=2.10
525
526
  Requires-Dist: requests
526
527
  Requires-Dist: scikit-image
527
528
  Requires-Dist: scipy
@@ -557,7 +558,6 @@ Each photonic nanofabrication process requires unique models, which are regularl
557
558
  | ------- | ------- | ----------------- | ---------------- | ----------- |
558
559
  | ANT | NanoSOI | ANF1 (May 6 2024) | d10 (Jun 8 2024) | ANT_NanoSOI_ANF1_d10 |
559
560
  | ANT | SiN | ANF1 (May 6 2024) | d1 (Jan 31 2024) | ANT_SiN_ANF1_d1 |
560
- | Generic | DUV-SOI | ANF1 (May 6 2024) | d0 (Jul 30 2024) | generic_DUV_SOI_ANF1_d0 |
561
561
 
562
562
  > _New models are to be regularly added. Usage may change. For additional foundry and process models, feel free to [contact us](mailto:hi@prefabphotonics.com) or raise an issue._
563
563
 
@@ -26,7 +26,6 @@ Each photonic nanofabrication process requires unique models, which are regularl
26
26
  | ------- | ------- | ----------------- | ---------------- | ----------- |
27
27
  | ANT | NanoSOI | ANF1 (May 6 2024) | d10 (Jun 8 2024) | ANT_NanoSOI_ANF1_d10 |
28
28
  | ANT | SiN | ANF1 (May 6 2024) | d1 (Jan 31 2024) | ANT_SiN_ANF1_d1 |
29
- | Generic | DUV-SOI | ANF1 (May 6 2024) | d0 (Jul 30 2024) | generic_DUV_SOI_ANF1_d0 |
30
29
 
31
30
  > _New models are to be regularly added. Usage may change. For additional foundry and process models, feel free to [contact us](mailto:hi@prefabphotonics.com) or raise an issue._
32
31
 
@@ -0,0 +1,6 @@
1
+ {
2
+ "MD046": false,
3
+ "MD013": false,
4
+ "MD033": false,
5
+ "MD036": false
6
+ }
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.8](https://github.com/PreFab-Photonics/PreFab/releases/tag/v1.1.8) - 2025-01-16
4
+
5
+ - Added `prefab` command to the `pyproject.toml` file so that `prefab` can be run from the command line (e.g., `prefab setup`).
6
+ - Change to callback address for successful authentication.
7
+
8
+ ## [1.1.7](https://github.com/PreFab-Photonics/PreFab/releases/tag/v1.1.7) - 2025-01-14
9
+
10
+ - Added `autograd` and `pydantic` (version requirement) dependencies in `pyproject.toml`.
11
+ - Server-side improvements (update endpoint version number to 2).
12
+
3
13
  ## [1.1.6](https://github.com/PreFab-Photonics/PreFab/releases/tag/v1.1.6) - 2024-12-30
4
14
 
5
15
  - Added Tidy3D fabrication-aware inverse design (FAID) example notebook.
@@ -0,0 +1,23 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Generated by Pixelmator Pro 3.6.7 -->
3
+ <svg width="210" height="210" viewBox="0 0 210 210" xmlns="http://www.w3.org/2000/svg">
4
+ <clipPath id="clipPath1">
5
+ <path d="M 5 5 L 205 5 L 205 205 L 5 205 Z"/>
6
+ </clipPath>
7
+ <g id="Group" clip-path="url(#clipPath1)">
8
+ <path id="Path" fill="none" stroke="none" d="M -45 -20 L 1055 -20 L 1055 230 L -45 230 Z"/>
9
+ <path id="Rectangle" fill="#4338ca" fill-rule="evenodd" stroke="none" d="M 5 205 L 205 205 L 205 5 L 5 5 Z"/>
10
+ <path id="path1" fill="#facc15" stroke="#000000" stroke-width="5" d="M 179 182 L 178 183 L 176 183 L 175 184 L 174 184 L 173 185 L 172 185 L 170 187 L 169 187 L 168 188 L 168 189 L 165 192 L 165 193 L 164 194 L 164 195 L 163 196 L 163 197 L 162 198 L 162 200 L 161 201 L 161 203 L 160 204 L 160 215 L 161 216 L 161 217 L 163 219 L 164 219 L 165 220 L 171 220 L 172 219 L 175 219 L 176 218 L 178 218 L 179 217 L 181 217 L 182 216 L 183 216 L 184 215 L 186 215 L 187 214 L 188 214 L 189 213 L 190 213 L 192 211 L 193 211 L 194 210 L 195 210 L 201 204 L 201 203 L 202 202 L 202 201 L 203 200 L 203 198 L 204 197 L 204 193 L 203 192 L 203 190 L 202 189 L 202 188 L 199 185 L 198 185 L 197 184 L 196 184 L 195 183 L 193 183 L 192 182 Z"/>
11
+ <path id="path2" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 1054 150 L 1051 153 L 1051 154 L 1049 156 L 1049 157 L 1047 159 L 1047 160 L 1046 161 L 1046 163 L 1045 164 L 1045 166 L 1044 167 L 1044 173 L 1043 174 L 1043 194 L 1042 195 L 1042 203 L 1041 204 L 1041 209 L 1040 210 L 1040 212 L 1039 213 L 1039 216 L 1038 217 L 1038 224 L 1041 227 L 1043 227 L 1044 228 L 1048 228 L 1049 227 L 1054 227 Z"/>
12
+ <path id="path3" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 987 149 L 986 150 L 983 150 L 982 151 L 981 151 L 980 152 L 979 152 L 977 154 L 977 155 L 976 156 L 976 157 L 975 158 L 975 160 L 974 161 L 974 163 L 973 164 L 973 166 L 972 167 L 972 169 L 971 170 L 971 172 L 970 173 L 970 175 L 969 176 L 969 177 L 968 178 L 968 179 L 967 180 L 967 181 L 966 182 L 966 183 L 965 184 L 965 185 L 964 186 L 964 187 L 962 189 L 962 190 L 960 192 L 960 193 L 954 199 L 953 199 L 951 201 L 950 201 L 949 202 L 948 202 L 947 203 L 946 203 L 945 204 L 944 204 L 943 205 L 941 205 L 940 206 L 939 206 L 938 207 L 936 207 L 934 209 L 933 209 L 929 213 L 929 214 L 926 217 L 926 218 L 919 225 L 918 225 L 916 227 L 915 227 L 914 228 L 913 228 L 912 229 L 911 229 L 962 229 L 962 227 L 963 226 L 963 225 L 964 224 L 964 223 L 965 222 L 965 221 L 969 217 L 970 217 L 972 215 L 973 215 L 974 214 L 976 214 L 977 213 L 979 213 L 980 212 L 982 212 L 983 211 L 986 211 L 987 210 L 989 210 L 990 209 L 991 209 L 992 208 L 993 208 L 994 207 L 995 207 L 998 204 L 998 203 L 999 202 L 999 201 L 1000 200 L 1000 197 L 1001 196 L 1001 192 L 1002 191 L 1002 187 L 1003 186 L 1003 183 L 1004 182 L 1004 179 L 1005 178 L 1005 175 L 1006 174 L 1006 171 L 1007 170 L 1007 165 L 1008 164 L 1008 160 L 1007 159 L 1007 157 L 1006 156 L 1006 155 L 1002 151 L 1001 151 L 1000 150 L 998 150 L 997 149 Z"/>
13
+ <path id="path4" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 236 116 L 235 117 L 232 117 L 231 118 L 230 118 L 229 119 L 228 119 L 227 120 L 226 120 L 225 121 L 224 121 L 221 124 L 220 124 L 220 125 L 218 127 L 218 128 L 217 129 L 217 131 L 216 132 L 216 139 L 217 140 L 217 144 L 218 145 L 218 147 L 219 148 L 219 150 L 220 151 L 220 152 L 221 153 L 221 154 L 222 155 L 222 156 L 224 158 L 224 159 L 227 162 L 228 162 L 230 164 L 231 164 L 232 165 L 233 165 L 234 166 L 235 166 L 236 167 L 237 167 L 238 168 L 239 168 L 241 170 L 242 170 L 244 172 L 245 172 L 249 176 L 249 177 L 252 180 L 252 181 L 254 183 L 254 184 L 258 188 L 259 188 L 260 189 L 261 189 L 262 190 L 270 190 L 271 189 L 273 189 L 274 188 L 275 188 L 277 186 L 278 186 L 282 182 L 282 181 L 284 179 L 284 178 L 285 177 L 285 176 L 286 175 L 286 173 L 287 172 L 287 164 L 285 162 L 284 162 L 283 161 L 281 161 L 280 160 L 277 160 L 276 159 L 274 159 L 273 158 L 272 158 L 271 157 L 270 157 L 269 156 L 268 156 L 263 151 L 263 150 L 262 149 L 262 148 L 261 147 L 261 146 L 260 145 L 260 142 L 259 141 L 259 138 L 258 137 L 258 134 L 257 133 L 257 130 L 256 129 L 256 127 L 255 126 L 255 125 L 254 124 L 254 123 L 249 118 L 248 118 L 247 117 L 245 117 L 244 116 Z"/>
14
+ <path id="path5" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 926 97 L 925 98 L 923 98 L 917 104 L 917 105 L 915 107 L 915 108 L 914 109 L 914 110 L 913 111 L 913 112 L 912 113 L 912 114 L 911 115 L 911 117 L 910 118 L 910 119 L 909 120 L 909 122 L 908 123 L 908 126 L 907 127 L 907 130 L 906 131 L 906 148 L 905 149 L 905 152 L 904 153 L 904 154 L 899 159 L 898 159 L 895 162 L 894 162 L 890 166 L 890 167 L 888 169 L 888 170 L 886 172 L 886 174 L 885 175 L 885 177 L 884 178 L 884 181 L 883 182 L 883 190 L 884 191 L 884 193 L 885 194 L 885 195 L 889 199 L 890 199 L 891 200 L 893 200 L 894 201 L 910 201 L 911 200 L 914 200 L 916 198 L 917 198 L 918 197 L 918 196 L 919 195 L 919 194 L 920 193 L 920 181 L 919 180 L 919 175 L 918 174 L 918 170 L 917 169 L 917 161 L 922 156 L 923 156 L 924 155 L 925 155 L 926 154 L 928 154 L 929 153 L 931 153 L 932 152 L 935 152 L 936 151 L 938 151 L 939 150 L 942 150 L 943 149 L 946 149 L 947 148 L 950 148 L 951 147 L 953 147 L 954 146 L 955 146 L 956 145 L 957 145 L 958 144 L 959 144 L 962 141 L 962 140 L 963 139 L 963 132 L 962 131 L 962 128 L 961 127 L 961 126 L 960 125 L 960 123 L 959 122 L 959 121 L 958 120 L 958 119 L 957 118 L 957 117 L 956 116 L 956 115 L 954 113 L 954 112 L 952 110 L 952 109 L 945 102 L 944 102 L 942 100 L 941 100 L 940 99 L 938 99 L 937 98 L 934 98 L 933 97 Z"/>
15
+ <path id="path6" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 916 66 L 915 67 L 912 67 L 911 68 L 910 68 L 909 69 L 908 69 L 907 70 L 906 70 L 902 74 L 902 76 L 903 77 L 903 78 L 904 79 L 905 79 L 906 80 L 908 80 L 909 81 L 910 81 L 911 80 L 914 80 L 918 76 L 918 75 L 919 74 L 919 73 L 920 72 L 920 66 Z"/>
16
+ <path id="path7" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 908 -20 L 907 -19 L 905 -19 L 904 -18 L 902 -18 L 901 -17 L 899 -17 L 898 -16 L 896 -16 L 895 -15 L 894 -15 L 893 -14 L 892 -14 L 891 -13 L 890 -13 L 889 -12 L 888 -12 L 885 -9 L 885 -8 L 884 -7 L 884 -6 L 883 -5 L 883 0 L 882 1 L 882 7 L 883 8 L 883 13 L 884 14 L 884 17 L 885 18 L 885 20 L 887 22 L 887 23 L 892 28 L 893 28 L 894 29 L 896 29 L 897 30 L 899 30 L 900 31 L 902 31 L 903 32 L 906 32 L 907 33 L 910 33 L 911 34 L 913 34 L 914 35 L 916 35 L 917 36 L 918 36 L 919 37 L 920 37 L 925 42 L 925 43 L 926 44 L 926 45 L 927 46 L 927 47 L 928 48 L 928 51 L 929 52 L 929 53 L 930 54 L 934 54 L 935 53 L 937 53 L 938 52 L 940 52 L 941 51 L 942 51 L 943 50 L 944 50 L 945 49 L 947 49 L 948 48 L 949 48 L 950 47 L 952 47 L 953 46 L 956 46 L 957 45 L 970 45 L 971 46 L 974 46 L 975 47 L 976 47 L 977 48 L 978 48 L 980 50 L 981 50 L 988 57 L 988 58 L 991 61 L 991 62 L 992 63 L 992 64 L 993 65 L 993 67 L 994 68 L 994 73 L 995 74 L 995 83 L 996 84 L 996 88 L 997 89 L 997 92 L 998 93 L 998 95 L 999 96 L 999 98 L 1000 99 L 1000 100 L 1001 101 L 1001 102 L 1002 103 L 1002 104 L 1004 106 L 1004 107 L 1009 112 L 1010 112 L 1011 113 L 1012 113 L 1013 114 L 1021 114 L 1022 113 L 1024 113 L 1031 106 L 1031 105 L 1032 104 L 1032 102 L 1033 101 L 1033 98 L 1034 97 L 1034 91 L 1033 90 L 1033 87 L 1032 86 L 1032 84 L 1031 83 L 1031 82 L 1029 80 L 1029 79 L 1025 75 L 1025 74 L 1020 69 L 1020 68 L 1019 67 L 1019 66 L 1018 65 L 1018 60 L 1019 59 L 1019 58 L 1020 57 L 1020 56 L 1021 55 L 1021 54 L 1022 53 L 1022 52 L 1024 50 L 1024 49 L 1025 48 L 1025 47 L 1026 46 L 1026 45 L 1027 44 L 1027 42 L 1028 41 L 1028 38 L 1029 37 L 1029 33 L 1028 32 L 1028 30 L 1027 29 L 1027 28 L 1023 24 L 1022 24 L 1021 23 L 1020 23 L 1019 22 L 1017 22 L 1016 21 L 1014 21 L 1013 20 L 1012 20 L 1011 19 L 1009 19 L 1008 18 L 1007 18 L 1006 17 L 1005 17 L 1004 16 L 1003 16 L 1001 14 L 1000 14 L 996 10 L 995 10 L 989 4 L 988 4 L 985 1 L 984 1 L 982 -1 L 981 -1 L 980 -2 L 979 -2 L 978 -3 L 977 -3 L 976 -4 L 975 -4 L 974 -5 L 973 -5 L 972 -6 L 971 -6 L 969 -8 L 968 -8 L 963 -13 L 963 -14 L 962 -15 L 962 -20 Z"/>
17
+ <path id="path8" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 819 -20 L 820 -20 L 821 -19 L 826 -19 L 827 -18 L 830 -18 L 831 -19 L 835 -19 L 836 -20 L 838 -20 Z"/>
18
+ <path id="path9" fill="#eeeeee" stroke="#000000" stroke-width="5" d="M 654 -20 L 647 -13 L 647 -12 L 646 -11 L 646 -5 L 647 -4 L 647 -2 L 648 -1 L 648 0 L 649 1 L 649 2 L 651 4 L 651 5 L 656 10 L 656 11 L 665 20 L 665 21 L 668 24 L 668 25 L 670 27 L 670 28 L 673 31 L 673 32 L 679 38 L 679 39 L 681 41 L 681 42 L 683 44 L 683 45 L 684 46 L 684 47 L 685 48 L 685 50 L 686 51 L 686 56 L 687 57 L 687 62 L 686 63 L 686 67 L 685 68 L 685 70 L 684 71 L 684 73 L 683 74 L 683 75 L 682 76 L 682 77 L 681 78 L 681 80 L 680 81 L 680 82 L 679 83 L 679 84 L 678 85 L 678 86 L 677 87 L 677 88 L 676 89 L 676 91 L 675 92 L 675 93 L 674 94 L 674 96 L 673 97 L 673 98 L 672 99 L 672 101 L 671 102 L 671 105 L 670 106 L 670 108 L 669 109 L 669 113 L 668 114 L 668 125 L 669 126 L 669 129 L 670 130 L 670 131 L 671 132 L 671 133 L 672 134 L 672 135 L 673 136 L 673 137 L 674 138 L 674 139 L 676 141 L 676 142 L 677 143 L 677 144 L 679 146 L 679 147 L 681 149 L 681 150 L 682 151 L 682 152 L 684 154 L 684 155 L 685 156 L 685 158 L 686 159 L 686 160 L 687 161 L 687 165 L 688 166 L 688 175 L 687 176 L 687 179 L 686 180 L 686 182 L 685 183 L 685 184 L 684 185 L 684 186 L 683 187 L 683 188 L 682 189 L 682 190 L 680 192 L 680 193 L 678 195 L 678 196 L 676 198 L 676 199 L 675 200 L 675 201 L 673 203 L 673 204 L 671 206 L 671 207 L 670 208 L 670 209 L 669 210 L 669 211 L 667 213 L 667 214 L 666 215 L 666 216 L 664 218 L 664 219 L 661 222 L 661 223 L 655 229 L 782 229 L 779 226 L 779 225 L 776 222 L 776 221 L 774 219 L 774 218 L 773 217 L 773 216 L 771 214 L 771 213 L 770 212 L 770 211 L 768 209 L 768 208 L 763 203 L 762 203 L 760 201 L 759 201 L 758 200 L 756 200 L 755 199 L 754 199 L 753 198 L 751 198 L 750 197 L 749 197 L 748 196 L 747 196 L 745 194 L 745 193 L 744 192 L 744 183 L 745 182 L 745 178 L 746 177 L 746 168 L 745 167 L 745 165 L 743 163 L 743 162 L 742 161 L 741 161 L 739 159 L 738 159 L 736 157 L 735 157 L 734 156 L 732 156 L 731 155 L 730 155 L 729 154 L 727 154 L 726 153 L 725 153 L 724 152 L 723 152 L 722 151 L 720 151 L 719 150 L 718 150 L 716 148 L 715 148 L 713 146 L 712 146 L 709 143 L 709 142 L 707 140 L 707 139 L 706 138 L 706 136 L 705 135 L 705 124 L 706 123 L 706 121 L 707 120 L 707 118 L 709 116 L 709 115 L 715 109 L 716 109 L 717 108 L 718 108 L 719 107 L 721 107 L 722 106 L 730 106 L 731 107 L 734 107 L 735 108 L 738 108 L 739 109 L 740 109 L 741 110 L 743 110 L 744 111 L 745 111 L 746 112 L 747 112 L 748 113 L 749 113 L 750 114 L 751 114 L 753 116 L 754 116 L 758 120 L 758 121 L 760 123 L 760 124 L 761 125 L 761 127 L 762 128 L 762 132 L 763 133 L 763 141 L 764 142 L 764 151 L 765 152 L 765 156 L 766 157 L 766 159 L 767 160 L 767 161 L 768 162 L 768 164 L 769 165 L 769 166 L 770 167 L 770 168 L 771 169 L 771 170 L 772 171 L 772 172 L 773 173 L 773 174 L 774 175 L 774 176 L 776 178 L 776 179 L 781 184 L 782 184 L 784 186 L 785 186 L 786 187 L 787 187 L 788 188 L 790 188 L 791 189 L 792 189 L 793 190 L 795 190 L 796 191 L 797 191 L 798 192 L 799 192 L 800 193 L 801 193 L 807 199 L 807 200 L 808 201 L 808 203 L 809 204 L 809 206 L 810 207 L 810 213 L 811 214 L 811 220 L 812 221 L 812 224 L 814 226 L 814 227 L 815 228 L 816 228 L 817 229 L 840 229 L 841 228 L 843 228 L 844 227 L 845 227 L 846 226 L 847 226 L 848 225 L 849 225 L 850 224 L 851 224 L 852 223 L 853 223 L 854 222 L 855 222 L 860 217 L 860 216 L 861 215 L 861 213 L 862 212 L 862 204 L 861 203 L 861 201 L 860 200 L 860 199 L 859 198 L 859 197 L 857 195 L 857 194 L 852 189 L 851 189 L 849 187 L 848 187 L 847 186 L 846 186 L 844 184 L 843 184 L 842 183 L 841 183 L 840 182 L 839 182 L 838 181 L 837 181 L 836 180 L 835 180 L 827 172 L 827 171 L 825 169 L 825 167 L 824 166 L 824 165 L 823 164 L 823 162 L 822 161 L 822 160 L 821 159 L 821 157 L 820 156 L 820 155 L 819 154 L 819 153 L 818 152 L 818 151 L 811 144 L 810 144 L 808 142 L 807 142 L 805 140 L 804 140 L 802 138 L 801 138 L 788 125 L 788 124 L 784 120 L 783 120 L 779 116 L 778 116 L 775 113 L 774 113 L 768 107 L 768 106 L 766 104 L 766 103 L 764 101 L 764 100 L 763 99 L 763 98 L 761 96 L 761 95 L 759 93 L 759 92 L 757 90 L 757 89 L 754 86 L 754 85 L 750 81 L 750 80 L 748 78 L 748 77 L 746 75 L 746 74 L 745 73 L 745 71 L 744 70 L 744 68 L 743 67 L 743 61 L 742 60 L 742 41 L 741 40 L 741 36 L 740 35 L 740 34 L 739 33 L 739 32 L 737 30 L 736 30 L 734 28 L 733 28 L 732 27 L 731 27 L 730 26 L 728 26 L 727 25 L 725 25 L 724 24 L 722 24 L 721 23 L 719 23 L 718 22 L 715 22 L 714 21 L 712 21 L 711 20 L 709 20 L 708 19 L 706 19 L 705 18 L 703 18 L 702 17 L 700 17 L 699 16 L 698 16 L 697 15 L 696 15 L 695 14 L 694 14 L 687 7 L 687 5 L 686 4 L 686 -1 L 687 -2 L 687 -4 L 688 -5 L 688 -7 L 690 -9 L 690 -10 L 694 -14 L 695 -14 L 698 -17 L 699 -17 L 700 -18 L 702 -18 L 703 -19 L 711 -19 L 713 -17 L 714 -17 L 720 -11 L 720 -10 L 725 -5 L 726 -5 L 730 -1 L 731 -1 L 734 2 L 735 2 L 740 7 L 741 7 L 747 13 L 747 14 L 751 18 L 752 18 L 755 21 L 756 21 L 757 22 L 758 22 L 759 23 L 761 23 L 762 24 L 763 24 L 764 25 L 766 25 L 767 26 L 768 26 L 769 27 L 770 27 L 771 28 L 772 28 L 775 31 L 776 31 L 778 33 L 778 34 L 780 36 L 780 37 L 781 38 L 781 39 L 782 40 L 782 41 L 783 42 L 783 43 L 784 44 L 784 45 L 785 46 L 785 47 L 786 48 L 786 49 L 787 50 L 787 51 L 788 52 L 788 53 L 790 55 L 790 56 L 791 57 L 791 58 L 793 60 L 793 61 L 795 63 L 795 64 L 796 65 L 796 66 L 797 67 L 797 68 L 799 70 L 799 72 L 800 73 L 800 74 L 801 75 L 801 78 L 802 79 L 802 84 L 803 85 L 803 94 L 804 95 L 804 100 L 805 101 L 805 103 L 806 104 L 806 105 L 810 109 L 811 109 L 812 110 L 813 110 L 814 111 L 816 111 L 817 112 L 827 112 L 828 111 L 829 111 L 830 110 L 831 110 L 835 106 L 835 105 L 837 103 L 837 102 L 838 101 L 838 100 L 839 99 L 839 98 L 840 97 L 840 96 L 841 95 L 841 94 L 842 93 L 842 92 L 844 90 L 844 89 L 845 88 L 845 87 L 847 85 L 847 84 L 849 82 L 849 81 L 851 79 L 851 78 L 859 70 L 860 70 L 863 67 L 864 67 L 866 65 L 867 65 L 871 61 L 871 60 L 872 59 L 872 51 L 871 50 L 871 49 L 867 45 L 866 45 L 865 44 L 864 44 L 863 43 L 861 43 L 860 42 L 858 42 L 857 41 L 853 41 L 852 40 L 850 40 L 849 39 L 848 39 L 844 35 L 844 34 L 843 33 L 843 25 L 844 24 L 844 18 L 845 17 L 845 4 L 844 3 L 844 1 L 843 0 L 843 -1 L 840 -4 L 839 -4 L 838 -5 L 832 -5 L 831 -4 L 830 -4 L 823 3 L 823 4 L 814 13 L 813 13 L 812 14 L 810 14 L 809 15 L 800 15 L 799 14 L 798 14 L 793 9 L 793 7 L 792 6 L 792 -3 L 791 -4 L 791 -9 L 790 -10 L 790 -12 L 788 -14 L 788 -15 L 783 -20 Z"/>
19
+ <path id="path10" fill="#facc15" stroke="#000000" stroke-width="5" d="M 277 -20 L 277 -18 L 276 -17 L 276 -16 L 275 -15 L 275 -14 L 274 -13 L 274 -12 L 273 -11 L 273 -9 L 272 -8 L 272 -7 L 271 -6 L 271 -5 L 268 -2 L 268 -1 L 267 0 L 266 0 L 264 2 L 262 2 L 261 3 L 256 3 L 255 4 L 238 4 L 237 5 L 234 5 L 233 6 L 232 6 L 231 7 L 230 7 L 229 8 L 228 8 L 221 15 L 221 16 L 219 18 L 219 19 L 217 21 L 217 22 L 215 24 L 215 25 L 214 26 L 214 27 L 213 28 L 213 29 L 211 31 L 211 32 L 210 33 L 210 34 L 208 36 L 208 37 L 206 39 L 206 40 L 204 42 L 204 43 L 201 46 L 201 47 L 197 51 L 197 52 L 191 58 L 190 58 L 189 59 L 188 59 L 187 60 L 180 60 L 178 58 L 177 58 L 174 55 L 174 54 L 173 53 L 173 52 L 172 51 L 172 48 L 171 47 L 171 37 L 172 36 L 172 22 L 171 21 L 171 19 L 170 18 L 170 17 L 169 16 L 169 15 L 167 13 L 167 12 L 158 3 L 157 3 L 156 2 L 151 2 L 150 3 L 149 3 L 144 8 L 144 9 L 142 11 L 142 12 L 141 13 L 141 14 L 140 15 L 140 16 L 139 17 L 139 18 L 138 19 L 138 21 L 137 22 L 137 24 L 136 25 L 136 27 L 135 28 L 135 30 L 134 31 L 134 34 L 133 35 L 133 38 L 132 39 L 132 41 L 131 42 L 131 44 L 130 45 L 130 47 L 129 48 L 129 50 L 128 51 L 128 54 L 129 55 L 129 57 L 130 58 L 130 59 L 133 62 L 133 63 L 143 73 L 144 73 L 154 83 L 154 84 L 155 85 L 155 86 L 156 87 L 156 88 L 157 89 L 157 91 L 158 92 L 158 96 L 159 97 L 159 99 L 158 100 L 158 106 L 157 107 L 157 109 L 156 110 L 156 111 L 155 112 L 155 113 L 154 114 L 154 115 L 144 125 L 143 125 L 141 127 L 140 127 L 139 128 L 138 128 L 137 129 L 136 129 L 135 130 L 134 130 L 133 131 L 132 131 L 131 132 L 130 132 L 129 133 L 127 133 L 126 134 L 124 134 L 123 135 L 122 135 L 121 136 L 119 136 L 118 137 L 116 137 L 115 138 L 113 138 L 112 139 L 111 139 L 110 140 L 108 140 L 107 141 L 106 141 L 105 142 L 103 142 L 102 143 L 101 143 L 100 144 L 98 144 L 97 145 L 96 145 L 95 146 L 93 146 L 92 147 L 91 147 L 90 148 L 89 148 L 87 150 L 86 150 L 84 152 L 83 152 L 79 156 L 79 157 L 78 158 L 78 159 L 77 160 L 77 161 L 76 162 L 76 165 L 75 166 L 75 170 L 76 171 L 76 173 L 77 174 L 77 175 L 78 176 L 78 177 L 80 179 L 80 180 L 89 189 L 89 190 L 91 192 L 91 193 L 92 194 L 92 197 L 93 198 L 93 203 L 92 204 L 92 207 L 91 208 L 91 209 L 90 210 L 90 211 L 89 212 L 89 213 L 86 216 L 86 217 L 76 227 L 76 228 L 75 229 L 120 229 L 123 226 L 123 225 L 127 221 L 127 220 L 128 219 L 128 218 L 129 217 L 129 216 L 130 215 L 130 214 L 131 213 L 131 210 L 132 209 L 132 201 L 131 200 L 131 196 L 130 195 L 130 193 L 129 192 L 129 190 L 128 189 L 128 187 L 127 186 L 127 184 L 126 183 L 126 182 L 125 181 L 125 179 L 124 178 L 124 176 L 123 175 L 123 172 L 122 171 L 122 157 L 123 156 L 123 155 L 125 153 L 132 153 L 133 154 L 137 154 L 138 155 L 144 155 L 145 156 L 146 155 L 151 155 L 152 154 L 153 154 L 154 153 L 155 153 L 156 152 L 157 152 L 164 145 L 164 144 L 174 134 L 174 133 L 183 124 L 183 123 L 185 121 L 185 120 L 186 119 L 186 103 L 185 102 L 185 90 L 186 89 L 186 85 L 187 84 L 187 83 L 188 82 L 188 81 L 189 80 L 189 79 L 190 78 L 190 77 L 193 74 L 194 74 L 195 73 L 196 73 L 197 72 L 198 72 L 199 71 L 201 71 L 202 70 L 206 70 L 207 69 L 210 69 L 211 68 L 213 68 L 214 67 L 217 67 L 218 66 L 219 66 L 220 65 L 222 65 L 223 64 L 224 64 L 225 63 L 226 63 L 227 62 L 228 62 L 229 61 L 230 61 L 231 60 L 232 60 L 233 59 L 235 59 L 236 58 L 238 58 L 239 57 L 247 57 L 248 58 L 249 58 L 250 59 L 251 59 L 253 61 L 254 61 L 257 64 L 257 65 L 260 68 L 260 69 L 262 71 L 262 72 L 264 74 L 264 75 L 266 77 L 266 78 L 267 79 L 267 80 L 269 82 L 269 83 L 271 85 L 271 86 L 273 88 L 273 89 L 276 92 L 276 93 L 280 97 L 280 98 L 286 104 L 286 105 L 288 107 L 288 108 L 289 109 L 289 110 L 290 111 L 290 112 L 291 113 L 291 115 L 292 116 L 292 119 L 293 120 L 293 125 L 294 126 L 294 138 L 295 139 L 295 151 L 296 152 L 296 154 L 298 156 L 299 156 L 300 157 L 302 157 L 303 158 L 306 158 L 307 159 L 309 159 L 311 161 L 311 166 L 310 167 L 310 169 L 309 170 L 309 172 L 308 173 L 308 174 L 307 175 L 307 177 L 306 178 L 306 180 L 305 181 L 305 183 L 304 184 L 304 186 L 303 187 L 303 189 L 302 190 L 302 191 L 301 192 L 301 194 L 300 195 L 300 196 L 298 198 L 298 199 L 296 201 L 296 202 L 294 204 L 294 205 L 290 209 L 290 210 L 287 213 L 287 214 L 285 216 L 285 217 L 283 219 L 283 220 L 282 221 L 282 222 L 281 223 L 281 224 L 279 226 L 279 227 L 278 228 L 278 229 L 335 229 L 334 228 L 334 227 L 332 225 L 332 223 L 331 222 L 331 216 L 332 215 L 332 214 L 333 213 L 333 212 L 334 211 L 334 210 L 338 206 L 338 205 L 344 199 L 344 198 L 347 195 L 347 194 L 349 192 L 349 191 L 351 189 L 351 188 L 352 187 L 352 186 L 353 185 L 353 184 L 354 183 L 354 182 L 355 181 L 355 180 L 356 179 L 356 178 L 357 177 L 357 176 L 358 175 L 358 174 L 359 173 L 359 172 L 360 171 L 360 170 L 361 169 L 361 168 L 365 164 L 374 164 L 375 165 L 377 165 L 378 166 L 379 166 L 380 167 L 381 167 L 386 172 L 386 173 L 387 174 L 387 175 L 388 176 L 388 178 L 389 179 L 389 186 L 390 187 L 390 198 L 391 199 L 391 204 L 392 205 L 392 208 L 393 209 L 393 210 L 394 211 L 394 212 L 395 213 L 395 214 L 397 216 L 397 217 L 404 224 L 404 225 L 407 228 L 407 229 L 434 229 L 434 226 L 435 225 L 435 223 L 436 222 L 436 221 L 437 220 L 437 219 L 438 218 L 438 217 L 439 216 L 439 215 L 440 214 L 440 213 L 441 212 L 441 211 L 443 209 L 443 208 L 444 207 L 444 206 L 445 205 L 445 204 L 446 203 L 446 202 L 447 201 L 447 200 L 448 199 L 448 198 L 449 197 L 449 191 L 448 190 L 448 189 L 427 168 L 427 167 L 423 163 L 423 162 L 421 160 L 421 159 L 420 158 L 420 157 L 419 156 L 419 155 L 418 154 L 418 153 L 417 152 L 417 148 L 416 147 L 416 124 L 415 123 L 415 118 L 414 117 L 414 109 L 413 108 L 413 107 L 414 106 L 414 101 L 415 100 L 415 98 L 416 97 L 416 96 L 417 95 L 417 94 L 418 93 L 418 92 L 421 89 L 421 88 L 428 81 L 429 81 L 431 79 L 432 79 L 433 78 L 434 78 L 435 77 L 437 77 L 438 76 L 440 76 L 441 75 L 444 75 L 445 74 L 449 74 L 450 73 L 470 73 L 471 74 L 473 74 L 474 75 L 475 75 L 476 76 L 477 76 L 479 78 L 479 79 L 480 80 L 480 81 L 481 82 L 481 86 L 480 87 L 480 90 L 479 91 L 479 92 L 478 93 L 478 95 L 477 96 L 477 97 L 476 98 L 476 99 L 475 100 L 475 101 L 473 103 L 473 104 L 472 105 L 472 106 L 470 108 L 470 109 L 467 112 L 467 113 L 463 117 L 463 118 L 459 122 L 459 123 L 458 124 L 458 125 L 457 126 L 457 128 L 456 129 L 456 132 L 457 133 L 457 135 L 458 136 L 458 137 L 459 138 L 459 139 L 462 142 L 462 143 L 464 145 L 464 146 L 466 148 L 466 149 L 467 150 L 467 151 L 468 152 L 468 153 L 469 154 L 469 156 L 470 157 L 470 167 L 469 168 L 469 170 L 468 171 L 468 173 L 467 174 L 467 175 L 466 176 L 466 177 L 465 178 L 465 179 L 464 180 L 464 182 L 463 183 L 463 184 L 462 185 L 462 192 L 466 196 L 466 197 L 471 202 L 471 203 L 472 204 L 472 205 L 473 206 L 473 207 L 474 208 L 474 210 L 475 211 L 475 217 L 476 218 L 476 229 L 520 229 L 519 228 L 519 226 L 518 225 L 518 224 L 517 223 L 517 221 L 516 220 L 516 219 L 515 218 L 515 216 L 514 215 L 514 214 L 513 213 L 513 212 L 511 210 L 511 209 L 501 199 L 500 199 L 495 194 L 495 193 L 493 191 L 493 190 L 492 189 L 492 188 L 491 187 L 491 186 L 490 185 L 490 183 L 489 182 L 489 167 L 490 166 L 490 165 L 491 164 L 491 162 L 493 160 L 493 159 L 499 153 L 500 153 L 502 151 L 503 151 L 504 150 L 505 150 L 506 149 L 507 149 L 508 148 L 512 148 L 513 147 L 517 147 L 518 148 L 521 148 L 522 149 L 524 149 L 525 150 L 526 150 L 528 152 L 529 152 L 530 153 L 531 153 L 535 157 L 536 157 L 541 162 L 541 163 L 544 166 L 544 167 L 545 168 L 545 169 L 546 170 L 546 171 L 547 172 L 547 175 L 548 176 L 548 182 L 549 183 L 549 191 L 550 192 L 550 195 L 551 196 L 551 197 L 552 198 L 552 199 L 553 200 L 553 201 L 556 204 L 556 205 L 560 209 L 560 210 L 562 212 L 562 213 L 564 215 L 564 216 L 565 217 L 565 219 L 566 220 L 566 222 L 567 223 L 567 229 L 636 229 L 636 228 L 635 227 L 635 219 L 634 218 L 634 203 L 633 202 L 633 194 L 632 193 L 632 190 L 631 189 L 631 187 L 630 186 L 630 185 L 628 183 L 628 182 L 626 180 L 625 180 L 623 178 L 622 178 L 621 177 L 620 177 L 619 176 L 617 176 L 616 175 L 610 175 L 609 174 L 601 174 L 600 173 L 596 173 L 595 172 L 592 172 L 591 171 L 590 171 L 589 170 L 587 170 L 585 168 L 584 168 L 583 167 L 582 167 L 576 161 L 576 160 L 575 159 L 575 158 L 574 157 L 574 156 L 573 155 L 573 144 L 574 143 L 574 142 L 575 141 L 575 140 L 576 139 L 576 138 L 581 133 L 582 133 L 584 131 L 586 131 L 587 130 L 590 130 L 591 129 L 602 129 L 603 130 L 606 130 L 607 131 L 610 131 L 611 132 L 612 132 L 613 133 L 615 133 L 616 134 L 617 134 L 618 135 L 619 135 L 620 136 L 622 136 L 623 137 L 630 137 L 631 136 L 632 136 L 634 134 L 634 133 L 635 132 L 635 130 L 636 129 L 636 123 L 635 122 L 635 119 L 634 118 L 634 115 L 633 114 L 633 111 L 632 110 L 632 106 L 631 105 L 631 96 L 632 95 L 632 92 L 633 91 L 633 89 L 634 88 L 634 87 L 635 86 L 635 85 L 636 84 L 636 83 L 637 82 L 637 81 L 639 79 L 639 78 L 641 76 L 641 75 L 643 73 L 643 72 L 644 71 L 644 70 L 646 68 L 646 67 L 647 66 L 647 65 L 648 64 L 648 62 L 649 61 L 649 58 L 650 57 L 650 53 L 649 52 L 649 50 L 645 46 L 644 46 L 643 45 L 642 45 L 641 44 L 639 44 L 638 43 L 636 43 L 635 42 L 632 42 L 631 41 L 628 41 L 627 40 L 624 40 L 623 39 L 620 39 L 619 38 L 617 38 L 616 37 L 614 37 L 613 36 L 612 36 L 611 35 L 610 35 L 609 34 L 608 34 L 607 33 L 606 33 L 604 31 L 603 31 L 599 27 L 599 26 L 598 25 L 598 24 L 597 23 L 597 19 L 598 18 L 598 17 L 599 16 L 599 15 L 604 10 L 605 10 L 608 7 L 609 7 L 611 5 L 612 5 L 614 3 L 615 3 L 617 1 L 618 1 L 620 -1 L 621 -1 L 623 -3 L 624 -3 L 626 -5 L 627 -5 L 629 -7 L 630 -7 L 634 -11 L 634 -12 L 635 -13 L 635 -14 L 636 -15 L 636 -20 L 568 -20 L 568 -12 L 567 -11 L 567 -7 L 566 -6 L 566 -5 L 565 -4 L 565 -3 L 563 -1 L 562 -1 L 561 0 L 555 0 L 554 -1 L 552 -1 L 551 -2 L 549 -2 L 548 -3 L 547 -3 L 546 -4 L 545 -4 L 544 -5 L 543 -5 L 542 -6 L 541 -6 L 540 -7 L 538 -7 L 537 -8 L 536 -8 L 535 -9 L 534 -9 L 532 -11 L 531 -11 L 530 -12 L 529 -12 L 527 -14 L 526 -14 L 521 -19 L 521 -20 L 476 -20 L 476 -14 L 477 -13 L 477 -12 L 479 -10 L 480 -10 L 481 -9 L 483 -9 L 484 -8 L 486 -8 L 487 -7 L 489 -7 L 490 -6 L 492 -6 L 493 -5 L 494 -5 L 495 -4 L 496 -4 L 502 2 L 502 3 L 503 4 L 503 5 L 504 6 L 504 8 L 505 9 L 505 13 L 506 14 L 506 28 L 505 29 L 505 31 L 504 32 L 504 33 L 500 37 L 499 37 L 498 38 L 495 38 L 494 39 L 492 39 L 491 38 L 487 38 L 486 37 L 485 37 L 484 36 L 482 36 L 480 34 L 479 34 L 472 27 L 472 26 L 471 25 L 471 24 L 470 23 L 470 20 L 469 19 L 469 6 L 470 5 L 470 -1 L 469 -2 L 469 -4 L 467 -6 L 466 -6 L 465 -7 L 464 -7 L 463 -8 L 459 -8 L 458 -9 L 454 -9 L 453 -10 L 450 -10 L 449 -11 L 446 -11 L 445 -12 L 444 -12 L 443 -13 L 441 -13 L 439 -15 L 438 -15 L 435 -18 L 435 -20 L 407 -20 L 408 -19 L 408 -17 L 407 -16 L 407 -15 L 403 -11 L 402 -11 L 400 -9 L 399 -9 L 396 -6 L 395 -6 L 390 -1 L 390 0 L 388 2 L 388 3 L 387 4 L 387 6 L 386 7 L 386 10 L 385 11 L 385 15 L 384 16 L 384 22 L 383 23 L 383 28 L 382 29 L 382 31 L 378 35 L 377 35 L 376 36 L 372 36 L 371 37 L 351 37 L 350 36 L 345 36 L 344 35 L 342 35 L 341 34 L 340 34 L 336 30 L 336 29 L 335 28 L 335 26 L 334 25 L 334 18 L 335 17 L 335 13 L 336 12 L 336 9 L 337 8 L 337 6 L 338 5 L 338 2 L 339 1 L 339 -1 L 340 -2 L 340 -4 L 341 -5 L 341 -12 L 340 -13 L 340 -15 L 337 -18 L 337 -19 L 336 -20 Z"/>
20
+ <path id="path11" fill="#facc15" stroke="#000000" stroke-width="5" d="M -18 -20 L -16 -18 L -16 -17 L -15 -16 L -15 -7 L -16 -6 L -16 -4 L -17 -3 L -17 -2 L -18 -1 L -18 0 L -19 1 L -19 2 L -21 4 L -21 5 L -23 7 L -23 8 L -25 10 L -25 11 L -26 12 L -26 13 L -28 15 L -28 16 L -29 17 L -29 19 L -30 20 L -30 21 L -31 22 L -31 26 L -32 27 L -32 40 L -31 41 L -31 45 L -30 46 L -30 48 L -29 49 L -29 51 L -28 52 L -28 54 L -27 55 L -27 56 L -26 57 L -26 58 L -25 59 L -25 60 L -24 61 L -24 62 L -22 64 L -22 65 L -21 66 L -21 67 L -20 68 L -20 69 L -19 70 L -19 71 L -18 72 L -18 74 L -17 75 L -17 84 L -18 85 L -18 87 L -19 88 L -19 89 L -20 90 L -20 91 L -21 92 L -21 94 L -22 95 L -22 96 L -23 97 L -23 99 L -24 100 L -24 101 L -25 102 L -25 104 L -26 105 L -26 106 L -27 107 L -27 109 L -28 110 L -28 112 L -29 113 L -29 115 L -30 116 L -30 118 L -31 119 L -31 121 L -32 122 L -32 123 L -33 124 L -33 126 L -34 127 L -34 129 L -35 130 L -35 132 L -36 133 L -36 134 L -37 135 L -37 136 L -38 137 L -38 138 L -39 139 L -39 140 L -40 141 L -40 142 L -42 144 L -42 145 L -45 148 L -45 227 L -44 227 L -43 226 L -25 226 L -24 227 L -22 227 L -21 228 L -20 228 L -19 229 L 41 229 L 48 222 L 48 221 L 50 219 L 50 218 L 51 217 L 51 216 L 52 215 L 52 213 L 53 212 L 53 209 L 54 208 L 54 197 L 53 196 L 53 193 L 52 192 L 52 191 L 51 190 L 51 189 L 49 187 L 49 186 L 38 175 L 38 174 L 37 173 L 37 172 L 36 171 L 36 169 L 35 168 L 35 165 L 36 164 L 36 162 L 37 161 L 37 159 L 39 157 L 39 156 L 43 152 L 43 151 L 60 134 L 60 133 L 64 129 L 65 129 L 68 126 L 69 126 L 70 125 L 71 125 L 72 124 L 74 124 L 75 123 L 88 123 L 89 124 L 93 124 L 94 125 L 98 125 L 99 126 L 107 126 L 108 125 L 108 124 L 109 123 L 109 121 L 110 120 L 110 107 L 109 106 L 109 100 L 108 99 L 108 94 L 107 93 L 107 84 L 108 83 L 108 81 L 109 80 L 109 79 L 110 78 L 110 77 L 111 76 L 111 75 L 112 74 L 112 73 L 114 71 L 114 70 L 116 68 L 116 67 L 118 65 L 118 64 L 119 63 L 119 62 L 121 60 L 121 59 L 122 58 L 122 56 L 123 55 L 123 53 L 122 52 L 122 51 L 121 50 L 121 49 L 120 48 L 120 47 L 116 43 L 116 42 L 110 36 L 109 36 L 97 24 L 97 23 L 95 21 L 95 19 L 94 18 L 94 11 L 95 10 L 95 8 L 96 7 L 96 6 L 98 4 L 98 3 L 103 -2 L 103 -3 L 115 -15 L 115 -16 L 119 -20 L 74 -20 L 73 -19 L 73 -18 L 71 -16 L 71 -15 L 70 -14 L 70 -13 L 69 -12 L 69 -10 L 68 -9 L 68 -7 L 67 -6 L 67 -5 L 66 -4 L 66 -2 L 65 -1 L 65 1 L 64 2 L 64 4 L 63 5 L 63 6 L 62 7 L 62 9 L 61 10 L 61 11 L 60 12 L 60 14 L 59 15 L 59 16 L 58 17 L 58 19 L 57 20 L 57 24 L 56 25 L 56 33 L 57 34 L 57 39 L 58 40 L 58 44 L 59 45 L 59 50 L 60 51 L 60 56 L 61 57 L 61 63 L 62 64 L 62 76 L 61 77 L 61 79 L 60 80 L 60 81 L 59 82 L 59 83 L 53 89 L 52 89 L 50 91 L 49 91 L 48 92 L 47 92 L 45 94 L 44 94 L 43 95 L 42 95 L 41 96 L 40 96 L 39 97 L 38 97 L 37 98 L 36 98 L 35 99 L 33 99 L 32 100 L 30 100 L 29 101 L 23 101 L 22 100 L 21 100 L 20 99 L 19 99 L 12 92 L 12 91 L 11 90 L 11 89 L 10 88 L 10 87 L 9 86 L 9 84 L 8 83 L 8 77 L 9 76 L 9 74 L 10 73 L 10 72 L 11 71 L 11 69 L 12 68 L 12 67 L 13 66 L 13 65 L 14 64 L 14 63 L 15 62 L 15 61 L 16 60 L 16 59 L 17 58 L 17 56 L 18 55 L 18 54 L 19 53 L 19 51 L 20 50 L 20 48 L 21 47 L 21 45 L 22 44 L 22 41 L 23 40 L 23 37 L 24 36 L 24 32 L 25 31 L 25 4 L 26 3 L 26 0 L 27 -1 L 27 -3 L 28 -4 L 28 -5 L 29 -6 L 29 -7 L 30 -8 L 30 -9 L 33 -12 L 33 -13 L 40 -20 Z"/>
21
+ </g>
22
+ <path id="path12" fill="none" stroke="#eeeeee" stroke-width="10" d="M 5 5 L 205 5 L 205 205 L 5 205 Z"/>
23
+ </svg>
@@ -2,5 +2,5 @@ authors:
2
2
  dusan:
3
3
  name: Dusan Gostimirovic
4
4
  description: Founder
5
- avatar: https://media.licdn.com/dms/image/v2/C4E03AQGWxb8cTGgvjg/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1516680366321?e=1734566400&v=beta&t=h0PjBVxodvAKFt-MpKUNZOkXG6t-Tvn4HAdHwNoAWQY
5
+ avatar: https://media.licdn.com/dms/image/v2/C4E03AQGWxb8cTGgvjg/profile-displayphoto-shrink_800_800/profile-displayphoto-shrink_800_800/0/1516680366323?e=1741824000&v=beta&t=bDdtLURRzsoGP6PtFziaMMod36_ZSY0EEEY6ZB4QavU
6
6
  url: https://www.linkedin.com/in/dusangostimirovic/
@@ -0,0 +1,126 @@
1
+ ---
2
+ title: Fab-aware design
3
+ description: Designing high-performance photonic circuits with fabrication-aware modeling.
4
+ ---
5
+
6
+ PreFab bridges the gap between photonic design and fabrication by incorporating real fabrication effects directly into the design process. Deep learning and computer vision are used to predict and compensate for manufacturing variations that traditional approaches often ignore due to lack of useful data. This enables accurate prediction, verification, and optimization of designs with fabrication effects in mind to create manufacturable designs that are as close to the theoretical limit as possible, while also reducing the need for manual design iteration and costly repeated fabrication runs.
7
+
8
+ !!! note "Note"
9
+
10
+ While our general documentation focuses on planar geometric variations, the same principles extend to other critical fabrication effects. PreFab supports or is developing support for other effects such as sidewall angle, material thickness variations, and surface roughness - all of which significantly impact photonic device performance.
11
+
12
+ In this document, we'll explore four key aspects of fabrication-aware design:
13
+
14
+ 1. [Modelling fabrication awareness](#modelling-fabrication-awareness)
15
+ 2. [Design verification](#design-verification)
16
+ 3. [Design correction](#design-correction)
17
+ 4. [Fabrication-aware inverse design](#fabrication-aware-inverse-design)
18
+
19
+ ## Modelling fabrication awareness
20
+
21
+ ```mermaid
22
+ flowchart LR
23
+ A[GDS<br>Cells] --> B[Prediction<br>Model]
24
+ A --> F[Nanofabrication<br>and Imaging]
25
+ F --> E
26
+ B --> C[Predicted<br>Cells]
27
+ C --> D[Calculate<br>Differences]
28
+ D --> |Training| B
29
+ E[SEM<br>Images] --> D
30
+ style A fill:none,color:white,stroke:white
31
+ style B fill:none,color:white,stroke:lightgreen
32
+ style C fill:none,color:white,stroke:white
33
+ style D fill:none,color:white,stroke:white
34
+ style E fill:none,color:white,stroke:white
35
+ style F fill:none,color:white,stroke:lightblue
36
+ linkStyle default stroke:white
37
+ ```
38
+
39
+ The foundation of fabrication-aware design lies in building a model that accurately predicts how designs will manifest on the chip. Our modeling system achieves this through a pipeline that combines deep learning with real nanofabrication data, as shown in the diagram above.
40
+
41
+ !!! tip "Models"
42
+
43
+ PreFab handles this part of the process. See our [models documentation](models.md) for more details. [Reach out to us](mailto:hi@prefabphotonics.com) if you'd like to see support for a new fabrication process.
44
+
45
+ A nanofabrication process transforms designs into physical devices through multiple steps, each with unique parameters and inherent variability across fabrication runs and wafer locations. Our approach simplifies this complexity by directly modeling the relationship between design inputs and fabricated outcomes, without modeling intermediate steps.
46
+
47
+ The foundation of this system is our training data generation. GDS layout cells with varying features and distributions are fabricated, followed by high-resolution SEM imaging to capture the results. This creates paired design-outcome datasets that represent the complete process behavior.
48
+
49
+ At the heart of the system, a neural network model processes GDS layouts to predict post-fabrication structures. The model continuously refines its predictions by comparing against SEM images and updating its understanding through iterative training. Through this process, we train separate models for each fabrication process, enabling accurate predictions of manufacturing outcomes.
50
+
51
+ > For a simple look at how the prediction model works for a single process, see our [prediction notebook](examples/1_prediction.ipynb).
52
+
53
+ ## Design verification
54
+
55
+ ```mermaid
56
+ flowchart LR
57
+ A[Device<br>Design] --> B[Prediction<br>Model]
58
+ B --> C[Predicted<br>Design]
59
+ C --> D[EM<br>Simulation]
60
+ D --> E[Compare<br>Results]
61
+ A --> D
62
+ E -.-> |Manual Design Iteration| A
63
+ style A fill:none,color:white,stroke:white
64
+ style B fill:none,color:white,stroke:lightgreen
65
+ style C fill:none,color:white,stroke:white
66
+ style D fill:none,color:white,stroke:yellow
67
+ style E fill:none,color:white,stroke:white
68
+ linkStyle default stroke:white
69
+ ```
70
+
71
+ Once we can predict fabrication outcomes with a prediction model, the next step is verifying how they'll affect device performance. The verification workflow combines these predictions with electromagnetic simulations like FDTD to provide a better picture of real-world behavior.
72
+
73
+ The process begins with a prediction of how the device design will appear after fabrication. The original and predicted structures are simulated to understand how fabrication effects will impact performance. Especially for complex devices that push the limits of fabrication, this comparison provides valuable insights for design iteration, enabling data-driven decisions about necessary adjustments.
74
+
75
+ This approach eliminates much of the guesswork in photonic circuit development. Rather than relying on intuition or empirical rules of thumb, designers can make informed choices based on accurate predictions of fabricated performance. By PreFab being written in Python, we can easily integrate with other simulation and layout tools.
76
+
77
+ > For a practical example of this workflow, see our [prediction and simulation tutorial](examples/5_prediction_simulation.ipynb).
78
+
79
+ ## Design correction
80
+
81
+ ```mermaid
82
+ flowchart LR
83
+ A[Device<br>Design] --> B[Correction<br>Model]
84
+ B --> C[Corrected<br>Design]
85
+ C -.-> D[Design<br>Verification]
86
+ style A fill:none,color:white,stroke:white
87
+ style B fill:none,color:white,stroke:lightgreen
88
+ style C fill:none,color:white,stroke:white
89
+ style D fill:none,color:white
90
+ linkStyle default stroke:white
91
+ ```
92
+
93
+ While verification helps identify potential issues, design correction takes this a step further by automatically compensating for fabrication effects. The correction model works similarly to the prediction model but in reverse—instead of predicting fabricated shapes from designs, it generates designs that will fabricate into desired shapes.
94
+
95
+ The correction model generates a corrected design with precise geometric adjustments—adding material where erosion is expected, removing it where dilation is anticipated, and adjusting corners to account for rounding effects. This corrected design can be sent directly to fabrication or, optionally, through the verification workflow for additional confidence. As many designs—even simple ones—can create impossible-to-replicate structures (e.g., a 90° corner), the correction process will never be able to create a perfect design (we are still bound to fundamental physical limits), but we find that corrections always offer a significant degree of useful improvement.
96
+
97
+ This approach transforms fabrication effects from an unavoidable source of error into a controllable variable. Instead of using conservative design margins, we enable targeted corrections that push designs closer to their theoretical limits while maintaining manufacturability.
98
+
99
+ For existing designs, this correction workflow is a great way to improve performance without having to start from scratch.
100
+
101
+ > For a simplified example of design correction, see our [correction notebook](examples/2_correction.ipynb).
102
+
103
+ ## Fabrication-aware inverse design
104
+
105
+ ```mermaid
106
+ flowchart LR
107
+ A[Device<br>Design] --> B[Prediction<br>Model]
108
+ B --> C[Predicted<br>Design]
109
+ C --> D[EM<br>Simulation]
110
+ D --> E[Gradient<br>Calculation]
111
+ E --> |Optimization| A
112
+ style A fill:none,color:white,stroke:white
113
+ style B fill:none,color:white,stroke:lightgreen
114
+ style C fill:none,color:white,stroke:white
115
+ style D fill:none,color:white,stroke:yellow
116
+ style E fill:none,color:white,stroke:white
117
+ linkStyle default stroke:white
118
+ ```
119
+
120
+ The ultimate integration of fabrication awareness comes in the form of fabrication-aware inverse design or FAID, where fabrication effects are incorporated directly into the optimization process itself. Rather than appending fabrication awareness as a post-processing step, here it is incorporated into the optimization loop itself to create designs that are inherently manufacturable.
121
+
122
+ This is especially useful in designing around aspects of the fabrication process (e.g., etching and stochastic effects) that cannot be corrected with design parameter tuning. **In other words, FAID produces the best possible design given the limits of fabrication.**
123
+
124
+ The optimization loop begins with an initial design and uses the prediction model to anticipate its fabricated form. This predicted structure is then simulated, from which we calculate gradients that guide design updates (depending on the optimization algorithm). The process repeats, continuously refining the design while accounting for both performance targets and fabrication constraints. The result is designs that are inherently manufacturable while meeting performance requirements.
125
+
126
+ > For a detailed example of this advanced workflow, see our [fabrication-aware inverse design tutorial](examples/6_fabrication-aware_inverse_design.ipynb).
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: Home
3
+ description: Documentation for PreFab - a virtual nanofab for photonic integrated circuit design
4
+ ---
5
+ <img src="assets/prefab_logo_box.svg" alt="PreFab logo" width="80">
6
+
7
+ PreFab is a virtual nanofabrication environment that leverages deep learning to model fabrication-induced structural variations in integrated photonic devices. Our mission is to bridge the gap between design and fabrication in photonic integrated circuits.
8
+
9
+ ## What PreFab does
10
+
11
+ ### Prediction of fabrication
12
+
13
+ Anticipate how your designs will be affected by real fabrication processes. PreFab predicts process-induced structural variations: corner rounding, loss of small features, filling of narrow gaps, sidewall angle variations, and stochastic effects.
14
+
15
+ ![Example of PreFab prediction](assets/promo_p.png)
16
+
17
+ ### Correction of fabrication
18
+
19
+ Automatically optimize your designs to ensure fabricated results match your specifications. Our correction algorithms help minimize structural variations and reduce performance discrepancies between simulations and fabricated devices.
20
+
21
+ ![Example of PreFab correction](assets/promo_c.png)
22
+
23
+ ## Getting started
24
+
25
+ !!! tip "Quick links"
26
+ 1. [Setup guide](setup.md)
27
+ 2. [Learn about fabrication-aware design](fab_aware_design.md)
28
+ 3. [Explore example notebooks](examples/1_prediction.ipynb)
29
+
30
+ !!! info "Try Rosette (beta)"
31
+ Want a more visual experience? Try the [Rosette beta](https://rosette.dev) - our new layout tool with PreFab models built in, designed for rapid chip design.
32
+
33
+ ## Get in touch
34
+
35
+ PreFab is continuously evolving to serve the photonics community better. We welcome your feedback and contributions. Share your thoughts via [email](mailto:hi@prefabphotonics.com), report issues on [GitHub](https://github.com/PreFab-Photonics/PreFab/issues), or follow our updates on [LinkedIn](https://www.linkedin.com/company/prefab-photonics).
@@ -0,0 +1,8 @@
1
+ # Models
2
+
3
+ | Foundry | Process | Latest Version | Latest Dataset | Model Name | Model Tag |
4
+ | ------- | ------- | ----------------- | ---------------- | ----------- | --------- |
5
+ | ANT | NanoSOI | ANF1 (May 6 2024) | d10 (Jun 8 2024) | ANT_NanoSOI | ANF1-d10 |
6
+ | ANT | SiN | ANF1 (May 6 2024) | d1 (Jan 31 2024) | ANT_SiN | ANF1-d1 |
7
+
8
+ For additional foundry and process models, feel free to contact us.
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: Setup
3
+ description: This guide will get you all set up and ready to use the PreFab API.
4
+ ---
5
+
6
+ Follow the steps below to install and authenticate the [PreFab Python package](https://pypi.org/project/prefab/).
7
+
8
+ !!! info "Python"
9
+
10
+ If you are new to Python, we recommend starting with the [Python for Photonics](blog/posts/python-for-photonics.md) blog post.
11
+
12
+ ## Install PreFab
13
+
14
+ ### From PyPI
15
+
16
+ You can easily install PreFab using pip, which is the Python package installer. This method is suitable for most users.
17
+
18
+ ```sh
19
+ pip install prefab
20
+ ```
21
+
22
+ ### From GitHub
23
+
24
+ For those who wish to make changes to the source code for their own development purposes, PreFab can also be installed directly from [GitHub](https://github.com/PreFab-Photonics/PreFab).
25
+
26
+ ```sh
27
+ git clone https://github.com/PreFab-Photonics/PreFab.git
28
+ cd PreFab
29
+ pip install -e .
30
+ ```
31
+
32
+ ## Sign up
33
+
34
+ Before you can make PreFab requests, you will need to create an account. Sign up [here](https://www.prefabphotonics.com/login). PreFab models are currently available for all registered users.
35
+
36
+ ## Authenticate PreFab token
37
+
38
+ To link your PreFab account to the API, you will need to create an authentication token. You can do this by running the following command in your terminal. This will open a browser window where you can log in and generate a token.
39
+
40
+ ```sh
41
+ prefab setup
42
+ ```
43
+
44
+ ## Verify installation
45
+
46
+ To verify that PreFab is setup correctly, you can run the following Python code.
47
+
48
+ ```python
49
+ import prefab as pf
50
+
51
+ device = pf.shapes.target()
52
+ prediction = device.predict(model=pf.models["ANT_NanoSOI"])
53
+ ```
54
+
55
+ If the code runs without errors, you have successfully installed and authenticated PreFab. If not, please reach out to us at [support@prefabphotonics.com](mailto:support@prefabphotonics.com).
@@ -0,0 +1,81 @@
1
+ [data-md-color-scheme="prefab"] {
2
+ --md-primary-fg-color: hsla(0, 0%, 10%, 1);
3
+ --md-primary-fg-color--light: hsla(0, 0%, 25%, 1);
4
+ --md-primary-fg-color--dark: hsla(0, 0%, 5%, 0.87);
5
+ --md-primary-bg-color: hsla(0, 0%, 100%, 1);
6
+ --md-primary-bg-color--light: hsla(0, 0%, 100%, 0.7);
7
+
8
+ --md-accent-fg-color: hsla(204, 100%, 72%, 1);
9
+ --md-accent-fg-color--transparent: hsla(204, 100%, 72%, 0.1);
10
+ --md-accent-bg-color: hsla(0, 0%, 100%, 1);
11
+ --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7);
12
+
13
+ --md-hue: 225deg;
14
+
15
+ --md-default-fg-color: hsla(0, 0%, 100%, 0.92);
16
+ --md-default-fg-color--light: hsla(0, 0%, 100%, 0.65);
17
+ --md-default-fg-color--lighter: hsla(0, 0%, 100%, 0.4);
18
+ --md-default-fg-color--lightest: hsla(0, 0%, 100%, 0.1);
19
+ --md-default-bg-color: hsla(220, 10%, 12%, 1);
20
+ --md-default-bg-color--light: hsla(220, 10%, 10%, 0.7);
21
+ --md-default-bg-color--lighter: hsla(220, 10%, 8%, 0.3);
22
+ --md-default-bg-color--lightest: hsla(220, 10%, 6%, 0.12);
23
+
24
+ --md-code-fg-color: hsla(0, 0%, 95%, 1);
25
+ --md-code-bg-color: hsla(220, 10%, 16%, 1);
26
+
27
+ --md-code-hl-color: hsla(204, 100%, 72%, 1);
28
+ --md-code-hl-color--light: hsla(204, 100%, 72%, 0.1);
29
+
30
+ --md-code-hl-number-color: hsla(358, 100%, 75%, 1);
31
+ --md-code-hl-special-color: hsla(326, 100%, 74%, 1);
32
+ --md-code-hl-function-color: hsla(291, 85%, 75%, 1);
33
+ --md-code-hl-constant-color: hsla(250, 85%, 75%, 1);
34
+ --md-code-hl-keyword-color: hsla(204, 100%, 72%, 1);
35
+ --md-code-hl-string-color: hsla(150, 85%, 70%, 1);
36
+ --md-code-hl-name-color: var(--md-code-fg-color);
37
+ --md-code-hl-operator-color: var(--md-default-fg-color--light);
38
+ --md-code-hl-punctuation-color: var(--md-default-fg-color--light);
39
+ --md-code-hl-comment-color: var(--md-default-fg-color--light);
40
+ --md-code-hl-generic-color: var(--md-default-fg-color--light);
41
+ --md-code-hl-variable-color: var(--md-default-fg-color--light);
42
+
43
+ --md-typeset-color: var(--md-default-fg-color);
44
+ --md-typeset-a-color: hsla(204, 100%, 72%, 1);
45
+
46
+ --md-typeset-del-color: hsla(358, 100%, 65%, 0.15);
47
+ --md-typeset-ins-color: hsla(150, 100%, 50%, 0.15);
48
+
49
+ --md-typeset-kbd-color: hsla(220, 10%, 15%, 1);
50
+ --md-typeset-kbd-accent-color: hsla(220, 10%, 20%, 1);
51
+ --md-typeset-kbd-border-color: hsla(220, 10%, 30%, 1);
52
+
53
+ --md-typeset-mark-color: hsla(60, 100%, 50%, 0.3);
54
+
55
+ --md-typeset-table-color: hsla(0, 0%, 100%, 0.12);
56
+ --md-typeset-table-color--light: hsla(0, 0%, 100%, 0.035);
57
+
58
+ --md-admonition-fg-color: var(--md-default-fg-color);
59
+ --md-admonition-bg-color: hsla(220, 10%, 12%, 1);
60
+
61
+ --md-warning-fg-color: hsla(0, 0%, 100%, 0.92);
62
+ --md-warning-bg-color: hsla(45, 100%, 35%, 1);
63
+
64
+ --md-footer-fg-color: hsla(0, 0%, 100%, 1);
65
+ --md-footer-fg-color--light: hsla(0, 0%, 100%, 0.7);
66
+ --md-footer-fg-color--lighter: hsla(0, 0%, 100%, 0.45);
67
+ --md-footer-bg-color: hsla(220, 10%, 12%, 1);
68
+ --md-footer-bg-color--dark: hsla(220, 10%, 12%, 0.32);
69
+
70
+ --md-shadow-z1:
71
+ 0 #{px2rem(4px)} #{px2rem(10px)} hsla(0, 0%, 0%, 0.3),
72
+ 0 0 #{px2rem(1px)} hsla(0, 0%, 0%, 0.2);
73
+
74
+ --md-shadow-z2:
75
+ 0 #{px2rem(4px)} #{px2rem(10px)} hsla(0, 0%, 0%, 0.4),
76
+ 0 0 #{px2rem(1px)} hsla(0, 0%, 0%, 0.35);
77
+
78
+ --md-shadow-z3:
79
+ 0 #{px2rem(4px)} #{px2rem(10px)} hsla(0, 0%, 0%, 0.5),
80
+ 0 0 #{px2rem(1px)} hsla(0, 0%, 0%, 0.45);
81
+ }
@@ -5,10 +5,12 @@ repo_url: https://github.com/PreFab-Photonics/PreFab
5
5
  repo_name: PreFab-Photonics/PreFab
6
6
 
7
7
  nav:
8
- - Home:
9
- - Getting started: index.md
10
- - Model library: models.md
11
- - Changelog: CHANGELOG.md
8
+ - Home: index.md
9
+ - Setup: setup.md
10
+ - Fab-aware design: fab_aware_design.md
11
+ - Model library: models.md
12
+ - Changelog: CHANGELOG.md
13
+ - Blog: blog/index.md
12
14
  - Examples:
13
15
  - Making a prediction: examples/1_prediction.ipynb
14
16
  - Making a correction: examples/2_correction.ipynb
@@ -16,8 +18,6 @@ nav:
16
18
  - SEM generation: examples/4_SEM_generation.ipynb
17
19
  - Simulating a predicted device: examples/5_prediction_simulation.ipynb
18
20
  - Fabrication-aware inverse design: examples/6_fabrication-aware_inverse_design.ipynb
19
- - Blog:
20
- - blog/index.md
21
21
  - Reference:
22
22
  - Compare: reference/compare.md
23
23
  - Device: reference/device.md
@@ -31,22 +31,19 @@ theme:
31
31
  name: "material"
32
32
  custom_dir: docs/overrides
33
33
  palette:
34
- scheme: slate
35
- primary: black
36
- accent: yellow
34
+ scheme: prefab
37
35
  font:
38
- text: Roboto
39
- code: Roboto Mono
36
+ text: Geist
37
+ code: Geist Mono
40
38
  language: en
41
- logo: assets/logo-white.png
39
+ logo: assets/prefab_logo_box.svg
42
40
  favicon: assets/favicon.ico
43
- # icon:
44
- # repo: fontawesome/brands/github
41
+ icon:
42
+ repo: fontawesome/brands/github
45
43
  features:
46
44
  - announce.dismiss
47
45
  - navigation.instant
48
46
  - navigation.instant.progress
49
- - navigation.tabs
50
47
  - navigation.sections
51
48
  - navigation.footer
52
49
  - content.code.copy
@@ -68,12 +65,16 @@ extra:
68
65
  - icon: fontawesome/brands/python
69
66
  link: https://pypi.org/project/prefab/
70
67
 
71
- copyright: Copyright &copy; 2024 PreFab Photonics
68
+ copyright: Copyright &copy; 2025 PreFab Photonics
72
69
 
73
70
  markdown_extensions:
74
71
  - admonition
75
72
  - pymdownx.details
76
- - pymdownx.superfences
73
+ - pymdownx.superfences:
74
+ custom_fences:
75
+ - name: mermaid
76
+ class: mermaid
77
+ format: !!python/name:pymdownx.superfences.fence_code_format
77
78
  - pymdownx.highlight:
78
79
  anchor_linenums: true
79
80
  line_spans: __span
@@ -108,3 +109,6 @@ plugins:
108
109
  - mkdocs-jupyter:
109
110
  include_source: true
110
111
  theme: dark
112
+
113
+ extra_css:
114
+ - stylesheets/extra.css
@@ -5,7 +5,7 @@ Usage:
5
5
  import prefab as pf
6
6
  """
7
7
 
8
- __version__ = "1.1.6"
8
+ __version__ = "1.1.8"
9
9
 
10
10
  from . import compare, geometry, predict, read, shapes
11
11
  from .device import BufferSpec, Device
@@ -50,9 +50,22 @@ class CallbackHandler(BaseHTTPRequestHandler):
50
50
  self.send_response_only(200, "OK")
51
51
  self.send_header("Content-type", "text/html")
52
52
  self.end_headers()
53
- self.wfile.write(
54
- b"Authentication successful, you can close this window."
55
- )
53
+ redirect_html = b"""
54
+ <html>
55
+ <head>
56
+ <meta http-equiv="refresh" content="0;url=https://www.prefabphotonics.com/token-success">
57
+ <style>
58
+ body {
59
+ background-color: #0A0A0A;
60
+ color: #ffffff;
61
+ }
62
+ </style>
63
+ </head>
64
+ <body>
65
+ </body>
66
+ </html>
67
+ """
68
+ self.wfile.write(redirect_html)
56
69
  threading.Thread(target=self.server.shutdown).start()
57
70
  else:
58
71
  self.send_error(400, "Bad Request: Missing tokens in callback URL.")
@@ -9,15 +9,15 @@ from .device import Device
9
9
 
10
10
  def mean_squared_error(device_a: Device, device_b: Device) -> float:
11
11
  """
12
- Calculate the mean squared error (MSE) between two non-binarized devices. A lower
13
- value indicates more similarity.
12
+ Calculate the mean squared error (MSE) between two devices. A lower value indicates
13
+ more similarity.
14
14
 
15
15
  Parameters
16
16
  ----------
17
17
  device_a : Device
18
- The first device (non-binarized).
18
+ The first device.
19
19
  device_b : Device
20
- The second device (non-binarized).
20
+ The second device.
21
21
 
22
22
  Returns
23
23
  -------