gdsfactoryx 9.51.0__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 (560) hide show
  1. gdsfactoryx-9.51.0/LICENSE +21 -0
  2. gdsfactoryx-9.51.0/PKG-INFO +360 -0
  3. gdsfactoryx-9.51.0/README.md +272 -0
  4. gdsfactoryx-9.51.0/gdsfactory/__init__.py +192 -0
  5. gdsfactoryx-9.51.0/gdsfactory/_cell.py +337 -0
  6. gdsfactoryx-9.51.0/gdsfactory/_deprecation.py +13 -0
  7. gdsfactoryx-9.51.0/gdsfactory/_dist_conflict.py +36 -0
  8. gdsfactoryx-9.51.0/gdsfactory/_jax.py +344 -0
  9. gdsfactoryx-9.51.0/gdsfactory/_kcl.py +47 -0
  10. gdsfactoryx-9.51.0/gdsfactory/_ports.py +685 -0
  11. gdsfactoryx-9.51.0/gdsfactory/add_padding.py +139 -0
  12. gdsfactoryx-9.51.0/gdsfactory/add_pins.py +628 -0
  13. gdsfactoryx-9.51.0/gdsfactory/add_ports.py +844 -0
  14. gdsfactoryx-9.51.0/gdsfactory/boolean.py +89 -0
  15. gdsfactoryx-9.51.0/gdsfactory/cli.py +191 -0
  16. gdsfactoryx-9.51.0/gdsfactory/component.py +2754 -0
  17. gdsfactoryx-9.51.0/gdsfactory/component_layout.py +181 -0
  18. gdsfactoryx-9.51.0/gdsfactory/components/__init__.py +425 -0
  19. gdsfactoryx-9.51.0/gdsfactory/components/_schematic.py +202 -0
  20. gdsfactoryx-9.51.0/gdsfactory/components/analog/__init__.py +14 -0
  21. gdsfactoryx-9.51.0/gdsfactory/components/analog/_geometry.py +156 -0
  22. gdsfactoryx-9.51.0/gdsfactory/components/analog/inductors.py +681 -0
  23. gdsfactoryx-9.51.0/gdsfactory/components/analog/interdigital_capacitor.py +127 -0
  24. gdsfactoryx-9.51.0/gdsfactory/components/analog/interdigitated_electrodes.py +159 -0
  25. gdsfactoryx-9.51.0/gdsfactory/components/analog/microstrip.py +213 -0
  26. gdsfactoryx-9.51.0/gdsfactory/components/analog/transformers.py +1374 -0
  27. gdsfactoryx-9.51.0/gdsfactory/components/bends/__init__.py +28 -0
  28. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_circular.py +197 -0
  29. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_circular_heater.py +68 -0
  30. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_euler.py +302 -0
  31. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_modified_hermite.py +391 -0
  32. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_s.py +408 -0
  33. gdsfactoryx-9.51.0/gdsfactory/components/bends/bend_topic.py +283 -0
  34. gdsfactoryx-9.51.0/gdsfactory/components/containers/__init__.py +41 -0
  35. gdsfactoryx-9.51.0/gdsfactory/components/containers/add_fiber_array_optical_south_electrical_north.py +137 -0
  36. gdsfactoryx-9.51.0/gdsfactory/components/containers/add_termination.py +52 -0
  37. gdsfactoryx-9.51.0/gdsfactory/components/containers/add_trenches.py +69 -0
  38. gdsfactoryx-9.51.0/gdsfactory/components/containers/array_component.py +100 -0
  39. gdsfactoryx-9.51.0/gdsfactory/components/containers/array_hexagonal.py +59 -0
  40. gdsfactoryx-9.51.0/gdsfactory/components/containers/array_polar.py +86 -0
  41. gdsfactoryx-9.51.0/gdsfactory/components/containers/component_sequence.py +207 -0
  42. gdsfactoryx-9.51.0/gdsfactory/components/containers/copy_layers.py +37 -0
  43. gdsfactoryx-9.51.0/gdsfactory/components/containers/extend_ports_list.py +46 -0
  44. gdsfactoryx-9.51.0/gdsfactory/components/containers/extension.py +235 -0
  45. gdsfactoryx-9.51.0/gdsfactory/components/containers/pack_doe.py +183 -0
  46. gdsfactoryx-9.51.0/gdsfactory/components/containers/splitter_chain.py +58 -0
  47. gdsfactoryx-9.51.0/gdsfactory/components/containers/splitter_tree.py +157 -0
  48. gdsfactoryx-9.51.0/gdsfactory/components/couplers/__init__.py +28 -0
  49. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler.py +186 -0
  50. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler90.py +76 -0
  51. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler90bend.py +64 -0
  52. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_adiabatic.py +127 -0
  53. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_asymmetric.py +66 -0
  54. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_bent.py +137 -0
  55. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_broadband.py +144 -0
  56. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_full.py +105 -0
  57. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_pulley.py +152 -0
  58. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_ring.py +108 -0
  59. gdsfactoryx-9.51.0/gdsfactory/components/couplers/coupler_straight_asymmetric.py +44 -0
  60. gdsfactoryx-9.51.0/gdsfactory/components/detectors/__init__.py +3 -0
  61. gdsfactoryx-9.51.0/gdsfactory/components/detectors/detector_ge.py +83 -0
  62. gdsfactoryx-9.51.0/gdsfactory/components/dies/__init__.py +22 -0
  63. gdsfactoryx-9.51.0/gdsfactory/components/dies/align.py +112 -0
  64. gdsfactoryx-9.51.0/gdsfactory/components/dies/die.py +105 -0
  65. gdsfactoryx-9.51.0/gdsfactory/components/dies/die_frame_with_pads.py +688 -0
  66. gdsfactoryx-9.51.0/gdsfactory/components/dies/die_with_pads.py +113 -0
  67. gdsfactoryx-9.51.0/gdsfactory/components/dies/seal_ring.py +194 -0
  68. gdsfactoryx-9.51.0/gdsfactory/components/dies/wafer.py +44 -0
  69. gdsfactoryx-9.51.0/gdsfactory/components/edge_couplers/__init__.py +7 -0
  70. gdsfactoryx-9.51.0/gdsfactory/components/edge_couplers/edge_coupler_array.py +181 -0
  71. gdsfactoryx-9.51.0/gdsfactory/components/filters/__init__.py +25 -0
  72. gdsfactoryx-9.51.0/gdsfactory/components/filters/awg.py +202 -0
  73. gdsfactoryx-9.51.0/gdsfactory/components/filters/dbr.py +122 -0
  74. gdsfactoryx-9.51.0/gdsfactory/components/filters/dbr_tapered.py +158 -0
  75. gdsfactoryx-9.51.0/gdsfactory/components/filters/fiber.py +36 -0
  76. gdsfactoryx-9.51.0/gdsfactory/components/filters/fiber_array.py +58 -0
  77. gdsfactoryx-9.51.0/gdsfactory/components/filters/loop_mirror.py +39 -0
  78. gdsfactoryx-9.51.0/gdsfactory/components/filters/mode_converter.py +102 -0
  79. gdsfactoryx-9.51.0/gdsfactory/components/filters/polarization_splitter_rotator.py +111 -0
  80. gdsfactoryx-9.51.0/gdsfactory/components/filters/terminator.py +53 -0
  81. gdsfactoryx-9.51.0/gdsfactory/components/filters/terminator_spiral.py +58 -0
  82. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/__init__.py +29 -0
  83. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/csv_data/grating_coupler_1etch_h220_e70.csv +51 -0
  84. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/csv_data/grating_coupler_2etch_h220_e70_e220.csv +101 -0
  85. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/functions.py +160 -0
  86. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_array.py +133 -0
  87. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_dual_pol.py +148 -0
  88. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_elliptical.py +196 -0
  89. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_elliptical_arbitrary.py +235 -0
  90. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_elliptical_lumerical.py +159 -0
  91. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_elliptical_trenches.py +163 -0
  92. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_loss.py +59 -0
  93. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_rectangular.py +135 -0
  94. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_rectangular_arbitrary.py +149 -0
  95. gdsfactoryx-9.51.0/gdsfactory/components/grating_couplers/grating_coupler_tree.py +50 -0
  96. gdsfactoryx-9.51.0/gdsfactory/components/mems/__init__.py +19 -0
  97. gdsfactoryx-9.51.0/gdsfactory/components/mems/anchored_flexure.py +101 -0
  98. gdsfactoryx-9.51.0/gdsfactory/components/mems/bent_beam.py +137 -0
  99. gdsfactoryx-9.51.0/gdsfactory/components/mems/bolometer.py +194 -0
  100. gdsfactoryx-9.51.0/gdsfactory/components/mems/cantilever.py +85 -0
  101. gdsfactoryx-9.51.0/gdsfactory/components/mems/comb_drive.py +254 -0
  102. gdsfactoryx-9.51.0/gdsfactory/components/mems/doubly_clamped_beam.py +101 -0
  103. gdsfactoryx-9.51.0/gdsfactory/components/mems/folded_spring.py +163 -0
  104. gdsfactoryx-9.51.0/gdsfactory/components/mems/gear.py +97 -0
  105. gdsfactoryx-9.51.0/gdsfactory/components/microfluidics/__init__.py +11 -0
  106. gdsfactoryx-9.51.0/gdsfactory/components/microfluidics/arrow_junction.py +136 -0
  107. gdsfactoryx-9.51.0/gdsfactory/components/microfluidics/h_junction.py +132 -0
  108. gdsfactoryx-9.51.0/gdsfactory/components/microfluidics/meander_channel.py +174 -0
  109. gdsfactoryx-9.51.0/gdsfactory/components/microfluidics/t_junction.py +112 -0
  110. gdsfactoryx-9.51.0/gdsfactory/components/mmis/__init__.py +18 -0
  111. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi.py +129 -0
  112. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi1x2.py +110 -0
  113. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi1x2_with_sbend.py +89 -0
  114. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi2x2.py +108 -0
  115. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi2x2_with_sbend.py +83 -0
  116. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi_90degree_hybrid.py +153 -0
  117. gdsfactoryx-9.51.0/gdsfactory/components/mmis/mmi_tapered.py +189 -0
  118. gdsfactoryx-9.51.0/gdsfactory/components/mzis/__init__.py +22 -0
  119. gdsfactoryx-9.51.0/gdsfactory/components/mzis/mzi.py +339 -0
  120. gdsfactoryx-9.51.0/gdsfactory/components/mzis/mzi_lattice.py +345 -0
  121. gdsfactoryx-9.51.0/gdsfactory/components/mzis/mzi_pads_center.py +137 -0
  122. gdsfactoryx-9.51.0/gdsfactory/components/mzis/mzit.py +300 -0
  123. gdsfactoryx-9.51.0/gdsfactory/components/pads/__init__.py +24 -0
  124. gdsfactoryx-9.51.0/gdsfactory/components/pads/bump_pad.py +173 -0
  125. gdsfactoryx-9.51.0/gdsfactory/components/pads/pad.py +201 -0
  126. gdsfactoryx-9.51.0/gdsfactory/components/pads/pad_gsg.py +108 -0
  127. gdsfactoryx-9.51.0/gdsfactory/components/pads/pads_shorted.py +42 -0
  128. gdsfactoryx-9.51.0/gdsfactory/components/pads/rectangle_with_slits.py +105 -0
  129. gdsfactoryx-9.51.0/gdsfactory/components/pcms/__init__.py +64 -0
  130. gdsfactoryx-9.51.0/gdsfactory/components/pcms/alignment_mark_cross.py +85 -0
  131. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cavity.py +56 -0
  132. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cdsem_all.py +101 -0
  133. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cdsem_bend180.py +74 -0
  134. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cdsem_coupler.py +58 -0
  135. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cdsem_straight.py +55 -0
  136. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cdsem_straight_density.py +51 -0
  137. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cutback_2x2.py +187 -0
  138. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cutback_bend.py +241 -0
  139. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cutback_component.py +114 -0
  140. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cutback_loss.py +173 -0
  141. gdsfactoryx-9.51.0/gdsfactory/components/pcms/cutback_splitter.py +87 -0
  142. gdsfactoryx-9.51.0/gdsfactory/components/pcms/greek_cross.py +165 -0
  143. gdsfactoryx-9.51.0/gdsfactory/components/pcms/litho_calipers.py +61 -0
  144. gdsfactoryx-9.51.0/gdsfactory/components/pcms/litho_ruler.py +39 -0
  145. gdsfactoryx-9.51.0/gdsfactory/components/pcms/litho_steps.py +52 -0
  146. gdsfactoryx-9.51.0/gdsfactory/components/pcms/resistance_meander.py +130 -0
  147. gdsfactoryx-9.51.0/gdsfactory/components/pcms/resistance_sheet.py +73 -0
  148. gdsfactoryx-9.51.0/gdsfactory/components/pcms/resolution_test_pattern.py +56 -0
  149. gdsfactoryx-9.51.0/gdsfactory/components/pcms/ruler.py +86 -0
  150. gdsfactoryx-9.51.0/gdsfactory/components/pcms/vernier_scale.py +74 -0
  151. gdsfactoryx-9.51.0/gdsfactory/components/pcms/verniers.py +45 -0
  152. gdsfactoryx-9.51.0/gdsfactory/components/pcms/version_stamp.py +111 -0
  153. gdsfactoryx-9.51.0/gdsfactory/components/quantum/__init__.py +17 -0
  154. gdsfactoryx-9.51.0/gdsfactory/components/quantum/coupler_capacitive.py +436 -0
  155. gdsfactoryx-9.51.0/gdsfactory/components/quantum/flux_qubit.py +446 -0
  156. gdsfactoryx-9.51.0/gdsfactory/components/quantum/resonator.py +415 -0
  157. gdsfactoryx-9.51.0/gdsfactory/components/quantum/transmon.py +238 -0
  158. gdsfactoryx-9.51.0/gdsfactory/components/rings/__init__.py +33 -0
  159. gdsfactoryx-9.51.0/gdsfactory/components/rings/disk.py +240 -0
  160. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring.py +71 -0
  161. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_crow.py +170 -0
  162. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_crow_couplers.py +122 -0
  163. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_double.py +117 -0
  164. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_double_bend_coupler.py +76 -0
  165. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_heater.py +209 -0
  166. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_pn.py +347 -0
  167. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_single.py +150 -0
  168. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_single_array.py +59 -0
  169. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_single_bend_coupler.py +228 -0
  170. gdsfactoryx-9.51.0/gdsfactory/components/rings/ring_single_dut.py +93 -0
  171. gdsfactoryx-9.51.0/gdsfactory/components/shapes/C.py +66 -0
  172. gdsfactoryx-9.51.0/gdsfactory/components/shapes/L.py +51 -0
  173. gdsfactoryx-9.51.0/gdsfactory/components/shapes/__init__.py +59 -0
  174. gdsfactoryx-9.51.0/gdsfactory/components/shapes/bbox.py +79 -0
  175. gdsfactoryx-9.51.0/gdsfactory/components/shapes/circle.py +31 -0
  176. gdsfactoryx-9.51.0/gdsfactory/components/shapes/circle_wave.py +41 -0
  177. gdsfactoryx-9.51.0/gdsfactory/components/shapes/compass.py +99 -0
  178. gdsfactoryx-9.51.0/gdsfactory/components/shapes/cross.py +73 -0
  179. gdsfactoryx-9.51.0/gdsfactory/components/shapes/dash.py +108 -0
  180. gdsfactoryx-9.51.0/gdsfactory/components/shapes/ellipse.py +38 -0
  181. gdsfactoryx-9.51.0/gdsfactory/components/shapes/fiducial_squares.py +33 -0
  182. gdsfactoryx-9.51.0/gdsfactory/components/shapes/fractal.py +135 -0
  183. gdsfactoryx-9.51.0/gdsfactory/components/shapes/nxn.py +145 -0
  184. gdsfactoryx-9.51.0/gdsfactory/components/shapes/pie_arc.py +51 -0
  185. gdsfactoryx-9.51.0/gdsfactory/components/shapes/rect_su_shape.py +113 -0
  186. gdsfactoryx-9.51.0/gdsfactory/components/shapes/rect_taper.py +75 -0
  187. gdsfactoryx-9.51.0/gdsfactory/components/shapes/rectangle.py +107 -0
  188. gdsfactoryx-9.51.0/gdsfactory/components/shapes/regular_polygon.py +72 -0
  189. gdsfactoryx-9.51.0/gdsfactory/components/shapes/rounded_rectangle.py +107 -0
  190. gdsfactoryx-9.51.0/gdsfactory/components/shapes/star.py +44 -0
  191. gdsfactoryx-9.51.0/gdsfactory/components/shapes/torus.py +87 -0
  192. gdsfactoryx-9.51.0/gdsfactory/components/shapes/torus_wave.py +62 -0
  193. gdsfactoryx-9.51.0/gdsfactory/components/shapes/triangles.py +139 -0
  194. gdsfactoryx-9.51.0/gdsfactory/components/spirals/__init__.py +28 -0
  195. gdsfactoryx-9.51.0/gdsfactory/components/spirals/delay_snake.py +96 -0
  196. gdsfactoryx-9.51.0/gdsfactory/components/spirals/delay_snake2.py +100 -0
  197. gdsfactoryx-9.51.0/gdsfactory/components/spirals/delay_snake_sbend.py +164 -0
  198. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral.py +149 -0
  199. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_archimedes.py +85 -0
  200. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_double.py +62 -0
  201. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_fermat.py +67 -0
  202. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_heater.py +578 -0
  203. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_inductor.py +81 -0
  204. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_logarithmic.py +68 -0
  205. gdsfactoryx-9.51.0/gdsfactory/components/spirals/spiral_rectangular.py +87 -0
  206. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/__init__.py +15 -0
  207. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/hline.py +72 -0
  208. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/optimal_90deg.py +90 -0
  209. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/optimal_hairpin.py +123 -0
  210. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/optimal_step.py +211 -0
  211. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/snspd.py +107 -0
  212. gdsfactoryx-9.51.0/gdsfactory/components/superconductors/ytron.py +128 -0
  213. gdsfactoryx-9.51.0/gdsfactory/components/tapers/__init__.py +34 -0
  214. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_10_100.csv +501 -0
  215. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_10_150.csv +501 -0
  216. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_10_200.csv +501 -0
  217. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_11_200.csv +501 -0
  218. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_12_200.csv +501 -0
  219. gdsfactoryx-9.51.0/gdsfactory/components/tapers/csv_data/taper_strip_0p5_3_36.csv +101 -0
  220. gdsfactoryx-9.51.0/gdsfactory/components/tapers/ramp.py +45 -0
  221. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper.py +358 -0
  222. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_adiabatic.py +136 -0
  223. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_cross_section.py +100 -0
  224. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_from_csv.py +92 -0
  225. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_hecken.py +147 -0
  226. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_meander.py +186 -0
  227. gdsfactoryx-9.51.0/gdsfactory/components/tapers/taper_parabolic.py +44 -0
  228. gdsfactoryx-9.51.0/gdsfactory/components/texts/__init__.py +16 -0
  229. gdsfactoryx-9.51.0/gdsfactory/components/texts/fonts/OCR-A.ttf +0 -0
  230. gdsfactoryx-9.51.0/gdsfactory/components/texts/text.py +121 -0
  231. gdsfactoryx-9.51.0/gdsfactory/components/texts/text_freetype.py +125 -0
  232. gdsfactoryx-9.51.0/gdsfactory/components/texts/text_rectangular.py +116 -0
  233. gdsfactoryx-9.51.0/gdsfactory/components/texts/text_rectangular_font.py +325 -0
  234. gdsfactoryx-9.51.0/gdsfactory/components/vias/__init__.py +34 -0
  235. gdsfactoryx-9.51.0/gdsfactory/components/vias/via.py +129 -0
  236. gdsfactoryx-9.51.0/gdsfactory/components/vias/via_chain.py +164 -0
  237. gdsfactoryx-9.51.0/gdsfactory/components/vias/via_corner.py +117 -0
  238. gdsfactoryx-9.51.0/gdsfactory/components/vias/via_stack.py +485 -0
  239. gdsfactoryx-9.51.0/gdsfactory/components/vias/via_stack_with_offset.py +229 -0
  240. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/__init__.py +39 -0
  241. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/crossing_waveguide.py +308 -0
  242. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight.py +142 -0
  243. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_heater_doped.py +280 -0
  244. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_heater_meander.py +268 -0
  245. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_heater_meander_doped.py +255 -0
  246. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_heater_metal.py +293 -0
  247. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_piecewise.py +64 -0
  248. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_pin.py +98 -0
  249. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/straight_pin_slot.py +131 -0
  250. gdsfactoryx-9.51.0/gdsfactory/components/waveguides/wire.py +266 -0
  251. gdsfactoryx-9.51.0/gdsfactory/config.py +204 -0
  252. gdsfactoryx-9.51.0/gdsfactory/constants.py +2032 -0
  253. gdsfactoryx-9.51.0/gdsfactory/containers.py +89 -0
  254. gdsfactoryx-9.51.0/gdsfactory/cross_section/__init__.py +159 -0
  255. gdsfactoryx-9.51.0/gdsfactory/cross_section/base.py +518 -0
  256. gdsfactoryx-9.51.0/gdsfactory/cross_section/heater.py +439 -0
  257. gdsfactoryx-9.51.0/gdsfactory/cross_section/pn_junction.py +1121 -0
  258. gdsfactoryx-9.51.0/gdsfactory/cross_section/presets.py +658 -0
  259. gdsfactoryx-9.51.0/gdsfactory/cross_section/utils.py +373 -0
  260. gdsfactoryx-9.51.0/gdsfactory/difftest.py +643 -0
  261. gdsfactoryx-9.51.0/gdsfactory/difftest_git.py +26 -0
  262. gdsfactoryx-9.51.0/gdsfactory/export/__init__.py +21 -0
  263. gdsfactoryx-9.51.0/gdsfactory/export/to_3d.py +133 -0
  264. gdsfactoryx-9.51.0/gdsfactory/export/to_gerber.py +325 -0
  265. gdsfactoryx-9.51.0/gdsfactory/export/to_np.py +59 -0
  266. gdsfactoryx-9.51.0/gdsfactory/export/to_stl.py +103 -0
  267. gdsfactoryx-9.51.0/gdsfactory/export/to_svg.py +153 -0
  268. gdsfactoryx-9.51.0/gdsfactory/font.py +213 -0
  269. gdsfactoryx-9.51.0/gdsfactory/functions.py +557 -0
  270. gdsfactoryx-9.51.0/gdsfactory/generic_tech/__init__.py +57 -0
  271. gdsfactoryx-9.51.0/gdsfactory/generic_tech/generic_tech.sh +4 -0
  272. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/README.md +7 -0
  273. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/d25/generic_tech.lyd25 +65 -0
  274. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/drc/Makefile +5 -0
  275. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/drc/errors.py +92 -0
  276. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/grain.xml +30 -0
  277. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/layers.lyp +1482 -0
  278. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/.gitignore +1 -0
  279. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/Makefile +8 -0
  280. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/README.md +98 -0
  281. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/drc_malformed/README.md +70 -0
  282. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/drc_malformed/generic_tech_malformed.drc +369 -0
  283. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/drc_malformed/run_drc.py +330 -0
  284. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/generic_tech.lvs +258 -0
  285. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/custom_classes.lvs +122 -0
  286. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/devices_connections.lvs +17 -0
  287. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/general_connections.lvs +26 -0
  288. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/general_derivations.lvs +3 -0
  289. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/heater_connections.lvs +7 -0
  290. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/heater_derivations.lvs +13 -0
  291. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/heater_extraction.lvs +15 -0
  292. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/rule_decks/layers_definitions.lvs +253 -0
  293. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/lvs/run_lvs.py +285 -0
  294. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/pymacros/set_menus.lym +33 -0
  295. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/pymacros/set_shortcuts.lym +23 -0
  296. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/python/__init__.py +0 -0
  297. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/python/kgdsfactory/__init__.py +5 -0
  298. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/python/kgdsfactory/shortcuts.py +100 -0
  299. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/Makefile +12 -0
  300. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/d25/generic_tech.lyd25 +65 -0
  301. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/generic.layerstack +56 -0
  302. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/xsection_generic.pyxs +149 -0
  303. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/xsection_generic.xs +139 -0
  304. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/xsection_planarized.pyxs +175 -0
  305. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech/xsection_planarized.xs +169 -0
  306. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/tech.lyt +169 -0
  307. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/xsection/xsection_generic.pyxs +149 -0
  308. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/xsection/xsection_generic.xs +139 -0
  309. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/xsection/xsection_planarized.pyxs +175 -0
  310. gdsfactoryx-9.51.0/gdsfactory/generic_tech/klayout/xsection/xsection_planarized.xs +169 -0
  311. gdsfactoryx-9.51.0/gdsfactory/generic_tech/layer_map.py +1 -0
  312. gdsfactoryx-9.51.0/gdsfactory/generic_tech/layer_stack.py +1 -0
  313. gdsfactoryx-9.51.0/gdsfactory/generic_tech/simulation_settings.py +1 -0
  314. gdsfactoryx-9.51.0/gdsfactory/get_factories.py +160 -0
  315. gdsfactoryx-9.51.0/gdsfactory/get_netlist.py +934 -0
  316. gdsfactoryx-9.51.0/gdsfactory/gpdk/__init__.py +111 -0
  317. gdsfactoryx-9.51.0/gdsfactory/gpdk/get_klayout_pyxs.py +301 -0
  318. gdsfactoryx-9.51.0/gdsfactory/gpdk/layer_map.py +70 -0
  319. gdsfactoryx-9.51.0/gdsfactory/gpdk/layer_stack.py +419 -0
  320. gdsfactoryx-9.51.0/gdsfactory/gpdk/layer_views.yaml +503 -0
  321. gdsfactoryx-9.51.0/gdsfactory/gpdk/simulation_settings.py +163 -0
  322. gdsfactoryx-9.51.0/gdsfactory/grid.py +381 -0
  323. gdsfactoryx-9.51.0/gdsfactory/install.py +267 -0
  324. gdsfactoryx-9.51.0/gdsfactory/klayout_bridge.py +606 -0
  325. gdsfactoryx-9.51.0/gdsfactory/labels/__init__.py +17 -0
  326. gdsfactoryx-9.51.0/gdsfactory/labels/add_label_yaml.py +85 -0
  327. gdsfactoryx-9.51.0/gdsfactory/labels/add_labels.py +29 -0
  328. gdsfactoryx-9.51.0/gdsfactory/labels/ehva.py +92 -0
  329. gdsfactoryx-9.51.0/gdsfactory/labels/write_labels.py +93 -0
  330. gdsfactoryx-9.51.0/gdsfactory/labels/write_test_manifest.py +89 -0
  331. gdsfactoryx-9.51.0/gdsfactory/name.py +229 -0
  332. gdsfactoryx-9.51.0/gdsfactory/pack.py +299 -0
  333. gdsfactoryx-9.51.0/gdsfactory/path.py +1946 -0
  334. gdsfactoryx-9.51.0/gdsfactory/pdk.py +995 -0
  335. gdsfactoryx-9.51.0/gdsfactory/plot.py +110 -0
  336. gdsfactoryx-9.51.0/gdsfactory/port.py +851 -0
  337. gdsfactoryx-9.51.0/gdsfactory/py.typed +0 -0
  338. gdsfactoryx-9.51.0/gdsfactory/rasterize.py +166 -0
  339. gdsfactoryx-9.51.0/gdsfactory/read/__init__.py +18 -0
  340. gdsfactoryx-9.51.0/gdsfactory/read/from_gdspaths.py +39 -0
  341. gdsfactoryx-9.51.0/gdsfactory/read/from_np.py +117 -0
  342. gdsfactoryx-9.51.0/gdsfactory/read/from_updk.py +288 -0
  343. gdsfactoryx-9.51.0/gdsfactory/read/from_yaml.py +2165 -0
  344. gdsfactoryx-9.51.0/gdsfactory/read/from_yaml_gen.py +582 -0
  345. gdsfactoryx-9.51.0/gdsfactory/read/from_yaml_template.py +209 -0
  346. gdsfactoryx-9.51.0/gdsfactory/read/import_gds.py +198 -0
  347. gdsfactoryx-9.51.0/gdsfactory/routing/__init__.py +63 -0
  348. gdsfactoryx-9.51.0/gdsfactory/routing/_dual.py +788 -0
  349. gdsfactoryx-9.51.0/gdsfactory/routing/_kf_router.py +1104 -0
  350. gdsfactoryx-9.51.0/gdsfactory/routing/_traced_manhattan.py +2838 -0
  351. gdsfactoryx-9.51.0/gdsfactory/routing/_traced_router.py +279 -0
  352. gdsfactoryx-9.51.0/gdsfactory/routing/add_electrical_pads_shortest.py +88 -0
  353. gdsfactoryx-9.51.0/gdsfactory/routing/add_electrical_pads_top.py +92 -0
  354. gdsfactoryx-9.51.0/gdsfactory/routing/add_electrical_pads_top_dc.py +89 -0
  355. gdsfactoryx-9.51.0/gdsfactory/routing/add_fiber_array.py +129 -0
  356. gdsfactoryx-9.51.0/gdsfactory/routing/add_fiber_single.py +196 -0
  357. gdsfactoryx-9.51.0/gdsfactory/routing/add_pads.py +258 -0
  358. gdsfactoryx-9.51.0/gdsfactory/routing/auto_taper.py +213 -0
  359. gdsfactoryx-9.51.0/gdsfactory/routing/factories.py +48 -0
  360. gdsfactoryx-9.51.0/gdsfactory/routing/fanout2x2.py +95 -0
  361. gdsfactoryx-9.51.0/gdsfactory/routing/resolve_pins.py +94 -0
  362. gdsfactoryx-9.51.0/gdsfactory/routing/route_astar.py +641 -0
  363. gdsfactoryx-9.51.0/gdsfactory/routing/route_bundle.py +673 -0
  364. gdsfactoryx-9.51.0/gdsfactory/routing/route_bundle_all_angle.py +542 -0
  365. gdsfactoryx-9.51.0/gdsfactory/routing/route_bundle_sbend.py +166 -0
  366. gdsfactoryx-9.51.0/gdsfactory/routing/route_dubins.py +317 -0
  367. gdsfactoryx-9.51.0/gdsfactory/routing/route_fiber_array.py +435 -0
  368. gdsfactoryx-9.51.0/gdsfactory/routing/route_ports_to_side.py +537 -0
  369. gdsfactoryx-9.51.0/gdsfactory/routing/route_quad.py +97 -0
  370. gdsfactoryx-9.51.0/gdsfactory/routing/route_sharp.py +393 -0
  371. gdsfactoryx-9.51.0/gdsfactory/routing/route_single.py +413 -0
  372. gdsfactoryx-9.51.0/gdsfactory/routing/route_single_sbend.py +109 -0
  373. gdsfactoryx-9.51.0/gdsfactory/routing/route_south.py +279 -0
  374. gdsfactoryx-9.51.0/gdsfactory/routing/sort_ports.py +86 -0
  375. gdsfactoryx-9.51.0/gdsfactory/routing/utils.py +68 -0
  376. gdsfactoryx-9.51.0/gdsfactory/routing/validation.py +114 -0
  377. gdsfactoryx-9.51.0/gdsfactory/samples/00_hello_world.py +15 -0
  378. gdsfactoryx-9.51.0/gdsfactory/samples/01_component_pcell.py +73 -0
  379. gdsfactoryx-9.51.0/gdsfactory/samples/01_component_pcell_with_parameters.py +20 -0
  380. gdsfactoryx-9.51.0/gdsfactory/samples/01_component_pcell_with_ports.py +35 -0
  381. gdsfactoryx-9.51.0/gdsfactory/samples/02_component_autoname.py +17 -0
  382. gdsfactoryx-9.51.0/gdsfactory/samples/03_move.py +27 -0
  383. gdsfactoryx-9.51.0/gdsfactory/samples/04_connect.py +33 -0
  384. gdsfactoryx-9.51.0/gdsfactory/samples/05_remove_layers.py +30 -0
  385. gdsfactoryx-9.51.0/gdsfactory/samples/05_remove_layers_overlapping.py +30 -0
  386. gdsfactoryx-9.51.0/gdsfactory/samples/06_remapping_layers.py +34 -0
  387. gdsfactoryx-9.51.0/gdsfactory/samples/07_flattening_device.py +34 -0
  388. gdsfactoryx-9.51.0/gdsfactory/samples/08_delete_cell.py +21 -0
  389. gdsfactoryx-9.51.0/gdsfactory/samples/08_grid.py +16 -0
  390. gdsfactoryx-9.51.0/gdsfactory/samples/09_pack.py +16 -0
  391. gdsfactoryx-9.51.0/gdsfactory/samples/11_component_layout.py +67 -0
  392. gdsfactoryx-9.51.0/gdsfactory/samples/11_component_layout_bend_s_offset.py +20 -0
  393. gdsfactoryx-9.51.0/gdsfactory/samples/12_component_instance_arrays.py +16 -0
  394. gdsfactoryx-9.51.0/gdsfactory/samples/12_component_refs.py +97 -0
  395. gdsfactoryx-9.51.0/gdsfactory/samples/13_component_netlist.py +64 -0
  396. gdsfactoryx-9.51.0/gdsfactory/samples/14_component_connectivity.py +92 -0
  397. gdsfactoryx-9.51.0/gdsfactory/samples/15_component_sequence1.py +57 -0
  398. gdsfactoryx-9.51.0/gdsfactory/samples/16_component_sequence2.py +58 -0
  399. gdsfactoryx-9.51.0/gdsfactory/samples/17_port_register_cross_section.py +61 -0
  400. gdsfactoryx-9.51.0/gdsfactory/samples/17_ports.py +46 -0
  401. gdsfactoryx-9.51.0/gdsfactory/samples/18_port_pins.py +11 -0
  402. gdsfactoryx-9.51.0/gdsfactory/samples/19_references.py +31 -0
  403. gdsfactoryx-9.51.0/gdsfactory/samples/20_components.py +23 -0
  404. gdsfactoryx-9.51.0/gdsfactory/samples/21_add_fiber_array.py +26 -0
  405. gdsfactoryx-9.51.0/gdsfactory/samples/22_add_pads.py +15 -0
  406. gdsfactoryx-9.51.0/gdsfactory/samples/24_doe.py +15 -0
  407. gdsfactoryx-9.51.0/gdsfactory/samples/24_doe_3.py +20 -0
  408. gdsfactoryx-9.51.0/gdsfactory/samples/25_slot_cross_section.py +10 -0
  409. gdsfactoryx-9.51.0/gdsfactory/samples/26_cross_section_copy.py +12 -0
  410. gdsfactoryx-9.51.0/gdsfactory/samples/30_lidar.py +62 -0
  411. gdsfactoryx-9.51.0/gdsfactory/samples/30_lidar_pcell.py +78 -0
  412. gdsfactoryx-9.51.0/gdsfactory/samples/30_lidar_with_pads.py +89 -0
  413. gdsfactoryx-9.51.0/gdsfactory/samples/30_route_bundle_lidar.py +54 -0
  414. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_basic.py +51 -0
  415. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_collision_enlarged.py +36 -0
  416. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_collision_no_intersect.py +36 -0
  417. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_collision_none.py +48 -0
  418. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_corner.py +206 -0
  419. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_electrical.py +45 -0
  420. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_mmi2x2.py +23 -0
  421. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_north_south.py +52 -0
  422. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_nxn.py +27 -0
  423. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_sbend.py +21 -0
  424. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_sbend_route_bundle.py +24 -0
  425. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_top_bottom.py +48 -0
  426. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_u_indirect.py +81 -0
  427. gdsfactoryx-9.51.0/gdsfactory/samples/33_route_bundle_udirect.py +73 -0
  428. gdsfactoryx-9.51.0/gdsfactory/samples/34_route_edge_coupler.py +79 -0
  429. gdsfactoryx-9.51.0/gdsfactory/samples/34_route_edge_coupler_bend_s.py +101 -0
  430. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_auto_taper.py +22 -0
  431. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_auto_taper_nitride.py +27 -0
  432. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_auto_taper.py +22 -0
  433. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_custom_taper.py +23 -0
  434. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_low_loss_taper.py +23 -0
  435. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_non_manhattan_steps.py +32 -0
  436. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_non_manhattan_waypoints.py +33 -0
  437. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_steps.py +26 -0
  438. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_steps2.py +26 -0
  439. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_bundle_steps3.py +34 -0
  440. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_gs.py +38 -0
  441. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_gs_optical.py +39 -0
  442. gdsfactoryx-9.51.0/gdsfactory/samples/35_route_single_steps.py +28 -0
  443. gdsfactoryx-9.51.0/gdsfactory/samples/36_route_gsg.py +44 -0
  444. gdsfactoryx-9.51.0/gdsfactory/samples/36_route_single.py +22 -0
  445. gdsfactoryx-9.51.0/gdsfactory/samples/37_path_length_matching_center.py +67 -0
  446. gdsfactoryx-9.51.0/gdsfactory/samples/37_path_length_matching_end.py +54 -0
  447. gdsfactoryx-9.51.0/gdsfactory/samples/37_path_length_matching_start.py +64 -0
  448. gdsfactoryx-9.51.0/gdsfactory/samples/39_route_bundle_all_angle.py +29 -0
  449. gdsfactoryx-9.51.0/gdsfactory/samples/39_route_bundle_all_angle_rotated.py +25 -0
  450. gdsfactoryx-9.51.0/gdsfactory/samples/39_route_dubins.py +25 -0
  451. gdsfactoryx-9.51.0/gdsfactory/samples/39_route_dubins_multi.py +28 -0
  452. gdsfactoryx-9.51.0/gdsfactory/samples/40_verification.py +27 -0
  453. gdsfactoryx-9.51.0/gdsfactory/samples/41_verification_routing.py +20 -0
  454. gdsfactoryx-9.51.0/gdsfactory/samples/__init__.py +0 -0
  455. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_basic_01.pic.yml +29 -0
  456. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_bundles.pic.yml +252 -0
  457. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_error_intermediate_180.pic.yml +26 -0
  458. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_error_overconstrained.pic.yml +27 -0
  459. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_gone_wrong.pic.yml +95 -0
  460. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_implicit_final_angle.pic.yml +71 -0
  461. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_slalom.pic.yml +35 -0
  462. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_start_end_customizations.pic.yml +178 -0
  463. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_step_definitions.pic.yml +90 -0
  464. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/aar_tricky_connections.pic.yml +179 -0
  465. gdsfactoryx-9.51.0/gdsfactory/samples/all_angle_routing/all_angle_routes.pic.yml +209 -0
  466. gdsfactoryx-9.51.0/gdsfactory/samples/big_device.py +105 -0
  467. gdsfactoryx-9.51.0/gdsfactory/samples/big_device_electrical.py +94 -0
  468. gdsfactoryx-9.51.0/gdsfactory/samples/coh_rx_single_pol.py +198 -0
  469. gdsfactoryx-9.51.0/gdsfactory/samples/coh_tx_dual_pol.py +141 -0
  470. gdsfactoryx-9.51.0/gdsfactory/samples/coh_tx_single_pol.py +167 -0
  471. gdsfactoryx-9.51.0/gdsfactory/samples/demo/Makefile +2 -0
  472. gdsfactoryx-9.51.0/gdsfactory/samples/demo/__init__.py +0 -0
  473. gdsfactoryx-9.51.0/gdsfactory/samples/demo/circuits/mask.pic.yml +31 -0
  474. gdsfactoryx-9.51.0/gdsfactory/samples/demo/circuits/mzi_lattice_filter.pic.yml +51 -0
  475. gdsfactoryx-9.51.0/gdsfactory/samples/demo/circuits/mzi_ubcpdk.pic.yml +35 -0
  476. gdsfactoryx-9.51.0/gdsfactory/samples/demo/circuits/pads.pic.yml +29 -0
  477. gdsfactoryx-9.51.0/gdsfactory/samples/demo/circuits/rectangles.pic.yml +17 -0
  478. gdsfactoryx-9.51.0/gdsfactory/samples/demo/drc_errors.py +96 -0
  479. gdsfactoryx-9.51.0/gdsfactory/samples/demo/layers_sky130.py +7 -0
  480. gdsfactoryx-9.51.0/gdsfactory/samples/demo/layers_xsection.py +17 -0
  481. gdsfactoryx-9.51.0/gdsfactory/samples/demo/lvs.py +95 -0
  482. gdsfactoryx-9.51.0/gdsfactory/samples/demo/pcell.py +25 -0
  483. gdsfactoryx-9.51.0/gdsfactory/samples/differentiable_optimization.py +56 -0
  484. gdsfactoryx-9.51.0/gdsfactory/samples/fixme/route_bundle_bbox.py +30 -0
  485. gdsfactoryx-9.51.0/gdsfactory/samples/images/logo.png +0 -0
  486. gdsfactoryx-9.51.0/gdsfactory/samples/netlists/bend_mirror.yml +69 -0
  487. gdsfactoryx-9.51.0/gdsfactory/samples/netlists/bend_rotated.yml +38 -0
  488. gdsfactoryx-9.51.0/gdsfactory/samples/netlists/bend_translated_rotated.yml +65 -0
  489. gdsfactoryx-9.51.0/gdsfactory/samples/netlists/mzi.yml +373 -0
  490. gdsfactoryx-9.51.0/gdsfactory/samples/netlists/straight_with_bend.yml +52 -0
  491. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/__init__.py +0 -0
  492. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/fab_c.py +256 -0
  493. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/fab_d/__init__.py +27 -0
  494. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/fab_d/phase_shifters.py +77 -0
  495. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_bend_euler_nc_.yml +16 -0
  496. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_bend_euler_no_.yml +16 -0
  497. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_bend_euler_sc_.yml +16 -0
  498. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_bend_euler_so_.yml +16 -0
  499. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_gc_sc_.yml +6 -0
  500. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mmi1x2_nc_.yml +6 -0
  501. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mmi1x2_no_.yml +6 -0
  502. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mmi1x2_sc_.yml +6 -0
  503. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mmi1x2_so_.yml +6 -0
  504. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mzi_nc_.yml +22 -0
  505. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_mzi_no_.yml +22 -0
  506. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_straight_nc_.yml +11 -0
  507. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_straight_no_.yml +11 -0
  508. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_straight_sc_.yml +11 -0
  509. gdsfactoryx-9.51.0/gdsfactory/samples/pdk/test_fab_c/test_settings_straight_so_.yml +11 -0
  510. gdsfactoryx-9.51.0/gdsfactory/samples/route_astar.py +50 -0
  511. gdsfactoryx-9.51.0/gdsfactory/samples/route_astar2.py +51 -0
  512. gdsfactoryx-9.51.0/gdsfactory/samples/route_bundle_bbox2.py +33 -0
  513. gdsfactoryx-9.51.0/gdsfactory/samples/route_bundle_yaml.py +39 -0
  514. gdsfactoryx-9.51.0/gdsfactory/samples/sample_array_ports.py +17 -0
  515. gdsfactoryx-9.51.0/gdsfactory/samples/sample_bend_angular_resolution.py +30 -0
  516. gdsfactoryx-9.51.0/gdsfactory/samples/sample_bend_point_resolution.py +28 -0
  517. gdsfactoryx-9.51.0/gdsfactory/samples/sample_bend_points.py +35 -0
  518. gdsfactoryx-9.51.0/gdsfactory/samples/sample_bend_points_distance.py +32 -0
  519. gdsfactoryx-9.51.0/gdsfactory/samples/sample_bend_s_offset.py +23 -0
  520. gdsfactoryx-9.51.0/gdsfactory/samples/sample_extend_ports.py +30 -0
  521. gdsfactoryx-9.51.0/gdsfactory/samples/sample_extend_ports_xs.py +49 -0
  522. gdsfactoryx-9.51.0/gdsfactory/samples/sample_justify.py +14 -0
  523. gdsfactoryx-9.51.0/gdsfactory/samples/sample_mzis.py +17 -0
  524. gdsfactoryx-9.51.0/gdsfactory/samples/sample_reticle.py +115 -0
  525. gdsfactoryx-9.51.0/gdsfactory/samples/sample_reticle_electrical_with_labels.py +118 -0
  526. gdsfactoryx-9.51.0/gdsfactory/samples/sample_reticle_with_labels.py +159 -0
  527. gdsfactoryx-9.51.0/gdsfactory/samples/sample_route_astar.py +45 -0
  528. gdsfactoryx-9.51.0/gdsfactory/samples/sample_route_bundle.py +45 -0
  529. gdsfactoryx-9.51.0/gdsfactory/samples/sample_route_error.py +79 -0
  530. gdsfactoryx-9.51.0/gdsfactory/samples/sample_routing_auto_taper.py +48 -0
  531. gdsfactoryx-9.51.0/gdsfactory/samples/sample_routing_challenge.py +32 -0
  532. gdsfactoryx-9.51.0/gdsfactory/samples/sample_routing_sbend.py +20 -0
  533. gdsfactoryx-9.51.0/gdsfactory/samples/sample_sbend.py +17 -0
  534. gdsfactoryx-9.51.0/gdsfactory/samples/sample_taper_offsets.py +52 -0
  535. gdsfactoryx-9.51.0/gdsfactory/samples/sample_to_3d.py +19 -0
  536. gdsfactoryx-9.51.0/gdsfactory/samples/sample_to_3d_electrical.py +17 -0
  537. gdsfactoryx-9.51.0/gdsfactory/samples/small_bends.py +67 -0
  538. gdsfactoryx-9.51.0/gdsfactory/samples/snap_bends.py +19 -0
  539. gdsfactoryx-9.51.0/gdsfactory/samples/snap_bends_fixed.py +25 -0
  540. gdsfactoryx-9.51.0/gdsfactory/samples/snap_issue.py +16 -0
  541. gdsfactoryx-9.51.0/gdsfactory/schematic.py +490 -0
  542. gdsfactoryx-9.51.0/gdsfactory/serialization.py +252 -0
  543. gdsfactoryx-9.51.0/gdsfactory/snap.py +135 -0
  544. gdsfactoryx-9.51.0/gdsfactory/symbols.py +115 -0
  545. gdsfactoryx-9.51.0/gdsfactory/technology/__init__.py +31 -0
  546. gdsfactoryx-9.51.0/gdsfactory/technology/color_utils.py +10 -0
  547. gdsfactoryx-9.51.0/gdsfactory/technology/klayout_tech.py +189 -0
  548. gdsfactoryx-9.51.0/gdsfactory/technology/layer_map.py +57 -0
  549. gdsfactoryx-9.51.0/gdsfactory/technology/layer_stack.py +740 -0
  550. gdsfactoryx-9.51.0/gdsfactory/technology/layer_views.py +1298 -0
  551. gdsfactoryx-9.51.0/gdsfactory/technology/processes.py +289 -0
  552. gdsfactoryx-9.51.0/gdsfactory/technology/variation.py +50 -0
  553. gdsfactoryx-9.51.0/gdsfactory/technology/xml_utils.py +27 -0
  554. gdsfactoryx-9.51.0/gdsfactory/technology/yaml_utils.py +55 -0
  555. gdsfactoryx-9.51.0/gdsfactory/transform.py +185 -0
  556. gdsfactoryx-9.51.0/gdsfactory/typings.py +322 -0
  557. gdsfactoryx-9.51.0/gdsfactory/utils.py +29 -0
  558. gdsfactoryx-9.51.0/gdsfactory/watch.py +363 -0
  559. gdsfactoryx-9.51.0/gdsfactory/write_cells.py +156 -0
  560. gdsfactoryx-9.51.0/pyproject.toml +356 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 PsiQuantum Corp
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,360 @@
1
+ Metadata-Version: 2.5
2
+ Name: gdsfactoryx
3
+ Version: 9.51.0
4
+ Summary: python library to generate GDS layouts
5
+ Keywords: eda,photonics,python
6
+ Author: gdsfactory community
7
+ Maintainer: sephiram591
8
+ Requires-Python: >=3.12,<3.15
9
+ Description-Content-Type: text/markdown
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Operating System :: OS Independent
14
+ License-File: LICENSE
15
+ Requires-Dist: jinja2<4
16
+ Requires-Dist: loguru<1
17
+ Requires-Dist: matplotlib<4
18
+ Requires-Dist: numpy
19
+ Requires-Dist: orjson<4
20
+ Requires-Dist: pandas
21
+ Requires-Dist: pydantic>=2
22
+ Requires-Dist: pydantic-settings<3
23
+ Requires-Dist: pydantic-extra-types<3
24
+ Requires-Dist: pyyaml
25
+ Requires-Dist: qrcode
26
+ Requires-Dist: rectpack<1
27
+ Requires-Dist: rich<16
28
+ Requires-Dist: scipy<2
29
+ Requires-Dist: shapely<3
30
+ Requires-Dist: toolz<2
31
+ Requires-Dist: types-PyYAML
32
+ Requires-Dist: typer<1
33
+ Requires-Dist: kfactory[ipy]~=3.0.4
34
+ Requires-Dist: jax>=0.6
35
+ Requires-Dist: watchdog<7
36
+ Requires-Dist: freetype-py
37
+ Requires-Dist: mapbox_earcut
38
+ Requires-Dist: networkx
39
+ Requires-Dist: scikit-image
40
+ Requires-Dist: trimesh>=4.4.1
41
+ Requires-Dist: ipykernel
42
+ Requires-Dist: attrs
43
+ Requires-Dist: graphviz
44
+ Requires-Dist: pyglet<3
45
+ Requires-Dist: typing-extensions
46
+ Requires-Dist: pygit2
47
+ Requires-Dist: natsort
48
+ Requires-Dist: asv>=0.6,<1 ; extra == "bench"
49
+ Requires-Dist: kweb>=1.1.9,<2.1 ; extra == "cad"
50
+ Requires-Dist: hypothesis ; extra == "dev"
51
+ Requires-Dist: ipykernel ; extra == "dev"
52
+ Requires-Dist: jupyterlab ; extra == "dev"
53
+ Requires-Dist: jsondiff ; extra == "dev"
54
+ Requires-Dist: jsonschema ; extra == "dev"
55
+ Requires-Dist: pre-commit ; extra == "dev"
56
+ Requires-Dist: pylsp-mypy ; extra == "dev"
57
+ Requires-Dist: pytest ; extra == "dev"
58
+ Requires-Dist: pytest-cov ; extra == "dev"
59
+ Requires-Dist: pytest_regressions ; extra == "dev"
60
+ Requires-Dist: types-PyYAML ; extra == "dev"
61
+ Requires-Dist: types-cachetools ; extra == "dev"
62
+ Requires-Dist: pytest-github-actions-annotate-failures ; extra == "dev"
63
+ Requires-Dist: pytest-randomly ; extra == "dev"
64
+ Requires-Dist: pytest-xdist ; extra == "dev"
65
+ Requires-Dist: ty ; extra == "dev"
66
+ Requires-Dist: gplugins[devsim, femwell, gmsh, meow, sax, schematic, tidy3d]>=1.1,<3.0 ; extra == "full"
67
+ Requires-Dist: scikit-rf ; extra == "full"
68
+ Requires-Dist: omegaconf ; extra == "full"
69
+ Requires-Dist: autograd ; extra == "full"
70
+ Requires-Dist: ruff>=0.8.3 ; extra == "maintainer"
71
+ Requires-Dist: doc8 ; extra == "maintainer"
72
+ Requires-Dist: xdoctest ; extra == "maintainer"
73
+ Requires-Dist: mypy ; extra == "maintainer"
74
+ Requires-Dist: tbump ; extra == "maintainer"
75
+ Requires-Dist: autotyping ; extra == "maintainer"
76
+ Requires-Dist: towncrier ; extra == "maintainer"
77
+ Project-URL: Homepage, https://github.com/Sephiram591/gdsfactoryx
78
+ Project-URL: Issues, https://github.com/Sephiram591/gdsfactoryx/issues
79
+ Project-URL: Upstream documentation, https://gdsfactory.github.io/gdsfactory/
80
+ Project-URL: Upstream project, https://github.com/gdsfactory/gdsfactory
81
+ Provides-Extra: bench
82
+ Provides-Extra: cad
83
+ Provides-Extra: dev
84
+ Provides-Extra: full
85
+ Provides-Extra: maintainer
86
+ Import-Name: gdsfactory
87
+
88
+ # gdsfactoryx
89
+
90
+ [![tests](https://github.com/Sephiram591/gdsfactoryx/actions/workflows/test_code.yml/badge.svg)](https://github.com/Sephiram591/gdsfactoryx/actions/workflows/test_code.yml)
91
+ [![MIT](https://img.shields.io/github/license/Sephiram591/gdsfactoryx)](https://choosealicense.com/licenses/mit/)
92
+
93
+ **gdsfactoryx** is a port of [GDSFactory](https://github.com/gdsfactory/gdsfactory) (9.51.0) with a differentiable
94
+ [JAX](https://jax.readthedocs.io) geometry backend: polygons, ports, references and routes are float64 JAX-compatible
95
+ arrays, so any scalar computed from a layout can be differentiated with `jax.grad` with respect to the parameters of
96
+ the cell functions. KLayout is kept for GDS I/O, viewing and boolean operations. The API is gdsfactory's: you still
97
+ `import gdsfactory as gf`.
98
+
99
+ - **Documentation**: gdsfactoryx has no docs of its own. Use the gdsfactory docs: https://gdsfactory.github.io/gdsfactory/
100
+ - **FDTD simulation** of components and layer stacks (fdtdx), and the 3D viewer, live in
101
+ [bifrost](https://github.com/Sephiram591/bifrost).
102
+
103
+ ```python
104
+ import jax
105
+ import gdsfactory as gf
106
+
107
+ gf.gpdk.PDK.activate()
108
+ jax.grad(lambda r: gf.components.ring_single(radius=r).dxsize)(10.0)
109
+ ```
110
+
111
+ ## Installation
112
+
113
+ gdsfactoryx installs the same top-level `gdsfactory` package as upstream
114
+ [gdsfactory](https://github.com/gdsfactory/gdsfactory), so the two cannot share an environment. Remove upstream
115
+ first, then install:
116
+
117
+ ```bash
118
+ pip uninstall -y gdsfactory
119
+ pip install gdsfactoryx
120
+ ```
121
+
122
+ To install the latest development version from GitHub instead:
123
+
124
+ ```bash
125
+ pip install "gdsfactoryx @ git+https://github.com/Sephiram591/gdsfactoryx.git"
126
+ ```
127
+
128
+ If both distributions end up installed, `import gdsfactory` raises an `ImportError` that says so. Fix it with
129
+ `pip uninstall -y gdsfactory gdsfactoryx && pip install gdsfactoryx`.
130
+
131
+ Packages that depend on upstream `gdsfactory` (for example `gplugins`) will install it again. Install such packages
132
+ with `pip install --no-deps` and add their other dependencies yourself, so they use gdsfactoryx.
133
+
134
+ ## Differentiability
135
+
136
+ Reverse mode (`jax.grad`, `jax.vjp`) and forward mode (`jax.jvp`, `jax.jacfwd`) work. Differentiation is **eager**: wrap
137
+ the objective in `jax.grad` but not in `jax.jit`. Without tracers, geometry runs at numpy speed.
138
+
139
+ | Quantity | How |
140
+ | --- | --- |
141
+ | polygon vertices | `component.get_polygons_points()` returns `(N, 2)` arrays |
142
+ | ports | `port.x`, `port.y`, `port.center_array`, `port.width`, `port.orientation` |
143
+ | references | `ref.transform`, `ref.move/rotate/mirror/connect`, `ref.xmin = ...` |
144
+ | bounding boxes and areas | `component.dbbox()`, `xmin/xmax/ymin/ymax/xsize/ysize/center`, `component.area(layer)` |
145
+ | paths and extrusion | `gf.path.arc/euler/straight/smooth/spiral_archimedean`, `Path.length()`, `gf.path.extrude` |
146
+ | routes | `route_single`, `route_bundle`, `route_bundle_all_angle`, `route_dubins`: `route.length`, element positions |
147
+ | rasterization | `gf.rasterize.rasterize(component, layer, resolution)` |
148
+
149
+ Notes:
150
+
151
+ - Discrete choices (number of points, `if` branches, cell names, routing topology) use concrete primal values, so the
152
+ gradient is exact for the chosen topology and zero across a discrete switch.
153
+ - 1 nm grid snapping uses straight-through rounding (value snapped, gradient identity). Set
154
+ `gf.snap.SNAP_ENABLED = False` to compare with finite differences.
155
+ - `@gf.cell` calls with tracer arguments bypass the cache.
156
+ - KLayout is used only for discrete operations (I/O, `show`/`plot`, booleans, sizing, DRC fixes, fill, merged areas);
157
+ gradients stop there. `gf.boolean`, `offset`, `over_under`, `fix_width`, `fix_spacing`, `trim`, `fill`,
158
+ `get_polygons(merge=True)` and A* routing are not differentiable.
159
+ - `component.area(layer)` is the merged area as upstream; its derivative is that of the summed polygon areas, exact for
160
+ non-overlapping polygons.
161
+
162
+ ### Differences from upstream API
163
+
164
+ - `Component` and `ComponentReference` are gdsfactoryx classes, not kfactory `DKCell`/`DInstance`; use
165
+ `component.to_kfactory()` for a (concrete) kfactory cell.
166
+ - `component.get_polygons()` returns KLayout polygons as upstream; `get_polygons_points()` returns differentiable arrays.
167
+ - `port.center` is an `(x, y)` tuple; use `port.center_array` (or `port.xy`) for array math.
168
+ - Routes are `gdsfactory.routing.ManhattanRoute` objects with kfactory's attributes plus `backbone_um` (differentiable).
169
+
170
+ ---
171
+
172
+ *The rest of this README is upstream GDSFactory's.*
173
+
174
+ GDSFactory is a Python library for designing chips (Photonics, Analog, Quantum, MEMS), PCBs, and 3D-printable objects. We aim to make hardware design accessible, intuitive, and fun—empowering everyone to build the future.
175
+
176
+ As input you write python code, as an output GDSFactory creates CAD files (GDS, OASIS, STL, GERBER).
177
+
178
+ ![cad](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/cad.png)
179
+
180
+ ## Quick Start
181
+
182
+ ```python
183
+ import gdsfactory as gf
184
+
185
+ # Activate the built-in generic process design kit
186
+ gf.gpdk.PDK.activate()
187
+
188
+ # Create a new component
189
+ c = gf.Component()
190
+
191
+ # Add a rectangle
192
+ r = gf.components.rectangle(size=(10, 10), layer=(1, 0))
193
+ rect = c.add_ref(r)
194
+
195
+ # Add text elements
196
+ t1 = gf.components.text("Hello", size=10, layer=(2, 0))
197
+ t2 = gf.components.text("world", size=10, layer=(2, 0))
198
+
199
+ text1 = c.add_ref(t1)
200
+ text2 = c.add_ref(t2)
201
+
202
+ # Position elements
203
+ text1.xmin = rect.xmax + 5
204
+ text2.xmin = text1.xmax + 2
205
+ text2.rotate(30)
206
+
207
+ # Show the result
208
+ c.show()
209
+ ```
210
+
211
+ **4M+ downloads** · **116+ contributors** · **42+ PDKs**
212
+
213
+ ![workflow](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/workflow.png)
214
+
215
+ GDSFactory provides a comprehensive end-to-end design flow:
216
+
217
+ - **Design (Layout, Simulation, Optimization)** — Define parametric cell functions in Python to generate components. Test component settings, ports, and geometry to avoid unwanted regressions, and capture design intent in a schematic.
218
+ - **Verify (DRC, DFM, LVS)** — Run simulations directly from the layout using our simulation interfaces, removing the need to redraw your components in simulation tools. Conduct component and circuit simulations, study design for manufacturing. Ensure complex layouts match their design intent through Layout Versus Schematic verification (LVS) and are DRC clean.
219
+ - **Validate** — Define layout and test protocols simultaneously for automated chip analysis post-fabrication. Extract essential component parameters and build data pipelines from raw data to structured data to monitor chip performance.
220
+
221
+ **Input:** Python or YAML. **Output:** GDSII, OASIS, STL, or GERBER files for fabrication, plus component settings and netlists in YAML.
222
+
223
+ GDSFactory integrates with Ansys, Lumerical, Tidy3d, MEEP, DEVSIM, SAX, MEOW, SPICE, and more.
224
+
225
+ ![tool interfaces](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/tool_interfaces.png)
226
+
227
+
228
+ ## Open-Source PDKs (No NDA Required)
229
+
230
+ These PDKs are publicly available and do not require an NDA:
231
+
232
+ ### Photonics
233
+
234
+ | PDK | Code | Docs |
235
+ | :-- | :--: | :--: |
236
+ | Cornerstone PDK | [GitHub](https://github.com/gdsfactory/cspdk) | [Docs](https://gdsfactory.github.io/cspdk/) |
237
+ | SiEPIC Ebeam UBC PDK | [GitHub](https://github.com/gdsfactory/ubc) | [Docs](https://gdsfactory.github.io/ubc) |
238
+ | VTT PDK | [GitHub](https://github.com/gdsfactory/vtt) | [Docs](https://gdsfactory.github.io/vtt) |
239
+ | Luxtelligence GF PDK | [GitHub](https://github.com/Luxtelligence/lxt_pdk_gf) | [Docs](https://gdsfactory.github.io/lxt_pdk_gf) |
240
+
241
+ ### Quantum
242
+
243
+ | PDK | Code | Docs |
244
+ | :-- | :--: | :--: |
245
+ | Quantum RF PDK | [GitHub](https://github.com/gdsfactory/quantum-rf-pdk) | [Docs](https://gdsfactory.github.io/quantum-rf-pdk/) |
246
+
247
+ ### RF / AMS / Digital / Analog
248
+
249
+ | PDK | Code | Docs |
250
+ | :-- | :--: | :--: |
251
+ | IHP | [GitHub](https://github.com/gdsfactory/IHP) | [Docs](https://gdsfactory.github.io/IHP) |
252
+ | GlobalFoundries 180nm MCU CMOS | [GitHub](https://github.com/gdsfactory/gf180mcu) | [Docs](https://gdsfactory.github.io/gf180mcu/) |
253
+ | SkyWater 130nm CMOS | [GitHub](https://github.com/gdsfactory/skywater130) | [Docs](https://gdsfactory.github.io/skywater130/) |
254
+
255
+ ## Foundry PDKs (NDA Required)
256
+
257
+ Access PDKs under NDA require a **GDSFactory+** subscription.
258
+ To sign up, visit [GDSFactory.com](https://gdsfactory.com/).
259
+ See list of available PDKs under NDA [here](https://gdsfactory.com/pdks/).
260
+
261
+ ## GDSFactory+
262
+
263
+ **GDSFactory+** offers Graphical User Interface for chip design, built on top of GDSFactory and VSCode. It provides you:
264
+
265
+ - Foundry PDK access
266
+ - Schematic capture
267
+ - Device and circuit Simulations
268
+ - Design verification (DRC, LVS)
269
+ - Data analytics
270
+
271
+
272
+ ## Getting Started
273
+
274
+ - [See slides](https://docs.google.com/presentation/d/1_ZmUxbaHWo_lQP17dlT1FWX-XD8D9w7-FcuEih48d_0/edit#slide=id.g11711f50935_0_5)
275
+ - [Read docs](https://gdsfactory.github.io/gdsfactory/)
276
+ - [![Video Tutorials](https://img.shields.io/badge/youtube-Video_Tutorials-red.svg?logo=youtube)](https://www.youtube.com/@gdsfactory/playlists)
277
+ - See announcements on [GitHub](https://github.com/gdsfactory/gdsfactory/discussions/547), [google-groups](https://groups.google.com/g/gdsfactory) or [LinkedIn](https://www.linkedin.com/company/gdsfactory)
278
+ - [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=250169028)
279
+ - [PIC training](https://gdsfactory.github.io/gdsfactory-photonics-training/)
280
+ - Online course [UBCx: Silicon Photonics Design, Fabrication and Data Analysis](https://www.edx.org/learn/engineering/university-of-british-columbia-silicon-photonics-design-fabrication-and-data-ana), where students can use GDSFactory to create a design, have it fabricated, and tested.
281
+ - [Visit website](https://gdsfactory.com)
282
+
283
+ ## Who is using GDSFactory?
284
+
285
+ Hundreds of organisations are using GDSFactory. Some companies and organizations around the world using GDSFactory include:
286
+
287
+ ![logos](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/logos.png)
288
+
289
+ "I've used **GDSFactory** since 2017 for all my chip tapeouts. I love that it is fast, easy to use, and easy to extend. It's the only tool that allows us to have an end-to-end chip design flow (design, verification and validation)."
290
+
291
+ <div style="text-align: right; margin-right: 10%;">Joaquin Matres - <strong>Google</strong></div>
292
+
293
+ ---
294
+
295
+ "I've relied on **GDSFactory** for several tapeouts over the years. It's the only tool I've found that gives me the flexibility and scalability I need for a variety of projects."
296
+
297
+ <div style="text-align: right; margin-right: 10%;">Alec Hammond - <strong>Meta Reality Labs Research</strong></div>
298
+
299
+ ---
300
+
301
+ "The best photonics layout tool I've used so far and it is leaps and bounds ahead of any commercial alternatives out there. Feels like GDSFactory is freeing photonics."
302
+
303
+ <div style="text-align: right; margin-right: 10%;">Hasitha Jayatilleka - <strong>LightIC Technologies</strong></div>
304
+
305
+ ---
306
+
307
+ "As an academic working on large scale silicon photonics at CMOS foundries I've used GDSFactory to go from nothing to full-reticle layouts rapidly (in a few days). I particularly appreciate the full-system approach to photonics, with my layout being connected to circuit simulators which are then connected to device simulators. Moving from legacy tools such as gdspy and phidl to GDSFactory has sped up my workflow at least an order of magnitude."
308
+
309
+ <div style="text-align: right; margin-right: 10%;">Alex Sludds - <strong>MIT</strong></div>
310
+
311
+ ---
312
+
313
+ "I use GDSFactory for all of my photonic tape-outs. The Python interface makes it easy to version control individual photonic components as well as entire layouts, while integrating seamlessly with KLayout and most standard photonic simulation tools, both open-source and commercial."
314
+
315
+ <div style="text-align: right; margin-right: 10%;">Thomas Dorch - <strong>Freedom Photonics</strong></div>
316
+
317
+ ## Why Use GDSFactory?
318
+
319
+ - **Fast, extensible, and easy to use** – designed for efficiency and flexibility.
320
+ - **Free and open-source** – no licensing fees, giving you the freedom to modify and extend it.
321
+ - **A thriving ecosystem** – the most popular EDA tool with a growing community of users, developers, and integrations with other tools.
322
+ - **Built on the open-source advantage** – just like the best machine learning libraries, GDSFactory benefits from continuous contributions, transparency, and innovation.
323
+
324
+ GDSFactory is really fast thanks to KLayout C++ library for manipulating GDS objects. You will notice this when reading/writing big GDS files or doing large boolean operations.
325
+
326
+ | Benchmark | gdspy | GDSFactory | Gain |
327
+ | :------------- | :-----: | :--------: | :--: |
328
+ | 10k_rectangles | 80.2 ms | 4.87 ms | 16.5 |
329
+ | boolean-offset | 187 μs | 44.7 μs | 4.19 |
330
+ | bounding_box | 36.7 ms | 170 μs | 216 |
331
+ | flatten | 465 μs | 8.17 μs | 56.9 |
332
+ | read_gds | 2.68 ms | 94 μs | 28.5 |
333
+
334
+ ## Contributors
335
+
336
+ A huge thanks to all the contributors who make this project possible!
337
+
338
+ We welcome all contributions—whether you're adding new features, improving documentation, or even fixing a small typo. Every contribution helps make GDSFactory better!
339
+
340
+ Join us and be part of the community. 🚀
341
+
342
+ ![contributors](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/contributors.png)
343
+
344
+ ## LLM-Friendly Documentation
345
+
346
+ GDSFactory provides machine-readable documentation optimized for LLM agents and AI-assisted development:
347
+
348
+ - [llms.txt](https://gdsfactory.github.io/gdsfactory/llms.txt) — concise overview with links to all documentation sections
349
+ - [llms-full.txt](https://gdsfactory.github.io/gdsfactory/llms-full.txt) — complete API reference and usage guide in a single document
350
+
351
+ These follow the [llms.txt standard](https://llmstxt.org/) for making documentation easily ingestable by large language models.
352
+
353
+ ## Community
354
+
355
+ Join our growing community:
356
+ - [GitHub Discussions](https://github.com/gdsfactory/gdsfactory/discussions)
357
+ - [Google Group](https://groups.google.com/g/gdsfactory)
358
+ - [LinkedIn](https://www.linkedin.com/company/gdsfactory)
359
+ - [Slack community channel](https://join.slack.com/t/gdsfactory-community/shared_invite/zt-3aoygv7cg-r5BH6yvL4YlHfY8~UXp0Wg)
360
+
@@ -0,0 +1,272 @@
1
+ # gdsfactoryx
2
+
3
+ [![tests](https://github.com/Sephiram591/gdsfactoryx/actions/workflows/test_code.yml/badge.svg)](https://github.com/Sephiram591/gdsfactoryx/actions/workflows/test_code.yml)
4
+ [![MIT](https://img.shields.io/github/license/Sephiram591/gdsfactoryx)](https://choosealicense.com/licenses/mit/)
5
+
6
+ **gdsfactoryx** is a port of [GDSFactory](https://github.com/gdsfactory/gdsfactory) (9.51.0) with a differentiable
7
+ [JAX](https://jax.readthedocs.io) geometry backend: polygons, ports, references and routes are float64 JAX-compatible
8
+ arrays, so any scalar computed from a layout can be differentiated with `jax.grad` with respect to the parameters of
9
+ the cell functions. KLayout is kept for GDS I/O, viewing and boolean operations. The API is gdsfactory's: you still
10
+ `import gdsfactory as gf`.
11
+
12
+ - **Documentation**: gdsfactoryx has no docs of its own. Use the gdsfactory docs: https://gdsfactory.github.io/gdsfactory/
13
+ - **FDTD simulation** of components and layer stacks (fdtdx), and the 3D viewer, live in
14
+ [bifrost](https://github.com/Sephiram591/bifrost).
15
+
16
+ ```python
17
+ import jax
18
+ import gdsfactory as gf
19
+
20
+ gf.gpdk.PDK.activate()
21
+ jax.grad(lambda r: gf.components.ring_single(radius=r).dxsize)(10.0)
22
+ ```
23
+
24
+ ## Installation
25
+
26
+ gdsfactoryx installs the same top-level `gdsfactory` package as upstream
27
+ [gdsfactory](https://github.com/gdsfactory/gdsfactory), so the two cannot share an environment. Remove upstream
28
+ first, then install:
29
+
30
+ ```bash
31
+ pip uninstall -y gdsfactory
32
+ pip install gdsfactoryx
33
+ ```
34
+
35
+ To install the latest development version from GitHub instead:
36
+
37
+ ```bash
38
+ pip install "gdsfactoryx @ git+https://github.com/Sephiram591/gdsfactoryx.git"
39
+ ```
40
+
41
+ If both distributions end up installed, `import gdsfactory` raises an `ImportError` that says so. Fix it with
42
+ `pip uninstall -y gdsfactory gdsfactoryx && pip install gdsfactoryx`.
43
+
44
+ Packages that depend on upstream `gdsfactory` (for example `gplugins`) will install it again. Install such packages
45
+ with `pip install --no-deps` and add their other dependencies yourself, so they use gdsfactoryx.
46
+
47
+ ## Differentiability
48
+
49
+ Reverse mode (`jax.grad`, `jax.vjp`) and forward mode (`jax.jvp`, `jax.jacfwd`) work. Differentiation is **eager**: wrap
50
+ the objective in `jax.grad` but not in `jax.jit`. Without tracers, geometry runs at numpy speed.
51
+
52
+ | Quantity | How |
53
+ | --- | --- |
54
+ | polygon vertices | `component.get_polygons_points()` returns `(N, 2)` arrays |
55
+ | ports | `port.x`, `port.y`, `port.center_array`, `port.width`, `port.orientation` |
56
+ | references | `ref.transform`, `ref.move/rotate/mirror/connect`, `ref.xmin = ...` |
57
+ | bounding boxes and areas | `component.dbbox()`, `xmin/xmax/ymin/ymax/xsize/ysize/center`, `component.area(layer)` |
58
+ | paths and extrusion | `gf.path.arc/euler/straight/smooth/spiral_archimedean`, `Path.length()`, `gf.path.extrude` |
59
+ | routes | `route_single`, `route_bundle`, `route_bundle_all_angle`, `route_dubins`: `route.length`, element positions |
60
+ | rasterization | `gf.rasterize.rasterize(component, layer, resolution)` |
61
+
62
+ Notes:
63
+
64
+ - Discrete choices (number of points, `if` branches, cell names, routing topology) use concrete primal values, so the
65
+ gradient is exact for the chosen topology and zero across a discrete switch.
66
+ - 1 nm grid snapping uses straight-through rounding (value snapped, gradient identity). Set
67
+ `gf.snap.SNAP_ENABLED = False` to compare with finite differences.
68
+ - `@gf.cell` calls with tracer arguments bypass the cache.
69
+ - KLayout is used only for discrete operations (I/O, `show`/`plot`, booleans, sizing, DRC fixes, fill, merged areas);
70
+ gradients stop there. `gf.boolean`, `offset`, `over_under`, `fix_width`, `fix_spacing`, `trim`, `fill`,
71
+ `get_polygons(merge=True)` and A* routing are not differentiable.
72
+ - `component.area(layer)` is the merged area as upstream; its derivative is that of the summed polygon areas, exact for
73
+ non-overlapping polygons.
74
+
75
+ ### Differences from upstream API
76
+
77
+ - `Component` and `ComponentReference` are gdsfactoryx classes, not kfactory `DKCell`/`DInstance`; use
78
+ `component.to_kfactory()` for a (concrete) kfactory cell.
79
+ - `component.get_polygons()` returns KLayout polygons as upstream; `get_polygons_points()` returns differentiable arrays.
80
+ - `port.center` is an `(x, y)` tuple; use `port.center_array` (or `port.xy`) for array math.
81
+ - Routes are `gdsfactory.routing.ManhattanRoute` objects with kfactory's attributes plus `backbone_um` (differentiable).
82
+
83
+ ---
84
+
85
+ *The rest of this README is upstream GDSFactory's.*
86
+
87
+ GDSFactory is a Python library for designing chips (Photonics, Analog, Quantum, MEMS), PCBs, and 3D-printable objects. We aim to make hardware design accessible, intuitive, and fun—empowering everyone to build the future.
88
+
89
+ As input you write python code, as an output GDSFactory creates CAD files (GDS, OASIS, STL, GERBER).
90
+
91
+ ![cad](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/cad.png)
92
+
93
+ ## Quick Start
94
+
95
+ ```python
96
+ import gdsfactory as gf
97
+
98
+ # Activate the built-in generic process design kit
99
+ gf.gpdk.PDK.activate()
100
+
101
+ # Create a new component
102
+ c = gf.Component()
103
+
104
+ # Add a rectangle
105
+ r = gf.components.rectangle(size=(10, 10), layer=(1, 0))
106
+ rect = c.add_ref(r)
107
+
108
+ # Add text elements
109
+ t1 = gf.components.text("Hello", size=10, layer=(2, 0))
110
+ t2 = gf.components.text("world", size=10, layer=(2, 0))
111
+
112
+ text1 = c.add_ref(t1)
113
+ text2 = c.add_ref(t2)
114
+
115
+ # Position elements
116
+ text1.xmin = rect.xmax + 5
117
+ text2.xmin = text1.xmax + 2
118
+ text2.rotate(30)
119
+
120
+ # Show the result
121
+ c.show()
122
+ ```
123
+
124
+ **4M+ downloads** · **116+ contributors** · **42+ PDKs**
125
+
126
+ ![workflow](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/workflow.png)
127
+
128
+ GDSFactory provides a comprehensive end-to-end design flow:
129
+
130
+ - **Design (Layout, Simulation, Optimization)** — Define parametric cell functions in Python to generate components. Test component settings, ports, and geometry to avoid unwanted regressions, and capture design intent in a schematic.
131
+ - **Verify (DRC, DFM, LVS)** — Run simulations directly from the layout using our simulation interfaces, removing the need to redraw your components in simulation tools. Conduct component and circuit simulations, study design for manufacturing. Ensure complex layouts match their design intent through Layout Versus Schematic verification (LVS) and are DRC clean.
132
+ - **Validate** — Define layout and test protocols simultaneously for automated chip analysis post-fabrication. Extract essential component parameters and build data pipelines from raw data to structured data to monitor chip performance.
133
+
134
+ **Input:** Python or YAML. **Output:** GDSII, OASIS, STL, or GERBER files for fabrication, plus component settings and netlists in YAML.
135
+
136
+ GDSFactory integrates with Ansys, Lumerical, Tidy3d, MEEP, DEVSIM, SAX, MEOW, SPICE, and more.
137
+
138
+ ![tool interfaces](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/tool_interfaces.png)
139
+
140
+
141
+ ## Open-Source PDKs (No NDA Required)
142
+
143
+ These PDKs are publicly available and do not require an NDA:
144
+
145
+ ### Photonics
146
+
147
+ | PDK | Code | Docs |
148
+ | :-- | :--: | :--: |
149
+ | Cornerstone PDK | [GitHub](https://github.com/gdsfactory/cspdk) | [Docs](https://gdsfactory.github.io/cspdk/) |
150
+ | SiEPIC Ebeam UBC PDK | [GitHub](https://github.com/gdsfactory/ubc) | [Docs](https://gdsfactory.github.io/ubc) |
151
+ | VTT PDK | [GitHub](https://github.com/gdsfactory/vtt) | [Docs](https://gdsfactory.github.io/vtt) |
152
+ | Luxtelligence GF PDK | [GitHub](https://github.com/Luxtelligence/lxt_pdk_gf) | [Docs](https://gdsfactory.github.io/lxt_pdk_gf) |
153
+
154
+ ### Quantum
155
+
156
+ | PDK | Code | Docs |
157
+ | :-- | :--: | :--: |
158
+ | Quantum RF PDK | [GitHub](https://github.com/gdsfactory/quantum-rf-pdk) | [Docs](https://gdsfactory.github.io/quantum-rf-pdk/) |
159
+
160
+ ### RF / AMS / Digital / Analog
161
+
162
+ | PDK | Code | Docs |
163
+ | :-- | :--: | :--: |
164
+ | IHP | [GitHub](https://github.com/gdsfactory/IHP) | [Docs](https://gdsfactory.github.io/IHP) |
165
+ | GlobalFoundries 180nm MCU CMOS | [GitHub](https://github.com/gdsfactory/gf180mcu) | [Docs](https://gdsfactory.github.io/gf180mcu/) |
166
+ | SkyWater 130nm CMOS | [GitHub](https://github.com/gdsfactory/skywater130) | [Docs](https://gdsfactory.github.io/skywater130/) |
167
+
168
+ ## Foundry PDKs (NDA Required)
169
+
170
+ Access PDKs under NDA require a **GDSFactory+** subscription.
171
+ To sign up, visit [GDSFactory.com](https://gdsfactory.com/).
172
+ See list of available PDKs under NDA [here](https://gdsfactory.com/pdks/).
173
+
174
+ ## GDSFactory+
175
+
176
+ **GDSFactory+** offers Graphical User Interface for chip design, built on top of GDSFactory and VSCode. It provides you:
177
+
178
+ - Foundry PDK access
179
+ - Schematic capture
180
+ - Device and circuit Simulations
181
+ - Design verification (DRC, LVS)
182
+ - Data analytics
183
+
184
+
185
+ ## Getting Started
186
+
187
+ - [See slides](https://docs.google.com/presentation/d/1_ZmUxbaHWo_lQP17dlT1FWX-XD8D9w7-FcuEih48d_0/edit#slide=id.g11711f50935_0_5)
188
+ - [Read docs](https://gdsfactory.github.io/gdsfactory/)
189
+ - [![Video Tutorials](https://img.shields.io/badge/youtube-Video_Tutorials-red.svg?logo=youtube)](https://www.youtube.com/@gdsfactory/playlists)
190
+ - See announcements on [GitHub](https://github.com/gdsfactory/gdsfactory/discussions/547), [google-groups](https://groups.google.com/g/gdsfactory) or [LinkedIn](https://www.linkedin.com/company/gdsfactory)
191
+ - [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=250169028)
192
+ - [PIC training](https://gdsfactory.github.io/gdsfactory-photonics-training/)
193
+ - Online course [UBCx: Silicon Photonics Design, Fabrication and Data Analysis](https://www.edx.org/learn/engineering/university-of-british-columbia-silicon-photonics-design-fabrication-and-data-ana), where students can use GDSFactory to create a design, have it fabricated, and tested.
194
+ - [Visit website](https://gdsfactory.com)
195
+
196
+ ## Who is using GDSFactory?
197
+
198
+ Hundreds of organisations are using GDSFactory. Some companies and organizations around the world using GDSFactory include:
199
+
200
+ ![logos](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/logos.png)
201
+
202
+ "I've used **GDSFactory** since 2017 for all my chip tapeouts. I love that it is fast, easy to use, and easy to extend. It's the only tool that allows us to have an end-to-end chip design flow (design, verification and validation)."
203
+
204
+ <div style="text-align: right; margin-right: 10%;">Joaquin Matres - <strong>Google</strong></div>
205
+
206
+ ---
207
+
208
+ "I've relied on **GDSFactory** for several tapeouts over the years. It's the only tool I've found that gives me the flexibility and scalability I need for a variety of projects."
209
+
210
+ <div style="text-align: right; margin-right: 10%;">Alec Hammond - <strong>Meta Reality Labs Research</strong></div>
211
+
212
+ ---
213
+
214
+ "The best photonics layout tool I've used so far and it is leaps and bounds ahead of any commercial alternatives out there. Feels like GDSFactory is freeing photonics."
215
+
216
+ <div style="text-align: right; margin-right: 10%;">Hasitha Jayatilleka - <strong>LightIC Technologies</strong></div>
217
+
218
+ ---
219
+
220
+ "As an academic working on large scale silicon photonics at CMOS foundries I've used GDSFactory to go from nothing to full-reticle layouts rapidly (in a few days). I particularly appreciate the full-system approach to photonics, with my layout being connected to circuit simulators which are then connected to device simulators. Moving from legacy tools such as gdspy and phidl to GDSFactory has sped up my workflow at least an order of magnitude."
221
+
222
+ <div style="text-align: right; margin-right: 10%;">Alex Sludds - <strong>MIT</strong></div>
223
+
224
+ ---
225
+
226
+ "I use GDSFactory for all of my photonic tape-outs. The Python interface makes it easy to version control individual photonic components as well as entire layouts, while integrating seamlessly with KLayout and most standard photonic simulation tools, both open-source and commercial."
227
+
228
+ <div style="text-align: right; margin-right: 10%;">Thomas Dorch - <strong>Freedom Photonics</strong></div>
229
+
230
+ ## Why Use GDSFactory?
231
+
232
+ - **Fast, extensible, and easy to use** – designed for efficiency and flexibility.
233
+ - **Free and open-source** – no licensing fees, giving you the freedom to modify and extend it.
234
+ - **A thriving ecosystem** – the most popular EDA tool with a growing community of users, developers, and integrations with other tools.
235
+ - **Built on the open-source advantage** – just like the best machine learning libraries, GDSFactory benefits from continuous contributions, transparency, and innovation.
236
+
237
+ GDSFactory is really fast thanks to KLayout C++ library for manipulating GDS objects. You will notice this when reading/writing big GDS files or doing large boolean operations.
238
+
239
+ | Benchmark | gdspy | GDSFactory | Gain |
240
+ | :------------- | :-----: | :--------: | :--: |
241
+ | 10k_rectangles | 80.2 ms | 4.87 ms | 16.5 |
242
+ | boolean-offset | 187 μs | 44.7 μs | 4.19 |
243
+ | bounding_box | 36.7 ms | 170 μs | 216 |
244
+ | flatten | 465 μs | 8.17 μs | 56.9 |
245
+ | read_gds | 2.68 ms | 94 μs | 28.5 |
246
+
247
+ ## Contributors
248
+
249
+ A huge thanks to all the contributors who make this project possible!
250
+
251
+ We welcome all contributions—whether you're adding new features, improving documentation, or even fixing a small typo. Every contribution helps make GDSFactory better!
252
+
253
+ Join us and be part of the community. 🚀
254
+
255
+ ![contributors](https://raw.githubusercontent.com/gdsfactory/gdsfactory/main/docs/images/contributors.png)
256
+
257
+ ## LLM-Friendly Documentation
258
+
259
+ GDSFactory provides machine-readable documentation optimized for LLM agents and AI-assisted development:
260
+
261
+ - [llms.txt](https://gdsfactory.github.io/gdsfactory/llms.txt) — concise overview with links to all documentation sections
262
+ - [llms-full.txt](https://gdsfactory.github.io/gdsfactory/llms-full.txt) — complete API reference and usage guide in a single document
263
+
264
+ These follow the [llms.txt standard](https://llmstxt.org/) for making documentation easily ingestable by large language models.
265
+
266
+ ## Community
267
+
268
+ Join our growing community:
269
+ - [GitHub Discussions](https://github.com/gdsfactory/gdsfactory/discussions)
270
+ - [Google Group](https://groups.google.com/g/gdsfactory)
271
+ - [LinkedIn](https://www.linkedin.com/company/gdsfactory)
272
+ - [Slack community channel](https://join.slack.com/t/gdsfactory-community/shared_invite/zt-3aoygv7cg-r5BH6yvL4YlHfY8~UXp0Wg)