diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index cf5cd73..9b016fe 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/mxpic/components/composites/LoopMirror.doctree b/docs/build/doctrees/mxpic/components/composites/LoopMirror.doctree index e22696f..3313025 100644 Binary files a/docs/build/doctrees/mxpic/components/composites/LoopMirror.doctree and b/docs/build/doctrees/mxpic/components/composites/LoopMirror.doctree differ diff --git a/docs/build/doctrees/mxpic/components/composites/MZI.doctree b/docs/build/doctrees/mxpic/components/composites/MZI.doctree index cf06b23..9aa4a13 100644 Binary files a/docs/build/doctrees/mxpic/components/composites/MZI.doctree and b/docs/build/doctrees/mxpic/components/composites/MZI.doctree differ diff --git a/docs/build/doctrees/mxpic/components/composites/MZI_mesh.doctree b/docs/build/doctrees/mxpic/components/composites/MZI_mesh.doctree index 841d499..798cfd2 100644 Binary files a/docs/build/doctrees/mxpic/components/composites/MZI_mesh.doctree and b/docs/build/doctrees/mxpic/components/composites/MZI_mesh.doctree differ diff --git a/docs/build/doctrees/mxpic/components/composites/SptTree.doctree b/docs/build/doctrees/mxpic/components/composites/SptTree.doctree index d0411e9..b123e3e 100644 Binary files a/docs/build/doctrees/mxpic/components/composites/SptTree.doctree and b/docs/build/doctrees/mxpic/components/composites/SptTree.doctree differ diff --git a/docs/build/doctrees/mxpic/components/electronics/eic_units.doctree b/docs/build/doctrees/mxpic/components/electronics/eic_units.doctree index 1025184..7187b2f 100644 Binary files a/docs/build/doctrees/mxpic/components/electronics/eic_units.doctree and b/docs/build/doctrees/mxpic/components/electronics/eic_units.doctree differ diff --git a/docs/build/doctrees/mxpic/components/gds_devices.doctree b/docs/build/doctrees/mxpic/components/gds_devices.doctree index 8874c98..be34d2e 100644 Binary files a/docs/build/doctrees/mxpic/components/gds_devices.doctree and b/docs/build/doctrees/mxpic/components/gds_devices.doctree differ diff --git a/docs/build/doctrees/mxpic/components/geometry/curves.doctree b/docs/build/doctrees/mxpic/components/geometry/curves.doctree new file mode 100644 index 0000000..5a7127b Binary files /dev/null and b/docs/build/doctrees/mxpic/components/geometry/curves.doctree differ diff --git a/docs/build/doctrees/mxpic/components/geometry/index.doctree b/docs/build/doctrees/mxpic/components/geometry/index.doctree new file mode 100644 index 0000000..39e6a23 Binary files /dev/null and b/docs/build/doctrees/mxpic/components/geometry/index.doctree differ diff --git a/docs/build/doctrees/mxpic/components/geometry/polygons.doctree b/docs/build/doctrees/mxpic/components/geometry/polygons.doctree new file mode 100644 index 0000000..9e19b2e Binary files /dev/null and b/docs/build/doctrees/mxpic/components/geometry/polygons.doctree differ diff --git a/docs/build/doctrees/mxpic/components/geometry/racetrack.doctree b/docs/build/doctrees/mxpic/components/geometry/racetrack.doctree new file mode 100644 index 0000000..15263d6 Binary files /dev/null and b/docs/build/doctrees/mxpic/components/geometry/racetrack.doctree differ diff --git a/docs/build/doctrees/mxpic/components/geometry/rings.doctree b/docs/build/doctrees/mxpic/components/geometry/rings.doctree new file mode 100644 index 0000000..a16310a Binary files /dev/null and b/docs/build/doctrees/mxpic/components/geometry/rings.doctree differ diff --git a/docs/build/doctrees/mxpic/components/index.doctree b/docs/build/doctrees/mxpic/components/index.doctree index d60d67b..8d0c2c2 100644 Binary files a/docs/build/doctrees/mxpic/components/index.doctree and b/docs/build/doctrees/mxpic/components/index.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/EC_dual_layer_px3.doctree b/docs/build/doctrees/mxpic/components/primitives/EC_dual_layer_px3.doctree index 94dc7a1..d918542 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/EC_dual_layer_px3.doctree and b/docs/build/doctrees/mxpic/components/primitives/EC_dual_layer_px3.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/active/dev_ps.doctree b/docs/build/doctrees/mxpic/components/primitives/active/dev_ps.doctree index f1105db..60eb4fc 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/active/dev_ps.doctree and b/docs/build/doctrees/mxpic/components/primitives/active/dev_ps.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/active/pin_wg.doctree b/docs/build/doctrees/mxpic/components/primitives/active/pin_wg.doctree index 16979b9..77624e9 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/active/pin_wg.doctree and b/docs/build/doctrees/mxpic/components/primitives/active/pin_wg.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/active/rings.doctree b/docs/build/doctrees/mxpic/components/primitives/active/rings.doctree index 332919f..1dc656c 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/active/rings.doctree and b/docs/build/doctrees/mxpic/components/primitives/active/rings.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/beam_splitters.doctree b/docs/build/doctrees/mxpic/components/primitives/beam_splitters.doctree index 9b65b1a..e35a37e 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/beam_splitters.doctree and b/docs/build/doctrees/mxpic/components/primitives/beam_splitters.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/directional_couplers.doctree b/docs/build/doctrees/mxpic/components/primitives/directional_couplers.doctree index 197083a..532fdc5 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/directional_couplers.doctree and b/docs/build/doctrees/mxpic/components/primitives/directional_couplers.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/grating_couplers.doctree b/docs/build/doctrees/mxpic/components/primitives/grating_couplers.doctree index fc357b3..c6b296b 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/grating_couplers.doctree and b/docs/build/doctrees/mxpic/components/primitives/grating_couplers.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/multimode_interferometers.doctree b/docs/build/doctrees/mxpic/components/primitives/multimode_interferometers.doctree index 4c227bc..515273e 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/multimode_interferometers.doctree and b/docs/build/doctrees/mxpic/components/primitives/multimode_interferometers.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/passive/crows.doctree b/docs/build/doctrees/mxpic/components/primitives/passive/crows.doctree index 2cb2821..027f514 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/passive/crows.doctree and b/docs/build/doctrees/mxpic/components/primitives/passive/crows.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/passive/rings.doctree b/docs/build/doctrees/mxpic/components/primitives/passive/rings.doctree index 2c5c9bd..b4e3ab4 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/passive/rings.doctree and b/docs/build/doctrees/mxpic/components/primitives/passive/rings.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/passive/unit.doctree b/docs/build/doctrees/mxpic/components/primitives/passive/unit.doctree index bee640e..651cc78 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/passive/unit.doctree and b/docs/build/doctrees/mxpic/components/primitives/passive/unit.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/PBS.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/PBS.doctree index d589503..c8eac8f 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/PBS.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/PBS.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/YBS.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/YBS.doctree index fdd20cb..9417203 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/YBS.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/YBS.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/bragg.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/bragg.doctree index f610d7f..e61dfa3 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/bragg.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/bragg.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/couplers.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/couplers.doctree index 0cbdf1a..548cd0f 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/couplers.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/couplers.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/cross.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/cross.doctree index 514fab2..93f233d 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/cross.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/cross.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/gratings.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/gratings.doctree index aa2fc6e..786123b 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/gratings.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/gratings.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/mmi.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/mmi.doctree index 65c4f61..5d44811 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/mmi.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/mmi.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/racetrack.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/racetrack.doctree index 26bd2ae..091a355 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/racetrack.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/racetrack.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/rings.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/rings.doctree index edd9e47..1f92449 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/rings.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/rings.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/spiral.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/spiral.doctree index ddc4263..cfe522c 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/spiral.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/spiral.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/pic/taper.doctree b/docs/build/doctrees/mxpic/components/primitives/pic/taper.doctree index 1754a0e..733bcf0 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/pic/taper.doctree and b/docs/build/doctrees/mxpic/components/primitives/pic/taper.doctree differ diff --git a/docs/build/doctrees/mxpic/components/primitives/spiral.doctree b/docs/build/doctrees/mxpic/components/primitives/spiral.doctree index 32d87b5..4af6f26 100644 Binary files a/docs/build/doctrees/mxpic/components/primitives/spiral.doctree and b/docs/build/doctrees/mxpic/components/primitives/spiral.doctree differ diff --git a/docs/build/doctrees/mxpic/components/routing.doctree b/docs/build/doctrees/mxpic/components/routing.doctree index 35d8030..0562dbd 100644 Binary files a/docs/build/doctrees/mxpic/components/routing.doctree and b/docs/build/doctrees/mxpic/components/routing.doctree differ diff --git a/docs/build/html/_sources/mxpic/components/geometry/curves.md.txt b/docs/build/html/_sources/mxpic/components/geometry/curves.md.txt new file mode 100644 index 0000000..b18def6 --- /dev/null +++ b/docs/build/html/_sources/mxpic/components/geometry/curves.md.txt @@ -0,0 +1,24 @@ +# mxpic.components.geometry.curves + +```{eval-rst} +.. automodule:: mxpic.components.geometry.curves + :no-members: +``` + +## Conchoid + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.curves.Conchoid + :members: + :undoc-members: + :show-inheritance: +``` + +## Clothoid + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.curves.Clothoid + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/build/html/_sources/mxpic/components/geometry/index.md.txt b/docs/build/html/_sources/mxpic/components/geometry/index.md.txt new file mode 100644 index 0000000..8284e52 --- /dev/null +++ b/docs/build/html/_sources/mxpic/components/geometry/index.md.txt @@ -0,0 +1,12 @@ +# Geometry + +Reusable geometry structures used by component and primitive generators. + +```{toctree} + :maxdepth: 2 + +polygons +rings +curves +racetrack +``` diff --git a/docs/build/html/_sources/mxpic/components/geometry/polygons.md.txt b/docs/build/html/_sources/mxpic/components/geometry/polygons.md.txt new file mode 100644 index 0000000..236edfb --- /dev/null +++ b/docs/build/html/_sources/mxpic/components/geometry/polygons.md.txt @@ -0,0 +1,15 @@ +# mxpic.components.geometry.polygons + +```{eval-rst} +.. automodule:: mxpic.components.geometry.polygons + :no-members: +``` + +## strt_round_courner + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.polygons.strt_round_courner + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/build/html/_sources/mxpic/components/geometry/racetrack.md.txt b/docs/build/html/_sources/mxpic/components/geometry/racetrack.md.txt new file mode 100644 index 0000000..f3db3dc --- /dev/null +++ b/docs/build/html/_sources/mxpic/components/geometry/racetrack.md.txt @@ -0,0 +1,15 @@ +# mxpic.components.geometry.racetrack + +```{eval-rst} +.. automodule:: mxpic.components.geometry.racetrack + :no-members: +``` + +## Racetrack + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.racetrack.Racetrack + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/build/html/_sources/mxpic/components/geometry/rings.md.txt b/docs/build/html/_sources/mxpic/components/geometry/rings.md.txt new file mode 100644 index 0000000..7de59b2 --- /dev/null +++ b/docs/build/html/_sources/mxpic/components/geometry/rings.md.txt @@ -0,0 +1,51 @@ +# mxpic.components.geometry.rings + +```{eval-rst} +.. automodule:: mxpic.components.geometry.rings + :no-members: +``` + +## circle + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.circle + :members: + :undoc-members: + :show-inheritance: +``` + +## mx_bend + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.mx_bend + :members: + :undoc-members: + :show-inheritance: +``` + +## Elipse_dual + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.Elipse_dual + :members: + :undoc-members: + :show-inheritance: +``` + +## Elipse + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.Elipse + :members: + :undoc-members: + :show-inheritance: +``` + +## hole + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.hole + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/build/html/_sources/mxpic/components/index.md.txt b/docs/build/html/_sources/mxpic/components/index.md.txt index ae9950c..32b47a3 100644 --- a/docs/build/html/_sources/mxpic/components/index.md.txt +++ b/docs/build/html/_sources/mxpic/components/index.md.txt @@ -12,5 +12,5 @@ basic gds_devices pins routing -structures +geometry/index ``` diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index 03b5278..b9b7a78 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -372,11 +372,11 @@
  • (mxpic.components.primitives.spiral.spiral_circle attribute)
  • -
  • circle (class in mxpic.components.structures) +
  • circle (class in mxpic.components.geometry.rings)
  • -
  • Clothoid (class in mxpic.components.structures) +
  • Clothoid (class in mxpic.components.geometry.curves)
  • -
  • Conchoid (class in mxpic.components.structures) +
  • Conchoid (class in mxpic.components.geometry.curves)
  • connPatch() (mxpic.components.primitives.passive.rings.Route method) @@ -468,9 +468,9 @@
  • @@ -832,7 +832,7 @@ @@ -933,6 +933,14 @@
  • mxpic.components.electronics.eic_units
  • mxpic.components.gds_devices +
  • +
  • mxpic.components.geometry.curves +
  • +
  • mxpic.components.geometry.polygons +
  • +
  • mxpic.components.geometry.racetrack +
  • +
  • mxpic.components.geometry.rings
  • mxpic.components.others.simulation.DualPortElements
  • @@ -995,8 +1003,6 @@
  • mxpic.components.primitives.spiral
  • mxpic.components.routing -
  • -
  • mxpic.components.structures
  • MonitorParas() (in module mxpic.components.others.simulation.DualPortElements) @@ -1017,7 +1023,7 @@
  • MRR_STD_Ring (class in mxpic.components.primitives.passive.rings)
  • -
  • mx_bend (class in mxpic.components.structures) +
  • mx_bend (class in mxpic.components.geometry.rings)
  • mxpic.components.basic @@ -1075,6 +1081,34 @@
  • +
  • + mxpic.components.geometry.curves + +
  • +
  • + mxpic.components.geometry.polygons + +
  • +
  • + mxpic.components.geometry.racetrack + +
  • +
  • + mxpic.components.geometry.rings + +
  • @@ -1292,13 +1326,6 @@
  • -
  • - mxpic.components.structures - -
  • MZI (class in mxpic.components.composites.MZI) @@ -1389,7 +1416,7 @@

    R

    + + + + + + + + + + + + - - -
    -
  • strt_round_courner (class in mxpic.components.structures) +
  • strt_round_courner (class in mxpic.components.geometry.polygons)
  • szVia (mxpic.components.electronics.eic_units.Vias attribute)
  • diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 63fc828..9f2c144 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -276,7 +276,7 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
  • diff --git a/docs/build/html/mxpic/components/composites/LoopMirror.html b/docs/build/html/mxpic/components/composites/LoopMirror.html index 02326dd..ada2900 100644 --- a/docs/build/html/mxpic/components/composites/LoopMirror.html +++ b/docs/build/html/mxpic/components/composites/LoopMirror.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/composites/MZI.html b/docs/build/html/mxpic/components/composites/MZI.html index 7cd8b6d..c676c11 100644 --- a/docs/build/html/mxpic/components/composites/MZI.html +++ b/docs/build/html/mxpic/components/composites/MZI.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/composites/MZI_mesh.html b/docs/build/html/mxpic/components/composites/MZI_mesh.html index 8263f62..b09af0c 100644 --- a/docs/build/html/mxpic/components/composites/MZI_mesh.html +++ b/docs/build/html/mxpic/components/composites/MZI_mesh.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/composites/SptTree.html b/docs/build/html/mxpic/components/composites/SptTree.html index 35148f0..72c95ba 100644 --- a/docs/build/html/mxpic/components/composites/SptTree.html +++ b/docs/build/html/mxpic/components/composites/SptTree.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/composites/index.html b/docs/build/html/mxpic/components/composites/index.html index f71dccd..ba8f1e2 100644 --- a/docs/build/html/mxpic/components/composites/index.html +++ b/docs/build/html/mxpic/components/composites/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/electronics/eic_units.html b/docs/build/html/mxpic/components/electronics/eic_units.html index 8f80842..dfb7858 100644 --- a/docs/build/html/mxpic/components/electronics/eic_units.html +++ b/docs/build/html/mxpic/components/electronics/eic_units.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/electronics/index.html b/docs/build/html/mxpic/components/electronics/index.html index c9def12..50e4f89 100644 --- a/docs/build/html/mxpic/components/electronics/index.html +++ b/docs/build/html/mxpic/components/electronics/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/gds_devices.html b/docs/build/html/mxpic/components/gds_devices.html index 494ac07..c43cefc 100644 --- a/docs/build/html/mxpic/components/gds_devices.html +++ b/docs/build/html/mxpic/components/gds_devices.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/geometry/curves.html b/docs/build/html/mxpic/components/geometry/curves.html new file mode 100644 index 0000000..3341370 --- /dev/null +++ b/docs/build/html/mxpic/components/geometry/curves.html @@ -0,0 +1,531 @@ + + + + + + + + + + + mxpic.components.geometry.curves — mxpic_handbook mxpic documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + +
    + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    mxpic.components.geometry.curves#

    +

    Curve and spiral geometry primitives.

    +
    +

    Conchoid#

    +
    +
    +class mxpic.components.geometry.curves.Conchoid(R0, kR, T, w, layer, w_end=None, res=0.1, final_flat=None, begin_flat=None, xs=None)#
    +

    Bases: object

    +
    + +
    +
    +

    Clothoid#

    +
    +
    +class mxpic.components.geometry.curves.Clothoid(name=None, R=[10, 20], w=[0.4, 0.5], A=[0, 45], width_type='sine', spiral_order=1, Rmax=10000, dL_cal=0.001, dL_wg=0.1, xs='strip', layer=None, sharp_patch=True, end_patch=True, show_pins=False)#
    +

    Bases: object

    +
    +
    +generate_gds(sharp_patch, show_pins)#
    +
    + +
    + +
    +
    + + +
    + + + + + + + +
    + + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/build/html/mxpic/components/geometry/index.html b/docs/build/html/mxpic/components/geometry/index.html new file mode 100644 index 0000000..9902011 --- /dev/null +++ b/docs/build/html/mxpic/components/geometry/index.html @@ -0,0 +1,508 @@ + + + + + + + + + + + Geometry — mxpic_handbook mxpic documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + +
    + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + +
    + +
    + + +
    +
    + + + + + + + + + + + + + +
    + + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/build/html/mxpic/components/geometry/polygons.html b/docs/build/html/mxpic/components/geometry/polygons.html new file mode 100644 index 0000000..c9d756b --- /dev/null +++ b/docs/build/html/mxpic/components/geometry/polygons.html @@ -0,0 +1,510 @@ + + + + + + + + + + + mxpic.components.geometry.polygons — mxpic_handbook mxpic documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + +
    + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    mxpic.components.geometry.polygons#

    +

    Polygon helpers and simple geometric utility cells.

    +
    +

    strt_round_courner#

    +
    +
    +class mxpic.components.geometry.polygons.strt_round_courner(width=5, length=10, layer=None, radius=1, n_points=64)#
    +

    Bases: object

    +
    + +
    +
    + + +
    + + + + + + + +
    + + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/build/html/mxpic/components/geometry/racetrack.html b/docs/build/html/mxpic/components/geometry/racetrack.html new file mode 100644 index 0000000..d52a8ed --- /dev/null +++ b/docs/build/html/mxpic/components/geometry/racetrack.html @@ -0,0 +1,508 @@ + + + + + + + + + + + mxpic.components.geometry.racetrack — mxpic_handbook mxpic documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + +
    + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    mxpic.components.geometry.racetrack#

    +

    Racetrack geometry primitive.

    +
    +

    Racetrack#

    +
    +
    +class mxpic.components.geometry.racetrack.Racetrack(bend_cell=None, xs='strip', layer=None, R_bend=10, w=0.5, dLx=100, dLy=100, res=0.001)#
    +

    Bases: object

    +
    +
    +generate_gds()#
    +
    + +
    + +
    +
    + + +
    + + + + + + + +
    + + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/build/html/mxpic/components/geometry/rings.html b/docs/build/html/mxpic/components/geometry/rings.html new file mode 100644 index 0000000..df7464a --- /dev/null +++ b/docs/build/html/mxpic/components/geometry/rings.html @@ -0,0 +1,589 @@ + + + + + + + + + + + mxpic.components.geometry.rings — mxpic_handbook mxpic documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + +
    + + + + + +
    +
    + + + + +
    + + + + + + + + + + + +
    + +
    + + +
    +
    + +
    +
    + +
    + +
    + + +
    + +
    + + +
    +
    + + + + + +
    + +
    +

    mxpic.components.geometry.rings#

    +

    Circular, elliptical, and bend geometry primitives.

    +
    +

    circle#

    +
    +
    +class mxpic.components.geometry.rings.circle(radius=10, width=0.45, theta_start=0, theta_stop=360, res=0.05, angle=None, xs='strip', layer=None, sharp_patch=True, y_cut=None)#
    +

    Bases: object

    +

    # ================================================================= +# @ File : <mx_frame_lib.py> +# @ structure: circle ring or disk +# @ Args : * radius : center radius of the ring +# : * width : width of the ring +# : * theta_start : start end of the ring, range [0~360], can be negative +# : * theta_stop : stop end of the ring, range [0~360], can be negative +# : * n_points : resolution of the polygon +# : * xs : placing layer +# @ located in the center of the ring +# =================================================================

    +
    + +
    +
    +

    mx_bend#

    +
    +
    +class mxpic.components.geometry.rings.mx_bend(radius=10, width=0.45, theta_start=0, theta_stop=360, res=0.05, angle=None, xs='strip', layer=None, sharp_patch=True)#
    +

    Bases: object

    +
    + +
    +
    +

    Elipse_dual#

    +
    +
    +class mxpic.components.geometry.rings.Elipse_dual(ORx, ORy, IRx, IRy, offset_X=0, offset_Y=0, xs=None, layer=None, theta_start=0, theta_stop=360, sharp_patch=True, res=0.001, y_cut=None)#
    +

    Bases: object

    +
    +
    +generate_gds(sharp_patch)#
    +
    + +
    + +
    +
    +

    Elipse#

    +
    +
    +class mxpic.components.geometry.rings.Elipse(La=None, Lb=None, wa=None, wb=None, offset_a=0, offset_b=0, type='center', width_type='sine', layer=None, xs=None, theta_start=0, theta_stop=360, res=0.001, sharp_patch=False, show_pins=False)#
    +

    Bases: object

    +
    +
    +generate_gds(sharp_patch, show_pins)#
    +
    + +
    + +
    +
    +

    hole#

    +
    +
    +class mxpic.components.geometry.rings.hole(r_hole=0.3, Dx_hole=0.3, Dy_hole=0.3, Lx_sq=6, Ly_sq=6, offset=0, res=0.05, xs='strip', layer=None, sharp_patch=True, hole_shape='circle')#
    +

    Bases: object

    +
    + +
    +
    + + +
    + + + + + + + +
    + + + + +
    + + +
    +
    + +
    + +
    +
    +
    + + + + + +
    + + +
    + + \ No newline at end of file diff --git a/docs/build/html/mxpic/components/index.html b/docs/build/html/mxpic/components/index.html index 0c983a7..7cee8a6 100644 --- a/docs/build/html/mxpic/components/index.html +++ b/docs/build/html/mxpic/components/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -413,16 +419,11 @@
  • ic_exception
  • -
  • mxpic.components.structures diff --git a/docs/build/html/mxpic/components/primitives/EC_dual_layer_px3.html b/docs/build/html/mxpic/components/primitives/EC_dual_layer_px3.html index 4090158..9ba819c 100644 --- a/docs/build/html/mxpic/components/primitives/EC_dual_layer_px3.html +++ b/docs/build/html/mxpic/components/primitives/EC_dual_layer_px3.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/active/dev_ps.html b/docs/build/html/mxpic/components/primitives/active/dev_ps.html index 34415fe..738010e 100644 --- a/docs/build/html/mxpic/components/primitives/active/dev_ps.html +++ b/docs/build/html/mxpic/components/primitives/active/dev_ps.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -388,6 +394,18 @@ class mxpic.components.primitives.active.dev_ps.Heater_NDoped(w_wg=0.45, slab_width=1.1, heater_length=100, heater_width=1, if_open=True, show_pins=False)#

    Bases: object

    This is the class for N-doped heater as a phase shifter.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • slab_width (float, optional) – Value for the slab_width parameter. Default is 1.1.

    • +
    • heater_length (int, optional) – Value for the heater_length parameter. Default is 100.

    • +
    • heater_width (int, optional) – Value for the heater_width parameter. Default is 1.

    • +
    • if_open (bool, optional) – Value for the if_open parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -408,6 +426,21 @@ class mxpic.components.primitives.active.dev_ps.PS_PIN(w_wg=0.45, w_wg_slab=0.5, w_slab=1, l_wg=800, d2wg_list=[0.2, 1], p_layer_list=['PW', 'PP'], n_layer_list=['NW', 'NP'], w_plus_max=5.1, show_pins=False)#

    Bases: object

    PIN junction for a high-speed phase shift.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_wg_slab (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • w_slab (float, optional) – Width parameter in microns. Default is 1.

    • +
    • l_wg (float, optional) – Value for the l_wg parameter. Default is 800.

    • +
    • d2wg_list (list, optional) – Value for the d2wg_list parameter. Default is [0.2, 1].

    • +
    • p_layer_list (list, optional) – Value for the p_layer_list parameter. Default is [‘PW’, ‘PP’].

    • +
    • n_layer_list (list, optional) – Value for the n_layer_list parameter. Default is [‘NW’, ‘NP’].

    • +
    • w_plus_max (float, optional) – Width parameter in microns. Default is 5.1.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    cell#
    diff --git a/docs/build/html/mxpic/components/primitives/active/index.html b/docs/build/html/mxpic/components/primitives/active/index.html index a8b0dfa..f952ea7 100644 --- a/docs/build/html/mxpic/components/primitives/active/index.html +++ b/docs/build/html/mxpic/components/primitives/active/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/active/pin_wg.html b/docs/build/html/mxpic/components/primitives/active/pin_wg.html index 0eb49a5..6ae3805 100644 --- a/docs/build/html/mxpic/components/primitives/active/pin_wg.html +++ b/docs/build/html/mxpic/components/primitives/active/pin_wg.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,40 @@
    class mxpic.components.primitives.active.pin_wg.waveguide_PIN(xs='rib', L_wg=100, w_wg=1.2, xs_pn_ct='strip_cor', w_itr=2.0, w_p=4.0, w_n=4.0, w_p_ct=4.0, w_n_ct=4.0, xs_heater='heater', xs_via_h2m='via_h2m', w_metal_pn=8, sz_via_i2m=0.25, sp_via_i2m=0.35, sp_sc=1, xs_p='pw', xs_n='nw', xs_pcont='pp', xs_ncont='np', xs_sa='sa', xs_via_s2m='via_s2m', xs_metal='metal', rib_taper=True, L_taper=30, xs_port='strip', show_pins=True)#

    Bases: object

    +

    waveguide PIN primitive component.

    +

    This component builds the waveguide PIN layout cell.

    +
    +
    Parameters:
    +
      +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘rib’.

    • +
    • L_wg (float, optional) – Length parameter in microns. Default is 100.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 1.2.

    • +
    • xs_pn_ct (str, optional) – Layer or cross-section name used by the device. Default is ‘strip_cor’.

    • +
    • w_itr (float, optional) – Width parameter in microns. Default is 2.0.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 4.0.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 4.0.

    • +
    • w_p_ct (float, optional) – Width parameter in microns. Default is 4.0.

    • +
    • w_n_ct (float, optional) – Width parameter in microns. Default is 4.0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • xs_via_h2m (str, optional) – Layer or cross-section name used by the device. Default is ‘via_h2m’.

    • +
    • w_metal_pn (float, optional) – Width parameter in microns. Default is 8.

    • +
    • sz_via_i2m (float, optional) – Value for the sz_via_i2m parameter. Default is 0.25.

    • +
    • sp_via_i2m (float, optional) – Spacing or gap parameter in microns. Default is 0.35.

    • +
    • sp_sc (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘pw’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘nw’.

    • +
    • xs_pcont (str, optional) – Layer or cross-section name used by the device. Default is ‘pp’.

    • +
    • xs_ncont (str, optional) – Layer or cross-section name used by the device. Default is ‘np’.

    • +
    • xs_sa (str, optional) – Layer or cross-section name used by the device. Default is ‘sa’.

    • +
    • xs_via_s2m (str, optional) – Layer or cross-section name used by the device. Default is ‘via_s2m’.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • rib_taper (bool, optional) – Value for the rib_taper parameter. Default is True.

    • +
    • L_taper (float, optional) – Length parameter in microns. Default is 30.

    • +
    • xs_port (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    • +
    +
    +
    generate_gds(show_pins=False)#
    @@ -392,6 +432,36 @@
    class mxpic.components.primitives.active.pin_wg.WGDoped(name=None, w_wg=0.5, w_port=0.5, Ltp_port=10, L_wg=200, xs_wg='rib', xs_n=['nld', 'np'], xs_p=['pld', 'pp'], w_n=[0.5, 1], w_p=[0.5, 1], w_ht=0, L_ht=None, xs_ht='heater', w_mt=None, xs_mt='metal', xs_cont_wg=None, w_i=None, dope_offset=0, via_s2m=None, via_h2m=None, dope_ovlp=0.2, cell_xs_transition=None)#

    Bases: object

    +

    WGDoped primitive component.

    +

    This component builds the WGDoped layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • Ltp_port (int, optional) – Length parameter in microns. Default is 10.

    • +
    • L_wg (int, optional) – Length parameter in microns. Default is 200.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘rib’.

    • +
    • xs_n (list, optional) – Layer or cross-section name used by the device. Default is [‘nld’, ‘np’].

    • +
    • xs_p (list, optional) – Layer or cross-section name used by the device. Default is [‘pld’, ‘pp’].

    • +
    • w_n (list, optional) – Width parameter in microns. Default is [0.5, 1].

    • +
    • w_p (list, optional) – Width parameter in microns. Default is [0.5, 1].

    • +
    • w_ht (float, optional) – Width parameter in microns. Default is 0.

    • +
    • L_ht (Any, optional) – Length parameter in microns. Default is None.

    • +
    • xs_ht (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_mt (Optional[float], optional) – Width parameter in microns. Default is None.

    • +
    • xs_mt (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_i (Optional[float], optional) – Width parameter in microns. Default is None.

    • +
    • dope_offset (int, optional) – Value for the dope_offset parameter. Default is 0.

    • +
    • via_s2m (Any, optional) – Value for the via_s2m parameter. Default is None.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • dope_ovlp (float, optional) – Value for the dope_ovlp parameter. Default is 0.2.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    +
    +
    generate_gds()#
    diff --git a/docs/build/html/mxpic/components/primitives/active/rings.html b/docs/build/html/mxpic/components/primitives/active/rings.html index 26a0028..0b14089 100644 --- a/docs/build/html/mxpic/components/primitives/active/rings.html +++ b/docs/build/html/mxpic/components/primitives/active/rings.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -387,6 +393,64 @@
    class mxpic.components.primitives.active.rings.AED_Ring_PIN(name=None, ORx=10, ORy=9, IRx=9.35, IRy=8.6, gap=0.2, dual_BUS=False, w_bus=0.45, R_cp=None, A_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, Euler_trasition=False, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=8, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_ht_dX=10, epin_ht_dY=3, via_i2m=None, xs_metal_imp='metal', xs_p='p', xs_n='n', xs_cont_wg=None, w_p=3.0, gap_p_i=1, gap_n_i=1, w_n=3.0, offset_i=0, A_imp_in=180, A_imp_out=180, sp_cont=0.2, w_ovlp=0.1, bus_dopping=True, p_in_n_out=False, cell_xs_transition=None)#

    Bases: MRR_AED

    +

    AED Ring PIN primitive component.

    +

    This component builds the AED Ring PIN layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • ORx (float, optional) – Value for the ORx parameter. Default is 10.

    • +
    • ORy (float, optional) – Value for the ORy parameter. Default is 9.

    • +
    • IRx (float, optional) – Value for the IRx parameter. Default is 10 - 0.65.

    • +
    • IRy (float, optional) – Value for the IRy parameter. Default is 9 - 0.4.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • dual_BUS (bool, optional) – Value for the dual_BUS parameter. Default is False.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_ht_dX (int, optional) – Value for the epin_ht_dX parameter. Default is 10.

    • +
    • epin_ht_dY (int, optional) – Value for the epin_ht_dY parameter. Default is 3.

    • +
    • via_i2m (Any, optional) – Via definition used between implant and metal layers. Default is None.

    • +
    • xs_metal_imp (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘p’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘n’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 3.0.

    • +
    • gap_p_i (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • gap_n_i (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 3.0.

    • +
    • offset_i (float, optional) – Value for the offset_i parameter. Default is 0.

    • +
    • A_imp_in (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • A_imp_out (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • sp_cont (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_ovlp (float, optional) – Width parameter in microns. Default is 0.1.

    • +
    • bus_dopping (bool, optional) – Value for the bus_dopping parameter. Default is True.

    • +
    • p_in_n_out (bool, optional) – Value for the p_in_n_out parameter. Default is False.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    +
    +
    generate_imp_gds()#
    @@ -401,6 +465,65 @@
    class mxpic.components.primitives.active.rings.STD_Ring_PIN(name, r_ring=10, w_ring=0.55, gap=0.2, dual_BUS=True, w_bus=0.45, R_cp=None, A_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, Euler_trasition=False, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=8, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_ht_dX=10, epin_ht_dY=3, xs_metal_imp='metal', via_i2m=None, xs_p='p', xs_n='n', xs_cont_wg=None, w_p=3, gap_p_i=1, gap_n_i=1, w_n=3, offset_i=0, A_imp_in=180, A_imp_out=180, xs_pcont='pp', xs_ncont='np', w_pcont=3, w_ncont=3, sp_cont=0.2, w_ovlp=0.2, bus_dopping=True, p_in_n_out=False)#

    Bases: AED_Ring_PIN

    +

    STD Ring PIN primitive component.

    +

    This component builds the STD Ring PIN layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.55.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • dual_BUS (bool, optional) – Value for the dual_BUS parameter. Default is True.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_ht_dX (int, optional) – Value for the epin_ht_dX parameter. Default is 10.

    • +
    • epin_ht_dY (int, optional) – Value for the epin_ht_dY parameter. Default is 3.

    • +
    • xs_metal_imp (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_i2m (Any, optional) – Via definition used between implant and metal layers. Default is None.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘p’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘n’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 3.

    • +
    • gap_p_i (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • gap_n_i (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 3.

    • +
    • offset_i (float, optional) – Value for the offset_i parameter. Default is 0.

    • +
    • A_imp_in (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • A_imp_out (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • xs_pcont (str, optional) – Layer or cross-section name used by the device. Default is ‘pp’.

    • +
    • xs_ncont (str, optional) – Layer or cross-section name used by the device. Default is ‘np’.

    • +
    • w_pcont (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_ncont (float, optional) – Width parameter in microns. Default is 3.

    • +
    • sp_cont (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_ovlp (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • bus_dopping (bool, optional) – Value for the bus_dopping parameter. Default is True.

    • +
    • p_in_n_out (bool, optional) – Value for the p_in_n_out parameter. Default is False.

    • +
    +
    +
    @@ -410,6 +533,58 @@
    class mxpic.components.primitives.active.rings.PIN_MRR_MM_Allpass(name=None, r_ring=10, w_ring=0.55, gap=0.2, w_bus=0.45, R_cp=None, A_cp=0, R_att=10, R_att_min=10, A_att=10, offset_X=0, offset_Y=0, w_wg=0.45, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=8, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_ht_dX=10, epin_ht_dY=3, xs_metal_imp='metal', via_i2m=None, xs_p='p', xs_n='n', xs_cont_wg=None, w_p=3, w_n=3, w_i=1, offset_i=0, A_imp_in=180, A_imp_out=180, sp_cont=0.2, w_ovlp=0.2, bus_dopping=True, cell_xs_transition=None, p_in_n_out=False)#

    Bases: AED_Ring_PIN

    +

    PIN MRR MM Allpass primitive component.

    +

    This component builds the PIN MRR MM Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.55.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_ht_dX (int, optional) – Value for the epin_ht_dX parameter. Default is 10.

    • +
    • epin_ht_dY (int, optional) – Value for the epin_ht_dY parameter. Default is 3.

    • +
    • xs_metal_imp (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_i2m (Any, optional) – Via definition used between implant and metal layers. Default is None.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘p’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘n’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_i (float, optional) – Width parameter in microns. Default is 1.

    • +
    • offset_i (float, optional) – Value for the offset_i parameter. Default is 0.

    • +
    • A_imp_in (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • A_imp_out (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • sp_cont (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_ovlp (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • bus_dopping (bool, optional) – Value for the bus_dopping parameter. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • p_in_n_out (bool, optional) – Value for the p_in_n_out parameter. Default is False.

    • +
    +
    +
    @@ -419,6 +594,58 @@
    class mxpic.components.primitives.active.rings.PIN_MRR_MM_Adddrop(name=None, r_ring=10, w_ring=0.55, gap=0.2, w_bus=0.45, R_cp=None, A_cp=0, R_att=10, R_att_min=10, A_att=10, offset_X=0, offset_Y=0, w_wg=0.45, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=8, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_ht_dX=10, epin_ht_dY=3, xs_metal_imp='metal', via_i2m=None, xs_p='p', xs_n='n', xs_cont_wg=None, w_p=3, w_n=3, w_i=1, offset_i=0, A_imp_in=180, A_imp_out=180, sp_cont=0.2, w_ovlp=0.2, bus_dopping=True, cell_xs_transition=None, p_in_n_out=False)#

    Bases: AED_Ring_PIN

    +

    PIN MRR MM Adddrop primitive component.

    +

    This component builds the PIN MRR MM Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.55.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_ht_dX (int, optional) – Value for the epin_ht_dX parameter. Default is 10.

    • +
    • epin_ht_dY (int, optional) – Value for the epin_ht_dY parameter. Default is 3.

    • +
    • xs_metal_imp (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_i2m (Any, optional) – Via definition used between implant and metal layers. Default is None.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘p’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘n’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_i (float, optional) – Width parameter in microns. Default is 1.

    • +
    • offset_i (float, optional) – Value for the offset_i parameter. Default is 0.

    • +
    • A_imp_in (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • A_imp_out (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • sp_cont (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_ovlp (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • bus_dopping (bool, optional) – Value for the bus_dopping parameter. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • p_in_n_out (bool, optional) – Value for the p_in_n_out parameter. Default is False.

    • +
    +
    +
    @@ -428,6 +655,53 @@
    class mxpic.components.primitives.active.rings.PIN_MRR_STD_Allpass(name=None, r_ring=10, w_ring=0.55, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=8, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_ht_dX=10, epin_ht_dY=3, xs_metal_imp='metal', via_i2m=None, xs_p='p', xs_n='n', xs_cont_wg=None, w_p=3, w_n=3, w_i=1, offset_i=0, A_imp_in=180, A_imp_out=180, sp_cont=0.2, w_ovlp=0.2, bus_dopping=True, cell_xs_transition=None, p_in_n_out=False)#

    Bases: AED_Ring_PIN

    +

    PIN MRR STD Allpass primitive component.

    +

    This component builds the PIN MRR STD Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.55.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_ht_dX (int, optional) – Value for the epin_ht_dX parameter. Default is 10.

    • +
    • epin_ht_dY (int, optional) – Value for the epin_ht_dY parameter. Default is 3.

    • +
    • xs_metal_imp (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_i2m (Any, optional) – Via definition used between implant and metal layers. Default is None.

    • +
    • xs_p (str, optional) – Layer or cross-section name used by the device. Default is ‘p’.

    • +
    • xs_n (str, optional) – Layer or cross-section name used by the device. Default is ‘n’.

    • +
    • xs_cont_wg (Optional[str], optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_p (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_n (float, optional) – Width parameter in microns. Default is 3.

    • +
    • w_i (float, optional) – Width parameter in microns. Default is 1.

    • +
    • offset_i (float, optional) – Value for the offset_i parameter. Default is 0.

    • +
    • A_imp_in (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • A_imp_out (int, optional) – Angle parameter in degrees. Default is 180.

    • +
    • sp_cont (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_ovlp (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • bus_dopping (bool, optional) – Value for the bus_dopping parameter. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • p_in_n_out (bool, optional) – Value for the p_in_n_out parameter. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/beam_splitters.html b/docs/build/html/mxpic/components/primitives/beam_splitters.html index 0d5314e..2676589 100644 --- a/docs/build/html/mxpic/components/primitives/beam_splitters.html +++ b/docs/build/html/mxpic/components/primitives/beam_splitters.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/directional_couplers.html b/docs/build/html/mxpic/components/primitives/directional_couplers.html index 1c8748e..e8b5556 100644 --- a/docs/build/html/mxpic/components/primitives/directional_couplers.html +++ b/docs/build/html/mxpic/components/primitives/directional_couplers.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -592,8 +598,24 @@
    class mxpic.components.primitives.directional_couplers.DC_bend(name=None, w_in=0.45, w_out=0.45, gap=0.2, r_in=40, theta_arc=30, w_wg=0.45, theta_ext=15, xs_wg='strip', sharp_patch=True, show_pins=False)#

    Bases: object

    -

    This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. -Written by HU GAOLEI at 2022.5.15.

    +

    This is a class for bend directional coupler for broadband and fabrication tolerant power splitting.

    +
    +
    Parameters:
    +
      +
    • name (Any, optional) – Unique identifier for the device cell. Default is None.

    • +
    • w_in (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_out (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • r_in (int, optional) – Radius parameter in microns. Default is 40.

    • +
    • theta_arc (int, optional) – Angle parameter in degrees. Default is 30.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • theta_ext (int, optional) – Angle parameter in degrees. Default is 15.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds(cellname='')#
    diff --git a/docs/build/html/mxpic/components/primitives/grating_couplers.html b/docs/build/html/mxpic/components/primitives/grating_couplers.html index c4f22a4..c01a23c 100644 --- a/docs/build/html/mxpic/components/primitives/grating_couplers.html +++ b/docs/build/html/mxpic/components/primitives/grating_couplers.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -619,6 +625,36 @@ This is a class for 2D Grating in IMEC.

    class mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer(name=None, w_teeth_SiN=0.5, gap_teeth_SiN=0.5, w_teeth_Si=0.5, gap_teeth_Si=0.5, ori_teeth_offset=5.0, n_teeth_Si=30, n_teeth_SiN=30, A_gc_taper=25.0, R_teeth_ori_SiN=40.0, R_teeth_ori_Si=40.0, L_end_Si=0.2, L_end_SiN=5.0, w_port=0.9, A_anti_rfl=4.0, layer_SiN_slab=None, layer_Si_slab=None, layer_Si_teeth=None, layer_SiN_teeth=None, layer_SiN_etch=None, layer_Si_etch=None, layer_ox_open=None)#

    Bases: object

    +

    GC SiN Si Dual Layer primitive component.

    +

    This component builds the GC SiN Si Dual Layer layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • w_teeth_SiN (list or float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • gap_teeth_SiN (list or float, optional) – Spacing or gap parameter in microns. Default is 0.5.

    • +
    • w_teeth_Si (list or float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • gap_teeth_Si (list or float, optional) – Spacing or gap parameter in microns. Default is 0.5.

    • +
    • ori_teeth_offset (float, optional) – Value for the ori_teeth_offset parameter. Default is 5.0.

    • +
    • n_teeth_Si (float, optional) – Value for the n_teeth_Si parameter. Default is 30.

    • +
    • n_teeth_SiN (float, optional) – Value for the n_teeth_SiN parameter. Default is 30.

    • +
    • A_gc_taper (float, optional) – Angle parameter in degrees. Default is 25.0.

    • +
    • R_teeth_ori_SiN (float, optional) – Radius parameter in microns. Default is 40.0.

    • +
    • R_teeth_ori_Si (float, optional) – Radius parameter in microns. Default is 40.0.

    • +
    • L_end_Si (float, optional) – Length parameter in microns. Default is 0.2.

    • +
    • L_end_SiN (float, optional) – Length parameter in microns. Default is 5.0.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.9.

    • +
    • A_anti_rfl (float, optional) – Angle parameter in degrees. Default is 4.0.

    • +
    • layer_SiN_slab (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_Si_slab (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_Si_teeth (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_SiN_teeth (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_SiN_etch (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_Si_etch (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_ox_open (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    +
    +
    generate_gds()#
    diff --git a/docs/build/html/mxpic/components/primitives/index.html b/docs/build/html/mxpic/components/primitives/index.html index 7e5af0d..9e4d758 100644 --- a/docs/build/html/mxpic/components/primitives/index.html +++ b/docs/build/html/mxpic/components/primitives/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/multimode_interferometers.html b/docs/build/html/mxpic/components/primitives/multimode_interferometers.html index 6117ee3..532a689 100644 --- a/docs/build/html/mxpic/components/primitives/multimode_interferometers.html +++ b/docs/build/html/mxpic/components/primitives/multimode_interferometers.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/passive/crows.html b/docs/build/html/mxpic/components/primitives/passive/crows.html index cb05d49..abc992e 100644 --- a/docs/build/html/mxpic/components/primitives/passive/crows.html +++ b/docs/build/html/mxpic/components/primitives/passive/crows.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,35 @@
    class mxpic.components.primitives.passive.crows.STD_CROW_V(ring, bus, w_bus, w_ring, sz_ring, sz_bus, name=None, gap_crows=[0.4], gap_cp=[0.45, 0.45], w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, ht_shift=0, A_ht=45, ISL_LEFT=True, ISL_RIGHT=True, show_pins=False)#

    Bases: object

    +

    STD CROW V primitive component.

    +

    This component builds the STD CROW V layout cell.

    +
    +
    Parameters:
    +
      +
    • ring (Any) – Ring cell or component used by this composite.

    • +
    • bus (Any) – Bus waveguide cell or component used by this composite.

    • +
    • w_bus (float or list) – Width parameter in microns.

    • +
    • w_ring (float or list) – Width parameter in microns.

    • +
    • sz_ring (float or list) – Value for the sz_ring parameter.

    • +
    • sz_bus (float or list) – Value for the sz_bus parameter.

    • +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • gap_crows (float or list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • gap_cp (float or list, optional) – Spacing or gap parameter in microns. Default is [0.45, 0.45].

    • +
    • w_heater (float or list, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • ISL_LEFT (bool, optional) – Value for the ISL_LEFT parameter. Default is True.

    • +
    • ISL_RIGHT (bool, optional) – Value for the ISL_RIGHT parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    A_ht#
    @@ -402,6 +437,48 @@
    class mxpic.components.primitives.passive.crows.CROW_Eul_Ring(name, R0=10, R1=3, w0=0.38, w1=0.65, w_bus=0.35, R_att=15, R_att_min=3, A_att=30, w_wg=0.45, dLx=0, dLy=0, xs_wg='strip', gap_crows=[0.4], gap_cp=0.45, w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, ISL_LEFT=True, ISL_RIGHT=True, show_pins=False, sharp_patch=True, dL_p2p=None, Ltp_bus=0, ht_shift=0, A_ht=45, R_cp=None, bus_order=1.0, width_type='crow_customize', A_cp=0)#

    Bases: STD_CROW_V

    +

    CROW Eul Ring primitive component.

    +

    This component builds the CROW Eul Ring layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • R0 (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1 (int, optional) – Radius parameter in microns. Default is 3.

    • +
    • w0 (float, optional) – Width parameter in microns. Default is 0.38.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.65.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.35.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 15.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 3.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 30.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • dLx (float, optional) – Value for the dLx parameter. Default is 0.

    • +
    • dLy (float, optional) – Value for the dLy parameter. Default is 0.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap_crows (list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • gap_cp (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • ISL_LEFT (bool, optional) – Value for the ISL_LEFT parameter. Default is True.

    • +
    • ISL_RIGHT (bool, optional) – Value for the ISL_RIGHT parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • R_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • bus_order (float, optional) – Value for the bus_order parameter. Default is 1.0.

    • +
    • width_type (str, optional) – Width parameter in microns. Default is ‘crow_customize’.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    +
    +
    @@ -411,6 +488,45 @@
    class mxpic.components.primitives.passive.crows.CROW_Eul_RCK(R0=10, R1=3, R2=20, w0=0.38, w1=0.65, w_bus=0.35, R_att=15, R_att_min=3, A_att=30, w_wg=0.45, dAc=0, dLx=0, dLy=0, xs_wg='strip', gap_crows=[0.4], gap_cp=0.45, w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, ISL_LEFT=True, ISL_RIGHT=True, show_pins=False, sharp_patch=True, dL_p2p=None, Ltp_bus=0, ht_shift=0, A_ht=45)#

    Bases: STD_CROW_V

    +

    CROW Eul RCK primitive component.

    +

    This component builds the CROW Eul RCK layout cell.

    +
    +
    Parameters:
    +
      +
    • R0 (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1 (int, optional) – Radius parameter in microns. Default is 3.

    • +
    • R2 (int, optional) – Radius parameter in microns. Default is 20.

    • +
    • w0 (float, optional) – Width parameter in microns. Default is 0.38.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.65.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.35.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 15.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 3.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 30.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • dAc (float, optional) – Value for the dAc parameter. Default is 0.

    • +
    • dLx (float, optional) – Value for the dLx parameter. Default is 0.

    • +
    • dLy (float, optional) – Value for the dLy parameter. Default is 0.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap_crows (list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • gap_cp (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • ISL_LEFT (bool, optional) – Value for the ISL_LEFT parameter. Default is True.

    • +
    • ISL_RIGHT (bool, optional) – Value for the ISL_RIGHT parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    +
    +
    @@ -420,6 +536,49 @@
    class mxpic.components.primitives.passive.crows.CROW_Circular_ring(r_ring=10, w_ring=0.45, xs_ring='strip', w1_bus=0.45, A1_cp=10, w2_bus=0.45, A2_cp=10, gap1=0.45, gap2=0.45, w_wg=0.45, Euler_trasition=True, R1_cp=None, R2_cp=None, R1_att=10, R2_att=10, R1_att_min=5, R2_att_min=5, A1_att=45, A2_att=45, gap_crows=[0.4], w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, ISL_LEFT=True, ISL_RIGHT=True, show_pins=False, sharp_patch=True, dL_p2p=None, Ltp_bus=0, ht_shift=0, A_ht=45)#

    Bases: STD_CROW_V

    +

    CROW Circular ring primitive component.

    +

    This component builds the CROW Circular ring layout cell.

    +
    +
    Parameters:
    +
      +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is True.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • A1_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • A2_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • gap_crows (float or list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • w_heater (float or list, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • ISL_LEFT (bool, optional) – Value for the ISL_LEFT parameter. Default is True.

    • +
    • ISL_RIGHT (bool, optional) – Value for the ISL_RIGHT parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    +
    +
    @@ -429,6 +588,39 @@
    class mxpic.components.primitives.passive.crows.CROW_STD_Allpass(r_ring=10, w_ring=0.45, xs_ring='strip', w_bus=0.45, A_cp=10, gap_bus=0.45, w_wg=0.45, Euler_trasition=True, R_att=10, R_att_min=5, A_att=45, gap_crows=[0.4], w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, show_pins=False, sharp_patch=True, dL_p2p=None, Ltp_bus=0, ht_shift=0, A_ht=45)#

    Bases: CROW_Circular_ring

    +

    CROW STD Allpass primitive component.

    +

    This component builds the CROW STD Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • gap_bus (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is True.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • gap_crows (float or list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • w_heater (float or list, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    +
    +
    @@ -438,6 +630,39 @@
    class mxpic.components.primitives.passive.crows.CROW_STD_Adddrop(r_ring=10, w_ring=0.45, xs_ring='strip', w_bus=0.45, A_cp=10, gap_bus=0.45, w_wg=0.45, Euler_trasition=True, R_att=10, R_att_min=5, A_att=45, gap_crows=[0.4], w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, show_pins=False, sharp_patch=True, dL_p2p=None, Ltp_bus=0, ht_shift=0, A_ht=45)#

    Bases: CROW_Circular_ring

    +

    CROW STD Adddrop primitive component.

    +

    This component builds the CROW STD Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • gap_bus (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is True.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • gap_crows (float or list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • w_heater (float or list, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    +
    +
    @@ -447,6 +672,52 @@
    class mxpic.components.primitives.passive.crows.CROW_AED(r_outer=10, wa=0.45, wb=0.45, xs_ring='strip', w1_bus=0.45, A1_cp=10, w2_bus=0.45, A2_cp=10, gap1=0.45, gap2=0.45, w_wg=0.45, Euler_trasition=True, R1_cp=None, R2_cp=None, R1_att=15, R2_att=15, R1_att_min=5, R2_att_min=5, L_tilt=0, A1_att=45, A2_att=45, Ltp_bus=0, dL_p2p=None, gap_crows=[0.4], gap_cp=[0.45, 0.45], w_heater=0, xs_heater='heater', connected=True, w_metal=8, xs_metal='metal', via_h2m=None, isl=None, ISL_LEFT=True, ISL_RIGHT=True, show_pins=False, sharp_patch=True, ht_shift=0, A_ht=45)#

    Bases: STD_CROW_V

    +

    CROW AED primitive component.

    +

    This component builds the CROW AED layout cell.

    +
    +
    Parameters:
    +
      +
    • r_outer (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • wa (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • wb (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 10.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is True.

    • +
    • R1_cp (float, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (float, optional) – Radius parameter in microns. Default is None.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 15.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 15.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 0.

    • +
    • A1_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • A2_att (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 0.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • gap_crows (float or list, optional) – Spacing or gap parameter in microns. Default is [0.4].

    • +
    • gap_cp (float or list, optional) – Spacing or gap parameter in microns. Default is [0.45, 0.45].

    • +
    • w_heater (float or list, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • connected (bool, optional) – Value for the connected parameter. Default is True.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • ISL_LEFT (bool, optional) – Value for the ISL_LEFT parameter. Default is True.

    • +
    • ISL_RIGHT (bool, optional) – Value for the ISL_RIGHT parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • ht_shift (int, optional) – Value for the ht_shift parameter. Default is 0.

    • +
    • A_ht (int, optional) – Angle parameter in degrees. Default is 45.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/passive/index.html b/docs/build/html/mxpic/components/primitives/passive/index.html index 5909246..721806c 100644 --- a/docs/build/html/mxpic/components/primitives/passive/index.html +++ b/docs/build/html/mxpic/components/primitives/passive/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/passive/rings.html b/docs/build/html/mxpic/components/primitives/passive/rings.html index ac3f17a..2888bad 100644 --- a/docs/build/html/mxpic/components/primitives/passive/rings.html +++ b/docs/build/html/mxpic/components/primitives/passive/rings.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -820,6 +826,27 @@ orthogonal ubend.

    class mxpic.components.primitives.passive.rings.SOCR(w_wg=0.45, w_cp=0.45, w_ring=0.45, r_ring=6, gap=0.2, theta_arc=100, Ls=2, xs_ring='strip', w_heater=1.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, sharp_patch=True, show_pins=True)#

    Bases: object

    This is the class for normal Strong Over Coupled Ring for phase modulation.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_cp (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 6.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • theta_arc (float, optional) – Angle parameter in degrees. Default is 100.

    • +
    • Ls (float, optional) – Length parameter in microns. Default is 2.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 1.5.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 6.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    • +
    +
    +
    generate_2pi_gds(gap=10)#
    @@ -859,9 +886,18 @@ Return: Cell

    SOCR_Cband#

    -class mxpic.components.primitives.passive.rings.SOCR_Cband(w_wg=0.45, show_pins=True)#
    +class mxpic.components.primitives.passive.rings.SOCR_Cband(w_wg=0.45, via_h2m=None, show_pins=True)#

    Bases: SOCR

    This is the class for already designed SOCR with multimode waveguide to suppres the phase noise.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    • +
    +
    +
    @@ -871,9 +907,29 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.SOCR_Adiabatic(w_wg=0.45, w_cp=0.45, w_in=0.45, w_out=2, r_out=6, gap=0.2, theta_arc=100, Ls=2, xs_ring='strip', w_heater=1.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, sharp_patch=True, show_pins=True)#

    Bases: SOCR

    -

    This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation. -See detail in: -[1] Liang, G., Huang, H., Mohanty, A. et al. Robust, efficient, micrometre-scale phase modulators at visible wavelengths. Nat. Photon. 15, 908–913 (2021).

    +

    This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_cp (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_in (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_out (float, optional) – Width parameter in microns. Default is 2.

    • +
    • r_out (float, optional) – Radius parameter in microns. Default is 6.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • theta_arc (float, optional) – Angle parameter in degrees. Default is 100.

    • +
    • Ls (float, optional) – Length parameter in microns. Default is 2.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 1.5.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 6.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    • +
    +
    +
    generate_eic_part()#
    @@ -898,19 +954,15 @@ Return: Cell

    SOCR_Adiabatic_Cband#

    -class mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband(w_wg=0.45, show_pins=True)#
    +class mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband(w_wg=0.45, via_h2m=None, show_pins=True)#

    Bases: SOCR_Adiabatic

    This is already designed SOCR at C-band.

    Parameters:
      -
    • Gap (-) – 200nm

    • -
    • w_wg (-) – 450nm

    • -
    • w_in (-) – 510nm

    • -
    • w_out (-) – 2um

    • -
    • gap (-) – 200nm

    • -
    • theta_arc (-) – 120degree

    • -
    • Ls (-) – 1um

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    @@ -923,6 +975,57 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_AED(name=None, ORx=10, ORy=10, IRx=9.55, IRy=9.5, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0.45, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, show_pins=False, xs_heater=None, w_heater=0, xs_metal=None, w_metal=0, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=True, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: AED_ring

    +

    MRR AED primitive component.

    +

    This component builds the MRR AED layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • ORx (float, optional) – Value for the ORx parameter. Default is 10.

    • +
    • ORy (float, optional) – Value for the ORy parameter. Default is 10.

    • +
    • IRx (float, optional) – Value for the IRx parameter. Default is 10 - 0.45.

    • +
    • IRy (float, optional) – Value for the IRy parameter. Default is 10 - 0.5.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is True.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    generate_eic_gds(show_pins=False)#
    @@ -937,6 +1040,55 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_STD_Ring(name=None, r_ring=10, w_ring=0.45, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, ht_notch_dual=False, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_AED

    +

    MRR STD Ring primitive component.

    +

    This component builds the MRR STD Ring layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • ht_notch_dual (bool, optional) – Value for the ht_notch_dual parameter. Default is False.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -946,6 +1098,41 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_STD_Allpass(name, r_ring, w_ring, gap, w_bus, A_cp, w_wg=0.45, R_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_STD_Ring

    +

    MRR STD Allpass primitive component.

    +

    This component builds the MRR STD Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • r_ring (float) – Radius parameter in microns.

    • +
    • w_ring (float) – Width parameter in microns.

    • +
    • gap (float) – Spacing or gap parameter in microns.

    • +
    • w_bus (float) – Width parameter in microns.

    • +
    • A_cp (Any) – Angle parameter in degrees.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -955,6 +1142,41 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_STD_Adddrop(name, r_ring, w_ring, gap, w_bus, A_cp, w_wg=0.45, R_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_STD_Ring

    +

    MRR STD Adddrop primitive component.

    +

    This component builds the MRR STD Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • r_ring (float) – Radius parameter in microns.

    • +
    • w_ring (float) – Width parameter in microns.

    • +
    • gap (float) – Spacing or gap parameter in microns.

    • +
    • w_bus (float) – Width parameter in microns.

    • +
    • A_cp (Any) – Angle parameter in degrees.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -964,6 +1186,42 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_MM_Allpass(name=None, r_ring=10, w_ring=0.45, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_STD_Ring

    +

    MRR MM Allpass primitive component.

    +

    This component builds the MRR MM Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -973,6 +1231,42 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_MM_Adddrop(name=None, r_ring=10, w_ring=0.45, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_STD_Ring

    +

    MRR MM Adddrop primitive component.

    +

    This component builds the MRR MM Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -982,6 +1276,43 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_DW_Adddrop(name, r_ring, w0_ring, w1_ring, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_AED

    +

    MRR DW Adddrop primitive component.

    +

    This component builds the MRR DW Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • r_ring (float) – Radius parameter in microns.

    • +
    • w0_ring (float) – Value for the w0_ring parameter.

    • +
    • w1_ring (float) – Value for the w1_ring parameter.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -991,6 +1322,43 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.MRR_DW_Allpass(name, r_ring, w0_ring, w1_ring, gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=20, R_att_min=10, A_att=30, Ltp_bus=10, dL_p2p=None, xs_ring='strip', sharp_patch=True, cell_xs_transition=None, show_pins=False, xs_heater='heater', w_heater=0, xs_metal='metal', w_metal=0, via_h2m=None, isl=None, A_ht=270, epin_dX=0, epin_dY=0, res=0.05, res_eic=0.5, ht_rot=False)#

    Bases: MRR_AED

    +

    MRR DW Allpass primitive component.

    +

    This component builds the MRR DW Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str) – Unique identifier for the device cell.

    • +
    • r_ring (float) – Radius parameter in microns.

    • +
    • w0_ring (float) – Value for the w0_ring parameter.

    • +
    • w1_ring (float) – Value for the w1_ring parameter.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • xs_ring (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 0.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 0.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • A_ht (float, optional) – Angle parameter in degrees. Default is 270.

    • +
    • epin_dX (int, optional) – Value for the epin_dX parameter. Default is 0.

    • +
    • epin_dY (int, optional) – Value for the epin_dY parameter. Default is 0.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.05.

    • +
    • res_eic (float, optional) – Value for the res_eic parameter. Default is 0.5.

    • +
    • ht_rot (bool, optional) – Value for the ht_rot parameter. Default is False.

    • +
    +
    +
    @@ -1000,6 +1368,35 @@ Return: Cell

    class mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop(name=None, r_ring=30, w_ring=0.45, w_wg=0.45, xs_wg='strip', w_bus=0.45, gap=0.2, dAc=10, L_tilt=1, dL_arm=10, w_heater=2.5, xs_heater='heater', w_metal=6, xs_metal='metal', via_h2m=None, isl=None, res=0.1, R_bend=10, L_tp=5, show_pins=False, sharp_patch=True)#

    Bases: object

    +

    STD ring AMZI adddrop primitive component.

    +

    This component builds the STD ring AMZI adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 30.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • dAc (float, optional) – Value for the dAc parameter. Default is 10.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 1.

    • +
    • dL_arm (float, optional) – Value for the dL_arm parameter. Default is 10.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 2.5.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 6.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.1.

    • +
    • R_bend (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • L_tp (int, optional) – Length parameter in microns. Default is 5.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    generate_gds(show_pins, sharp_patch)#
    diff --git a/docs/build/html/mxpic/components/primitives/passive/unit.html b/docs/build/html/mxpic/components/primitives/passive/unit.html index 99772cc..0dc8ae3 100644 --- a/docs/build/html/mxpic/components/primitives/passive/unit.html +++ b/docs/build/html/mxpic/components/primitives/passive/unit.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,35 @@
    class mxpic.components.primitives.passive.unit.waveguide(w_heater=2.5, L_wg=150, L_heater=150, w_metal=10, xs_heater='heater', xs_metal='metal', xs_wg='strip', w_wg=0.45, w_port=None, Ltp=None, via_h2m=None, isl=None, euler_bend=False, Rmin=5, thin_attach=False, UPPER_ISL=True, LOWER_ISL=True, shape='strip', R_bend=10, ubend_offset=20, show_pins=False)#

    Bases: object

    +

    waveguide primitive component.

    +

    This component builds the waveguide layout cell.

    +
    +
    Parameters:
    +
      +
    • w_heater (float, optional) – Width parameter in microns. Default is 2.5.

    • +
    • L_wg (int, optional) – Length parameter in microns. Default is 150.

    • +
    • L_heater (int, optional) – Length parameter in microns. Default is 150.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 10.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_port (Optional[float], optional) – Width parameter in microns. Default is None.

    • +
    • Ltp (Any, optional) – Length parameter in microns. Default is None.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • euler_bend (bool, optional) – Value for the euler_bend parameter. Default is False.

    • +
    • Rmin (int, optional) – Radius parameter in microns. Default is 5.

    • +
    • thin_attach (bool, optional) – Value for the thin_attach parameter. Default is False.

    • +
    • UPPER_ISL (bool, optional) – Value for the UPPER_ISL parameter. Default is True.

    • +
    • LOWER_ISL (bool, optional) – Length parameter in microns. Default is True.

    • +
    • shape (str, optional) – Value for the shape parameter. Default is ‘strip’.

    • +
    • R_bend (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • ubend_offset (int, optional) – Value for the ubend_offset parameter. Default is 20.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    @@ -387,6 +422,34 @@
    class mxpic.components.primitives.passive.unit.PS_2st(xs_wg='strip', w_wg=0.5, w1=0.7, w2=0.9, L1=10, L2=55, L_wg=0, L_tp=1, L12=None, L_ht=None, xs_heater='heater', xs_metal='metal', w_heater=2.5, w_metal=8, via_h2m=None, isl=None, UPPER_ISL=True, LOWER_ISL=True, R_bend=10, show_pins=False)#

    Bases: object

    +

    PS 2st primitive component.

    +

    This component builds the PS 2st layout cell.

    +
    +
    Parameters:
    +
      +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.7.

    • +
    • w2 (float, optional) – Width parameter in microns. Default is 0.9.

    • +
    • L1 (int, optional) – Length parameter in microns. Default is 10.

    • +
    • L2 (int, optional) – Length parameter in microns. Default is 55.

    • +
    • L_wg (int, optional) – Length parameter in microns. Default is 0.

    • +
    • L_tp (int, optional) – Length parameter in microns. Default is 1.

    • +
    • L12 (Any, optional) – Length parameter in microns. Default is None.

    • +
    • L_ht (Any, optional) – Length parameter in microns. Default is None.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 2.5.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • UPPER_ISL (bool, optional) – Value for the UPPER_ISL parameter. Default is True.

    • +
    • LOWER_ISL (bool, optional) – Length parameter in microns. Default is True.

    • +
    • R_bend (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -401,6 +464,33 @@
    class mxpic.components.primitives.passive.unit.PS_2st_Straight(xs_wg='strip', w_wg=0.5, w1=0.7, w2=0.9, L1=10, L2=55, L_wg=0, L_tp=1, L12=None, L_ht=None, xs_heater='heater', xs_metal='metal', w_heater=2.5, w_metal=8, via_h2m=None, isl=None, UPPER_ISL=True, LOWER_ISL=True, show_pins=False)#

    Bases: object

    +

    PS 2st Straight primitive component.

    +

    This component builds the PS 2st Straight layout cell.

    +
    +
    Parameters:
    +
      +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.7.

    • +
    • w2 (float, optional) – Width parameter in microns. Default is 0.9.

    • +
    • L1 (int, optional) – Length parameter in microns. Default is 10.

    • +
    • L2 (int, optional) – Length parameter in microns. Default is 55.

    • +
    • L_wg (int, optional) – Length parameter in microns. Default is 0.

    • +
    • L_tp (int, optional) – Length parameter in microns. Default is 1.

    • +
    • L12 (Any, optional) – Length parameter in microns. Default is None.

    • +
    • L_ht (Any, optional) – Length parameter in microns. Default is None.

    • +
    • xs_heater (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • xs_metal (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • w_heater (float, optional) – Width parameter in microns. Default is 2.5.

    • +
    • w_metal (float, optional) – Width parameter in microns. Default is 8.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • isl (Any, optional) – Isolation-trench definition used by the electrical layout. Default is None.

    • +
    • UPPER_ISL (bool, optional) – Value for the UPPER_ISL parameter. Default is True.

    • +
    • LOWER_ISL (bool, optional) – Length parameter in microns. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -415,6 +505,20 @@
    class mxpic.components.primitives.passive.unit.PSR_1x2(PSR, MDM, xs='strip', w_wg=0.45, L_tp=15, show_pins=False)#

    Bases: object

    +

    PSR 1x2 primitive component.

    +

    This component builds the PSR 1x2 layout cell.

    +
    +
    Parameters:
    +
      +
    • PSR (Any) – Polarization splitter-rotator cell or component used by this composite.

    • +
    • MDM (Any) – Mode multiplexer/demultiplexer cell or component used by this composite.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • L_tp (int, optional) – Length parameter in microns. Default is 15.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_test_gds(gc, gc_IN=None, gc2gc_dX=140, gc2gc_dY=40)#
    @@ -429,6 +533,19 @@
    class mxpic.components.primitives.passive.unit.Brag_WDM(Brag, MDM, w_wg=0.45, L_tp=30, show_pins=False)#

    Bases: object

    +

    Brag WDM primitive component.

    +

    This component builds the Brag WDM layout cell.

    +
    +
    Parameters:
    +
      +
    • Brag (Any) – Bragg grating cell or component used by this composite.

    • +
    • MDM (Any) – Mode multiplexer/demultiplexer cell or component used by this composite.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • L_tp (int, optional) – Length parameter in microns. Default is 30.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_test_gds(gc, gc2gc_dX=140, gc2gc_dY=40, dX_offset=50)#
    diff --git a/docs/build/html/mxpic/components/primitives/pic/PBS.html b/docs/build/html/mxpic/components/primitives/pic/PBS.html index 0e28772..52cdb96 100644 --- a/docs/build/html/mxpic/components/primitives/pic/PBS.html +++ b/docs/build/html/mxpic/components/primitives/pic/PBS.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,26 @@
    class mxpic.components.primitives.pic.PBS.PBS_3wg(name=None, xs='strip', Lcp=11.7, w1_tp=0.55, w2_tp=0.3, w_m=0.45, gap=0.25, R_bend=20, A_bend=7.5, w_wg=0.45, show_pins=False, sharp_patch=True)#

    Bases: object

    +

    PBS 3wg primitive component.

    +

    This component builds the PBS 3wg layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • Lcp (float, optional) – Length parameter in microns. Default is 11.7.

    • +
    • w1_tp (float, optional) – Value for the w1_tp parameter. Default is 0.55.

    • +
    • w2_tp (float, optional) – Value for the w2_tp parameter. Default is 0.3.

    • +
    • w_m (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.25.

    • +
    • R_bend (int, optional) – Radius parameter in microns. Default is 20.

    • +
    • A_bend (float, optional) – Angle parameter in degrees. Default is 7.5.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    generate_gds(show_pins=False, sharp_patch=True)#
    diff --git a/docs/build/html/mxpic/components/primitives/pic/YBS.html b/docs/build/html/mxpic/components/primitives/pic/YBS.html index f1085f1..3e36cbd 100644 --- a/docs/build/html/mxpic/components/primitives/pic/YBS.html +++ b/docs/build/html/mxpic/components/primitives/pic/YBS.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,24 @@
    class mxpic.components.primitives.pic.YBS.YBranch(name=None, xs='strip', w=[1.2, 1.0, 1.8, 1.2, 1.0, 1.2, 1.2], L=6, R_att=10, A_att=10, w_port=0.45, show_pins=False, sharp_patch=True, res=0.1)#

    Bases: object

    +

    YBranch primitive component.

    +

    This component builds the YBranch layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w (list or np.ndarray, optional) – Width parameter in microns. Default is [1.2, 1.0, 1.8, 1.2, 1.0, 1.2, 1.2].

    • +
    • L (float, optional) – Length parameter in microns. Default is 6.

    • +
    • R_att (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (float, optional) – Angle parameter in degrees. Default is 10.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.1.

    • +
    +
    +
    generate_gds(show_pins=False, sharp_patch=True)#
    @@ -392,6 +416,26 @@
    class mxpic.components.primitives.pic.YBS.Ybranch_3wg(name=None, w0=0.4, w1=0.2, gap=0.18, Lcp=20, xs='strip', w_wg=0.45, R0=10, angle=20, L_attach=3, L_in_tp=3, sharp_patch=True)#

    Bases: object

    +

    Ybranch 3wg primitive component.

    +

    This component builds the Ybranch 3wg layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • w0 (float, optional) – Width parameter in microns. Default is 0.4.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.18.

    • +
    • Lcp (float, optional) – Length parameter in microns. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R0 (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • angle (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • L_attach (float, optional) – Length parameter in microns. Default is 3.

    • +
    • L_in_tp (float, optional) – Length parameter in microns. Default is 3.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    generate_gds(sharp_patch, err_asy=0)#
    diff --git a/docs/build/html/mxpic/components/primitives/pic/bragg.html b/docs/build/html/mxpic/components/primitives/pic/bragg.html index abedeeb..c4574eb 100644 --- a/docs/build/html/mxpic/components/primitives/pic/bragg.html +++ b/docs/build/html/mxpic/components/primitives/pic/bragg.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,25 @@
    class mxpic.components.primitives.pic.bragg.Bragg_apodized(Period=0.3, w=1.1, xs='strip', etch_type='FETCH', etch_shape='rectangle', N=200, eta_etch=0.5, dT=0.15, b=10, eta_ds=0.5, show_pins=False)#

    Bases: object

    +

    Bragg apodized primitive component.

    +

    This component builds the Bragg apodized layout cell.

    +
    +
    Parameters:
    +
      +
    • Period (float, optional) – Value for the Period parameter. Default is 0.3.

    • +
    • w (float, optional) – Width parameter in microns. Default is 1.1.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • etch_type (str, optional) – Value for the etch_type parameter. Default is ‘FETCH’.

    • +
    • etch_shape (str, optional) – Value for the etch_shape parameter. Default is ‘rectangle’.

    • +
    • N (int, optional) – Value for the N parameter. Default is 200.

    • +
    • eta_etch (float, optional) – Value for the eta_etch parameter. Default is 0.5.

    • +
    • dT (float, optional) – Value for the dT parameter. Default is 0.15.

    • +
    • b (int, optional) – Value for the b parameter. Default is 10.

    • +
    • eta_ds (float, optional) – Value for the eta_ds parameter. Default is 0.5.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_negative()#
    @@ -397,6 +422,23 @@
    class mxpic.components.primitives.pic.bragg.Bragg(Period=0.3, w=1.1, xs='strip', etch_type='FETCH', etch_shape='rectangle', N=200, eta_etch=0.5, dT=0.15, show_pins=False)#

    Bases: Bragg_apodized

    +

    Bragg primitive component.

    +

    This component builds the Bragg layout cell.

    +
    +
    Parameters:
    +
      +
    • Period (float, optional) – Value for the Period parameter. Default is 0.3.

    • +
    • w (float, optional) – Width parameter in microns. Default is 1.1.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • etch_type (str, optional) – Value for the etch_type parameter. Default is ‘FETCH’.

    • +
    • etch_shape (str, optional) – Value for the etch_shape parameter. Default is ‘rectangle’.

    • +
    • N (int, optional) – Value for the N parameter. Default is 200.

    • +
    • eta_etch (float, optional) – Value for the eta_etch parameter. Default is 0.5.

    • +
    • dT (float, optional) – Value for the dT parameter. Default is 0.15.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/couplers.html b/docs/build/html/mxpic/components/primitives/pic/couplers.html index 92d4c2d..0b59652 100644 --- a/docs/build/html/mxpic/components/primitives/pic/couplers.html +++ b/docs/build/html/mxpic/components/primitives/pic/couplers.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,37 @@
    class mxpic.components.primitives.pic.couplers.ring_bus_wg(xs='strip', R_cp=20, w_bus=0.5, bend_DC=True, w_wg=0.5, dLc=10, dAc=10, euler_transistion=False, dL_trans=10, dA_trans=30, R_max_trans=100, w_trans=0.5, euler_anti_bend=False, R_max_anti=100, R_min_anti=10, A_anti=None, res=0.1, wg_Ltp=5, dL_p2p=None, sharp_patch=True, show_pins=False, end_patch=False, clothoid_order=1)#

    Bases: object

    +

    ring bus wg primitive component.

    +

    This component builds the ring bus wg layout cell.

    +
    +
    Parameters:
    +
      +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • R_cp (int, optional) – Radius parameter in microns. Default is 20.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • bend_DC (bool, optional) – Value for the bend_DC parameter. Default is True.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • dLc (float, optional) – Value for the dLc parameter. Default is 10.

    • +
    • dAc (float, optional) – Value for the dAc parameter. Default is 10.

    • +
    • euler_transistion (bool, optional) – Value for the euler_transistion parameter. Default is False.

    • +
    • dL_trans (float, optional) – Value for the dL_trans parameter. Default is 10.

    • +
    • dA_trans (float, optional) – Value for the dA_trans parameter. Default is 30.

    • +
    • R_max_trans (int, optional) – Radius parameter in microns. Default is 100.

    • +
    • w_trans (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • euler_anti_bend (bool, optional) – Value for the euler_anti_bend parameter. Default is False.

    • +
    • R_max_anti (int, optional) – Radius parameter in microns. Default is 100.

    • +
    • R_min_anti (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_anti (Any, optional) – Angle parameter in degrees. Default is None.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.1.

    • +
    • wg_Ltp (int, optional) – Value for the wg_Ltp parameter. Default is 5.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • end_patch (bool, optional) – Value for the end_patch parameter. Default is False.

    • +
    • clothoid_order (int, optional) – Value for the clothoid_order parameter. Default is 1.

    • +
    +
    +
    generate_gds(sharp_patch, show_pins=False)#
    @@ -392,6 +429,41 @@
    class mxpic.components.primitives.pic.couplers.ADC_STD_2x2(name=None, xs='strip', wu0=0.45, wu1=0.61, wu_in=0.45, wu_out=0.8, wd0=0.33, wd1=0.2, wd_in=0.45, wd_out=0.8, Lu=33, Ld=33, angle=20, g0=0.2, g1=0.2, sbend_type='euler', Rmax=None, Rmin=5, Ru0=0, Ru1=20, Rd0=20, Rd1=0, tp_angle=2, sharp_patch=True, show_pins=False, euler_points=64, res=0.1)#

    Bases: object

    +

    ADC STD 2x2 primitive component.

    +

    This component builds the ADC STD 2x2 layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • wu0 (float, optional) – Value for the wu0 parameter. Default is 0.45.

    • +
    • wu1 (float, optional) – Value for the wu1 parameter. Default is 0.61.

    • +
    • wu_in (float, optional) – Value for the wu_in parameter. Default is 0.45.

    • +
    • wu_out (float, optional) – Value for the wu_out parameter. Default is 0.8.

    • +
    • wd0 (float, optional) – Value for the wd0 parameter. Default is 0.33.

    • +
    • wd1 (float, optional) – Value for the wd1 parameter. Default is 0.2.

    • +
    • wd_in (float, optional) – Value for the wd_in parameter. Default is 0.45.

    • +
    • wd_out (float, optional) – Value for the wd_out parameter. Default is 0.8.

    • +
    • Lu (int, optional) – Length parameter in microns. Default is 33.

    • +
    • Ld (int, optional) – Length parameter in microns. Default is 33.

    • +
    • angle (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • g0 (float, optional) – Value for the g0 parameter. Default is 0.2.

    • +
    • g1 (float, optional) – Value for the g1 parameter. Default is 0.2.

    • +
    • sbend_type (str, optional) – Value for the sbend_type parameter. Default is ‘euler’.

    • +
    • Rmax (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • Rmin (int, optional) – Radius parameter in microns. Default is 5.

    • +
    • Ru0 (int, optional) – Radius parameter in microns. Default is 0.

    • +
    • Ru1 (int, optional) – Radius parameter in microns. Default is 20.

    • +
    • Rd0 (int, optional) – Radius parameter in microns. Default is 20.

    • +
    • Rd1 (int, optional) – Radius parameter in microns. Default is 0.

    • +
    • tp_angle (int, optional) – Value for the tp_angle parameter. Default is 2.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • euler_points (int, optional) – Value for the euler_points parameter. Default is 64.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.1.

    • +
    +
    +
    generate_err(err=0.02)#
    @@ -416,6 +488,28 @@
    class mxpic.components.primitives.pic.couplers.DC(name=None, xs='strip', w_cp=0.45, w_wg=0.45, L_cp=30, angle=20, gap=0.2, sbend_type='circular', Rmax=None, Rmin=5, R0=10, tp_angle=2, sharp_patch=True, show_pins=False)#

    Bases: ADC_STD_2x2

    +

    DC primitive component.

    +

    This component builds the DC layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_cp (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • L_cp (float, optional) – Length parameter in microns. Default is 30.

    • +
    • angle (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • sbend_type (str, optional) – Value for the sbend_type parameter. Default is ‘circular’.

    • +
    • Rmax (float, optional) – Radius parameter in microns. Default is None.

    • +
    • Rmin (float, optional) – Radius parameter in microns. Default is 5.

    • +
    • R0 (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • tp_angle (float, optional) – Value for the tp_angle parameter. Default is 2.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_test_gds(gc, dX_gc2gc=300, dY_gc2gc=40, sharp_patch=True)#
    @@ -430,6 +524,26 @@
    class mxpic.components.primitives.pic.couplers.BS_tdc(name=None, xs='strip', wa0=0.35, wa1=0.45, wb0=0.55, wb1=0.45, w_wg=0.45, gap=0.2, Lt=20, R0=30, angle=15, sbend_type='circle')#

    Bases: ADC_STD_2x2

    +

    BS tdc primitive component.

    +

    This component builds the BS tdc layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • wa0 (float, optional) – Value for the wa0 parameter. Default is 0.35.

    • +
    • wa1 (float, optional) – Value for the wa1 parameter. Default is 0.45.

    • +
    • wb0 (float, optional) – Value for the wb0 parameter. Default is 0.55.

    • +
    • wb1 (float, optional) – Value for the wb1 parameter. Default is 0.45.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • Lt (float, optional) – Length parameter in microns. Default is 20.

    • +
    • R0 (float, optional) – Radius parameter in microns. Default is 30.

    • +
    • angle (float, optional) – Angle parameter in degrees. Default is 15.

    • +
    • sbend_type (str, optional) – Value for the sbend_type parameter. Default is ‘circle’.

    • +
    +
    +
    @@ -439,6 +553,33 @@
    class mxpic.components.primitives.pic.couplers.MDM(name=None, xs='strip', wb0=0.45, wb1=0.61, wb_in=0.45, wb_out=0.88, w_wg=0.45, w0=0.33, w1=0.2, gap0=0.2, Lt_bus=20, R0=40, angle=22.5, Lt_cp=None, gap1=None, Lb0=None, symmetric_BUS=True, single_end=True, Rmin=8)#

    Bases: ADC_STD_2x2

    +

    MDM primitive component.

    +

    This component builds the MDM layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • wb0 (float, optional) – Value for the wb0 parameter. Default is 0.45.

    • +
    • wb1 (float, optional) – Value for the wb1 parameter. Default is 0.61.

    • +
    • wb_in (float, optional) – Value for the wb_in parameter. Default is 0.45.

    • +
    • wb_out (float, optional) – Value for the wb_out parameter. Default is 0.88.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w0 (float, optional) – Width parameter in microns. Default is 0.33.

    • +
    • w1 (float, optional) – Width parameter in microns. Default is 0.2.

    • +
    • gap0 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • Lt_bus (float, optional) – Length parameter in microns. Default is 20.

    • +
    • R0 (float, optional) – Radius parameter in microns. Default is 40.

    • +
    • angle (float, optional) – Angle parameter in degrees. Default is 22.5.

    • +
    • Lt_cp (float, optional) – Length parameter in microns. Default is None.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is None.

    • +
    • Lb0 (float, optional) – Length parameter in microns. Default is None.

    • +
    • symmetric_BUS (bool, optional) – Value for the symmetric_BUS parameter. Default is True.

    • +
    • single_end (bool, optional) – Value for the single_end parameter. Default is True.

    • +
    • Rmin (float, optional) – Radius parameter in microns. Default is 8.

    • +
    +
    +
    generate_test_gds(gc, dX_gc2gc=300, dY_gc2gc=40, sharp_patch=True)#
    @@ -453,8 +594,24 @@
    class mxpic.components.primitives.pic.couplers.DC_bend(name=None, w_in=0.45, w_out=0.45, gap=0.2, r_in=40, theta_arc=30, w_wg=0.45, theta_ext=15, xs_wg='strip', sharp_patch=True, show_pins=False)#

    Bases: object

    -

    This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. -Written by HU GAOLEI at 2022.5.15.

    +

    This is a class for bend directional coupler for broadband and fabrication tolerant power splitting.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • w_in (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_out (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • r_in (float, optional) – Radius parameter in microns. Default is 40.

    • +
    • theta_arc (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • theta_ext (float, optional) – Angle parameter in degrees. Default is 15.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds(cellname='')#
    @@ -475,6 +632,29 @@ Written by HU GAOLEI at 2022.5.15.

    class mxpic.components.primitives.pic.couplers.DC_pX_3sg(name=None, xs_wg='strip', Lc1=10, Lp1=5, Lc2=10, Lt=1, w_cp=0.5, dw=0.1, gap=0.2, R0=10, A=15, w_wg=0.45, pX_type='symmetric', port_symmetric=True, sharp_patch=True)#

    Bases: object

    +

    DC pX 3sg primitive component.

    +

    This component builds the DC pX 3sg layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • Lc1 (float, optional) – Length parameter in microns. Default is 10.

    • +
    • Lp1 (float, optional) – Length parameter in microns. Default is 5.

    • +
    • Lc2 (float, optional) – Length parameter in microns. Default is 10.

    • +
    • Lt (float, optional) – Length parameter in microns. Default is 1.

    • +
    • w_cp (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • dw (float, optional) – Value for the dw parameter. Default is 0.1.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • R0 (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A (float, optional) – Angle parameter in degrees. Default is 15.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • pX_type (str, optional) – Value for the pX_type parameter. Default is ‘symmetric’.

    • +
    • port_symmetric (bool, optional) – Value for the port_symmetric parameter. Default is True.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    generate_gds(err=0)#
    diff --git a/docs/build/html/mxpic/components/primitives/pic/cross.html b/docs/build/html/mxpic/components/primitives/pic/cross.html index 1694900..ddb708e 100644 --- a/docs/build/html/mxpic/components/primitives/pic/cross.html +++ b/docs/build/html/mxpic/components/primitives/pic/cross.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,19 @@
    class mxpic.components.primitives.pic.cross.Cross(name=None, L=[0, 1, 2, 3, 4], w=[0.5, 0.45, 0.6, 0.4, 0.5], xs='strip', show_pins=False)#

    Bases: object

    +

    Cross primitive component.

    +

    This component builds the Cross layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • L (list, optional) – Length parameter in microns. Default is [0, 1, 2, 3, 4].

    • +
    • w (list, optional) – Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5].

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds(show_pins)#
    @@ -397,6 +416,20 @@
    class mxpic.components.primitives.pic.cross.Cross_Sine(name=None, res=[1, 1, 1, 1], w=[0.5, 0.45, 0.6, 0.4, 0.5], xs='strip', n_points=4, show_pins=False)#

    Bases: Cross

    +

    Cross Sine primitive component.

    +

    This component builds the Cross Sine layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • res (list, optional) – Value for the res parameter. Default is [1, 1, 1, 1].

    • +
    • w (list, optional) – Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5].

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • n_points (int, optional) – Value for the n_points parameter. Default is 4.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/gratings.html b/docs/build/html/mxpic/components/primitives/pic/gratings.html index c6ffb51..7c44972 100644 --- a/docs/build/html/mxpic/components/primitives/pic/gratings.html +++ b/docs/build/html/mxpic/components/primitives/pic/gratings.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -383,21 +389,18 @@
    Parameters:
      -
    • (Default (- etch_depth [str]) – CUMEC_CSiP130Cu)

    • -
    • (Default – 0.5um) -Width of input waveguide

    • -
    • (Default – [0.5,..,0.5]]) -Vectors to define the length of each teeth

    • -
    • (Default – 1um) -Length of the linear taper region

    • -
    • (Default – 3um) -Width of the nanoantenna

    • -
    • [degree](Default (- max_theta) – 110) -Open degree of linear taper

    • -
    • (Default – non-periodic) -Way to define the antenna, including: “non-periodic”, “periodic”

    • -
    • (Default – “DETCH”) -Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.41.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • define_type (str, optional) – Value for the define_type parameter. Default is ‘non-periodic’.

    • +
    • vector (list, optional) – Value for the vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5, 0.5].

    • +
    • taper_length (float, optional) – Value for the taper_length parameter. Default is 3.

    • +
    • width (float, optional) – Width parameter in microns. Default is 6.

    • +
    • max_theta (float, optional) – Value for the max_theta parameter. Default is 110.

    • +
    • pitch (float, optional) – Spacing or gap parameter in microns. Default is 0.6.

    • +
    • duty_cycle (float, optional) – Value for the duty_cycle parameter. Default is 0.3.

    • +
    • teeth_number (float, optional) – Value for the teeth_number parameter. Default is 6.

    • +
    • etch_depth (list, optional) – Value for the etch_depth parameter. Default is [‘METCH’].

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is True.

    @@ -429,6 +432,19 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.Taper(width1=4, width2=0.45, length=30, type='linear', show_pins=False)#

    Bases: object

    +

    Taper primitive component.

    +

    This component builds the Taper layout cell.

    +
    +
    Parameters:
    +
      +
    • width1 (float, optional) – Width parameter in microns. Default is 4.

    • +
    • width2 (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • length (float, optional) – Length parameter in microns. Default is 30.

    • +
    • type (str, optional) – Value for the type parameter. Default is ‘linear’.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -444,6 +460,24 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.Grating_2D_Hole(w_wg=0.5, w_gt=5, l_taper=30, type_taper='parabolic', gt_vector=[0.5, 0.5, 0.5, 0.5, 0.5], gt_diameter=0.4, gt_layer='STRIP_COR', polysi_vector=[0.5, 0.5, 0.5, 0.5, 0.5], polysi_diameter=0.4, polysi_layer='FCW_TRE', reflector_vector=[0.3, 0.3, 0.3, 0.3, 0.3, 0.3], l_field_center=1)#

    Bases: object

    This is a class for 2D Grating in IMEC.

    +
    +
    Parameters:
    +
      +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • w_gt (float, optional) – Width parameter in microns. Default is 5.

    • +
    • l_taper (float, optional) – Value for the l_taper parameter. Default is 30.

    • +
    • type_taper (str, optional) – Value for the type_taper parameter. Default is ‘parabolic’.

    • +
    • gt_vector (list, optional) – Value for the gt_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5].

    • +
    • gt_diameter (float, optional) – Value for the gt_diameter parameter. Default is 0.4.

    • +
    • gt_layer (str, optional) – Value for the gt_layer parameter. Default is ‘STRIP_COR’.

    • +
    • polysi_vector (list, optional) – Value for the polysi_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5].

    • +
    • polysi_diameter (float, optional) – Value for the polysi_diameter parameter. Default is 0.4.

    • +
    • polysi_layer (str, optional) – Value for the polysi_layer parameter. Default is ‘FCW_TRE’.

    • +
    • reflector_vector (list, optional) – Value for the reflector_vector parameter. Default is [0.3, 0.3, 0.3, 0.3, 0.3, 0.3].

    • +
    • l_field_center (float, optional) – Value for the l_field_center parameter. Default is 1.

    • +
    +
    +
    generate_gds()#
    @@ -458,6 +492,18 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec(grating_unit, mode_radius=8, cell_name=None, show_pins=False)#

    Bases: object

    +

    Grating 2D Hole 4Rec primitive component.

    +

    This component builds the Grating 2D Hole 4Rec layout cell.

    +
    +
    Parameters:
    +
      +
    • grating_unit (Any) – Grating unit cell or component used by this wrapper.

    • +
    • mode_radius (int, optional) – Value for the mode_radius parameter. Default is 8.

    • +
    • cell_name (Optional[str], optional) – Optional generated cell name. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -472,6 +518,18 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec(grating_unit, mode_radius=6.5, cell_name=None, show_pins=False)#

    Bases: object

    +

    Grating 2D Hole 3Rec primitive component.

    +

    This component builds the Grating 2D Hole 3Rec layout cell.

    +
    +
    Parameters:
    +
      +
    • grating_unit (Any) – Grating unit cell or component used by this wrapper.

    • +
    • mode_radius (float, optional) – Value for the mode_radius parameter. Default is 6.5.

    • +
    • cell_name (Optional[str], optional) – Optional generated cell name. Default is None.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds()#
    @@ -486,6 +544,38 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.GC_STD_2D(name=None, etch_type='FETCH', xs_wg='grating', Dx_hole=0.3, Dy_hole=0.3, hole_shape='circle', shape='circle', xs_open=None, Px=0.57, Py=0.57, num_x=25, num_y=25, Lx_taper=50, Ly_taper=0, Lx_end=1, Ly_end=1, Lx_side=0.5, Ly_side=0.5, Lx_port=5, Ly_port=5, w_wg=0.5, show_pins=False, P_AR=0.6, L_AR=1)#

    Bases: object

    +

    GC STD 2D primitive component.

    +

    This component builds the GC STD 2D layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • etch_type (str, optional) – Value for the etch_type parameter. Default is ‘FETCH’.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘grating’.

    • +
    • Dx_hole (float, optional) – Value for the Dx_hole parameter. Default is 0.3.

    • +
    • Dy_hole (float, optional) – Value for the Dy_hole parameter. Default is 0.3.

    • +
    • hole_shape (str, optional) – Value for the hole_shape parameter. Default is ‘circle’.

    • +
    • shape (str, optional) – Value for the shape parameter. Default is ‘circle’.

    • +
    • xs_open (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • Px (float, optional) – Value for the Px parameter. Default is 0.57.

    • +
    • Py (float, optional) – Value for the Py parameter. Default is 0.57.

    • +
    • num_x (float, optional) – Count or repetition parameter. Default is 25.

    • +
    • num_y (float, optional) – Count or repetition parameter. Default is 25.

    • +
    • Lx_taper (float, optional) – Length parameter in microns. Default is 50.

    • +
    • Ly_taper (float, optional) – Length parameter in microns. Default is 0.

    • +
    • Lx_end (float, optional) – Length parameter in microns. Default is 1.

    • +
    • Ly_end (float, optional) – Length parameter in microns. Default is 1.

    • +
    • Lx_side (float, optional) – Length parameter in microns. Default is 0.5.

    • +
    • Ly_side (float, optional) – Length parameter in microns. Default is 0.5.

    • +
    • Lx_port (float, optional) – Length parameter in microns. Default is 5.

    • +
    • Ly_port (float, optional) – Length parameter in microns. Default is 5.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • P_AR (float, optional) – Value for the P_AR parameter. Default is 0.6.

    • +
    • L_AR (float, optional) – Length parameter in microns. Default is 1.

    • +
    +
    +
    generate_negative()#
    @@ -510,6 +600,30 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.GC_STD_1D(name=None, xs_wg='strip', w_wg=0.5, etch_type='FETCH', xs_open=None, L_taper=10, L_end=2, A_taper=30, Period=0.5, eta_etch=0.5, num=20, sector_gc=True, show_pins=False, L_tail=2, P_AR=1, L_AR=2)#

    Bases: object

    +

    GC STD 1D primitive component.

    +

    This component builds the GC STD 1D layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs_wg (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.5.

    • +
    • etch_type (str, optional) – Value for the etch_type parameter. Default is ‘FETCH’.

    • +
    • xs_open (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • L_taper (float, optional) – Length parameter in microns. Default is 10.

    • +
    • L_end (float, optional) – Length parameter in microns. Default is 2.

    • +
    • A_taper (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • Period (float, optional) – Value for the Period parameter. Default is 0.5.

    • +
    • eta_etch (float, optional) – Value for the eta_etch parameter. Default is 0.5.

    • +
    • num (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • sector_gc (bool, optional) – Value for the sector_gc parameter. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • L_tail (int, optional) – Length parameter in microns. Default is 2.

    • +
    • P_AR (float, optional) – Value for the P_AR parameter. Default is 1.

    • +
    • L_AR (float, optional) – Length parameter in microns. Default is 2.

    • +
    +
    +
    generate_negative()#
    @@ -534,6 +648,18 @@ Define the etch depth, including: “FETCH”, “METCH”, “SETCH”

    class mxpic.components.primitives.pic.gratings.FA(fiber_coupler, pitch, number, show_pins=False)#

    Bases: object

    +

    FA primitive component.

    +

    This component builds the FA layout cell.

    +
    +
    Parameters:
    +
      +
    • fiber_coupler (Any) – Fiber coupler cell or component used by this array.

    • +
    • pitch (float) – Spacing or gap parameter in microns.

    • +
    • number (int) – Count or repetition parameter.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/index.html b/docs/build/html/mxpic/components/primitives/pic/index.html index a7b8baa..e4d98ad 100644 --- a/docs/build/html/mxpic/components/primitives/pic/index.html +++ b/docs/build/html/mxpic/components/primitives/pic/index.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/primitives/pic/mmi.html b/docs/build/html/mxpic/components/primitives/pic/mmi.html index da570b8..6c9cf07 100644 --- a/docs/build/html/mxpic/components/primitives/pic/mmi.html +++ b/docs/build/html/mxpic/components/primitives/pic/mmi.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,29 @@
    class mxpic.components.primitives.pic.mmi.MMI_ML(name=None, L_arm=[10], w_arm=[0.45, 1.35], xs='strip', arm_sine_width=False, L_mmi=[10], w_mmi=[5, 5], mmi_sine_width=False, sharp_patch=True, show_pins=False, res=0.01, N_out=3, N_in=1, Dp_out=1.5, Dp_in=1.5)#

    Bases: object

    +

    MMI ML primitive component.

    +

    This component builds the MMI ML layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • L_arm (list, optional) – Length parameter in microns. Default is [10].

    • +
    • w_arm (list, optional) – Width parameter in microns. Default is [0.45, 1.35].

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • arm_sine_width (bool, optional) – Value for the arm_sine_width parameter. Default is False.

    • +
    • L_mmi (list, optional) – Length parameter in microns. Default is [10].

    • +
    • w_mmi (list, optional) – Width parameter in microns. Default is [5, 5].

    • +
    • mmi_sine_width (bool, optional) – Value for the mmi_sine_width parameter. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • N_out (int, optional) – Count or repetition parameter. Default is 3.

    • +
    • N_in (int, optional) – Count or repetition parameter. Default is 1.

    • +
    • Dp_out (float, optional) – Value for the Dp_out parameter. Default is 1.5.

    • +
    • Dp_in (float, optional) – Value for the Dp_in parameter. Default is 1.5.

    • +
    +
    +
    generate_gds(sharp_patch, show_pins)#
    @@ -397,6 +426,27 @@
    class mxpic.components.primitives.pic.mmi.MMI_STD(name=None, N_out=3, N_in=1, L_arm=10, w_wg=0.45, w_port=1.2, xs='strip', L_mmi=10, w_mmi=5, sharp_patch=True, show_pins=False, Dp_out=1.5, Dp_in=1.5)#

    Bases: MMI_ML

    +

    MMI STD primitive component.

    +

    This component builds the MMI STD layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • N_out (int, optional) – Count or repetition parameter. Default is 3.

    • +
    • N_in (int, optional) – Count or repetition parameter. Default is 1.

    • +
    • L_arm (int, optional) – Length parameter in microns. Default is 10.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 1.2.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • L_mmi (int, optional) – Length parameter in microns. Default is 10.

    • +
    • w_mmi (float, optional) – Width parameter in microns. Default is 5.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • Dp_out (float, optional) – Value for the Dp_out parameter. Default is 1.5.

    • +
    • Dp_in (float, optional) – Value for the Dp_in parameter. Default is 1.5.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/racetrack.html b/docs/build/html/mxpic/components/primitives/pic/racetrack.html index e662212..862eea8 100644 --- a/docs/build/html/mxpic/components/primitives/pic/racetrack.html +++ b/docs/build/html/mxpic/components/primitives/pic/racetrack.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -387,6 +393,45 @@
    class mxpic.components.primitives.pic.racetrack.RacetrackResonator(R0, w0, R1, w1, dLy, dLx, name=None, xs='strip', gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0.45, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, res=0.01, show_pins=False)#

    Bases: object

    +

    RacetrackResonator primitive component.

    +

    This component builds the RacetrackResonator layout cell.

    +
    +
    Parameters:
    +
      +
    • R0 (Any) – Radius parameter in microns.

    • +
    • w0 (float) – Width parameter in microns.

    • +
    • R1 (Any) – Radius parameter in microns.

    • +
    • w1 (float) – Width parameter in microns.

    • +
    • dLy (float) – Value for the dLy parameter.

    • +
    • dLx (float) – Value for the dLx parameter.

    • +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_gds(sharp_patch=True, show_pins=False)#
    @@ -401,6 +446,36 @@
    class mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass(r_rck, w_rck, dLy, name=None, xs='strip', gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, Ltp_bus=10, dL_p2p=None, L_tilt=0, Ratt=10, w_ht=0, w_mt=10, via_h2m=None, xs_ht='heater', xs_mt='metal', sharp_patch=True, cell_xs_transition=None, res=0.01, show_pins=False)#

    Bases: RacetrackResonator

    +

    Racetrack STD Allpass primitive component.

    +

    This component builds the Racetrack STD Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • r_rck (float) – Radius parameter in microns.

    • +
    • w_rck (float) – Width parameter in microns.

    • +
    • dLy (float) – Value for the dLy parameter.

    • +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 0.

    • +
    • Ratt (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ht (float, optional) – Width parameter in microns. Default is 0.

    • +
    • w_mt (float, optional) – Width parameter in microns. Default is 10.

    • +
    • via_h2m (Any, optional) – Via definition used between heater and metal layers. Default is None.

    • +
    • xs_ht (str, optional) – Layer or cross-section name used by the device. Default is ‘heater’.

    • +
    • xs_mt (str, optional) – Layer or cross-section name used by the device. Default is ‘metal’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_eic_gds(sharp_patch=True, show_pins=False)#
    @@ -415,6 +490,34 @@
    class mxpic.components.primitives.pic.racetrack.Racetrack_MM_Allpass(r1_rck, w1_rck, r0_rck, w0_rck, dLy, name=None, xs='strip', gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=50, R_att_min=10, A_att=15, Ltp_bus=10, dL_p2p=None, sharp_patch=True, cell_xs_transition=None, res=0.01, show_pins=False)#

    Bases: RacetrackResonator

    +

    Racetrack MM Allpass primitive component.

    +

    This component builds the Racetrack MM Allpass layout cell.

    +
    +
    Parameters:
    +
      +
    • r1_rck (float) – Value for the r1_rck parameter.

    • +
    • w1_rck (float) – Value for the w1_rck parameter.

    • +
    • r0_rck (float) – Value for the r0_rck parameter.

    • +
    • w0_rck (float) – Value for the w0_rck parameter.

    • +
    • dLy (float) – Value for the dLy parameter.

    • +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 50.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 15.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    @@ -424,6 +527,34 @@
    class mxpic.components.primitives.pic.racetrack.Racetrack_MM_Adddrop(r1_rck, w1_rck, r0_rck, w0_rck, dLy, name=None, xs='strip', gap=0.2, w_bus=0.45, A_cp=0, w_wg=0.45, R_att=50, R_att_min=10, A_att=15, Ltp_bus=10, dL_p2p=None, sharp_patch=True, cell_xs_transition=None, res=0.01, show_pins=False)#

    Bases: RacetrackResonator

    +

    Racetrack MM Adddrop primitive component.

    +

    This component builds the Racetrack MM Adddrop layout cell.

    +
    +
    Parameters:
    +
      +
    • r1_rck (float) – Value for the r1_rck parameter.

    • +
    • w1_rck (float) – Value for the w1_rck parameter.

    • +
    • r0_rck (float) – Value for the r0_rck parameter.

    • +
    • w0_rck (float) – Value for the w0_rck parameter.

    • +
    • dLy (float) – Value for the dLy parameter.

    • +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w_bus (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • A_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R_att (int, optional) – Radius parameter in microns. Default is 50.

    • +
    • R_att_min (int, optional) – Radius parameter in microns. Default is 10.

    • +
    • A_att (int, optional) – Angle parameter in degrees. Default is 15.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/rings.html b/docs/build/html/mxpic/components/primitives/pic/rings.html index 6d059a6..f81c501 100644 --- a/docs/build/html/mxpic/components/primitives/pic/rings.html +++ b/docs/build/html/mxpic/components/primitives/pic/rings.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,45 @@
    class mxpic.components.primitives.pic.rings.AED_ring(name=None, ORx=10, ORy=10, IRx=9.55, IRy=9.35, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0.45, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, res=0.01, show_pins=False)#

    Bases: object

    +

    AED ring primitive component.

    +

    This component builds the AED ring layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • ORx (float, optional) – Value for the ORx parameter. Default is 10.

    • +
    • ORy (float, optional) – Value for the ORy parameter. Default is 10.

    • +
    • IRx (float, optional) – Value for the IRx parameter. Default is 10 - 0.45.

    • +
    • IRy (float, optional) – Value for the IRy parameter. Default is 10 - 0.65.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.45.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    generate_pic_gds(sharp_patch, show_pins)#
    @@ -397,6 +442,43 @@
    class mxpic.components.primitives.pic.rings.STD_PIC_Rings(name=None, r_ring=10, w_ring=10, gap1=0.2, gap2=0.2, w1_bus=0.45, w2_bus=0, R1_cp=None, R2_cp=None, A1_cp=0, A2_cp=0, offset_X=0, offset_Y=0, w_wg=0.45, R1_att=20, R2_att=20, R2_att_min=10, R1_att_min=10, A1_att=30, A2_att=20, Ltp_bus=10, dL_p2p=None, L_tilt=10, xs='strip', sharp_patch=True, cell_xs_transition=None, Euler_trasition=False, res=0.001, show_pins=False)#

    Bases: AED_ring

    +

    STD PIC Rings primitive component.

    +

    This component builds the STD PIC Rings layout cell.

    +
    +
    Parameters:
    +
      +
    • name (Optional[str], optional) – Unique identifier for the device cell. Default is None.

    • +
    • r_ring (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • w_ring (float, optional) – Width parameter in microns. Default is 10.

    • +
    • gap1 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • gap2 (float, optional) – Spacing or gap parameter in microns. Default is 0.2.

    • +
    • w1_bus (float, optional) – Value for the w1_bus parameter. Default is 0.45.

    • +
    • w2_bus (float, optional) – Value for the w2_bus parameter. Default is 0.

    • +
    • R1_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • R2_cp (Any, optional) – Radius parameter in microns. Default is None.

    • +
    • A1_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • A2_cp (int, optional) – Angle parameter in degrees. Default is 0.

    • +
    • offset_X (float, optional) – Value for the offset_X parameter. Default is 0.

    • +
    • offset_Y (float, optional) – Value for the offset_Y parameter. Default is 0.

    • +
    • w_wg (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • R1_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att (float, optional) – Radius parameter in microns. Default is 20.

    • +
    • R2_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • R1_att_min (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • A1_att (float, optional) – Angle parameter in degrees. Default is 30.

    • +
    • A2_att (float, optional) – Angle parameter in degrees. Default is 20.

    • +
    • Ltp_bus (int, optional) – Length parameter in microns. Default is 10.

    • +
    • dL_p2p (Optional[float], optional) – Value for the dL_p2p parameter. Default is None.

    • +
    • L_tilt (int, optional) – Length parameter in microns. Default is 10.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • Euler_trasition (bool, optional) – Value for the Euler_trasition parameter. Default is False.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.001.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/spiral.html b/docs/build/html/mxpic/components/primitives/pic/spiral.html index 8b90069..b25d893 100644 --- a/docs/build/html/mxpic/components/primitives/pic/spiral.html +++ b/docs/build/html/mxpic/components/primitives/pic/spiral.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,36 @@
    class mxpic.components.primitives.pic.spiral.spiral(name=None, shape='circle', Dmin=50, R_bend=10, Rmin_euler=10, Lmin=50, width=2, w_port=0.45, w_bend_center=1, Rmin_bend_center=10, gap=1, cycles=20, xs='strip', layer=None, w_bend_port=None, Ltp_port=10, res=0.5, rib2strip=True, port_angle=180, Euler_bend=False, show_pins=False, sharp_patch=True)#

    Bases: object

    +

    spiral primitive component.

    +

    This component builds the spiral layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • shape (str, optional) – Value for the shape parameter. Default is ‘circle’.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • R_bend (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • Rmin_euler (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • Lmin (float, optional) – Length parameter in microns. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_bend_center (float, optional) – Width parameter in microns. Default is 1.

    • +
    • Rmin_bend_center (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_bend_port (Optional[float], optional) – Width parameter in microns. Default is None.

    • +
    • Ltp_port (int, optional) – Length parameter in microns. Default is 10.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • rib2strip (bool, optional) – Value for the rib2strip parameter. Default is True.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • Euler_bend (bool, optional) – Value for the Euler_bend parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    generate_gds(show_pins)#
    @@ -392,6 +428,36 @@
    class mxpic.components.primitives.pic.spiral.spiral_rectangle(name=None, Dmin=50, Rmax_bend=10, Rmin_bend=10, wmin_bend=10, Lmin=50, width=2, w_port=None, gap=1, cycles=20, xs='strip', layer=None, w_bend_port=None, Lport=10, Ltp=10, res=0.5, cell_xs_transition=None, port_angle=180, show_pins=False, sharp_patch=True, in_out_align=True, Lpatch=0.05)#

    Bases: object

    +

    spiral rectangle primitive component.

    +

    This component builds the spiral rectangle layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • Rmax_bend (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • Rmin_bend (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • wmin_bend (float, optional) – Value for the wmin_bend parameter. Default is 10.

    • +
    • Lmin (float, optional) – Length parameter in microns. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is None.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w_bend_port (Optional[float], optional) – Width parameter in microns. Default is None.

    • +
    • Lport (int, optional) – Length parameter in microns. Default is 10.

    • +
    • Ltp (int, optional) – Length parameter in microns. Default is 10.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • in_out_align (bool, optional) – Value for the in_out_align parameter. Default is True.

    • +
    • Lpatch (float, optional) – Length parameter in microns. Default is 0.05.

    • +
    +
    +
    generate_gds(show_pins)#
    @@ -406,6 +472,31 @@
    class mxpic.components.primitives.pic.spiral.Spiral_Rect_STD(name=None, Dmin=50, R_bend=10, Lmin=50, width=2, w_port=0.45, gap=1, cycles=20, xs='strip', layer=None, Lport=10, in_out_align=True, res=0.5, cell_xs_transition=None, port_angle=180, show_pins=False, sharp_patch=True)#

    Bases: spiral_rectangle

    +

    Spiral Rect STD primitive component.

    +

    This component builds the Spiral Rect STD layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • R_bend (float, optional) – Radius parameter in microns. Default is 10.

    • +
    • Lmin (float, optional) – Length parameter in microns. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • Lport (int, optional) – Length parameter in microns. Default is 10.

    • +
    • in_out_align (bool, optional) – Value for the in_out_align parameter. Default is True.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • cell_xs_transition (Any, optional) – Cell or component dependency used by this device. Default is None.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    +
    +
    @@ -415,6 +506,32 @@
    class mxpic.components.primitives.pic.spiral.spiral_circle(name=None, Dmin=50, width=2, w_port=0.45, w_bend_center=1, gap=1, cycles=20, xs='strip', layer=None, Lport=10, res=0.5, rib2strip=True, port_angle=180, Euler_Sbend=False, show_pins=False, sharp_patch=True, strict_condition=False, R_ratio_mamnual=None)#

    Bases: object

    +

    spiral circle primitive component.

    +

    This component builds the spiral circle layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_bend_center (float, optional) – Width parameter in microns. Default is 1.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • Lport (int, optional) – Length parameter in microns. Default is 10.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • rib2strip (bool, optional) – Value for the rib2strip parameter. Default is True.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • Euler_Sbend (bool, optional) – Value for the Euler_Sbend parameter. Default is False.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • strict_condition (bool, optional) – Value for the strict_condition parameter. Default is False.

    • +
    • R_ratio_mamnual (Any, optional) – Radius parameter in microns. Default is None.

    • +
    +
    +
    cell#
    @@ -440,6 +557,30 @@
    class mxpic.components.primitives.pic.spiral.Spiral_Cicle_MM(name=None, Dmin=50, width=2, w_port=0.45, w_bend_center=1, gap=1, cycles=20, xs='strip', layer=None, Lport=10, res=0.5, rib2strip=True, port_angle=180, show_pins=False, sharp_patch=True, strict_condition=False)#

    Bases: spiral_circle

    +

    Spiral Cicle MM primitive component.

    +

    This component builds the Spiral Cicle MM layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_bend_center (float, optional) – Width parameter in microns. Default is 1.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • Lport (int, optional) – Length parameter in microns. Default is 10.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • rib2strip (bool, optional) – Value for the rib2strip parameter. Default is True.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • strict_condition (bool, optional) – Value for the strict_condition parameter. Default is False.

    • +
    +
    +
    @@ -449,6 +590,29 @@
    class mxpic.components.primitives.pic.spiral.Spiral_Cicle_STD(name=None, Dmin=50, width=2, w_port=0.45, gap=1, cycles=20, xs='strip', layer=None, Lport=10, res=0.5, rib2strip=True, port_angle=180, show_pins=False, sharp_patch=True, strict_condition=False)#

    Bases: spiral_circle

    +

    Spiral Cicle STD primitive component.

    +

    This component builds the Spiral Cicle STD layout cell.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is None.

    • +
    • Dmin (float, optional) – Value for the Dmin parameter. Default is 50.

    • +
    • width (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_port (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • gap (float, optional) – Spacing or gap parameter in microns. Default is 1.

    • +
    • cycles (float, optional) – Count or repetition parameter. Default is 20.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • layer (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • Lport (int, optional) – Length parameter in microns. Default is 10.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.5.

    • +
    • rib2strip (bool, optional) – Value for the rib2strip parameter. Default is True.

    • +
    • port_angle (float, optional) – Value for the port_angle parameter. Default is 180.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    • sharp_patch (bool, optional) – Whether to add geometry patches for sharp corners or cladding continuity. Default is True.

    • +
    • strict_condition (bool, optional) – Value for the strict_condition parameter. Default is False.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/pic/taper.html b/docs/build/html/mxpic/components/primitives/pic/taper.html index 52f1af8..2e3cbf7 100644 --- a/docs/build/html/mxpic/components/primitives/pic/taper.html +++ b/docs/build/html/mxpic/components/primitives/pic/taper.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -378,6 +384,25 @@
    class mxpic.components.primitives.pic.taper.transition(layer_FETCH='STRIP_TRE', layer_METCH='RIB_TRE', w_rib=1.1, dw_tolerance=0.2, w_grow_rib=2, w_grow_strip=2, Ltp1=15, Ltp2=10, Ltrans=5, L_port=2, show_pins=False)#

    Bases: object

    +

    transition primitive component.

    +

    This component builds the transition layout cell.

    +
    +
    Parameters:
    +
      +
    • layer_FETCH (str, optional) – Layer or cross-section name used by the device. Default is ‘STRIP_TRE’.

    • +
    • layer_METCH (str, optional) – Layer or cross-section name used by the device. Default is ‘RIB_TRE’.

    • +
    • w_rib (float, optional) – Width parameter in microns. Default is 1.1.

    • +
    • dw_tolerance (float, optional) – Value for the dw_tolerance parameter. Default is 0.2.

    • +
    • w_grow_rib (float, optional) – Width parameter in microns. Default is 2.

    • +
    • w_grow_strip (float, optional) – Width parameter in microns. Default is 2.

    • +
    • Ltp1 (int, optional) – Length parameter in microns. Default is 15.

    • +
    • Ltp2 (int, optional) – Length parameter in microns. Default is 10.

    • +
    • Ltrans (int, optional) – Length parameter in microns. Default is 5.

    • +
    • L_port (int, optional) – Length parameter in microns. Default is 2.

    • +
    • show_pins (bool, optional) – Whether to draw pin markers in the generated layout. Default is False.

    • +
    +
    +
    @@ -387,6 +412,20 @@
    class mxpic.components.primitives.pic.taper.taper_xs2xs(xs_1='rib', xs_2='strip', L_taper=10, w_1=0.45, w_2=0.45, L_port=0)#

    Bases: object

    +

    taper xs2xs primitive component.

    +

    This component builds the taper xs2xs layout cell.

    +
    +
    Parameters:
    +
      +
    • xs_1 (str, optional) – Layer or cross-section name used by the device. Default is ‘rib’.

    • +
    • xs_2 (str, optional) – Layer or cross-section name used by the device. Default is ‘strip’.

    • +
    • L_taper (float, optional) – Length parameter in microns. Default is 10.

    • +
    • w_1 (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • w_2 (float, optional) – Width parameter in microns. Default is 0.45.

    • +
    • L_port (float, optional) – Length parameter in microns. Default is 0.

    • +
    +
    +
    @@ -396,7 +435,24 @@
    class mxpic.components.primitives.pic.taper.PSR(name='PSR_unit', xs='rib', layer_u=None, layer_d=None, w=[0.45, 0.45, 0.55, 1.2, 1.2], Lt_rib=[10, 30, 30, 10], ws=[0.45, 2, 1.2], Lt_slab=[40, 40], shape='sine', L_port=5, res=0.01)#

    Bases: object

    -

    Polarization Splitter & rotator

    +

    Polarization Splitter & rotator.

    +
    +
    Parameters:
    +
      +
    • name (str, optional) – Unique identifier for the device cell. Default is ‘PSR_unit’.

    • +
    • xs (str, optional) – Layer or cross-section name used by the device. Default is ‘rib’.

    • +
    • layer_u (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • layer_d (str, optional) – Layer or cross-section name used by the device. Default is None.

    • +
    • w (list, optional) – Width parameter in microns. Default is [0.45, 0.45, 0.55, 1.2, 1.2].

    • +
    • Lt_rib (list, optional) – Length parameter in microns. Default is [10, 30, 30, 10].

    • +
    • ws (list, optional) – Value for the ws parameter. Default is [0.45, 2, 1.2].

    • +
    • Lt_slab (list, optional) – Length parameter in microns. Default is [40, 40].

    • +
    • shape (str, optional) – Value for the shape parameter. Default is ‘sine’.

    • +
    • L_port (float, optional) – Length parameter in microns. Default is 5.

    • +
    • res (float, optional) – Value for the res parameter. Default is 0.01.

    • +
    +
    +
    diff --git a/docs/build/html/mxpic/components/primitives/spiral.html b/docs/build/html/mxpic/components/primitives/spiral.html index 6ef591e..5242f23 100644 --- a/docs/build/html/mxpic/components/primitives/spiral.html +++ b/docs/build/html/mxpic/components/primitives/spiral.html @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • diff --git a/docs/build/html/mxpic/components/routing.html b/docs/build/html/mxpic/components/routing.html index ea40607..34a07f2 100644 --- a/docs/build/html/mxpic/components/routing.html +++ b/docs/build/html/mxpic/components/routing.html @@ -44,7 +44,7 @@ - + @@ -303,7 +303,13 @@
  • mxpic.components.gds_devices
  • mxpic.components.pins
  • mxpic.components.routing
  • -
  • mxpic.components.structures
  • +
  • Geometry
    +
  • @@ -838,11 +844,11 @@ orthogonal ubend.

    next

    -

    mxpic.components.structures

    +

    Geometry

    diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index ee4cbe8..b0cb174 100644 Binary files a/docs/build/html/objects.inv and b/docs/build/html/objects.inv differ diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html index 28030b4..1fac7db 100644 --- a/docs/build/html/py-modindex.html +++ b/docs/build/html/py-modindex.html @@ -314,6 +314,26 @@
        mxpic.components.gds_devices
        + mxpic.components.geometry.curves +
        + mxpic.components.geometry.polygons +
        + mxpic.components.geometry.racetrack +
        + mxpic.components.geometry.rings +
        @@ -469,11 +489,6 @@     mxpic.components.routing
        - mxpic.components.structures -
    diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 0978643..f865528 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"ADC_STD_2x2": [[28, "adc-std-2x2"], [39, "adc-std-2x2"]], "AED_Ring_PIN": [[26, "aed-ring-pin"]], "AED_ring": [[45, "aed-ring"]], "AMZI_W": [[4, "amzi-w"]], "Active": [[24, null]], "BS_tdc": [[28, "bs-tdc"], [39, "bs-tdc"]], "Brag_WDM": [[35, "brag-wdm"]], "Bragg": [[38, "bragg"]], "Bragg_apodized": [[38, "bragg-apodized"]], "CROW_AED": [[32, "crow-aed"]], "CROW_Circular_ring": [[32, "crow-circular-ring"]], "CROW_Eul_RCK": [[32, "crow-eul-rck"]], "CROW_Eul_Ring": [[32, "crow-eul-ring"]], "CROW_STD_Adddrop": [[32, "crow-std-adddrop"]], "CROW_STD_Allpass": [[32, "crow-std-allpass"]], "CRX_TE_1310": [[17, "crx-te-1310"]], "CRX_TE_1550": [[16, "crx-te-1550"], [17, "crx-te-1550"]], "Clothoid": [[50, "clothoid"]], "Components": [[11, null]], "Components:": [[0, null]], "Composites": [[7, null]], "Conchoid": [[50, "conchoid"]], "Cross": [[40, "cross"]], "Cross_Sine": [[40, "cross-sine"]], "DC": [[28, "dc"], [39, "dc"]], "DC_TE_1550": [[17, "dc-te-1550"]], "DC_bend": [[28, "dc-bend"], [39, "dc-bend"]], "DC_bend_20_80_Cband": [[18, "dc-bend-20-80-cband"]], "DC_bend_4_96_Cband": [[18, "dc-bend-4-96-cband"]], "DC_bend_50_50_Cband": [[18, "dc-bend-50-50-cband"]], "DC_pX3_50_50_Cband": [[20, "dc-px3-50-50-cband"]], "DC_pX_3sg": [[28, "dc-px-3sg"], [39, "dc-px-3sg"]], "DEVICE_2X2_FDTD_INIT": [[13, "device-2x2-fdtd-init"]], "DEVICE_COUPLER": [[13, "device-coupler"]], "DEVICE_PORTS": [[13, "device-ports"]], "DEVICE_RING_BUS": [[13, "device-ring-bus"]], "EC_1550": [[16, "ec-1550"]], "EC_TE_1550": [[17, "ec-te-1550"]], "EC_dual_layer_px3": [[22, "ec-dual-layer-px3"]], "EULER_CROW_BUS": [[13, "euler-crow-bus"]], "EULER_CROW_INTER_CP": [[13, "euler-crow-inter-cp"]], "Electronics": [[9, null]], "Elipse": [[50, "elipse"]], "Elipse_dual": [[50, "elipse-dual"]], "FA": [[29, "fa"], [41, "fa"]], "GC_STD_1D": [[29, "gc-std-1d"], [41, "gc-std-1d"]], "GC_STD_2D": [[29, "gc-std-2d"], [41, "gc-std-2d"]], "GC_SiN_Si_Dual_Layer": [[29, "gc-sin-si-dual-layer"]], "GC_TE_1310": [[15, "gc-te-1310"], [16, "gc-te-1310"], [17, "gc-te-1310"]], "GC_TE_1550": [[15, "gc-te-1550"], [16, "gc-te-1550"], [17, "gc-te-1550"]], "GC_TM_1310": [[17, "gc-tm-1310"]], "GC_TM_1550": [[16, "gc-tm-1550"], [17, "gc-tm-1550"]], "GPD_1550": [[16, "gpd-1550"]], "Grating_2D_Hole": [[29, "grating-2d-hole"], [41, "grating-2d-hole"]], "Grating_2D_Hole_3Rec": [[41, "grating-2d-hole-3rec"]], "Grating_2D_Hole_4Rec": [[41, "grating-2d-hole-4rec"]], "Heater_NDoped": [[23, "heater-ndoped"]], "ISL": [[8, "isl"]], "LoopMirror": [[2, "loopmirror"]], "MDM": [[28, "mdm"], [39, "mdm"]], "MDM_ADC_TE1_1550": [[20, "mdm-adc-te1-1550"]], "MDM_ADC_TE2_1550": [[20, "mdm-adc-te2-1550"]], "MDM_ADC_TE3_1550": [[20, "mdm-adc-te3-1550"]], "MMG_1D_D14um_1550_2modes": [[20, "mmg-1d-d14um-1550-2modes"]], "MMI_1x2_TE_1310": [[16, "mmi-1x2-te-1310"], [17, "mmi-1x2-te-1310"]], "MMI_1x2_TE_1550": [[16, "mmi-1x2-te-1550"], [17, "mmi-1x2-te-1550"]], "MMI_2x2_TE_1310": [[17, "mmi-2x2-te-1310"]], "MMI_2x2_TE_1550": [[16, "mmi-2x2-te-1550"], [17, "mmi-2x2-te-1550"]], "MMI_ML": [[31, "mmi-ml"], [43, "mmi-ml"]], "MMI_STD": [[31, "mmi-std"], [43, "mmi-std"]], "MRR_AED": [[34, "mrr-aed"]], "MRR_DW_Adddrop": [[34, "mrr-dw-adddrop"]], "MRR_DW_Allpass": [[34, "mrr-dw-allpass"]], "MRR_MM_Adddrop": [[34, "mrr-mm-adddrop"]], "MRR_MM_Allpass": [[34, "mrr-mm-allpass"]], "MRR_STD_Adddrop": [[34, "mrr-std-adddrop"]], "MRR_STD_Allpass": [[34, "mrr-std-allpass"]], "MRR_STD_Ring": [[34, "mrr-std-ring"]], "MZI": [[3, "mzi"]], "MZI_2st_ubend": [[3, "mzi-2st-ubend"]], "MZI_Butterfly": [[3, "mzi-butterfly"]], "MZI_Eubend": [[3, "mzi-eubend"]], "MZI_NS": [[3, "mzi-ns"]], "MZI_NS_ubend": [[3, "mzi-ns-ubend"]], "MZI_Ubend": [[3, "mzi-ubend"]], "MZI_mesh_Parl": [[4, "mzi-mesh-parl"]], "MZI_mesh_Tri": [[4, "mzi-mesh-tri"]], "MZI_mesh_U": [[4, "mzi-mesh-u"]], "MonitorParas": [[13, "monitorparas"]], "Nano_ant": [[29, "nano-ant"], [41, "nano-ant"]], "Others": [[12, null]], "PAD": [[8, "pad"]], "PAD_60_80": [[16, "pad-60-80"]], "PADs": [[8, "pads"]], "PBS_1550": [[16, "pbs-1550"]], "PBS_3wg": [[36, "pbs-3wg"]], "PD_Cband_Cell": [[15, "pd-cband-cell"]], "PIN_MRR_MM_Adddrop": [[26, "pin-mrr-mm-adddrop"]], "PIN_MRR_MM_Allpass": [[26, "pin-mrr-mm-allpass"]], "PIN_MRR_STD_Allpass": [[26, "pin-mrr-std-allpass"]], "PSR": [[47, "psr"]], "PSR_1x2": [[35, "psr-1x2"]], "PS_2st": [[35, "ps-2st"]], "PS_2st_Straight": [[35, "ps-2st-straight"]], "PS_PIN": [[23, "ps-pin"]], "Passive": [[33, null]], "Pdks": [[19, null]], "Pic": [[42, null]], "PortParas": [[13, "portparas"]], "Primitives": [[30, null]], "RESONATOR": [[13, "resonator"]], "RING_PHASE": [[13, "ring-phase"]], "Racetrack": [[50, "racetrack"]], "RacetrackResonator": [[44, "racetrackresonator"]], "Racetrack_MM_Adddrop": [[44, "racetrack-mm-adddrop"]], "Racetrack_MM_Allpass": [[44, "racetrack-mm-allpass"]], "Racetrack_STD_Allpass": [[44, "racetrack-std-allpass"]], "Route": [[23, "route"], [26, "route"], [34, "route"], [44, "route"], [49, "route"]], "SOCR": [[34, "socr"]], "SOCR_Adiabatic": [[34, "socr-adiabatic"]], "SOCR_Adiabatic_Cband": [[34, "socr-adiabatic-cband"]], "SOCR_Cband": [[34, "socr-cband"]], "STD_CROW_V": [[32, "std-crow-v"]], "STD_PIC_Rings": [[45, "std-pic-rings"]], "STD_Ring_PIN": [[26, "std-ring-pin"]], "STD_ring_AMZI_adddrop": [[34, "std-ring-amzi-adddrop"]], "SimuDataFigurePlot": [[13, "simudatafigureplot"]], "Simulation": [[14, null]], "Spiral_Cicle_MM": [[46, "spiral-cicle-mm"], [48, "spiral-cicle-mm"]], "Spiral_Cicle_STD": [[46, "spiral-cicle-std"], [48, "spiral-cicle-std"]], "Spiral_Rect_STD": [[46, "spiral-rect-std"], [48, "spiral-rect-std"]], "SplittingTree": [[5, "splittingtree"]], "Taper": [[29, "taper"], [41, "taper"]], "Template": [[17, "template"]], "UMat_2x2_S": [[4, "umat-2x2-s"]], "Vias": [[8, "vias"]], "Vias_arc": [[8, "vias-arc"]], "WGDoped": [[25, "wgdoped"]], "W_waveguide": [[4, "w-waveguide"]], "YBranch": [[27, "ybranch"], [37, "ybranch"]], "Ybranch_3wg": [[27, "ybranch-3wg"], [37, "ybranch-3wg"]], "Ybranch_TE": [[17, "ybranch-te"]], "circle": [[50, "circle"]], "gds_lib_load": [[10, "gds-lib-load"]], "generate_gds_lib": [[10, "generate-gds-lib"]], "hole": [[50, "hole"]], "ic_exception": [[49, "ic-exception"]], "mxPIC Handbook": [[0, null]], "mx_bend": [[50, "mx-bend"]], "mxpic.components.basic": [[1, null]], "mxpic.components.composites.LoopMirror": [[2, null]], "mxpic.components.composites.MZI": [[3, null]], "mxpic.components.composites.MZI_mesh": [[4, null]], "mxpic.components.composites.SptTree": [[5, null]], "mxpic.components.composites.advance": [[6, null]], "mxpic.components.electronics.eic_units": [[8, null]], "mxpic.components.gds_devices": [[10, null]], "mxpic.components.others.simulation.DualPortElements": [[13, null]], "mxpic.components.pdks.AMF_pdk": [[15, null]], "mxpic.components.pdks.CUMEC_pdk": [[16, null]], "mxpic.components.pdks.IMECAS_pdk": [[17, null]], "mxpic.components.pdks.hgl_pdk_A": [[18, null]], "mxpic.components.pdks.qy_pdk_A": [[20, null]], "mxpic.components.pins": [[21, null]], "mxpic.components.primitives.EC_dual_layer_px3": [[22, null]], "mxpic.components.primitives.active.dev_ps": [[23, null]], "mxpic.components.primitives.active.pin_wg": [[25, null]], "mxpic.components.primitives.active.rings": [[26, null]], "mxpic.components.primitives.beam_splitters": [[27, null]], "mxpic.components.primitives.directional_couplers": [[28, null]], "mxpic.components.primitives.grating_couplers": [[29, null]], "mxpic.components.primitives.multimode_interferometers": [[31, null]], "mxpic.components.primitives.passive.crows": [[32, null]], "mxpic.components.primitives.passive.rings": [[34, null]], "mxpic.components.primitives.passive.unit": [[35, null]], "mxpic.components.primitives.pic.PBS": [[36, null]], "mxpic.components.primitives.pic.YBS": [[37, null]], "mxpic.components.primitives.pic.bragg": [[38, null]], "mxpic.components.primitives.pic.couplers": [[39, null]], "mxpic.components.primitives.pic.cross": [[40, null]], "mxpic.components.primitives.pic.gratings": [[41, null]], "mxpic.components.primitives.pic.mmi": [[43, null]], "mxpic.components.primitives.pic.racetrack": [[44, null]], "mxpic.components.primitives.pic.rings": [[45, null]], "mxpic.components.primitives.pic.spiral": [[46, null]], "mxpic.components.primitives.pic.taper": [[47, null]], "mxpic.components.primitives.spiral": [[48, null]], "mxpic.components.routing": [[49, null]], "mxpic.components.structures": [[50, null]], "ring_bus_wg": [[28, "ring-bus-wg"], [39, "ring-bus-wg"]], "spiral": [[46, "spiral"], [48, "spiral"]], "spiral_circle": [[46, "spiral-circle"], [48, "spiral-circle"]], "spiral_rectangle": [[46, "spiral-rectangle"], [48, "spiral-rectangle"]], "strt_round_courner": [[50, "strt-round-courner"]], "taper_xs2xs": [[47, "taper-xs2xs"]], "transition": [[47, "transition"]], "tuple_to_complex": [[13, "tuple-to-complex"]], "waveguide": [[35, "waveguide"]], "waveguide_PIN": [[25, "waveguide-pin"]]}, "docnames": ["index", "mxpic/components/basic", "mxpic/components/composites/LoopMirror", "mxpic/components/composites/MZI", "mxpic/components/composites/MZI_mesh", "mxpic/components/composites/SptTree", "mxpic/components/composites/advance", "mxpic/components/composites/index", "mxpic/components/electronics/eic_units", "mxpic/components/electronics/index", "mxpic/components/gds_devices", "mxpic/components/index", "mxpic/components/others/index", "mxpic/components/others/simulation/DualPortElements", "mxpic/components/others/simulation/index", "mxpic/components/pdks/AMF_pdk", "mxpic/components/pdks/CUMEC_pdk", "mxpic/components/pdks/IMECAS_pdk", "mxpic/components/pdks/hgl_pdk_A", "mxpic/components/pdks/index", "mxpic/components/pdks/qy_pdk_A", "mxpic/components/pins", "mxpic/components/primitives/EC_dual_layer_px3", "mxpic/components/primitives/active/dev_ps", "mxpic/components/primitives/active/index", "mxpic/components/primitives/active/pin_wg", "mxpic/components/primitives/active/rings", "mxpic/components/primitives/beam_splitters", "mxpic/components/primitives/directional_couplers", "mxpic/components/primitives/grating_couplers", "mxpic/components/primitives/index", "mxpic/components/primitives/multimode_interferometers", "mxpic/components/primitives/passive/crows", "mxpic/components/primitives/passive/index", "mxpic/components/primitives/passive/rings", "mxpic/components/primitives/passive/unit", "mxpic/components/primitives/pic/PBS", "mxpic/components/primitives/pic/YBS", "mxpic/components/primitives/pic/bragg", "mxpic/components/primitives/pic/couplers", "mxpic/components/primitives/pic/cross", "mxpic/components/primitives/pic/gratings", "mxpic/components/primitives/pic/index", "mxpic/components/primitives/pic/mmi", "mxpic/components/primitives/pic/racetrack", "mxpic/components/primitives/pic/rings", "mxpic/components/primitives/pic/spiral", "mxpic/components/primitives/pic/taper", "mxpic/components/primitives/spiral", "mxpic/components/routing", "mxpic/components/structures"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["index.md", "mxpic/components/basic.md", "mxpic/components/composites/LoopMirror.md", "mxpic/components/composites/MZI.md", "mxpic/components/composites/MZI_mesh.md", "mxpic/components/composites/SptTree.md", "mxpic/components/composites/advance.md", "mxpic/components/composites/index.md", "mxpic/components/electronics/eic_units.md", "mxpic/components/electronics/index.md", "mxpic/components/gds_devices.md", "mxpic/components/index.md", "mxpic/components/others/index.md", "mxpic/components/others/simulation/DualPortElements.md", "mxpic/components/others/simulation/index.md", "mxpic/components/pdks/AMF_pdk.md", "mxpic/components/pdks/CUMEC_pdk.md", "mxpic/components/pdks/IMECAS_pdk.md", "mxpic/components/pdks/hgl_pdk_A.md", "mxpic/components/pdks/index.md", "mxpic/components/pdks/qy_pdk_A.md", "mxpic/components/pins.md", "mxpic/components/primitives/EC_dual_layer_px3.md", "mxpic/components/primitives/active/dev_ps.md", "mxpic/components/primitives/active/index.md", "mxpic/components/primitives/active/pin_wg.md", "mxpic/components/primitives/active/rings.md", "mxpic/components/primitives/beam_splitters.md", "mxpic/components/primitives/directional_couplers.md", "mxpic/components/primitives/grating_couplers.md", "mxpic/components/primitives/index.md", "mxpic/components/primitives/multimode_interferometers.md", "mxpic/components/primitives/passive/crows.md", "mxpic/components/primitives/passive/index.md", "mxpic/components/primitives/passive/rings.md", "mxpic/components/primitives/passive/unit.md", "mxpic/components/primitives/pic/PBS.md", "mxpic/components/primitives/pic/YBS.md", "mxpic/components/primitives/pic/bragg.md", "mxpic/components/primitives/pic/couplers.md", "mxpic/components/primitives/pic/cross.md", "mxpic/components/primitives/pic/gratings.md", "mxpic/components/primitives/pic/index.md", "mxpic/components/primitives/pic/mmi.md", "mxpic/components/primitives/pic/racetrack.md", "mxpic/components/primitives/pic/rings.md", "mxpic/components/primitives/pic/spiral.md", "mxpic/components/primitives/pic/taper.md", "mxpic/components/primitives/spiral.md", "mxpic/components/routing.md", "mxpic/components/structures.md"], "indexentries": {"a_ht (mxpic.components.primitives.passive.crows.std_crow_v attribute)": [[32, "mxpic.components.primitives.passive.crows.STD_CROW_V.A_ht", false]], "adc_std_2x2 (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2", false]], "adc_std_2x2 (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2", false]], "add_pin() (mxpic.components.gds_devices.gds_lib_load method)": [[10, "mxpic.components.gds_devices.gds_lib_load.add_pin", false]], "aed_ring (class in mxpic.components.primitives.pic.rings)": [[45, "mxpic.components.primitives.pic.rings.AED_ring", false]], "aed_ring_pin (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.AED_Ring_PIN", false]], "amzi_w (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W", false]], "bend_mine() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_mine", false]], "bend_mine() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_mine", false]], "bend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_p2p", false]], "bend_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_p2p", false]], "bend_route() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_route", false]], "bend_route() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_route", false]], "bend_route_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_route_p2p", false]], "bend_route_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_route_p2p", false]], "bend_strt_bend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_strt_bend_p2p", false]], "bend_strt_bend_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_strt_bend_p2p", false]], "bend_strt_bend_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.bend_strt_bend_p2p_mine", false]], "bend_strt_bend_p2p_mine() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.bend_strt_bend_p2p_mine", false]], "brag_wdm (class in mxpic.components.primitives.passive.unit)": [[35, "mxpic.components.primitives.passive.unit.Brag_WDM", false]], "bragg (class in mxpic.components.primitives.pic.bragg)": [[38, "mxpic.components.primitives.pic.bragg.Bragg", false]], "bragg_apodized (class in mxpic.components.primitives.pic.bragg)": [[38, "mxpic.components.primitives.pic.bragg.Bragg_apodized", false]], "bs_tdc (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.BS_tdc", false]], "bs_tdc (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.BS_tdc", false]], "cell (mxpic.components.primitives.active.dev_ps.ps_pin attribute)": [[23, "mxpic.components.primitives.active.dev_ps.PS_PIN.cell", false]], "cell (mxpic.components.primitives.pic.spiral.spiral_circle attribute)": [[46, "mxpic.components.primitives.pic.spiral.spiral_circle.cell", false]], "cell (mxpic.components.primitives.spiral.spiral_circle attribute)": [[48, "mxpic.components.primitives.spiral.spiral_circle.cell", false]], "circle (class in mxpic.components.structures)": [[50, "mxpic.components.structures.circle", false]], "clothoid (class in mxpic.components.structures)": [[50, "mxpic.components.structures.Clothoid", false]], "conchoid (class in mxpic.components.structures)": [[50, "mxpic.components.structures.Conchoid", false]], "connpatch() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.connPatch", false]], "connpatch() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.connPatch", false]], "cross (class in mxpic.components.primitives.pic.cross)": [[40, "mxpic.components.primitives.pic.cross.Cross", false]], "cross_sine (class in mxpic.components.primitives.pic.cross)": [[40, "mxpic.components.primitives.pic.cross.Cross_Sine", false]], "crow_aed (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_AED", false]], "crow_circular_ring (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_Circular_ring", false]], "crow_eul_rck (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_Eul_RCK", false]], "crow_eul_ring (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_Eul_Ring", false]], "crow_std_adddrop (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_STD_Adddrop", false]], "crow_std_allpass (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.CROW_STD_Allpass", false]], "crx_te_1310 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1310", false]], "crx_te_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.CRX_TE_1550", false]], "crx_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1550", false]], "dc (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.DC", false]], "dc (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.DC", false]], "dc_bend (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.DC_bend", false]], "dc_bend (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.DC_bend", false]], "dc_bend_20_80_cband (class in mxpic.components.pdks.hgl_pdk_a)": [[18, "mxpic.components.pdks.hgl_pdk_A.DC_bend_20_80_Cband", false]], "dc_bend_4_96_cband (class in mxpic.components.pdks.hgl_pdk_a)": [[18, "mxpic.components.pdks.hgl_pdk_A.DC_bend_4_96_Cband", false]], "dc_bend_50_50_cband (class in mxpic.components.pdks.hgl_pdk_a)": [[18, "mxpic.components.pdks.hgl_pdk_A.DC_bend_50_50_Cband", false]], "dc_px3_50_50_cband (class in mxpic.components.pdks.qy_pdk_a)": [[20, "mxpic.components.pdks.qy_pdk_A.DC_pX3_50_50_Cband", false]], "dc_px_3sg (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.DC_pX_3sg", false]], "dc_px_3sg (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.DC_pX_3sg", false]], "dc_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.DC_TE_1550", false]], "device_2x2_fdtd_init() (in module mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.DEVICE_2X2_FDTD_INIT", false]], "device_coupler (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.DEVICE_COUPLER", false]], "device_ports (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.DEVICE_PORTS", false]], "device_ring_bus (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.DEVICE_RING_BUS", false]], "ec_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.EC_1550", false]], "ec_dual_layer_px3 (class in mxpic.components.primitives.ec_dual_layer_px3)": [[22, "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3", false]], "ec_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.EC_TE_1550", false]], "elipse (class in mxpic.components.structures)": [[50, "mxpic.components.structures.Elipse", false]], "elipse_dual (class in mxpic.components.structures)": [[50, "mxpic.components.structures.Elipse_dual", false]], "euler_crow_bus (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.EULER_CROW_BUS", false]], "euler_crow_inter_cp (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.EULER_CROW_INTER_CP", false]], "fa (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.FA", false]], "fa (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.FA", false]], "folderpath (mxpic.components.others.simulation.dualportelements.device_ports attribute)": [[13, "mxpic.components.others.simulation.DualPortElements.DEVICE_PORTS.FolderPath", false]], "gc_sin_si_dual_layer (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer", false]], "gc_std_1d (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_1D", false]], "gc_std_1d (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_1D", false]], "gc_std_2d (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_2D", false]], "gc_std_2d (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_2D", false]], "gc_te_1310 (class in mxpic.components.pdks.amf_pdk)": [[15, "mxpic.components.pdks.AMF_pdk.GC_TE_1310", false]], "gc_te_1310 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.GC_TE_1310", false]], "gc_te_1310 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.GC_TE_1310", false]], "gc_te_1550 (class in mxpic.components.pdks.amf_pdk)": [[15, "mxpic.components.pdks.AMF_pdk.GC_TE_1550", false]], "gc_te_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.GC_TE_1550", false]], "gc_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.GC_TE_1550", false]], "gc_tm_1310 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.GC_TM_1310", false]], "gc_tm_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.GC_TM_1550", false]], "gc_tm_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.GC_TM_1550", false]], "gds_lib_load (class in mxpic.components.gds_devices)": [[10, "mxpic.components.gds_devices.gds_lib_load", false]], "generate_2pi_gds() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_2pi_gds", false]], "generate_eic_gds() (mxpic.components.primitives.passive.crows.std_crow_v method)": [[32, "mxpic.components.primitives.passive.crows.STD_CROW_V.generate_eic_gds", false]], "generate_eic_gds() (mxpic.components.primitives.passive.rings.mrr_aed method)": [[34, "mxpic.components.primitives.passive.rings.MRR_AED.generate_eic_gds", false]], "generate_eic_gds() (mxpic.components.primitives.pic.racetrack.racetrack_std_allpass method)": [[44, "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass.generate_eic_gds", false]], "generate_eic_part() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_eic_part", false]], "generate_eic_part() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_eic_part", false]], "generate_err() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[28, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_err", false]], "generate_err() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[39, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_err", false]], "generate_gds() (mxpic.components.composites.mzi.mzi_butterfly method)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.amzi_w method)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.mzi_mesh_u method)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_U.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.umat_2x2_s method)": [[4, "mxpic.components.composites.MZI_mesh.UMat_2x2_S.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.w_waveguide method)": [[4, "mxpic.components.composites.MZI_mesh.W_waveguide.generate_gds", false]], "generate_gds() (mxpic.components.composites.spttree.splittingtree method)": [[5, "mxpic.components.composites.SptTree.SplittingTree.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.pad method)": [[8, "mxpic.components.electronics.eic_units.PAD.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.pads method)": [[8, "mxpic.components.electronics.eic_units.PADs.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.vias method)": [[8, "mxpic.components.electronics.eic_units.Vias.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.dev_ps.heater_ndoped method)": [[23, "mxpic.components.primitives.active.dev_ps.Heater_NDoped.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.dev_ps.ps_pin method)": [[23, "mxpic.components.primitives.active.dev_ps.PS_PIN.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.pin_wg.waveguide_pin method)": [[25, "mxpic.components.primitives.active.pin_wg.waveguide_PIN.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.pin_wg.wgdoped method)": [[25, "mxpic.components.primitives.active.pin_wg.WGDoped.generate_gds", false]], "generate_gds() (mxpic.components.primitives.beam_splitters.ybranch method)": [[27, "mxpic.components.primitives.beam_splitters.YBranch.generate_gds", false]], "generate_gds() (mxpic.components.primitives.beam_splitters.ybranch_3wg method)": [[27, "mxpic.components.primitives.beam_splitters.Ybranch_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[28, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.dc_bend method)": [[28, "mxpic.components.primitives.directional_couplers.DC_bend.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.dc_px_3sg method)": [[28, "mxpic.components.primitives.directional_couplers.DC_pX_3sg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.ring_bus_wg method)": [[28, "mxpic.components.primitives.directional_couplers.ring_bus_wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.ec_dual_layer_px3.ec_dual_layer_px3 method)": [[22, "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.gc_sin_si_dual_layer method)": [[29, "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.grating_2d_hole method)": [[29, "mxpic.components.primitives.grating_couplers.Grating_2D_Hole.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[29, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.taper method)": [[29, "mxpic.components.primitives.grating_couplers.Taper.generate_gds", false]], "generate_gds() (mxpic.components.primitives.multimode_interferometers.mmi_ml method)": [[31, "mxpic.components.primitives.multimode_interferometers.MMI_ML.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.std_ring_amzi_adddrop method)": [[34, "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.unit.ps_2st method)": [[35, "mxpic.components.primitives.passive.unit.PS_2st.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.unit.ps_2st_straight method)": [[35, "mxpic.components.primitives.passive.unit.PS_2st_Straight.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[39, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.dc_bend method)": [[39, "mxpic.components.primitives.pic.couplers.DC_bend.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.dc_px_3sg method)": [[39, "mxpic.components.primitives.pic.couplers.DC_pX_3sg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.ring_bus_wg method)": [[39, "mxpic.components.primitives.pic.couplers.ring_bus_wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.cross.cross method)": [[40, "mxpic.components.primitives.pic.cross.Cross.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole method)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole_3rec method)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole_4rec method)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[41, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.taper method)": [[41, "mxpic.components.primitives.pic.gratings.Taper.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.mmi.mmi_ml method)": [[43, "mxpic.components.primitives.pic.mmi.MMI_ML.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.pbs.pbs_3wg method)": [[36, "mxpic.components.primitives.pic.PBS.PBS_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.racetrack.racetrackresonator method)": [[44, "mxpic.components.primitives.pic.racetrack.RacetrackResonator.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral method)": [[46, "mxpic.components.primitives.pic.spiral.spiral.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral_circle method)": [[46, "mxpic.components.primitives.pic.spiral.spiral_circle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral_rectangle method)": [[46, "mxpic.components.primitives.pic.spiral.spiral_rectangle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.ybs.ybranch method)": [[37, "mxpic.components.primitives.pic.YBS.YBranch.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.ybs.ybranch_3wg method)": [[37, "mxpic.components.primitives.pic.YBS.Ybranch_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral method)": [[48, "mxpic.components.primitives.spiral.spiral.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral_circle method)": [[48, "mxpic.components.primitives.spiral.spiral_circle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral_rectangle method)": [[48, "mxpic.components.primitives.spiral.spiral_rectangle.generate_gds", false]], "generate_gds() (mxpic.components.structures.clothoid method)": [[50, "mxpic.components.structures.Clothoid.generate_gds", false]], "generate_gds() (mxpic.components.structures.elipse method)": [[50, "mxpic.components.structures.Elipse.generate_gds", false]], "generate_gds() (mxpic.components.structures.elipse_dual method)": [[50, "mxpic.components.structures.Elipse_dual.generate_gds", false]], "generate_gds() (mxpic.components.structures.racetrack method)": [[50, "mxpic.components.structures.Racetrack.generate_gds", false]], "generate_gds_error() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[29, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds_error", false]], "generate_gds_error() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[41, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds_error", false]], "generate_gds_lib() (in module mxpic.components.gds_devices)": [[10, "mxpic.components.gds_devices.generate_gds_lib", false]], "generate_gds_lib() (mxpic.components.pdks.qy_pdk_a.dc_px3_50_50_cband method)": [[20, "mxpic.components.pdks.qy_pdk_A.DC_pX3_50_50_Cband.generate_gds_lib", false]], "generate_gds_lib() (mxpic.components.pdks.qy_pdk_a.mdm_adc_te1_1550 method)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE1_1550.generate_gds_lib", false]], "generate_gds_lib() (mxpic.components.pdks.qy_pdk_a.mdm_adc_te2_1550 method)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE2_1550.generate_gds_lib", false]], "generate_gds_lib() (mxpic.components.pdks.qy_pdk_a.mdm_adc_te3_1550 method)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE3_1550.generate_gds_lib", false]], "generate_gds_lib() (mxpic.components.pdks.qy_pdk_a.mmg_1d_d14um_1550_2modes method)": [[20, "mxpic.components.pdks.qy_pdk_A.MMG_1D_D14um_1550_2modes.generate_gds_lib", false]], "generate_gds_positive() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[29, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds_positive", false]], "generate_gds_positive() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[41, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds_positive", false]], "generate_imp_gds() (mxpic.components.primitives.active.rings.aed_ring_pin method)": [[26, "mxpic.components.primitives.active.rings.AED_Ring_PIN.generate_imp_gds", false]], "generate_mzi_gds() (mxpic.components.primitives.active.dev_ps.ps_pin method)": [[23, "mxpic.components.primitives.active.dev_ps.PS_PIN.generate_mzi_gds", false]], "generate_negative() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.bragg.bragg_apodized method)": [[38, "mxpic.components.primitives.pic.bragg.Bragg_apodized.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_negative", false]], "generate_pic_gds() (mxpic.components.primitives.passive.crows.std_crow_v method)": [[32, "mxpic.components.primitives.passive.crows.STD_CROW_V.generate_pic_gds", false]], "generate_pic_gds() (mxpic.components.primitives.pic.rings.aed_ring method)": [[45, "mxpic.components.primitives.pic.rings.AED_ring.generate_pic_gds", false]], "generate_pic_part() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_pic_part", false]], "generate_pic_part() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_pic_part", false]], "generate_positive() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.bragg.bragg_apodized method)": [[38, "mxpic.components.primitives.pic.bragg.Bragg_apodized.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_positive", false]], "generate_test_dev() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_test_dev", false]], "generate_test_dev() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_test_dev", false]], "generate_test_gds() (mxpic.components.composites.mzi.mzi_butterfly method)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly.generate_test_gds", false]], "generate_test_gds() (mxpic.components.composites.mzi_mesh.amzi_w method)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.cumec_pdk.crx_te_1550 method)": [[16, "mxpic.components.pdks.CUMEC_pdk.CRX_TE_1550.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.cumec_pdk.gc_te_1550 method)": [[16, "mxpic.components.pdks.CUMEC_pdk.GC_TE_1550.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.cumec_pdk.gc_tm_1550 method)": [[16, "mxpic.components.pdks.CUMEC_pdk.GC_TM_1550.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.cumec_pdk.mmi_1x2_te_1550 method)": [[16, "mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1550.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.imecas_pdk.crx_te_1310 method)": [[17, "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1310.generate_test_gds", false]], "generate_test_gds() (mxpic.components.pdks.imecas_pdk.crx_te_1550 method)": [[17, "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1550.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.active.dev_ps.heater_ndoped method)": [[23, "mxpic.components.primitives.active.dev_ps.Heater_NDoped.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.beam_splitters.ybranch_3wg method)": [[27, "mxpic.components.primitives.beam_splitters.Ybranch_3wg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[28, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc method)": [[28, "mxpic.components.primitives.directional_couplers.DC.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc_bend method)": [[28, "mxpic.components.primitives.directional_couplers.DC_bend.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc_px_3sg method)": [[28, "mxpic.components.primitives.directional_couplers.DC_pX_3sg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.mdm method)": [[28, "mxpic.components.primitives.directional_couplers.MDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[29, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.multimode_interferometers.mmi_ml method)": [[31, "mxpic.components.primitives.multimode_interferometers.MMI_ML.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.unit.brag_wdm method)": [[35, "mxpic.components.primitives.passive.unit.Brag_WDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.unit.psr_1x2 method)": [[35, "mxpic.components.primitives.passive.unit.PSR_1x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[39, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc method)": [[39, "mxpic.components.primitives.pic.couplers.DC.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc_bend method)": [[39, "mxpic.components.primitives.pic.couplers.DC_bend.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc_px_3sg method)": [[39, "mxpic.components.primitives.pic.couplers.DC_pX_3sg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.mdm method)": [[39, "mxpic.components.primitives.pic.couplers.MDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.cross.cross method)": [[40, "mxpic.components.primitives.pic.cross.Cross.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[41, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.mmi.mmi_ml method)": [[43, "mxpic.components.primitives.pic.mmi.MMI_ML.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.rings.aed_ring method)": [[45, "mxpic.components.primitives.pic.rings.AED_ring.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.ybs.ybranch_3wg method)": [[37, "mxpic.components.primitives.pic.YBS.Ybranch_3wg.generate_test_gds", false]], "generate_test_mzi_gds() (mxpic.components.primitives.passive.rings.socr method)": [[34, "mxpic.components.primitives.passive.rings.SOCR.generate_test_mzi_gds", false]], "gpd_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.GPD_1550", false]], "grating_2d_hole (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.Grating_2D_Hole", false]], "grating_2d_hole (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole", false]], "grating_2d_hole_3rec (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec", false]], "grating_2d_hole_4rec (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec", false]], "heater_ndoped (class in mxpic.components.primitives.active.dev_ps)": [[23, "mxpic.components.primitives.active.dev_ps.Heater_NDoped", false]], "hole (class in mxpic.components.structures)": [[50, "mxpic.components.structures.hole", false]], "ic_exception() (in module mxpic.components.routing)": [[49, "mxpic.components.routing.ic_exception", false]], "isl (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.ISL", false]], "line_mm() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.line_mm", false]], "line_mm() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.line_mm", false]], "loopmirror (class in mxpic.components.composites.loopmirror)": [[2, "mxpic.components.composites.LoopMirror.LoopMirror", false]], "mdm (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.MDM", false]], "mdm (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.MDM", false]], "mdm_adc_te1_1550 (class in mxpic.components.pdks.qy_pdk_a)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE1_1550", false]], "mdm_adc_te2_1550 (class in mxpic.components.pdks.qy_pdk_a)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE2_1550", false]], "mdm_adc_te3_1550 (class in mxpic.components.pdks.qy_pdk_a)": [[20, "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE3_1550", false]], "mmg_1d_d14um_1550_2modes (class in mxpic.components.pdks.qy_pdk_a)": [[20, "mxpic.components.pdks.qy_pdk_A.MMG_1D_D14um_1550_2modes", false]], "mmi_1x2_te_1310 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1310", false]], "mmi_1x2_te_1310 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.MMI_1x2_TE_1310", false]], "mmi_1x2_te_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1550", false]], "mmi_1x2_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.MMI_1x2_TE_1550", false]], "mmi_2x2_te_1310 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.MMI_2x2_TE_1310", false]], "mmi_2x2_te_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.MMI_2x2_TE_1550", false]], "mmi_2x2_te_1550 (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.MMI_2x2_TE_1550", false]], "mmi_ml (class in mxpic.components.primitives.multimode_interferometers)": [[31, "mxpic.components.primitives.multimode_interferometers.MMI_ML", false]], "mmi_ml (class in mxpic.components.primitives.pic.mmi)": [[43, "mxpic.components.primitives.pic.mmi.MMI_ML", false]], "mmi_std (class in mxpic.components.primitives.multimode_interferometers)": [[31, "mxpic.components.primitives.multimode_interferometers.MMI_STD", false]], "mmi_std (class in mxpic.components.primitives.pic.mmi)": [[43, "mxpic.components.primitives.pic.mmi.MMI_STD", false]], "module": [[1, "module-mxpic.components.basic", false], [2, "module-mxpic.components.composites.LoopMirror", false], [3, "module-mxpic.components.composites.MZI", false], [4, "module-mxpic.components.composites.MZI_mesh", false], [5, "module-mxpic.components.composites.SptTree", false], [6, "module-mxpic.components.composites.advance", false], [8, "module-mxpic.components.electronics.eic_units", false], [10, "module-mxpic.components.gds_devices", false], [13, "module-mxpic.components.others.simulation.DualPortElements", false], [15, "module-mxpic.components.pdks.AMF_pdk", false], [16, "module-mxpic.components.pdks.CUMEC_pdk", false], [17, "module-mxpic.components.pdks.IMECAS_pdk", false], [18, "module-mxpic.components.pdks.hgl_pdk_A", false], [20, "module-mxpic.components.pdks.qy_pdk_A", false], [21, "module-mxpic.components.pins", false], [22, "module-mxpic.components.primitives.EC_dual_layer_px3", false], [23, "module-mxpic.components.primitives.active.dev_ps", false], [25, "module-mxpic.components.primitives.active.pin_wg", false], [26, "module-mxpic.components.primitives.active.rings", false], [27, "module-mxpic.components.primitives.beam_splitters", false], [28, "module-mxpic.components.primitives.directional_couplers", false], [29, "module-mxpic.components.primitives.grating_couplers", false], [31, "module-mxpic.components.primitives.multimode_interferometers", false], [32, "module-mxpic.components.primitives.passive.crows", false], [34, "module-mxpic.components.primitives.passive.rings", false], [35, "module-mxpic.components.primitives.passive.unit", false], [36, "module-mxpic.components.primitives.pic.PBS", false], [37, "module-mxpic.components.primitives.pic.YBS", false], [38, "module-mxpic.components.primitives.pic.bragg", false], [39, "module-mxpic.components.primitives.pic.couplers", false], [40, "module-mxpic.components.primitives.pic.cross", false], [41, "module-mxpic.components.primitives.pic.gratings", false], [43, "module-mxpic.components.primitives.pic.mmi", false], [44, "module-mxpic.components.primitives.pic.racetrack", false], [45, "module-mxpic.components.primitives.pic.rings", false], [46, "module-mxpic.components.primitives.pic.spiral", false], [47, "module-mxpic.components.primitives.pic.taper", false], [48, "module-mxpic.components.primitives.spiral", false], [49, "module-mxpic.components.routing", false], [50, "module-mxpic.components.structures", false]], "monitorparas() (in module mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.MonitorParas", false]], "mrr_aed (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_AED", false]], "mrr_dw_adddrop (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_DW_Adddrop", false]], "mrr_dw_allpass (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_DW_Allpass", false]], "mrr_mm_adddrop (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_MM_Adddrop", false]], "mrr_mm_allpass (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_MM_Allpass", false]], "mrr_std_adddrop (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_STD_Adddrop", false]], "mrr_std_allpass (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_STD_Allpass", false]], "mrr_std_ring (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.MRR_STD_Ring", false]], "mx_bend (class in mxpic.components.structures)": [[50, "mxpic.components.structures.mx_bend", false]], "mxpic.components.basic": [[1, "module-mxpic.components.basic", false]], "mxpic.components.composites.advance": [[6, "module-mxpic.components.composites.advance", false]], "mxpic.components.composites.loopmirror": [[2, "module-mxpic.components.composites.LoopMirror", false]], "mxpic.components.composites.mzi": [[3, "module-mxpic.components.composites.MZI", false]], "mxpic.components.composites.mzi_mesh": [[4, "module-mxpic.components.composites.MZI_mesh", false]], "mxpic.components.composites.spttree": [[5, "module-mxpic.components.composites.SptTree", false]], "mxpic.components.electronics.eic_units": [[8, "module-mxpic.components.electronics.eic_units", false]], "mxpic.components.gds_devices": [[10, "module-mxpic.components.gds_devices", false]], "mxpic.components.others.simulation.dualportelements": [[13, "module-mxpic.components.others.simulation.DualPortElements", false]], "mxpic.components.pdks.amf_pdk": [[15, "module-mxpic.components.pdks.AMF_pdk", false]], "mxpic.components.pdks.cumec_pdk": [[16, "module-mxpic.components.pdks.CUMEC_pdk", false]], "mxpic.components.pdks.hgl_pdk_a": [[18, "module-mxpic.components.pdks.hgl_pdk_A", false]], "mxpic.components.pdks.imecas_pdk": [[17, "module-mxpic.components.pdks.IMECAS_pdk", false]], "mxpic.components.pdks.qy_pdk_a": [[20, "module-mxpic.components.pdks.qy_pdk_A", false]], "mxpic.components.pins": [[21, "module-mxpic.components.pins", false]], "mxpic.components.primitives.active.dev_ps": [[23, "module-mxpic.components.primitives.active.dev_ps", false]], "mxpic.components.primitives.active.pin_wg": [[25, "module-mxpic.components.primitives.active.pin_wg", false]], "mxpic.components.primitives.active.rings": [[26, "module-mxpic.components.primitives.active.rings", false]], "mxpic.components.primitives.beam_splitters": [[27, "module-mxpic.components.primitives.beam_splitters", false]], "mxpic.components.primitives.directional_couplers": [[28, "module-mxpic.components.primitives.directional_couplers", false]], "mxpic.components.primitives.ec_dual_layer_px3": [[22, "module-mxpic.components.primitives.EC_dual_layer_px3", false]], "mxpic.components.primitives.grating_couplers": [[29, "module-mxpic.components.primitives.grating_couplers", false]], "mxpic.components.primitives.multimode_interferometers": [[31, "module-mxpic.components.primitives.multimode_interferometers", false]], "mxpic.components.primitives.passive.crows": [[32, "module-mxpic.components.primitives.passive.crows", false]], "mxpic.components.primitives.passive.rings": [[34, "module-mxpic.components.primitives.passive.rings", false]], "mxpic.components.primitives.passive.unit": [[35, "module-mxpic.components.primitives.passive.unit", false]], "mxpic.components.primitives.pic.bragg": [[38, "module-mxpic.components.primitives.pic.bragg", false]], "mxpic.components.primitives.pic.couplers": [[39, "module-mxpic.components.primitives.pic.couplers", false]], "mxpic.components.primitives.pic.cross": [[40, "module-mxpic.components.primitives.pic.cross", false]], "mxpic.components.primitives.pic.gratings": [[41, "module-mxpic.components.primitives.pic.gratings", false]], "mxpic.components.primitives.pic.mmi": [[43, "module-mxpic.components.primitives.pic.mmi", false]], "mxpic.components.primitives.pic.pbs": [[36, "module-mxpic.components.primitives.pic.PBS", false]], "mxpic.components.primitives.pic.racetrack": [[44, "module-mxpic.components.primitives.pic.racetrack", false]], "mxpic.components.primitives.pic.rings": [[45, "module-mxpic.components.primitives.pic.rings", false]], "mxpic.components.primitives.pic.spiral": [[46, "module-mxpic.components.primitives.pic.spiral", false]], "mxpic.components.primitives.pic.taper": [[47, "module-mxpic.components.primitives.pic.taper", false]], "mxpic.components.primitives.pic.ybs": [[37, "module-mxpic.components.primitives.pic.YBS", false]], "mxpic.components.primitives.spiral": [[48, "module-mxpic.components.primitives.spiral", false]], "mxpic.components.routing": [[49, "module-mxpic.components.routing", false]], "mxpic.components.structures": [[50, "module-mxpic.components.structures", false]], "mzi (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI", false]], "mzi_2st_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_2st_ubend", false]], "mzi_butterfly (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly", false]], "mzi_eubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Eubend", false]], "mzi_mesh_parl (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_Parl", false]], "mzi_mesh_tri (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_Tri", false]], "mzi_mesh_u (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_U", false]], "mzi_ns (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_NS", false]], "mzi_ns_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_NS_ubend", false]], "mzi_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Ubend", false]], "nano_ant (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.Nano_ant", false]], "nano_ant (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.Nano_ant", false]], "opt_euler() (mxpic.components.primitives.pic.spiral.spiral_circle method)": [[46, "mxpic.components.primitives.pic.spiral.spiral_circle.opt_euler", false]], "opt_euler() (mxpic.components.primitives.spiral.spiral_circle method)": [[48, "mxpic.components.primitives.spiral.spiral_circle.opt_euler", false]], "pad (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.PAD", false]], "pad_60_80 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.PAD_60_80", false]], "pads (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.PADs", false]], "pbs_1550 (class in mxpic.components.pdks.cumec_pdk)": [[16, "mxpic.components.pdks.CUMEC_pdk.PBS_1550", false]], "pbs_3wg (class in mxpic.components.primitives.pic.pbs)": [[36, "mxpic.components.primitives.pic.PBS.PBS_3wg", false]], "pd_cband_cell (class in mxpic.components.pdks.amf_pdk)": [[15, "mxpic.components.pdks.AMF_pdk.PD_Cband_Cell", false]], "pin_mrr_mm_adddrop (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.PIN_MRR_MM_Adddrop", false]], "pin_mrr_mm_allpass (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.PIN_MRR_MM_Allpass", false]], "pin_mrr_std_allpass (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.PIN_MRR_STD_Allpass", false]], "portparas() (in module mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.PortParas", false]], "ps_2st (class in mxpic.components.primitives.passive.unit)": [[35, "mxpic.components.primitives.passive.unit.PS_2st", false]], "ps_2st_straight (class in mxpic.components.primitives.passive.unit)": [[35, "mxpic.components.primitives.passive.unit.PS_2st_Straight", false]], "ps_pin (class in mxpic.components.primitives.active.dev_ps)": [[23, "mxpic.components.primitives.active.dev_ps.PS_PIN", false]], "psr (class in mxpic.components.primitives.pic.taper)": [[47, "mxpic.components.primitives.pic.taper.PSR", false]], "psr_1x2 (class in mxpic.components.primitives.passive.unit)": [[35, "mxpic.components.primitives.passive.unit.PSR_1x2", false]], "racetrack (class in mxpic.components.structures)": [[50, "mxpic.components.structures.Racetrack", false]], "racetrack_mm_adddrop (class in mxpic.components.primitives.pic.racetrack)": [[44, "mxpic.components.primitives.pic.racetrack.Racetrack_MM_Adddrop", false]], "racetrack_mm_allpass (class in mxpic.components.primitives.pic.racetrack)": [[44, "mxpic.components.primitives.pic.racetrack.Racetrack_MM_Allpass", false]], "racetrack_std_allpass (class in mxpic.components.primitives.pic.racetrack)": [[44, "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass", false]], "racetrackresonator (class in mxpic.components.primitives.pic.racetrack)": [[44, "mxpic.components.primitives.pic.racetrack.RacetrackResonator", false]], "resonator (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.RESONATOR", false]], "ring_bus_wg (class in mxpic.components.primitives.directional_couplers)": [[28, "mxpic.components.primitives.directional_couplers.ring_bus_wg", false]], "ring_bus_wg (class in mxpic.components.primitives.pic.couplers)": [[39, "mxpic.components.primitives.pic.couplers.ring_bus_wg", false]], "ring_phase (class in mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.RING_PHASE", false]], "route (class in mxpic.components.primitives.active.dev_ps)": [[23, "mxpic.components.primitives.active.dev_ps.Route", false]], "route (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.Route", false]], "route (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.Route", false]], "route (class in mxpic.components.primitives.pic.racetrack)": [[44, "mxpic.components.primitives.pic.racetrack.Route", false]], "route (class in mxpic.components.routing)": [[49, "mxpic.components.routing.Route", false]], "rt_bend() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.rt_bend", false]], "rt_bend() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.rt_bend", false]], "sbend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.sbend_p2p", false]], "sbend_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.sbend_p2p", false]], "sbend_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.sbend_p2p_mine", false]], "sbend_p2p_mine() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.sbend_p2p_mine", false]], "sbend_route() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.sbend_route", false]], "sbend_route() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.sbend_route", false]], "simudatafigureplot() (in module mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.SimuDataFigurePlot", false]], "socr (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.SOCR", false]], "socr_adiabatic (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic", false]], "socr_adiabatic_cband (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband", false]], "socr_cband (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.SOCR_Cband", false]], "spiral (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.spiral", false]], "spiral (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.spiral", false]], "spiral_cicle_mm (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.Spiral_Cicle_MM", false]], "spiral_cicle_mm (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.Spiral_Cicle_MM", false]], "spiral_cicle_std (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.Spiral_Cicle_STD", false]], "spiral_cicle_std (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.Spiral_Cicle_STD", false]], "spiral_circle (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.spiral_circle", false]], "spiral_circle (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.spiral_circle", false]], "spiral_rect_std (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.Spiral_Rect_STD", false]], "spiral_rect_std (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.Spiral_Rect_STD", false]], "spiral_rectangle (class in mxpic.components.primitives.pic.spiral)": [[46, "mxpic.components.primitives.pic.spiral.spiral_rectangle", false]], "spiral_rectangle (class in mxpic.components.primitives.spiral)": [[48, "mxpic.components.primitives.spiral.spiral_rectangle", false]], "splittingtree (class in mxpic.components.composites.spttree)": [[5, "mxpic.components.composites.SptTree.SplittingTree", false]], "std_crow_v (class in mxpic.components.primitives.passive.crows)": [[32, "mxpic.components.primitives.passive.crows.STD_CROW_V", false]], "std_pic_rings (class in mxpic.components.primitives.pic.rings)": [[45, "mxpic.components.primitives.pic.rings.STD_PIC_Rings", false]], "std_ring_amzi_adddrop (class in mxpic.components.primitives.passive.rings)": [[34, "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop", false]], "std_ring_pin (class in mxpic.components.primitives.active.rings)": [[26, "mxpic.components.primitives.active.rings.STD_Ring_PIN", false]], "strt() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.strt", false]], "strt() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.strt", false]], "strt_bend_strt_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.strt_bend_strt_p2p_mine", false]], "strt_bend_strt_p2p_mine() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.strt_bend_strt_p2p_mine", false]], "strt_mm() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.strt_mm", false]], "strt_mm() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.strt_mm", false]], "strt_mm_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.strt_mm_p2p", false]], "strt_mm_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.strt_mm_p2p", false]], "strt_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.strt_p2p", false]], "strt_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.strt_p2p", false]], "strt_round_courner (class in mxpic.components.structures)": [[50, "mxpic.components.structures.strt_round_courner", false]], "szvia (mxpic.components.electronics.eic_units.vias attribute)": [[8, "mxpic.components.electronics.eic_units.Vias.szVia", false]], "taper (class in mxpic.components.primitives.grating_couplers)": [[29, "mxpic.components.primitives.grating_couplers.Taper", false]], "taper (class in mxpic.components.primitives.pic.gratings)": [[41, "mxpic.components.primitives.pic.gratings.Taper", false]], "taper() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.taper", false]], "taper() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.taper", false]], "taper_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.taper_p2p", false]], "taper_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.taper_p2p", false]], "taper_xs2xs (class in mxpic.components.primitives.pic.taper)": [[47, "mxpic.components.primitives.pic.taper.taper_xs2xs", false]], "template (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.Template", false]], "transition (class in mxpic.components.primitives.pic.taper)": [[47, "mxpic.components.primitives.pic.taper.transition", false]], "tube_mine() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.tube_mine", false]], "tube_mine() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.tube_mine", false]], "tuple_to_complex() (in module mxpic.components.others.simulation.dualportelements)": [[13, "mxpic.components.others.simulation.DualPortElements.tuple_to_complex", false]], "ubend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.ubend_p2p", false]], "ubend_p2p() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.ubend_p2p", false]], "ubend_route() (mxpic.components.primitives.passive.rings.route method)": [[34, "mxpic.components.primitives.passive.rings.Route.ubend_route", false]], "ubend_route() (mxpic.components.routing.route method)": [[49, "mxpic.components.routing.Route.ubend_route", false]], "umat_2x2_s (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.UMat_2x2_S", false]], "vias (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.Vias", false]], "vias_arc (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.Vias_arc", false]], "w_waveguide (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.W_waveguide", false]], "waveguide (class in mxpic.components.primitives.passive.unit)": [[35, "mxpic.components.primitives.passive.unit.waveguide", false]], "waveguide_pin (class in mxpic.components.primitives.active.pin_wg)": [[25, "mxpic.components.primitives.active.pin_wg.waveguide_PIN", false]], "wgdoped (class in mxpic.components.primitives.active.pin_wg)": [[25, "mxpic.components.primitives.active.pin_wg.WGDoped", false]], "ybranch (class in mxpic.components.primitives.beam_splitters)": [[27, "mxpic.components.primitives.beam_splitters.YBranch", false]], "ybranch (class in mxpic.components.primitives.pic.ybs)": [[37, "mxpic.components.primitives.pic.YBS.YBranch", false]], "ybranch_3wg (class in mxpic.components.primitives.beam_splitters)": [[27, "mxpic.components.primitives.beam_splitters.Ybranch_3wg", false]], "ybranch_3wg (class in mxpic.components.primitives.pic.ybs)": [[37, "mxpic.components.primitives.pic.YBS.Ybranch_3wg", false]], "ybranch_te (class in mxpic.components.pdks.imecas_pdk)": [[17, "mxpic.components.pdks.IMECAS_pdk.Ybranch_TE", false]]}, "objects": {"mxpic.components": [[1, 0, 0, "-", "basic"], [10, 0, 0, "-", "gds_devices"], [21, 0, 0, "-", "pins"], [49, 0, 0, "-", "routing"], [50, 0, 0, "-", "structures"]], "mxpic.components.composites": [[2, 0, 0, "-", "LoopMirror"], [3, 0, 0, "-", "MZI"], [4, 0, 0, "-", "MZI_mesh"], [5, 0, 0, "-", "SptTree"], [6, 0, 0, "-", "advance"]], "mxpic.components.composites.LoopMirror": [[2, 1, 1, "", "LoopMirror"]], "mxpic.components.composites.MZI": [[3, 1, 1, "", "MZI"], [3, 1, 1, "", "MZI_2st_ubend"], [3, 1, 1, "", "MZI_Butterfly"], [3, 1, 1, "", "MZI_Eubend"], [3, 1, 1, "", "MZI_NS"], [3, 1, 1, "", "MZI_NS_ubend"], [3, 1, 1, "", "MZI_Ubend"]], "mxpic.components.composites.MZI.MZI_Butterfly": [[3, 2, 1, "", "generate_gds"], [3, 2, 1, "", "generate_test_gds"]], "mxpic.components.composites.MZI_mesh": [[4, 1, 1, "", "AMZI_W"], [4, 1, 1, "", "MZI_mesh_Parl"], [4, 1, 1, "", "MZI_mesh_Tri"], [4, 1, 1, "", "MZI_mesh_U"], [4, 1, 1, "", "UMat_2x2_S"], [4, 1, 1, "", "W_waveguide"]], "mxpic.components.composites.MZI_mesh.AMZI_W": [[4, 2, 1, "", "generate_gds"], [4, 2, 1, "", "generate_test_gds"]], "mxpic.components.composites.MZI_mesh.MZI_mesh_U": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.MZI_mesh.UMat_2x2_S": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.MZI_mesh.W_waveguide": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.SptTree": [[5, 1, 1, "", "SplittingTree"]], "mxpic.components.composites.SptTree.SplittingTree": [[5, 2, 1, "", "generate_gds"]], "mxpic.components.electronics": [[8, 0, 0, "-", "eic_units"]], "mxpic.components.electronics.eic_units": [[8, 1, 1, "", "ISL"], [8, 1, 1, "", "PAD"], [8, 1, 1, "", "PADs"], [8, 1, 1, "", "Vias"], [8, 1, 1, "", "Vias_arc"]], "mxpic.components.electronics.eic_units.PAD": [[8, 2, 1, "", "generate_gds"]], "mxpic.components.electronics.eic_units.PADs": [[8, 2, 1, "", "generate_gds"]], "mxpic.components.electronics.eic_units.Vias": [[8, 2, 1, "", "generate_gds"], [8, 3, 1, "", "szVia"]], "mxpic.components.gds_devices": [[10, 1, 1, "", "gds_lib_load"], [10, 4, 1, "", "generate_gds_lib"]], "mxpic.components.gds_devices.gds_lib_load": [[10, 2, 1, "", "add_pin"]], "mxpic.components.others.simulation": [[13, 0, 0, "-", "DualPortElements"]], "mxpic.components.others.simulation.DualPortElements": [[13, 4, 1, "", "DEVICE_2X2_FDTD_INIT"], [13, 1, 1, "", "DEVICE_COUPLER"], [13, 1, 1, "", "DEVICE_PORTS"], [13, 1, 1, "", "DEVICE_RING_BUS"], [13, 1, 1, "", "EULER_CROW_BUS"], [13, 1, 1, "", "EULER_CROW_INTER_CP"], [13, 4, 1, "", "MonitorParas"], [13, 4, 1, "", "PortParas"], [13, 1, 1, "", "RESONATOR"], [13, 1, 1, "", "RING_PHASE"], [13, 4, 1, "", "SimuDataFigurePlot"], [13, 4, 1, "", "tuple_to_complex"]], "mxpic.components.others.simulation.DualPortElements.DEVICE_PORTS": [[13, 3, 1, "", "FolderPath"]], "mxpic.components.pdks": [[15, 0, 0, "-", "AMF_pdk"], [16, 0, 0, "-", "CUMEC_pdk"], [17, 0, 0, "-", "IMECAS_pdk"], [18, 0, 0, "-", "hgl_pdk_A"], [20, 0, 0, "-", "qy_pdk_A"]], "mxpic.components.pdks.AMF_pdk": [[15, 1, 1, "", "GC_TE_1310"], [15, 1, 1, "", "GC_TE_1550"], [15, 1, 1, "", "PD_Cband_Cell"]], "mxpic.components.pdks.CUMEC_pdk": [[16, 1, 1, "", "CRX_TE_1550"], [16, 1, 1, "", "EC_1550"], [16, 1, 1, "", "GC_TE_1310"], [16, 1, 1, "", "GC_TE_1550"], [16, 1, 1, "", "GC_TM_1550"], [16, 1, 1, "", "GPD_1550"], [16, 1, 1, "", "MMI_1x2_TE_1310"], [16, 1, 1, "", "MMI_1x2_TE_1550"], [16, 1, 1, "", "MMI_2x2_TE_1550"], [16, 1, 1, "", "PAD_60_80"], [16, 1, 1, "", "PBS_1550"]], "mxpic.components.pdks.CUMEC_pdk.CRX_TE_1550": [[16, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.GC_TE_1550": [[16, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.GC_TM_1550": [[16, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1550": [[16, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.IMECAS_pdk": [[17, 1, 1, "", "CRX_TE_1310"], [17, 1, 1, "", "CRX_TE_1550"], [17, 1, 1, "", "DC_TE_1550"], [17, 1, 1, "", "EC_TE_1550"], [17, 1, 1, "", "GC_TE_1310"], [17, 1, 1, "", "GC_TE_1550"], [17, 1, 1, "", "GC_TM_1310"], [17, 1, 1, "", "GC_TM_1550"], [17, 1, 1, "", "MMI_1x2_TE_1310"], [17, 1, 1, "", "MMI_1x2_TE_1550"], [17, 1, 1, "", "MMI_2x2_TE_1310"], [17, 1, 1, "", "MMI_2x2_TE_1550"], [17, 1, 1, "", "Template"], [17, 1, 1, "", "Ybranch_TE"]], "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1310": [[17, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1550": [[17, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.hgl_pdk_A": [[18, 1, 1, "", "DC_bend_20_80_Cband"], [18, 1, 1, "", "DC_bend_4_96_Cband"], [18, 1, 1, "", "DC_bend_50_50_Cband"]], "mxpic.components.pdks.qy_pdk_A": [[20, 1, 1, "", "DC_pX3_50_50_Cband"], [20, 1, 1, "", "MDM_ADC_TE1_1550"], [20, 1, 1, "", "MDM_ADC_TE2_1550"], [20, 1, 1, "", "MDM_ADC_TE3_1550"], [20, 1, 1, "", "MMG_1D_D14um_1550_2modes"]], "mxpic.components.pdks.qy_pdk_A.DC_pX3_50_50_Cband": [[20, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE1_1550": [[20, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE2_1550": [[20, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE3_1550": [[20, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MMG_1D_D14um_1550_2modes": [[20, 2, 1, "", "generate_gds_lib"]], "mxpic.components.primitives": [[22, 0, 0, "-", "EC_dual_layer_px3"], [27, 0, 0, "-", "beam_splitters"], [28, 0, 0, "-", "directional_couplers"], [29, 0, 0, "-", "grating_couplers"], [31, 0, 0, "-", "multimode_interferometers"], [48, 0, 0, "-", "spiral"]], "mxpic.components.primitives.EC_dual_layer_px3": [[22, 1, 1, "", "EC_dual_layer_px3"]], "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3": [[22, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active": [[23, 0, 0, "-", "dev_ps"], [25, 0, 0, "-", "pin_wg"], [26, 0, 0, "-", "rings"]], "mxpic.components.primitives.active.dev_ps": [[23, 1, 1, "", "Heater_NDoped"], [23, 1, 1, "", "PS_PIN"], [23, 1, 1, "", "Route"]], "mxpic.components.primitives.active.dev_ps.Heater_NDoped": [[23, 2, 1, "", "generate_gds"], [23, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.active.dev_ps.PS_PIN": [[23, 3, 1, "", "cell"], [23, 2, 1, "", "generate_gds"], [23, 2, 1, "", "generate_mzi_gds"]], "mxpic.components.primitives.active.pin_wg": [[25, 1, 1, "", "WGDoped"], [25, 1, 1, "", "waveguide_PIN"]], "mxpic.components.primitives.active.pin_wg.WGDoped": [[25, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active.pin_wg.waveguide_PIN": [[25, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active.rings": [[26, 1, 1, "", "AED_Ring_PIN"], [26, 1, 1, "", "PIN_MRR_MM_Adddrop"], [26, 1, 1, "", "PIN_MRR_MM_Allpass"], [26, 1, 1, "", "PIN_MRR_STD_Allpass"], [26, 1, 1, "", "Route"], [26, 1, 1, "", "STD_Ring_PIN"]], "mxpic.components.primitives.active.rings.AED_Ring_PIN": [[26, 2, 1, "", "generate_imp_gds"]], "mxpic.components.primitives.beam_splitters": [[27, 1, 1, "", "YBranch"], [27, 1, 1, "", "Ybranch_3wg"]], "mxpic.components.primitives.beam_splitters.YBranch": [[27, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.beam_splitters.Ybranch_3wg": [[27, 2, 1, "", "generate_gds"], [27, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers": [[28, 1, 1, "", "ADC_STD_2x2"], [28, 1, 1, "", "BS_tdc"], [28, 1, 1, "", "DC"], [28, 1, 1, "", "DC_bend"], [28, 1, 1, "", "DC_pX_3sg"], [28, 1, 1, "", "MDM"], [28, 1, 1, "", "ring_bus_wg"]], "mxpic.components.primitives.directional_couplers.ADC_STD_2x2": [[28, 2, 1, "", "generate_err"], [28, 2, 1, "", "generate_gds"], [28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC": [[28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC_bend": [[28, 2, 1, "", "generate_gds"], [28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC_pX_3sg": [[28, 2, 1, "", "generate_gds"], [28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.MDM": [[28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.ring_bus_wg": [[28, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers": [[29, 1, 1, "", "FA"], [29, 1, 1, "", "GC_STD_1D"], [29, 1, 1, "", "GC_STD_2D"], [29, 1, 1, "", "GC_SiN_Si_Dual_Layer"], [29, 1, 1, "", "Grating_2D_Hole"], [29, 1, 1, "", "Nano_ant"], [29, 1, 1, "", "Taper"]], "mxpic.components.primitives.grating_couplers.GC_STD_1D": [[29, 2, 1, "", "generate_negative"], [29, 2, 1, "", "generate_positive"], [29, 2, 1, "", "generate_test_dev"]], "mxpic.components.primitives.grating_couplers.GC_STD_2D": [[29, 2, 1, "", "generate_negative"], [29, 2, 1, "", "generate_positive"], [29, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer": [[29, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers.Grating_2D_Hole": [[29, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers.Nano_ant": [[29, 2, 1, "", "generate_gds"], [29, 2, 1, "", "generate_gds_error"], [29, 2, 1, "", "generate_gds_positive"]], "mxpic.components.primitives.grating_couplers.Taper": [[29, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.multimode_interferometers": [[31, 1, 1, "", "MMI_ML"], [31, 1, 1, "", "MMI_STD"]], "mxpic.components.primitives.multimode_interferometers.MMI_ML": [[31, 2, 1, "", "generate_gds"], [31, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive": [[32, 0, 0, "-", "crows"], [34, 0, 0, "-", "rings"], [35, 0, 0, "-", "unit"]], "mxpic.components.primitives.passive.crows": [[32, 1, 1, "", "CROW_AED"], [32, 1, 1, "", "CROW_Circular_ring"], [32, 1, 1, "", "CROW_Eul_RCK"], [32, 1, 1, "", "CROW_Eul_Ring"], [32, 1, 1, "", "CROW_STD_Adddrop"], [32, 1, 1, "", "CROW_STD_Allpass"], [32, 1, 1, "", "STD_CROW_V"]], "mxpic.components.primitives.passive.crows.STD_CROW_V": [[32, 3, 1, "", "A_ht"], [32, 2, 1, "", "generate_eic_gds"], [32, 2, 1, "", "generate_pic_gds"]], "mxpic.components.primitives.passive.rings": [[34, 1, 1, "", "MRR_AED"], [34, 1, 1, "", "MRR_DW_Adddrop"], [34, 1, 1, "", "MRR_DW_Allpass"], [34, 1, 1, "", "MRR_MM_Adddrop"], [34, 1, 1, "", "MRR_MM_Allpass"], [34, 1, 1, "", "MRR_STD_Adddrop"], [34, 1, 1, "", "MRR_STD_Allpass"], [34, 1, 1, "", "MRR_STD_Ring"], [34, 1, 1, "", "Route"], [34, 1, 1, "", "SOCR"], [34, 1, 1, "", "SOCR_Adiabatic"], [34, 1, 1, "", "SOCR_Adiabatic_Cband"], [34, 1, 1, "", "SOCR_Cband"], [34, 1, 1, "", "STD_ring_AMZI_adddrop"]], "mxpic.components.primitives.passive.rings.MRR_AED": [[34, 2, 1, "", "generate_eic_gds"]], "mxpic.components.primitives.passive.rings.Route": [[34, 2, 1, "", "bend_mine"], [34, 2, 1, "", "bend_p2p"], [34, 2, 1, "", "bend_route"], [34, 2, 1, "", "bend_route_p2p"], [34, 2, 1, "", "bend_strt_bend_p2p"], [34, 2, 1, "", "bend_strt_bend_p2p_mine"], [34, 2, 1, "", "connPatch"], [34, 2, 1, "", "line_mm"], [34, 2, 1, "", "rt_bend"], [34, 2, 1, "", "sbend_p2p"], [34, 2, 1, "", "sbend_p2p_mine"], [34, 2, 1, "", "sbend_route"], [34, 2, 1, "", "strt"], [34, 2, 1, "", "strt_bend_strt_p2p_mine"], [34, 2, 1, "", "strt_mm"], [34, 2, 1, "", "strt_mm_p2p"], [34, 2, 1, "", "strt_p2p"], [34, 2, 1, "", "taper"], [34, 2, 1, "", "taper_p2p"], [34, 2, 1, "", "tube_mine"], [34, 2, 1, "", "ubend_p2p"], [34, 2, 1, "", "ubend_route"]], "mxpic.components.primitives.passive.rings.SOCR": [[34, 2, 1, "", "generate_2pi_gds"], [34, 2, 1, "", "generate_eic_part"], [34, 2, 1, "", "generate_gds"], [34, 2, 1, "", "generate_pic_part"], [34, 2, 1, "", "generate_test_gds"], [34, 2, 1, "", "generate_test_mzi_gds"]], "mxpic.components.primitives.passive.rings.SOCR_Adiabatic": [[34, 2, 1, "", "generate_eic_part"], [34, 2, 1, "", "generate_gds"], [34, 2, 1, "", "generate_pic_part"]], "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop": [[34, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.passive.unit": [[35, 1, 1, "", "Brag_WDM"], [35, 1, 1, "", "PSR_1x2"], [35, 1, 1, "", "PS_2st"], [35, 1, 1, "", "PS_2st_Straight"], [35, 1, 1, "", "waveguide"]], "mxpic.components.primitives.passive.unit.Brag_WDM": [[35, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive.unit.PSR_1x2": [[35, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive.unit.PS_2st": [[35, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.passive.unit.PS_2st_Straight": [[35, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic": [[36, 0, 0, "-", "PBS"], [37, 0, 0, "-", "YBS"], [38, 0, 0, "-", "bragg"], [39, 0, 0, "-", "couplers"], [40, 0, 0, "-", "cross"], [41, 0, 0, "-", "gratings"], [43, 0, 0, "-", "mmi"], [44, 0, 0, "-", "racetrack"], [45, 0, 0, "-", "rings"], [46, 0, 0, "-", "spiral"], [47, 0, 0, "-", "taper"]], "mxpic.components.primitives.pic.PBS": [[36, 1, 1, "", "PBS_3wg"]], "mxpic.components.primitives.pic.PBS.PBS_3wg": [[36, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.YBS": [[37, 1, 1, "", "YBranch"], [37, 1, 1, "", "Ybranch_3wg"]], "mxpic.components.primitives.pic.YBS.YBranch": [[37, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.YBS.Ybranch_3wg": [[37, 2, 1, "", "generate_gds"], [37, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.bragg": [[38, 1, 1, "", "Bragg"], [38, 1, 1, "", "Bragg_apodized"]], "mxpic.components.primitives.pic.bragg.Bragg_apodized": [[38, 2, 1, "", "generate_negative"], [38, 2, 1, "", "generate_positive"]], "mxpic.components.primitives.pic.couplers": [[39, 1, 1, "", "ADC_STD_2x2"], [39, 1, 1, "", "BS_tdc"], [39, 1, 1, "", "DC"], [39, 1, 1, "", "DC_bend"], [39, 1, 1, "", "DC_pX_3sg"], [39, 1, 1, "", "MDM"], [39, 1, 1, "", "ring_bus_wg"]], "mxpic.components.primitives.pic.couplers.ADC_STD_2x2": [[39, 2, 1, "", "generate_err"], [39, 2, 1, "", "generate_gds"], [39, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC": [[39, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC_bend": [[39, 2, 1, "", "generate_gds"], [39, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC_pX_3sg": [[39, 2, 1, "", "generate_gds"], [39, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.MDM": [[39, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.ring_bus_wg": [[39, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.cross": [[40, 1, 1, "", "Cross"], [40, 1, 1, "", "Cross_Sine"]], "mxpic.components.primitives.pic.cross.Cross": [[40, 2, 1, "", "generate_gds"], [40, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.gratings": [[41, 1, 1, "", "FA"], [41, 1, 1, "", "GC_STD_1D"], [41, 1, 1, "", "GC_STD_2D"], [41, 1, 1, "", "Grating_2D_Hole"], [41, 1, 1, "", "Grating_2D_Hole_3Rec"], [41, 1, 1, "", "Grating_2D_Hole_4Rec"], [41, 1, 1, "", "Nano_ant"], [41, 1, 1, "", "Taper"]], "mxpic.components.primitives.pic.gratings.GC_STD_1D": [[41, 2, 1, "", "generate_negative"], [41, 2, 1, "", "generate_positive"], [41, 2, 1, "", "generate_test_dev"]], "mxpic.components.primitives.pic.gratings.GC_STD_2D": [[41, 2, 1, "", "generate_negative"], [41, 2, 1, "", "generate_positive"], [41, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole": [[41, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec": [[41, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec": [[41, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Nano_ant": [[41, 2, 1, "", "generate_gds"], [41, 2, 1, "", "generate_gds_error"], [41, 2, 1, "", "generate_gds_positive"]], "mxpic.components.primitives.pic.gratings.Taper": [[41, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.mmi": [[43, 1, 1, "", "MMI_ML"], [43, 1, 1, "", "MMI_STD"]], "mxpic.components.primitives.pic.mmi.MMI_ML": [[43, 2, 1, "", "generate_gds"], [43, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.racetrack": [[44, 1, 1, "", "RacetrackResonator"], [44, 1, 1, "", "Racetrack_MM_Adddrop"], [44, 1, 1, "", "Racetrack_MM_Allpass"], [44, 1, 1, "", "Racetrack_STD_Allpass"], [44, 1, 1, "", "Route"]], "mxpic.components.primitives.pic.racetrack.RacetrackResonator": [[44, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass": [[44, 2, 1, "", "generate_eic_gds"]], "mxpic.components.primitives.pic.rings": [[45, 1, 1, "", "AED_ring"], [45, 1, 1, "", "STD_PIC_Rings"]], "mxpic.components.primitives.pic.rings.AED_ring": [[45, 2, 1, "", "generate_pic_gds"], [45, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.spiral": [[46, 1, 1, "", "Spiral_Cicle_MM"], [46, 1, 1, "", "Spiral_Cicle_STD"], [46, 1, 1, "", "Spiral_Rect_STD"], [46, 1, 1, "", "spiral"], [46, 1, 1, "", "spiral_circle"], [46, 1, 1, "", "spiral_rectangle"]], "mxpic.components.primitives.pic.spiral.spiral": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.spiral.spiral_circle": [[46, 3, 1, "", "cell"], [46, 2, 1, "", "generate_gds"], [46, 2, 1, "", "opt_euler"]], "mxpic.components.primitives.pic.spiral.spiral_rectangle": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.taper": [[47, 1, 1, "", "PSR"], [47, 1, 1, "", "taper_xs2xs"], [47, 1, 1, "", "transition"]], "mxpic.components.primitives.spiral": [[48, 1, 1, "", "Spiral_Cicle_MM"], [48, 1, 1, "", "Spiral_Cicle_STD"], [48, 1, 1, "", "Spiral_Rect_STD"], [48, 1, 1, "", "spiral"], [48, 1, 1, "", "spiral_circle"], [48, 1, 1, "", "spiral_rectangle"]], "mxpic.components.primitives.spiral.spiral": [[48, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.spiral.spiral_circle": [[48, 3, 1, "", "cell"], [48, 2, 1, "", "generate_gds"], [48, 2, 1, "", "opt_euler"]], "mxpic.components.primitives.spiral.spiral_rectangle": [[48, 2, 1, "", "generate_gds"]], "mxpic.components.routing": [[49, 1, 1, "", "Route"], [49, 4, 1, "", "ic_exception"]], "mxpic.components.routing.Route": [[49, 2, 1, "", "bend_mine"], [49, 2, 1, "", "bend_p2p"], [49, 2, 1, "", "bend_route"], [49, 2, 1, "", "bend_route_p2p"], [49, 2, 1, "", "bend_strt_bend_p2p"], [49, 2, 1, "", "bend_strt_bend_p2p_mine"], [49, 2, 1, "", "connPatch"], [49, 2, 1, "", "line_mm"], [49, 2, 1, "", "rt_bend"], [49, 2, 1, "", "sbend_p2p"], [49, 2, 1, "", "sbend_p2p_mine"], [49, 2, 1, "", "sbend_route"], [49, 2, 1, "", "strt"], [49, 2, 1, "", "strt_bend_strt_p2p_mine"], [49, 2, 1, "", "strt_mm"], [49, 2, 1, "", "strt_mm_p2p"], [49, 2, 1, "", "strt_p2p"], [49, 2, 1, "", "taper"], [49, 2, 1, "", "taper_p2p"], [49, 2, 1, "", "tube_mine"], [49, 2, 1, "", "ubend_p2p"], [49, 2, 1, "", "ubend_route"]], "mxpic.components.structures": [[50, 1, 1, "", "Clothoid"], [50, 1, 1, "", "Conchoid"], [50, 1, 1, "", "Elipse"], [50, 1, 1, "", "Elipse_dual"], [50, 1, 1, "", "Racetrack"], [50, 1, 1, "", "circle"], [50, 1, 1, "", "hole"], [50, 1, 1, "", "mx_bend"], [50, 1, 1, "", "strt_round_courner"]], "mxpic.components.structures.Clothoid": [[50, 2, 1, "", "generate_gds"]], "mxpic.components.structures.Elipse": [[50, 2, 1, "", "generate_gds"]], "mxpic.components.structures.Elipse_dual": [[50, 2, 1, "", "generate_gds"]], "mxpic.components.structures.Racetrack": [[50, 2, 1, "", "generate_gds"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [34, 48, 49], "0": [2, 3, 4, 5, 8, 10, 13, 16, 17, 20, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "001": [45, 50], "01": [31, 43, 44, 45, 47], "02": [28, 39], "05": [34, 46, 48, 50], "1": [3, 8, 13, 17, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 40, 41, 43, 46, 47, 48, 49, 50], "10": [3, 4, 5, 8, 16, 17, 25, 26, 27, 28, 29, 31, 32, 34, 35, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "100": [8, 22, 23, 25, 28, 34, 39, 50], "10000": 50, "10001": 13, "101": 13, "11": [8, 36], "110": [29, 41], "12": 22, "120": 8, "120degre": 34, "1310nm": [15, 16], "140": 35, "15": [3, 4, 22, 27, 28, 32, 34, 35, 37, 38, 39, 44, 47], "150": [3, 35], "1500nm": 18, "1550nm": [15, 16], "16": 5, "1600nm": 18, "18": [27, 37, 45], "180": [26, 46, 48], "1by": 16, "1d": 29, "1um": [34, 41], "2": [4, 5, 8, 13, 16, 17, 22, 23, 25, 26, 27, 28, 29, 31, 34, 35, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49], "20": [2, 4, 18, 23, 26, 27, 28, 29, 32, 34, 35, 36, 37, 39, 41, 44, 45, 46, 48, 49, 50], "200": [22, 25, 38], "200nm": 34, "2021": 34, "2022": [28, 39], "2026": [], "22": [13, 28, 39], "25": [4, 25, 29, 36, 41], "250": 34, "270": [26, 34], "28": 5, "2d": [29, 41], "2um": 34, "3": [4, 8, 13, 26, 27, 29, 31, 32, 34, 36, 37, 38, 40, 41, 43, 49, 50], "30": [3, 4, 25, 26, 28, 29, 32, 34, 35, 39, 41, 44, 45, 47], "300": [16, 28, 29, 39, 41], "33": [28, 39], "35": [25, 26, 28, 31, 32, 39, 43, 45], "360": 50, "38": 32, "3db": 27, "3um": 41, "4": [13, 18, 25, 27, 29, 32, 34, 37, 40, 41, 49, 50], "40": [3, 28, 29, 34, 35, 39, 47, 49], "400": [16, 17, 22, 27, 28, 37, 39, 40], "41": [29, 41], "45": [2, 3, 4, 5, 10, 20, 22, 23, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 50], "450nm": 34, "5": [3, 4, 8, 13, 16, 17, 20, 23, 25, 28, 29, 31, 32, 34, 35, 36, 38, 39, 40, 41, 43, 46, 47, 48, 49, 50], "50": [4, 8, 22, 29, 31, 34, 35, 41, 43, 44, 46, 48, 49], "500": 23, "510nm": 34, "55": [26, 28, 34, 35, 36, 39, 45, 47], "57": [29, 41], "5um": 41, "6": [4, 13, 22, 26, 27, 29, 34, 37, 40, 41, 50], "60": [8, 23], "61": [28, 39], "64": [8, 28, 39, 50], "65": 32, "7": [35, 36], "75": 3, "8": [4, 8, 22, 25, 26, 27, 28, 32, 35, 37, 39, 41], "80": [4, 8, 18, 27, 28, 37, 39], "800": 23, "88": [28, 39], "9": [26, 29, 34, 35, 45], "90": [8, 23, 26, 34, 44, 49], "908": 34, "913": 34, "96": 18, "A": [28, 34, 39, 50], "If": [5, 31, 34, 48, 49], "The": [34, 49], "_description_": 25, "_type_": 25, "a0": 29, "a1": [5, 13], "a1_att": [32, 34, 44, 45], "a1_cp": [32, 34, 44, 45], "a2": 13, "a2_att": [32, 34, 44, 45], "a2_cp": [32, 34, 44, 45], "a_anti": [28, 39], "a_anti_rfl": 29, "a_att": [26, 27, 32, 34, 37, 44], "a_bend": 36, "a_cp": [26, 32, 34, 44], "a_gc_tap": 29, "a_ht": [26, 32, 34], "a_imp_in": 26, "a_imp_out": 26, "a_tap": [29, 41], "abandon": 23, "absent": 8, "account": [34, 49], "activ": [11, 30], "acut": [28, 31], "ad": [29, 34, 41, 49], "adapt": 48, "adapt_width": [23, 26, 34, 44, 49], "adapt_x": [23, 26, 34, 44, 49], "adc_std_2x2": [30, 42], "add": [27, 31, 48], "add_pin": 10, "adiabat": [22, 28, 34], "adjac": [27, 29, 31, 48], "advanc": [7, 11], "aed_r": [34, 42], "aed_ring_pin": 24, "after": [27, 28, 29, 48], "air": 22, "air_trench": 22, "al": 34, "align": [34, 48, 49], "all": [27, 28, 29, 31, 34, 49], "alon": 29, "along": [27, 29, 48], "alreadi": 34, "altern": 29, "amax": [34, 49], "amf": 15, "amf_ipkiss_pdk": 15, "amf_pdk": [11, 19], "amzi_w": 7, "an": [34, 49], "analysi": [29, 41], "angl": [2, 22, 23, 26, 27, 28, 29, 34, 37, 39, 44, 48, 49, 50], "angle_til": 22, "anoth": [34, 49], "antenna": [29, 41], "anti": [28, 29], "apertur": 29, "aport": 13, "append": [27, 29, 48], "appli": [28, 29, 48, 49], "ar": [28, 29], "arc": [27, 28, 29, 48], "area": [8, 29], "arg": 50, "arm": [27, 28, 31], "arm_sine_width": [31, 43], "arrai": [29, 41], "arrow": [34, 49], "assembl": [], "associ": 22, "assum": [34, 49], "asymmetr": 28, "attach": [27, 34, 48, 49], "auto": 28, "autom": 0, "automat": [34, 49], "avoid": [28, 34, 49], "axi": [27, 48], "b": [2, 3, 4, 38], "b1": [5, 13], "b2": [5, 13], "back": 22, "balanc": [28, 34, 49], "band": 34, "base": [2, 3, 4, 5, 8, 10, 13, 15, 16, 17, 18, 20, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "basic": [0, 11], "bdc": 28, "beam_splitt": [11, 30], "befor": [28, 29, 34, 48, 49], "begin": [34, 49], "begin_flat": 50, "bend": [5, 18, 22, 27, 28, 34, 39, 46, 48, 49], "bend_cel": 50, "bend_dc": [28, 39], "bend_heat": 4, "bend_min": [34, 49], "bend_p2p": [34, 49], "bend_radiu": 5, "bend_rout": [34, 49], "bend_route_p2p": [34, 49], "bend_straight_bend_p2p": [34, 49], "bend_strt_bend": [34, 49], "bend_strt_bend_p2p": [34, 49], "bend_strt_bend_p2p_min": [34, 49], "bendendflag": [34, 49], "bent": 27, "beol": 22, "between": [5, 22, 27, 28, 29, 31, 34, 48, 49], "bodi": [27, 31, 48], "bool": [27, 28, 29, 31, 34, 48, 49], "boolean": 48, "both": [27, 28, 31], "box": [5, 22], "brag": 35, "brag_wdm": 33, "bragg": [30, 42], "bragg_apod": 42, "branch": [5, 27], "broadband": [27, 28, 39], "broadcast": 29, "bs1": 3, "bs2": 3, "bs3": 3, "bs_tdc": [30, 42], "bsb": [34, 49], "bu": [28, 32], "built": [28, 48], "bus_dop": 26, "bus_ord": 32, "c": 34, "calcul": 28, "can": [5, 29, 34, 41, 49, 50], "cband": 15, "cell": [5, 10, 15, 22, 23, 27, 28, 29, 31, 34, 41, 46, 48, 49], "cell_attribut": 45, "cell_nam": [10, 23, 29, 34, 41], "cell_transit": 48, "cell_xs_transit": [25, 26, 34, 44, 45, 46, 48], "cellnam": [28, 39], "cellsreus": 10, "center": [27, 29, 48, 50], "central": [22, 31, 46, 48], "chamfer": [27, 28, 31, 34, 48, 49], "channel": [5, 29], "chip": 22, "circl": [11, 28, 29, 39, 41, 46, 48], "circular": [28, 39, 48], "circumscrib": [], "clad": 22, "cladmateri": 13, "class": [2, 3, 4, 5, 8, 10, 13, 15, 16, 17, 18, 20, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "clear": 22, "clothoid": [11, 28, 48], "clothoid_ord": [28, 39], "code": [34, 49], "column": 29, "complet": [], "compon": [7, 9, 12, 14, 19, 24, 30, 33, 42], "composit": [0, 11], "conchoid": [11, 48], "condit": 49, "configur": 29, "connect": [5, 32, 34, 48, 49], "connpatch": [34, 49], "constant": 48, "constraint": 48, "contain": [], "contrast": 22, "control": [27, 48], "conveni": [31, 48], "convert": [22, 48], "core": [22, 28], "corner": [28, 31, 48], "correspond": 31, "cosin": 31, "coupl": [22, 27, 28, 34], "coupler": [15, 16, 18, 22, 27, 28, 29, 30, 42], "cp": [34, 49], "creat": [29, 34, 49], "cross": [18, 22, 27, 28, 29, 30, 31, 42, 48], "cross_nam": 8, "cross_sin": 42, "crow": [30, 33], "crow_a": 33, "crow_circular_r": 33, "crow_custom": 32, "crow_eul_r": 33, "crow_eul_rck": 33, "crow_std_adddrop": 33, "crow_std_allpass": 33, "crx_te_1310": 19, "crx_te_1550": 19, "ct_pitch": 23, "cubic": 27, "cumec": [15, 16], "cumec_csip130cu": 41, "cumec_pdk": [11, 19], "cumec_sip130cu_pdk": 16, "curvatur": 22, "custom": [], "cycl": [46, 48], "d2wg_list": 23, "d_arm": [3, 4], "d_hole": 29, "d_port": [3, 4], "da_tran": [28, 39], "dac": [28, 32, 34, 39], "dc": [30, 42], "dc_bend": [18, 30, 42], "dc_bend_20_80_cband": 19, "dc_bend_4_96_cband": 19, "dc_bend_50_50_cband": 19, "dc_px3_50_50_cband": 19, "dc_px_3sg": [20, 30, 42], "dc_te_1550": 19, "debug": [28, 29, 31], "deep": 22, "default": [5, 22, 27, 28, 29, 31, 34, 41, 48, 49], "defin": [5, 29, 41], "define_typ": [29, 41], "definit": 29, "deflect": [27, 28, 48], "degre": [22, 27, 28, 29, 41, 48], "depth": [29, 41], "deriv": [28, 48], "describ": [34, 49], "design": 34, "detail": 34, "detch": 41, "determin": 29, "dev_nam": 13, "dev_p": [24, 30], "devic": [13, 22, 28, 31], "device_2x2_fdtd_init": 14, "device_coupl": 14, "device_port": 14, "device_ring_bu": 14, "devnam": 13, "diamet": [29, 48], "differ": 5, "diffract": 29, "dimens": 22, "direct": [18, 28, 34, 39, 49], "directional_coupl": [11, 30], "disabl": 28, "disconnect": [34, 49], "discret": [27, 28], "disk": 50, "divis": 28, "dl": [3, 4], "dl_amzi": [3, 4], "dl_arm": 34, "dl_cal": 50, "dl_ht": 4, "dl_p2p": [26, 28, 32, 34, 39, 44, 45], "dl_tran": [28, 39], "dl_wg": 50, "dlc": [28, 39], "dlx": [32, 44, 50], "dly": [32, 44, 50], "dmin": [46, 48], "do": 29, "doc": [23, 26, 34, 44, 49], "document": 0, "doe": [34, 49], "dofirst": [34, 49], "dope": 23, "dope_offset": 25, "dope_ovlp": 25, "dostrfirst": [34, 49], "dp_in": [31, 43], "dp_out": [31, 43], "draw": [27, 28, 29, 31, 34, 48, 49], "dt": 38, "dual": [22, 29], "dual_bu": 26, "dual_ht": 3, "dualportel": [12, 14], "dummi": 22, "duti": 29, "duty_cycl": [29, 41], "dw": [28, 39], "dw_toler": 47, "dx": 13, "dx_gc2gc": [16, 17, 27, 28, 29, 31, 37, 39, 40, 41, 43, 45], "dx_hole": [29, 41, 50], "dx_offset": 35, "dxgc2gc": [3, 4], "dy": 13, "dy_gc2gc": [27, 28, 31, 37, 39, 43, 45], "dy_hol": [29, 41, 50], "dygc2gc": [3, 4], "dz": 13, "e": 22, "each": [27, 31, 41, 48], "eas": 48, "ec_1550": 19, "ec_dual_layer_px3": [11, 30], "ec_te_1550": 19, "edg": [8, 22, 29], "edge1": [34, 49], "edge2": [34, 49], "edgepoint": [34, 49], "effici": 34, "eic_unit": [9, 11], "either": 29, "electron": [0, 11], "element": [34, 49], "elips": 11, "elipse_du": 11, "enabl": 28, "end": [28, 29, 34, 49, 50], "end_angl": [34, 49], "end_patch": [28, 39, 50], "enforc": 48, "entir": 48, "entranc": [27, 29], "entri": 29, "epin_di": 34, "epin_dx": 34, "epin_ht_di": 26, "epin_ht_dx": 26, "equal": 31, "err": [28, 39], "err_asi": [27, 37], "et": 34, "eta_d": 38, "eta_etch": [29, 38, 41], "etch": [29, 41], "etch_depth": [29, 41], "etch_shap": 38, "etch_typ": [29, 38, 41], "euler": [28, 39, 48], "euler_anti_bend": [28, 39], "euler_bend": [35, 46, 48], "euler_crow_bu": 14, "euler_crow_inter_cp": 14, "euler_point": [28, 39], "euler_sbend": [46, 48], "euler_transist": [28, 39], "euler_trasit": [26, 32, 34, 44, 45], "evalu": 28, "everi": 48, "exactli": 48, "exampl": [34, 49], "except": [29, 49], "exclus": 22, "exit": 27, "expect": 48, "export": 29, "export_plt": [34, 49], "expos": 29, "extens": [22, 48], "extern": [27, 28], "extra": [29, 34, 49], "f": [34, 49], "fa": [30, 42], "fabric": [28, 39], "facet": 22, "fallback": [34, 49], "fals": [3, 4, 5, 8, 13, 18, 20, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "fan": 29, "fanout": 29, "fcw_tre": [29, 41], "fdtd": 13, "fdtd_height": 13, "fdtdbuild": 13, "feed": 29, "fetch": [29, 38, 41], "fiber": [22, 29], "fiber_coupl": [29, 41], "field": 29, "field_sampl": 13, "file": 50, "fill": 29, "filler": 28, "final": [22, 28, 48], "final_flat": 50, "first": [22, 28, 34, 48, 49], "float": [22, 27, 28, 29, 31, 34, 48, 49], "folderpath": 13, "follow": 31, "footprint": [29, 48], "forc": 28, "form": [27, 48], "four": [], "fraction": 29, "from": [18, 28, 29, 34, 48, 49], "function": [34, 49], "futur": [28, 29, 41], "g": [22, 34, 49], "g0": [28, 39], "g1": [28, 29, 39], "gaolei": [28, 39], "gap": [26, 27, 28, 34, 36, 37, 39, 44, 46, 48, 49], "gap0": [28, 39], "gap1": [28, 32, 34, 39, 44, 45], "gap2": [32, 34, 44, 45], "gap_bu": 32, "gap_cp": 32, "gap_crow": 32, "gap_n_i": 26, "gap_p_i": 26, "gap_teeth_si": 29, "gap_teeth_sin": 29, "gc": [3, 4, 16, 17, 23, 27, 28, 31, 34, 35, 37, 39, 40, 43, 45], "gc2gc_dx": [16, 35], "gc2gc_dy": 35, "gc2gc_length": [16, 23, 34], "gc_in": 35, "gc_offset": 23, "gc_sin_si_dual_lay": 30, "gc_std_1d": [20, 30, 42], "gc_std_2d": [30, 42], "gc_te_1310": 19, "gc_te_1550": 19, "gc_tm_1310": 19, "gc_tm_1550": 19, "gd": [5, 22, 25, 28, 29, 34, 39, 41], "gds_devic": [0, 11], "gds_lib_gener": 20, "gds_lib_load": [11, 15, 16, 17], "ge": 15, "gener": [5, 23, 25, 28, 29, 31, 34, 39, 41, 49], "generate_2pi_gd": 34, "generate_eic_gd": [32, 34, 44], "generate_eic_part": 34, "generate_err": [28, 39], "generate_gd": [3, 4, 5, 8, 22, 23, 25, 27, 28, 29, 31, 34, 35, 36, 37, 39, 40, 41, 43, 44, 46, 48, 50], "generate_gds_error": [29, 41], "generate_gds_lib": [11, 20], "generate_gds_posit": [29, 41], "generate_imp_gd": 26, "generate_mzi_gd": 23, "generate_neg": [29, 38, 41], "generate_pic_gd": [32, 45], "generate_pic_part": 34, "generate_posit": [29, 38, 41], "generate_test_dev": [29, 41], "generate_test_gd": [3, 4, 16, 17, 23, 27, 28, 29, 31, 34, 35, 37, 39, 40, 41, 43, 45], "generate_test_mzi_gd": 34, "geo": [34, 49], "geometri": [28, 29], "getch_tr": [29, 41], "give": [34, 49], "glass": 13, "go": [29, 41], "gpd_1550": 19, "gpuon": 13, "grate": [15, 16, 29, 30, 42], "grating_2d_hol": [30, 42], "grating_2d_hole_3rec": 42, "grating_2d_hole_4rec": 42, "grating_coupl": [11, 30], "grating_unit": 41, "grid": [34, 49], "gridpatch": [34, 49], "gridsnap": [34, 49], "gt_diamet": [29, 41], "gt_layer": [29, 41], "gt_vector": [29, 41], "guid": [28, 34, 49], "h": 34, "half": [28, 48], "heater": [3, 4, 23, 25, 26, 32, 34, 35, 44], "heater_length": 23, "heater_ndop": 24, "heater_width": 23, "height": 13, "helper": [27, 31, 48], "hgl_pdk_a": [11, 19], "high": [22, 23], "hole": [11, 29], "hole_shap": [29, 41, 50], "horizont": [28, 29], "horsesho": [34, 49], "ht_notch_dual": [26, 34], "ht_rot": 34, "ht_same_sid": 4, "ht_shift": 32, "hu": [28, 39], "huang": 34, "i": [5, 18, 22, 23, 27, 28, 29, 31, 34, 39, 41, 48, 49], "ic": [34, 49], "ic_except": 11, "ictyp": [34, 49], "ident": [], "identifi": [22, 28, 29], "if_open": 23, "ignor": [34, 49], "im": [34, 49], "imec": [29, 41], "imecas_pdk": [11, 19], "imecas_pdk2": 17, "implement": 48, "import": [34, 49], "in_out_align": [46, 48], "includ": 41, "index": 22, "individu": 29, "info": [34, 49], "inherit": 48, "initi": [8, 22, 27, 28], "inner": 48, "innermost": 48, "input": [5, 22, 28, 29, 31, 41, 48], "insert": [27, 28, 31, 48], "insid": [27, 28, 48], "instanc": [29, 34, 49], "instanti": [8, 10, 23, 26, 28, 29, 34, 44, 49], "instead": [31, 48], "instrcutpath": 13, "instruct": 13, "int": [28, 29, 31, 34, 49], "interact": 28, "interconnect": [23, 26, 34, 44, 49], "interfer": 31, "interferomet": 23, "intern": 48, "interpol": 31, "introduc": [34, 49], "io": [27, 28, 48], "iri": [26, 34, 45, 50], "irx": [26, 34, 45, 50], "isl": [3, 4, 9, 26, 32, 34, 35], "isl_left": 32, "isl_low": 4, "isl_right": 32, "isl_upp": 4, "its": [34, 49], "jump": [34, 49], "junction": 23, "keep": [27, 28, 29, 31], "kei": [27, 28, 29, 31, 48], "kr": 50, "l": [3, 27, 34, 37, 40], "l0": 3, "l1": 35, "l12": [3, 35], "l2": 35, "l_ar": [29, 41], "l_arm": [3, 4, 31, 43], "l_attach": [27, 37], "l_box_end": 22, "l_compens": 4, "l_cp": [28, 39], "l_end": [16, 17, 22, 29, 40, 41], "l_end_si": 29, "l_end_sin": 29, "l_field_cent": [29, 41], "l_heater": [4, 35], "l_ht": [3, 25, 35], "l_in": 22, "l_in_tp": [27, 37], "l_inner": 3, "l_mmi": [31, 43], "l_patch": [3, 4], "l_port": 47, "l_tail": [29, 41], "l_taper": [25, 29, 41, 47], "l_tilt": [26, 32, 34, 44, 45], "l_tp": [3, 34, 35], "l_wg": [4, 23, 25, 35], "la": 50, "laid": 48, "later": [29, 34, 49], "layer": [5, 22, 23, 26, 29, 31, 34, 41, 44, 46, 48, 49, 50], "layer_d": 47, "layer_dt": 22, "layer_dum_exl_b": 22, "layer_fetch": 47, "layer_height": 13, "layer_metch": 47, "layer_ox_open": 29, "layer_si_etch": 29, "layer_si_slab": 29, "layer_si_teeth": 29, "layer_sin_etch": 29, "layer_sin_slab": [22, 29], "layer_sin_teeth": 29, "layer_top_cov": 22, "layer_u": 47, "layermap": 10, "layernam": [34, 49], "layout": 29, "lb": 50, "lb0": [28, 39], "lc1": [28, 39], "lc2": [28, 39], "lcp": [27, 36, 37], "ld": [28, 39], "least": [], "len": 31, "length": [5, 8, 22, 27, 28, 29, 31, 34, 41, 48, 49, 50], "length1": [34, 49], "length2": [34, 49], "liang": 34, "lib_nam": 10, "lib_path": 10, "libpath": 13, "librari": 0, "like": [], "line_mm": [34, 49], "linear": [29, 31, 34, 41, 49], "link": 27, "list": 29, "ll": [34, 49], "lmax": 8, "lmin": [46, 48], "ln": 3, "ln1": 3, "ln2": 3, "locat": 50, "logic": [29, 41], "longer": [34, 49], "longitudin": [27, 31], "loop": 48, "loopmirror": [7, 11], "lower": 28, "lower_isl": 35, "lp1": [28, 39], "lpatch": [46, 48], "lport": [46, 48], "lr": [34, 49], "ls1": 3, "ls2": 3, "lstart": [34, 49], "lt": [28, 39], "lt_bu": [28, 39], "lt_cp": [28, 39], "lt_rib": 47, "lt_slab": 47, "ltot": [34, 49], "ltp": [3, 4, 34, 35, 46, 48, 49], "ltp1": [22, 47], "ltp2": [22, 47], "ltp3": 22, "ltp_bu": [26, 32, 34, 44, 45], "ltp_mm": [34, 49], "ltp_port": [25, 46, 48], "ltran": 47, "lu": [28, 39], "lumer": 13, "lumericalpath": 13, "lx_end": [29, 41], "lx_port": [29, 41], "lx_side": [29, 41], "lx_sq": 50, "lx_taper": [29, 41], "ly_end": [29, 41], "ly_port": [29, 41], "ly_sid": [29, 41], "ly_sq": 50, "ly_tap": [29, 41], "mach": 23, "made": [34, 49], "mai": [], "main": 29, "manag": 22, "manual": 48, "margin": 29, "marker": [27, 28, 29, 31, 48], "master": [], "match": [29, 48], "materi": 13, "matter": [34, 49], "max_theta": [29, 41], "maximum": [28, 29, 34, 48, 49], "mdm": [20, 30, 35, 42], "mdm_adc_te1_1550": 19, "mdm_adc_te2_1550": 19, "mdm_adc_te3_1550": 19, "mean": [28, 29], "measur": 48, "mesh_ord": 13, "mesh_typ": 4, "metal": [3, 4, 8, 25, 26, 32, 34, 35, 44], "metch": [29, 41], "micrometr": 34, "micron": [22, 27, 28, 29, 31, 48], "mid_offset": 34, "midpoint": 22, "minimum": [5, 28, 46, 48], "mirror": 28, "mitig": 28, "mm_rout": [34, 49], "mmg_1d_d14um_1550_2mod": 19, "mmi": [16, 23, 30, 31, 34, 42], "mmi_1x2_te_1310": 19, "mmi_1x2_te_1550": 19, "mmi_2x2_te_1310": 19, "mmi_2x2_te_1550": 19, "mmi_ml": [30, 42], "mmi_sine_width": [31, 43], "mmi_std": [30, 42], "mode": [23, 26, 28, 29, 34, 44, 49], "mode_radiu": 41, "modeidx": 13, "model": [34, 49], "modul": 34, "mohanti": 34, "monitor": 15, "monitorpara": 14, "mono": 31, "mrr_a": [26, 33], "mrr_dw_adddrop": 33, "mrr_dw_allpass": 33, "mrr_mm_adddrop": 33, "mrr_mm_allpass": 33, "mrr_std_adddrop": 33, "mrr_std_allpass": 33, "mrr_std_ring": 33, "msg": 49, "multi": 31, "multimod": [31, 34], "multimode_interferomet": [11, 30], "multiplex": 28, "must": [27, 31], "mx_bend": 11, "mx_frame_lib": 50, "mxpic": [7, 9, 11, 12, 14, 19, 24, 30, 33, 42], "mxpic_handbook": [], "myself": [34, 49], "mzi": [7, 11], "mzi_2st_ubend": 7, "mzi_butterfli": 7, "mzi_eubend": 7, "mzi_mesh": [7, 11], "mzi_mesh_parl": 7, "mzi_mesh_tri": 7, "mzi_mesh_u": 7, "mzi_n": 7, "mzi_ns_ubend": 7, "mzi_offset": 23, "mzi_ubend": 7, "n": [5, 23, 26, 38], "n_bend": 4, "n_in": [31, 43], "n_layer_list": 23, "n_out": [31, 43], "n_point": [40, 50], "n_port": 4, "n_teeth_si": 29, "n_teeth_sin": 29, "name": [3, 4, 8, 10, 20, 22, 25, 26, 27, 28, 29, 31, 32, 34, 36, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "nano": 29, "nano_": [30, 42], "nanoantenna": [29, 41], "nat": 34, "nazca": [27, 28, 29, 31, 34, 48, 49], "nd": [29, 34, 48, 49], "need": [5, 34, 49], "neg": [34, 49, 50], "new": [34, 49], "nitrid": 22, "nld": 25, "node": [34, 49], "nois": 34, "nomin": [28, 48], "non": [29, 41], "none": [2, 3, 4, 5, 8, 10, 13, 20, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "normal": 34, "np": [23, 25, 26], "num": [8, 16, 17, 29, 40, 41], "num_i": [29, 41], "num_socr": 34, "num_x": [29, 41], "number": [5, 28, 29, 31, 34, 41, 48, 49], "nw": [23, 25], "object": [2, 3, 4, 5, 8, 10, 13, 22, 23, 25, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 50], "offset": [23, 26, 28, 29, 34, 44, 45, 49, 50], "offset_a": 50, "offset_b": 50, "offset_i": [26, 34, 45, 50], "offset_x": [26, 34, 45, 50], "op": 48, "open": [22, 29, 41], "oper": 13, "opt_eul": [46, 48], "optic": [22, 29, 41], "optim": [46, 48], "option": [22, 27, 28, 29, 31, 34, 48, 49], "order": 28, "ori": [26, 34, 45, 50], "ori_teeth_offset": 29, "orient": [34, 49], "original_funct": [34, 49], "orthogon": [34, 49], "orx": [26, 34, 45, 50], "other": [0, 11, 14], "out": [29, 48], "outer": 27, "outer_isl": 3, "outermost": 48, "output": [5, 27, 28, 29, 31, 34, 48, 49], "output_numb": 5, "output_pitch": 5, "over": 34, "overal": 29, "overrid": 48, "oxid": 22, "oxide_facet": 22, "p": 26, "p_ar": [29, 41], "p_in_n_out": 26, "p_layer_list": 23, "packag": [34, 49], "pad": [9, 22, 23], "pad_60_80": 19, "pad_opt": 22, "pair": 48, "palik": 13, "para": 5, "parabol": [29, 41], "parallel": [34, 49], "paramet": [8, 22, 23, 27, 28, 29, 31, 34, 41, 48, 49], "parametr": 48, "part": 27, "passiv": [11, 30], "patch": [34, 49], "path": [13, 48], "pattern": 25, "pb": [30, 42], "pbs_1550": 19, "pbs_3wg": 42, "pcb": [23, 26, 34, 44, 49], "pd_cband_cel": 19, "pdk": [0, 11], "pdk_path": [15, 16, 17], "per": [27, 29], "perform": 48, "period": [29, 38, 41], "phase": [23, 28, 29, 34, 41], "photon": [0, 34], "photoresist": [29, 41], "physic": 29, "pic": [11, 30], "pin": [0, 5, 11, 13, 23, 29, 34, 49], "pin1": [34, 49], "pin2": [34, 49], "pin_mrr_mm_adddrop": 24, "pin_mrr_mm_allpass": 24, "pin_mrr_std_allpass": 24, "pin_nam": 10, "pin_wg": [24, 30], "pinstyl": [23, 26, 34, 44, 49], "pitch": [5, 27, 29, 31, 41], "place": [34, 49, 50], "planar": 29, "plane": 28, "pld": 25, "point": [27, 28, 34, 49], "polar": 47, "polygon": [27, 28, 31, 48, 50], "polysi_diamet": [29, 41], "polysi_lay": [29, 41], "polysi_vector": [29, 41], "polysilicon": 29, "port": [13, 27, 28, 29, 31, 48], "port_align": 4, "port_angl": [46, 48], "port_dist": 13, "port_nam": 13, "port_radiu": 13, "port_symmetr": [28, 39], "port_width": 13, "portpara": 14, "ports_extend": 13, "posit": [29, 34, 41, 49], "possibl": [34, 49], "power": [15, 28, 39], "pp": [23, 25, 26], "pre": 48, "preced": 29, "preset": 48, "primit": [0, 11, 24, 33, 42], "profil": 29, "provid": [34, 49], "ps_2st": 33, "ps_2st_straight": 33, "ps_pin": 24, "psr": [35, 42], "psr_1x2": 33, "psr_unit": 47, "purpos": [28, 29], "put": [34, 49], "pw": [23, 25], "px": [28, 29, 41], "px_type": [28, 39], "py": [29, 41, 50], "quickstart": [], "qy_pdk_a": [11, 19], "r": [8, 46, 48, 50], "r0": [27, 28, 32, 37, 39, 44, 46, 48, 50], "r0_rck": 44, "r1": [32, 44], "r1_att": [32, 34, 44, 45], "r1_att_min": [32, 34, 44, 45], "r1_cp": [32, 34, 44, 45], "r1_rck": 44, "r2": 32, "r2_att": [32, 34, 44, 45], "r2_att_min": [32, 34, 44, 45], "r2_cp": [32, 34, 44, 45], "r_att": [26, 27, 32, 34, 37, 44], "r_att_min": [26, 32, 34, 44], "r_bend": [3, 4, 22, 31, 34, 35, 36, 43, 45, 46, 48, 50], "r_compens": 4, "r_cp": [26, 28, 32, 39], "r_hole": 50, "r_in": [28, 39], "r_max_anti": [28, 39], "r_max_tran": [28, 39], "r_min_anti": [28, 39], "r_out": 34, "r_outer": 32, "r_ratio_mamnu": [46, 48], "r_rck": 44, "r_ring": [13, 26, 32, 34, 45], "r_teeth_ori_si": 29, "r_teeth_ori_sin": 29, "racetrack": [11, 30, 42], "racetrack_mm_adddrop": 42, "racetrack_mm_allpass": 42, "racetrack_std_allpass": 42, "racetrackreson": 42, "radian": 48, "radiu": [2, 5, 13, 22, 23, 26, 27, 28, 34, 44, 46, 48, 49, 50], "radius1": [34, 49], "radius2": [34, 49], "rais": [29, 49], "rang": 50, "ratio": 48, "ratt": 44, "rbend": [27, 37], "rc_point": 8, "rc_radiu": 8, "rc_ratio": 48, "rd0": [28, 39], "rd1": [28, 39], "re": [8, 27, 28, 31, 34, 37, 39, 40, 43, 44, 45, 46, 47, 48, 50], "reach": 48, "rectangl": [29, 38], "rectangular": [29, 48], "reduc": [22, 28], "ref": [34, 49], "refer": [29, 34, 49], "reflect": [22, 29], "reflector": 29, "reflector_vector": [29, 41], "region": [27, 29, 31, 41], "regist": 28, "renam": 10, "repeat": 29, "res_eic": 34, "reserv": 28, "resolut": [31, 48, 50], "reson": 14, "respect": 22, "result": [29, 34, 41, 49], "return": [25, 34, 49], "revers": 4, "rib": [25, 47, 48], "rib2strip": [46, 48], "rib_tap": 25, "rib_tr": 47, "right": [34, 49], "ring": [24, 28, 30, 32, 33, 42, 50], "ring_bus_wg": [30, 42], "ring_phas": 14, "rl": [34, 49], "rm_ratio": 48, "rmax": [3, 28, 39, 50], "rmax_bend": [46, 48], "rmin": [3, 28, 35, 39], "rmin_bend": [46, 48], "rmin_bend_cent": [46, 48], "rmin_eul": [46, 48], "robust": 34, "root": [], "rotat": 47, "rout": [0, 11, 22, 24, 28, 33, 42], "row": [8, 29], "row_offset": 8, "rr": [34, 49], "rt_bend": [34, 49], "ru0": [28, 39], "ru1": [28, 39], "run": 13, "runfdtd": 13, "sa": [8, 25], "same": 48, "sampl": [27, 28, 31, 48], "sample_build": 48, "sample_point": 13, "sample_step": [29, 41], "saveflag": 13, "sbend": [28, 34, 49], "sbend_p2p": [34, 49], "sbend_p2p_min": [34, 49], "sbend_rout": [34, 49], "sbend_typ": [28, 39], "scaffold": 28, "scalar": 29, "scale": 34, "scheme": 29, "second": [22, 28, 34, 49], "secondari": 22, "section": [22, 27, 28, 29, 31, 34, 48, 49], "sector": 29, "sector_gc": [29, 41], "see": 34, "segment": [27, 28, 29, 31, 48], "selector": 29, "self": 5, "separ": 48, "sequenc": [27, 29, 31], "set": [28, 34, 48, 49], "setch": [29, 41], "shape": [27, 29, 34, 35, 41, 46, 47, 48, 49], "share": 48, "sharp": 28, "sharp_patch": [2, 3, 16, 26, 27, 28, 31, 32, 34, 36, 37, 39, 43, 44, 45, 46, 48, 49, 50], "sharp_path": [34, 49], "shift": [23, 34, 49], "shifter": [23, 28], "shortest": [34, 49], "should": [], "show_pin": [3, 4, 5, 8, 18, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 50], "showpin": [34, 49], "si": 13, "side": 29, "sidelob": [34, 49], "sidewai": [34, 49], "sidewya": [34, 49], "silicon": [0, 13], "simu_x": 13, "simubox": 13, "simudatafigureplot": 14, "simul": [11, 12, 29, 41], "simupath": 13, "sin": 22, "sin_rib_wg": 22, "sine": [47, 50], "singl": [28, 29, 31, 48], "single_end": [28, 39], "sio2": 13, "size": [22, 29, 34, 49], "slab": [22, 29], "slab_width": 23, "small": [28, 48], "socr": 33, "socr_adiabat": 33, "socr_adiabatic_cband": 33, "socr_cband": 33, "soi": 22, "sourc": [], "sourcemod": 13, "sp_cont": 26, "sp_isl_met": 8, "sp_isl_wg": 8, "sp_sc": 25, "sp_via_i2m": 25, "sp_via_x": 8, "space": [8, 27, 28, 29, 48], "specif": [34, 49], "speed": 23, "sphinx": [], "spiral": [11, 28, 30, 42], "spiral_cicle_mm": [30, 42], "spiral_cicle_std": [30, 42], "spiral_circl": [30, 42], "spiral_ord": 50, "spiral_rect_std": [30, 42], "spiral_rectangl": [30, 42], "spline": 27, "split": [5, 28, 39], "splitter": [28, 47], "splittingtre": 7, "spot": 22, "spttree": [7, 11], "squar": 29, "stand": 29, "standard": [28, 31], "start": [34, 49, 50], "std_crow_v": 33, "std_pic_r": 42, "std_ring_amzi_adddrop": 33, "std_ring_pin": 24, "step": [28, 48], "stop": 50, "str": [22, 27, 28, 29, 31, 34, 41, 48, 49], "straight": [27, 28, 29, 34, 48, 49], "strict_condit": [46, 48], "strip": [2, 3, 4, 13, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "strip_cor": [25, 29, 41], "strip_tr": 47, "strong": 34, "strt": [34, 49], "strt_bend_strt_p2p": [34, 49], "strt_bend_strt_p2p_min": [34, 49], "strt_mm": [34, 49], "strt_mm_p2p": [34, 49], "strt_p2p": [34, 49], "strt_round_courn": 11, "structur": [0, 11, 29, 41, 48], "stub": [27, 28, 29, 31, 48], "style": 48, "success": 48, "suffix": [], "sun": [], "suppli": [], "support": [29, 48], "suppr": 34, "symbol": [34, 49], "symmetr": [27, 28, 34, 39, 49], "symmetri": [], "symmetric_bu": [28, 39], "sz": 8, "sz_bu": 32, "sz_ring": 32, "sz_via_i2m": 25, "szvia": 8, "t": [13, 34, 49, 50], "take": [34, 49], "taken": [34, 49], "taper": [22, 27, 28, 30, 31, 34, 42, 48, 49], "taper_length": [29, 41], "taper_p2p": [34, 49], "taper_xs2x": 42, "target": 28, "te": [15, 16], "teeth": [29, 41], "teeth_numb": [29, 41], "templat": 19, "termin": [28, 29], "tessel": 48, "test": 23, "theta_arc": [28, 34, 39], "theta_ext": [28, 39], "theta_start": [8, 50], "theta_stop": [8, 50], "thi": [18, 22, 23, 28, 29, 34, 39, 41, 49], "thin_attach": 35, "third": 22, "three": 28, "through": 18, "throughout": 48, "tilt": [22, 48], "tip": [22, 28], "toctre": [], "toler": [28, 39], "tooth": 29, "top": 22, "topologi": 28, "total": [27, 29], "tp_angl": [28, 39], "transit": [22, 28, 29, 31, 42, 48], "translat": [34, 49], "tree": 5, "trench": 22, "triangl": 4, "triangular": [], "true": [2, 3, 4, 8, 10, 13, 16, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45, 46, 48, 49, 50], "tube": [34, 49], "tube_min": [34, 49], "tunabl": 28, "tupl": [34, 48, 49], "tuple_to_complex": 14, "turn": 48, "two": [5, 27, 28, 34, 49], "twod_grat": [], "type": [25, 28, 29, 34, 41, 49, 50], "type_tap": [29, 41], "u": [34, 49], "ubend": [34, 49], "ubend_offset": 35, "ubend_p2p": [34, 49], "ubend_rout": [34, 49], "um": [5, 34, 49], "umat_2x2_": 7, "uniform": 31, "uninstanti": [27, 29, 31], "uniqu": [22, 28], "unit": [30, 33], "unit_mesh_2x2": 4, "unless": [34, 49], "upper": 28, "upper_isl": 35, "us": [5, 27, 28, 29, 31, 34, 41, 48, 49], "valu": [29, 34, 49], "varnam": [23, 26, 34, 44, 49], "vector": [29, 41], "versatil": 29, "vertic": [27, 28, 29, 31, 48], "via": 9, "via_cel": 8, "via_h2m": [3, 4, 25, 26, 32, 34, 35, 44], "via_i2m": 26, "via_s2m": [8, 25], "vias_arc": 9, "visibl": 34, "w": [8, 27, 37, 38, 40, 47, 50], "w0": [27, 28, 32, 37, 39, 44], "w0_rck": 44, "w0_ring": 34, "w1": [3, 27, 28, 32, 35, 37, 39, 44], "w1_bu": [32, 34, 44, 45], "w1_rck": 44, "w1_ring": 34, "w1_slab": 22, "w1_tp": 36, "w2": [3, 35], "w2_bu": [32, 34, 44, 45], "w2_tp": 36, "w_1": 47, "w_2": 47, "w_arm": [3, 4, 31, 43], "w_arm_min": 3, "w_bend_cent": [46, 48], "w_bend_port": [46, 48], "w_box": 22, "w_box_end": 22, "w_bu": [26, 28, 32, 34, 39, 44], "w_cp": [28, 34, 39], "w_dt": 22, "w_end": [16, 17, 40, 50], "w_grow_rib": 47, "w_grow_strip": 47, "w_gt": [29, 41], "w_heater": [3, 26, 32, 34, 35], "w_ht": [3, 4, 25, 44], "w_i": [25, 26], "w_in": [22, 28, 34, 39], "w_itr": 25, "w_m": 36, "w_metal": [3, 4, 26, 32, 34, 35], "w_metal_pn": 25, "w_mid_slab": 22, "w_mmi": [31, 43], "w_mt": [25, 44], "w_n": [25, 26], "w_n_ct": 25, "w_ncont": 26, "w_out": [28, 34, 39], "w_ovlp": 26, "w_p": [25, 26], "w_p_ct": 25, "w_pcont": 26, "w_plus_max": 23, "w_port": [25, 27, 29, 31, 35, 37, 43, 46, 48], "w_ram": 4, "w_rck": 44, "w_rib": 47, "w_ring": [26, 32, 34, 45], "w_slab": 23, "w_teeth_si": 29, "w_teeth_sin": 29, "w_term": 45, "w_tip_cor": 22, "w_tip_slab": 22, "w_tran": [28, 39], "w_waveguid": 7, "w_wg": [2, 3, 4, 5, 18, 20, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45], "w_wg_slab": 23, "wa": [32, 50], "wa0": [28, 39], "wa1": [28, 39], "wai": 41, "waveguid": [5, 22, 27, 28, 29, 31, 33, 34, 41, 48, 49], "waveguide1": 5, "waveguide2": 5, "waveguide_pin": 24, "wavelength": 34, "wb": [32, 50], "wb0": [28, 39], "wb1": [28, 39], "wb_in": [28, 39], "wb_out": [28, 39], "wd0": [28, 39], "wd1": [28, 39], "wd_in": [28, 39], "wd_out": [28, 39], "welcom": 0, "wg_ltp": [28, 39], "wgdope": 24, "when": [27, 28, 29, 31, 34, 48, 49], "where": [34, 49], "whether": 28, "which": [5, 34, 49], "wideband": 18, "width": [5, 8, 10, 13, 22, 23, 26, 27, 28, 29, 31, 34, 41, 44, 46, 48, 49, 50], "width1": [29, 34, 41, 49], "width2": [29, 34, 41, 49], "width2_mm": [34, 49], "width_mm": [34, 49], "width_typ": [32, 50], "with_txt": 10, "within": [31, 48], "wl": 13, "wmin_bend": [46, 48], "wrapper": [28, 31], "write": 13, "written": [28, 39], "wu0": [28, 39], "wu1": [28, 39], "wu_in": [28, 39], "wu_out": [28, 39], "x": [8, 10, 13, 23, 25, 26, 27, 28, 29, 31, 34, 35, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50], "x_space": 8, "xout_offset": [31, 43], "xs_1": 47, "xs_2": 47, "xs_cont_wg": [25, 26], "xs_heater": [3, 4, 25, 26, 32, 34, 35], "xs_ht": [3, 25, 44], "xs_l1": 8, "xs_l2": 8, "xs_metal": [3, 4, 25, 26, 32, 34, 35], "xs_metal_imp": 26, "xs_mt": [25, 44], "xs_n": [25, 26], "xs_ncont": [25, 26], "xs_open": [29, 41], "xs_p": [25, 26], "xs_pad": 8, "xs_pcont": [25, 26], "xs_pn_ct": 25, "xs_port": 25, "xs_ring": [26, 32, 34], "xs_sa": 25, "xs_sin": 22, "xs_trench": 22, "xs_via_h2m": 25, "xs_via_s2m": 25, "xs_wg": [2, 3, 4, 25, 28, 29, 32, 34, 35, 39, 41], "xsection": [34, 49], "xya": 10, "y": [5, 13, 27, 29, 34, 49], "y_cut": 50, "y_space": 8, "yb": [30, 42], "ybranch": [5, 30, 42], "ybranch_3wg": [30, 42], "ybranch_t": 19, "you": [], "your": [], "z": 13, "zehnder": 23, "\u00b5m": [27, 29, 31, 48], "\u03c0": 48}, "titles": ["mxPIC Handbook", "mxpic.components.basic", "mxpic.components.composites.LoopMirror", "mxpic.components.composites.MZI", "mxpic.components.composites.MZI_mesh", "mxpic.components.composites.SptTree", "mxpic.components.composites.advance", "Composites", "mxpic.components.electronics.eic_units", "Electronics", "mxpic.components.gds_devices", "Components", "Others", "mxpic.components.others.simulation.DualPortElements", "Simulation", "mxpic.components.pdks.AMF_pdk", "mxpic.components.pdks.CUMEC_pdk", "mxpic.components.pdks.IMECAS_pdk", "mxpic.components.pdks.hgl_pdk_A", "Pdks", "mxpic.components.pdks.qy_pdk_A", "mxpic.components.pins", "mxpic.components.primitives.EC_dual_layer_px3", "mxpic.components.primitives.active.dev_ps", "Active", "mxpic.components.primitives.active.pin_wg", "mxpic.components.primitives.active.rings", "mxpic.components.primitives.beam_splitters", "mxpic.components.primitives.directional_couplers", "mxpic.components.primitives.grating_couplers", "Primitives", "mxpic.components.primitives.multimode_interferometers", "mxpic.components.primitives.passive.crows", "Passive", "mxpic.components.primitives.passive.rings", "mxpic.components.primitives.passive.unit", "mxpic.components.primitives.pic.PBS", "mxpic.components.primitives.pic.YBS", "mxpic.components.primitives.pic.bragg", "mxpic.components.primitives.pic.couplers", "mxpic.components.primitives.pic.cross", "mxpic.components.primitives.pic.gratings", "Pic", "mxpic.components.primitives.pic.mmi", "mxpic.components.primitives.pic.racetrack", "mxpic.components.primitives.pic.rings", "mxpic.components.primitives.pic.spiral", "mxpic.components.primitives.pic.taper", "mxpic.components.primitives.spiral", "mxpic.components.routing", "mxpic.components.structures"], "titleterms": {"activ": [23, 24, 25, 26], "adc_std_2x2": [28, 39], "advanc": 6, "aed_r": 45, "aed_ring_pin": 26, "amf_pdk": 15, "amzi_w": 4, "autom": [], "basic": 1, "beam_splitt": 27, "brag_wdm": 35, "bragg": 38, "bragg_apod": 38, "bs_tdc": [28, 39], "circl": 50, "clothoid": 50, "compon": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "composit": [2, 3, 4, 5, 6, 7], "conchoid": 50, "coupler": 39, "cross": 40, "cross_sin": 40, "crow": 32, "crow_a": 32, "crow_circular_r": 32, "crow_eul_r": 32, "crow_eul_rck": 32, "crow_std_adddrop": 32, "crow_std_allpass": 32, "crx_te_1310": 17, "crx_te_1550": [16, 17], "cumec_pdk": 16, "dc": [28, 39], "dc_bend": [28, 39], "dc_bend_20_80_cband": 18, "dc_bend_4_96_cband": 18, "dc_bend_50_50_cband": 18, "dc_px3_50_50_cband": 20, "dc_px_3sg": [28, 39], "dc_te_1550": 17, "dev_p": 23, "device_2x2_fdtd_init": 13, "device_coupl": 13, "device_port": 13, "device_ring_bu": 13, "directional_coupl": 28, "document": [], "dualportel": 13, "ec_1550": 16, "ec_dual_layer_px3": 22, "ec_te_1550": 17, "eic_unit": 8, "electron": [8, 9], "elips": 50, "elipse_du": 50, "euler_crow_bu": 13, "euler_crow_inter_cp": 13, "fa": [29, 41], "gc_sin_si_dual_lay": 29, "gc_std_1d": [29, 41], "gc_std_2d": [29, 41], "gc_te_1310": [15, 16, 17], "gc_te_1550": [15, 16, 17], "gc_tm_1310": 17, "gc_tm_1550": [16, 17], "gds_devic": 10, "gds_lib_load": 10, "generate_gds_lib": 10, "gpd_1550": 16, "grate": 41, "grating_2d_hol": [29, 41], "grating_2d_hole_3rec": 41, "grating_2d_hole_4rec": 41, "grating_coupl": 29, "handbook": 0, "heater_ndop": 23, "hgl_pdk_a": 18, "hole": 50, "ic_except": 49, "imecas_pdk": 17, "isl": 8, "librari": [], "loopmirror": 2, "mdm": [28, 39], "mdm_adc_te1_1550": 20, "mdm_adc_te2_1550": 20, "mdm_adc_te3_1550": 20, "mmg_1d_d14um_1550_2mod": 20, "mmi": 43, "mmi_1x2_te_1310": [16, 17], "mmi_1x2_te_1550": [16, 17], "mmi_2x2_te_1310": 17, "mmi_2x2_te_1550": [16, 17], "mmi_ml": [31, 43], "mmi_std": [31, 43], "monitorpara": 13, "mrr_a": 34, "mrr_dw_adddrop": 34, "mrr_dw_allpass": 34, "mrr_mm_adddrop": 34, "mrr_mm_allpass": 34, "mrr_std_adddrop": 34, "mrr_std_allpass": 34, "mrr_std_ring": 34, "multimode_interferomet": 31, "mx_bend": 50, "mxpic": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "mzi": 3, "mzi_2st_ubend": 3, "mzi_butterfli": 3, "mzi_eubend": 3, "mzi_mesh": 4, "mzi_mesh_parl": 4, "mzi_mesh_tri": 4, "mzi_mesh_u": 4, "mzi_n": 3, "mzi_ns_ubend": 3, "mzi_ubend": 3, "nano_": [29, 41], "other": [12, 13], "pad": 8, "pad_60_80": 16, "passiv": [32, 33, 34, 35], "pb": 36, "pbs_1550": 16, "pbs_3wg": 36, "pd_cband_cel": 15, "pdk": [15, 16, 17, 18, 19, 20], "photon": [], "pic": [36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "pin": 21, "pin_mrr_mm_adddrop": 26, "pin_mrr_mm_allpass": 26, "pin_mrr_std_allpass": 26, "pin_wg": 25, "portpara": 13, "primit": [22, 23, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48], "ps_2st": 35, "ps_2st_straight": 35, "ps_pin": 23, "psr": 47, "psr_1x2": 35, "qy_pdk_a": 20, "racetrack": [44, 50], "racetrack_mm_adddrop": 44, "racetrack_mm_allpass": 44, "racetrack_std_allpass": 44, "racetrackreson": 44, "reson": 13, "ring": [26, 34, 45], "ring_bus_wg": [28, 39], "ring_phas": 13, "rout": [23, 26, 34, 44, 49], "silicon": [], "simudatafigureplot": 13, "simul": [13, 14], "socr": 34, "socr_adiabat": 34, "socr_adiabatic_cband": 34, "socr_cband": 34, "spiral": [46, 48], "spiral_cicle_mm": [46, 48], "spiral_cicle_std": [46, 48], "spiral_circl": [46, 48], "spiral_rect_std": [46, 48], "spiral_rectangl": [46, 48], "splittingtre": 5, "spttree": 5, "std_crow_v": 32, "std_pic_r": 45, "std_ring_amzi_adddrop": 34, "std_ring_pin": 26, "strt_round_courn": 50, "structur": 50, "taper": [29, 41, 47], "taper_xs2x": 47, "templat": 17, "transit": 47, "tuple_to_complex": 13, "umat_2x2_": 4, "unit": 35, "via": 8, "vias_arc": 8, "w_waveguid": 4, "waveguid": 35, "waveguide_pin": 25, "welcom": [], "wgdope": 25, "yb": 37, "ybranch": [27, 37], "ybranch_3wg": [27, 37], "ybranch_t": 17}}) \ No newline at end of file +Search.setIndex({"alltitles": {"ADC_STD_2x2": [[33, "adc-std-2x2"], [44, "adc-std-2x2"]], "AED_Ring_PIN": [[31, "aed-ring-pin"]], "AED_ring": [[50, "aed-ring"]], "AMZI_W": [[4, "amzi-w"]], "Active": [[29, null]], "BS_tdc": [[33, "bs-tdc"], [44, "bs-tdc"]], "Brag_WDM": [[40, "brag-wdm"]], "Bragg": [[43, "bragg"]], "Bragg_apodized": [[43, "bragg-apodized"]], "CROW_AED": [[37, "crow-aed"]], "CROW_Circular_ring": [[37, "crow-circular-ring"]], "CROW_Eul_RCK": [[37, "crow-eul-rck"]], "CROW_Eul_Ring": [[37, "crow-eul-ring"]], "CROW_STD_Adddrop": [[37, "crow-std-adddrop"]], "CROW_STD_Allpass": [[37, "crow-std-allpass"]], "CRX_TE_1310": [[22, "crx-te-1310"]], "CRX_TE_1550": [[21, "crx-te-1550"], [22, "crx-te-1550"]], "Clothoid": [[11, "clothoid"]], "Components": [[16, null]], "Components:": [[0, null]], "Composites": [[7, null]], "Conchoid": [[11, "conchoid"]], "Cross": [[45, "cross"]], "Cross_Sine": [[45, "cross-sine"]], "DC": [[33, "dc"], [44, "dc"]], "DC_TE_1550": [[22, "dc-te-1550"]], "DC_bend": [[33, "dc-bend"], [44, "dc-bend"]], "DC_bend_20_80_Cband": [[23, "dc-bend-20-80-cband"]], "DC_bend_4_96_Cband": [[23, "dc-bend-4-96-cband"]], "DC_bend_50_50_Cband": [[23, "dc-bend-50-50-cband"]], "DC_pX3_50_50_Cband": [[25, "dc-px3-50-50-cband"]], "DC_pX_3sg": [[33, "dc-px-3sg"], [44, "dc-px-3sg"]], "DEVICE_2X2_FDTD_INIT": [[18, "device-2x2-fdtd-init"]], "DEVICE_COUPLER": [[18, "device-coupler"]], "DEVICE_PORTS": [[18, "device-ports"]], "DEVICE_RING_BUS": [[18, "device-ring-bus"]], "EC_1550": [[21, "ec-1550"]], "EC_TE_1550": [[22, "ec-te-1550"]], "EC_dual_layer_px3": [[27, "ec-dual-layer-px3"]], "EULER_CROW_BUS": [[18, "euler-crow-bus"]], "EULER_CROW_INTER_CP": [[18, "euler-crow-inter-cp"]], "Electronics": [[9, null]], "Elipse": [[15, "elipse"]], "Elipse_dual": [[15, "elipse-dual"]], "FA": [[34, "fa"], [46, "fa"]], "GC_STD_1D": [[34, "gc-std-1d"], [46, "gc-std-1d"]], "GC_STD_2D": [[34, "gc-std-2d"], [46, "gc-std-2d"]], "GC_SiN_Si_Dual_Layer": [[34, "gc-sin-si-dual-layer"]], "GC_TE_1310": [[20, "gc-te-1310"], [21, "gc-te-1310"], [22, "gc-te-1310"]], "GC_TE_1550": [[20, "gc-te-1550"], [21, "gc-te-1550"], [22, "gc-te-1550"]], "GC_TM_1310": [[22, "gc-tm-1310"]], "GC_TM_1550": [[21, "gc-tm-1550"], [22, "gc-tm-1550"]], "GPD_1550": [[21, "gpd-1550"]], "Geometry": [[12, null]], "Grating_2D_Hole": [[34, "grating-2d-hole"], [46, "grating-2d-hole"]], "Grating_2D_Hole_3Rec": [[46, "grating-2d-hole-3rec"]], "Grating_2D_Hole_4Rec": [[46, "grating-2d-hole-4rec"]], "Heater_NDoped": [[28, "heater-ndoped"]], "ISL": [[8, "isl"]], "LoopMirror": [[2, "loopmirror"]], "MDM": [[33, "mdm"], [44, "mdm"]], "MDM_ADC_TE1_1550": [[25, "mdm-adc-te1-1550"]], "MDM_ADC_TE2_1550": [[25, "mdm-adc-te2-1550"]], "MDM_ADC_TE3_1550": [[25, "mdm-adc-te3-1550"]], "MMG_1D_D14um_1550_2modes": [[25, "mmg-1d-d14um-1550-2modes"]], "MMI_1x2_TE_1310": [[21, "mmi-1x2-te-1310"], [22, "mmi-1x2-te-1310"]], "MMI_1x2_TE_1550": [[21, "mmi-1x2-te-1550"], [22, "mmi-1x2-te-1550"]], "MMI_2x2_TE_1310": [[22, "mmi-2x2-te-1310"]], "MMI_2x2_TE_1550": [[21, "mmi-2x2-te-1550"], [22, "mmi-2x2-te-1550"]], "MMI_ML": [[36, "mmi-ml"], [48, "mmi-ml"]], "MMI_STD": [[36, "mmi-std"], [48, "mmi-std"]], "MRR_AED": [[39, "mrr-aed"]], "MRR_DW_Adddrop": [[39, "mrr-dw-adddrop"]], "MRR_DW_Allpass": [[39, "mrr-dw-allpass"]], "MRR_MM_Adddrop": [[39, "mrr-mm-adddrop"]], "MRR_MM_Allpass": [[39, "mrr-mm-allpass"]], "MRR_STD_Adddrop": [[39, "mrr-std-adddrop"]], "MRR_STD_Allpass": [[39, "mrr-std-allpass"]], "MRR_STD_Ring": [[39, "mrr-std-ring"]], "MZI": [[3, "mzi"]], "MZI_2st_ubend": [[3, "mzi-2st-ubend"]], "MZI_Butterfly": [[3, "mzi-butterfly"]], "MZI_Eubend": [[3, "mzi-eubend"]], "MZI_NS": [[3, "mzi-ns"]], "MZI_NS_ubend": [[3, "mzi-ns-ubend"]], "MZI_Ubend": [[3, "mzi-ubend"]], "MZI_mesh_Parl": [[4, "mzi-mesh-parl"]], "MZI_mesh_Tri": [[4, "mzi-mesh-tri"]], "MZI_mesh_U": [[4, "mzi-mesh-u"]], "MonitorParas": [[18, "monitorparas"]], "Nano_ant": [[34, "nano-ant"], [46, "nano-ant"]], "Others": [[17, null]], "PAD": [[8, "pad"]], "PAD_60_80": [[21, "pad-60-80"]], "PADs": [[8, "pads"]], "PBS_1550": [[21, "pbs-1550"]], "PBS_3wg": [[41, "pbs-3wg"]], "PD_Cband_Cell": [[20, "pd-cband-cell"]], "PIN_MRR_MM_Adddrop": [[31, "pin-mrr-mm-adddrop"]], "PIN_MRR_MM_Allpass": [[31, "pin-mrr-mm-allpass"]], "PIN_MRR_STD_Allpass": [[31, "pin-mrr-std-allpass"]], "PSR": [[52, "psr"]], "PSR_1x2": [[40, "psr-1x2"]], "PS_2st": [[40, "ps-2st"]], "PS_2st_Straight": [[40, "ps-2st-straight"]], "PS_PIN": [[28, "ps-pin"]], "Passive": [[38, null]], "Pdks": [[24, null]], "Pic": [[47, null]], "PortParas": [[18, "portparas"]], "Primitives": [[35, null]], "RESONATOR": [[18, "resonator"]], "RING_PHASE": [[18, "ring-phase"]], "Racetrack": [[14, "racetrack"]], "RacetrackResonator": [[49, "racetrackresonator"]], "Racetrack_MM_Adddrop": [[49, "racetrack-mm-adddrop"]], "Racetrack_MM_Allpass": [[49, "racetrack-mm-allpass"]], "Racetrack_STD_Allpass": [[49, "racetrack-std-allpass"]], "Route": [[28, "route"], [31, "route"], [39, "route"], [49, "route"], [54, "route"]], "SOCR": [[39, "socr"]], "SOCR_Adiabatic": [[39, "socr-adiabatic"]], "SOCR_Adiabatic_Cband": [[39, "socr-adiabatic-cband"]], "SOCR_Cband": [[39, "socr-cband"]], "STD_CROW_V": [[37, "std-crow-v"]], "STD_PIC_Rings": [[50, "std-pic-rings"]], "STD_Ring_PIN": [[31, "std-ring-pin"]], "STD_ring_AMZI_adddrop": [[39, "std-ring-amzi-adddrop"]], "SimuDataFigurePlot": [[18, "simudatafigureplot"]], "Simulation": [[19, null]], "Spiral_Cicle_MM": [[51, "spiral-cicle-mm"], [53, "spiral-cicle-mm"]], "Spiral_Cicle_STD": [[51, "spiral-cicle-std"], [53, "spiral-cicle-std"]], "Spiral_Rect_STD": [[51, "spiral-rect-std"], [53, "spiral-rect-std"]], "SplittingTree": [[5, "splittingtree"]], "Taper": [[34, "taper"], [46, "taper"]], "Template": [[22, "template"]], "UMat_2x2_S": [[4, "umat-2x2-s"]], "Vias": [[8, "vias"]], "Vias_arc": [[8, "vias-arc"]], "WGDoped": [[30, "wgdoped"]], "W_waveguide": [[4, "w-waveguide"]], "YBranch": [[32, "ybranch"], [42, "ybranch"]], "Ybranch_3wg": [[32, "ybranch-3wg"], [42, "ybranch-3wg"]], "Ybranch_TE": [[22, "ybranch-te"]], "circle": [[15, "circle"]], "gds_lib_load": [[10, "gds-lib-load"]], "generate_gds_lib": [[10, "generate-gds-lib"]], "hole": [[15, "hole"]], "ic_exception": [[54, "ic-exception"]], "mxPIC Handbook": [[0, null]], "mx_bend": [[15, "mx-bend"]], "mxpic.components.basic": [[1, null]], "mxpic.components.composites.LoopMirror": [[2, null]], "mxpic.components.composites.MZI": [[3, null]], "mxpic.components.composites.MZI_mesh": [[4, null]], "mxpic.components.composites.SptTree": [[5, null]], "mxpic.components.composites.advance": [[6, null]], "mxpic.components.electronics.eic_units": [[8, null]], "mxpic.components.gds_devices": [[10, null]], "mxpic.components.geometry.curves": [[11, null]], "mxpic.components.geometry.polygons": [[13, null]], "mxpic.components.geometry.racetrack": [[14, null]], "mxpic.components.geometry.rings": [[15, null]], "mxpic.components.others.simulation.DualPortElements": [[18, null]], "mxpic.components.pdks.AMF_pdk": [[20, null]], "mxpic.components.pdks.CUMEC_pdk": [[21, null]], "mxpic.components.pdks.IMECAS_pdk": [[22, null]], "mxpic.components.pdks.hgl_pdk_A": [[23, null]], "mxpic.components.pdks.qy_pdk_A": [[25, null]], "mxpic.components.pins": [[26, null]], "mxpic.components.primitives.EC_dual_layer_px3": [[27, null]], "mxpic.components.primitives.active.dev_ps": [[28, null]], "mxpic.components.primitives.active.pin_wg": [[30, null]], "mxpic.components.primitives.active.rings": [[31, null]], "mxpic.components.primitives.beam_splitters": [[32, null]], "mxpic.components.primitives.directional_couplers": [[33, null]], "mxpic.components.primitives.grating_couplers": [[34, null]], "mxpic.components.primitives.multimode_interferometers": [[36, null]], "mxpic.components.primitives.passive.crows": [[37, null]], "mxpic.components.primitives.passive.rings": [[39, null]], "mxpic.components.primitives.passive.unit": [[40, null]], "mxpic.components.primitives.pic.PBS": [[41, null]], "mxpic.components.primitives.pic.YBS": [[42, null]], "mxpic.components.primitives.pic.bragg": [[43, null]], "mxpic.components.primitives.pic.couplers": [[44, null]], "mxpic.components.primitives.pic.cross": [[45, null]], "mxpic.components.primitives.pic.gratings": [[46, null]], "mxpic.components.primitives.pic.mmi": [[48, null]], "mxpic.components.primitives.pic.racetrack": [[49, null]], "mxpic.components.primitives.pic.rings": [[50, null]], "mxpic.components.primitives.pic.spiral": [[51, null]], "mxpic.components.primitives.pic.taper": [[52, null]], "mxpic.components.primitives.spiral": [[53, null]], "mxpic.components.routing": [[54, null]], "ring_bus_wg": [[33, "ring-bus-wg"], [44, "ring-bus-wg"]], "spiral": [[51, "spiral"], [53, "spiral"]], "spiral_circle": [[51, "spiral-circle"], [53, "spiral-circle"]], "spiral_rectangle": [[51, "spiral-rectangle"], [53, "spiral-rectangle"]], "strt_round_courner": [[13, "strt-round-courner"]], "taper_xs2xs": [[52, "taper-xs2xs"]], "transition": [[52, "transition"]], "tuple_to_complex": [[18, "tuple-to-complex"]], "waveguide": [[40, "waveguide"]], "waveguide_PIN": [[30, "waveguide-pin"]]}, "docnames": ["index", "mxpic/components/basic", "mxpic/components/composites/LoopMirror", "mxpic/components/composites/MZI", "mxpic/components/composites/MZI_mesh", "mxpic/components/composites/SptTree", "mxpic/components/composites/advance", "mxpic/components/composites/index", "mxpic/components/electronics/eic_units", "mxpic/components/electronics/index", "mxpic/components/gds_devices", "mxpic/components/geometry/curves", "mxpic/components/geometry/index", "mxpic/components/geometry/polygons", "mxpic/components/geometry/racetrack", "mxpic/components/geometry/rings", "mxpic/components/index", "mxpic/components/others/index", "mxpic/components/others/simulation/DualPortElements", "mxpic/components/others/simulation/index", "mxpic/components/pdks/AMF_pdk", "mxpic/components/pdks/CUMEC_pdk", "mxpic/components/pdks/IMECAS_pdk", "mxpic/components/pdks/hgl_pdk_A", "mxpic/components/pdks/index", "mxpic/components/pdks/qy_pdk_A", "mxpic/components/pins", "mxpic/components/primitives/EC_dual_layer_px3", "mxpic/components/primitives/active/dev_ps", "mxpic/components/primitives/active/index", "mxpic/components/primitives/active/pin_wg", "mxpic/components/primitives/active/rings", "mxpic/components/primitives/beam_splitters", "mxpic/components/primitives/directional_couplers", "mxpic/components/primitives/grating_couplers", "mxpic/components/primitives/index", "mxpic/components/primitives/multimode_interferometers", "mxpic/components/primitives/passive/crows", "mxpic/components/primitives/passive/index", "mxpic/components/primitives/passive/rings", "mxpic/components/primitives/passive/unit", "mxpic/components/primitives/pic/PBS", "mxpic/components/primitives/pic/YBS", "mxpic/components/primitives/pic/bragg", "mxpic/components/primitives/pic/couplers", "mxpic/components/primitives/pic/cross", "mxpic/components/primitives/pic/gratings", "mxpic/components/primitives/pic/index", "mxpic/components/primitives/pic/mmi", "mxpic/components/primitives/pic/racetrack", "mxpic/components/primitives/pic/rings", "mxpic/components/primitives/pic/spiral", "mxpic/components/primitives/pic/taper", "mxpic/components/primitives/spiral", "mxpic/components/routing"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["index.md", "mxpic/components/basic.md", "mxpic/components/composites/LoopMirror.md", "mxpic/components/composites/MZI.md", "mxpic/components/composites/MZI_mesh.md", "mxpic/components/composites/SptTree.md", "mxpic/components/composites/advance.md", "mxpic/components/composites/index.md", "mxpic/components/electronics/eic_units.md", "mxpic/components/electronics/index.md", "mxpic/components/gds_devices.md", "mxpic/components/geometry/curves.md", "mxpic/components/geometry/index.md", "mxpic/components/geometry/polygons.md", "mxpic/components/geometry/racetrack.md", "mxpic/components/geometry/rings.md", "mxpic/components/index.md", "mxpic/components/others/index.md", "mxpic/components/others/simulation/DualPortElements.md", "mxpic/components/others/simulation/index.md", "mxpic/components/pdks/AMF_pdk.md", "mxpic/components/pdks/CUMEC_pdk.md", "mxpic/components/pdks/IMECAS_pdk.md", "mxpic/components/pdks/hgl_pdk_A.md", "mxpic/components/pdks/index.md", "mxpic/components/pdks/qy_pdk_A.md", "mxpic/components/pins.md", "mxpic/components/primitives/EC_dual_layer_px3.md", "mxpic/components/primitives/active/dev_ps.md", "mxpic/components/primitives/active/index.md", "mxpic/components/primitives/active/pin_wg.md", "mxpic/components/primitives/active/rings.md", "mxpic/components/primitives/beam_splitters.md", "mxpic/components/primitives/directional_couplers.md", "mxpic/components/primitives/grating_couplers.md", "mxpic/components/primitives/index.md", "mxpic/components/primitives/multimode_interferometers.md", "mxpic/components/primitives/passive/crows.md", "mxpic/components/primitives/passive/index.md", "mxpic/components/primitives/passive/rings.md", "mxpic/components/primitives/passive/unit.md", "mxpic/components/primitives/pic/PBS.md", "mxpic/components/primitives/pic/YBS.md", "mxpic/components/primitives/pic/bragg.md", "mxpic/components/primitives/pic/couplers.md", "mxpic/components/primitives/pic/cross.md", "mxpic/components/primitives/pic/gratings.md", "mxpic/components/primitives/pic/index.md", "mxpic/components/primitives/pic/mmi.md", "mxpic/components/primitives/pic/racetrack.md", "mxpic/components/primitives/pic/rings.md", "mxpic/components/primitives/pic/spiral.md", "mxpic/components/primitives/pic/taper.md", "mxpic/components/primitives/spiral.md", "mxpic/components/routing.md"], "indexentries": {"a_ht (mxpic.components.primitives.passive.crows.std_crow_v attribute)": [[37, "mxpic.components.primitives.passive.crows.STD_CROW_V.A_ht", false]], "adc_std_2x2 (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2", false]], "adc_std_2x2 (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2", false]], "add_pin() (mxpic.components.gds_devices.gds_lib_load method)": [[10, "mxpic.components.gds_devices.gds_lib_load.add_pin", false]], "aed_ring (class in mxpic.components.primitives.pic.rings)": [[50, "mxpic.components.primitives.pic.rings.AED_ring", false]], "aed_ring_pin (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.AED_Ring_PIN", false]], "amzi_w (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W", false]], "bend_mine() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_mine", false]], "bend_mine() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_mine", false]], "bend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_p2p", false]], "bend_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_p2p", false]], "bend_route() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_route", false]], "bend_route() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_route", false]], "bend_route_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_route_p2p", false]], "bend_route_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_route_p2p", false]], "bend_strt_bend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_strt_bend_p2p", false]], "bend_strt_bend_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_strt_bend_p2p", false]], "bend_strt_bend_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.bend_strt_bend_p2p_mine", false]], "bend_strt_bend_p2p_mine() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.bend_strt_bend_p2p_mine", false]], "brag_wdm (class in mxpic.components.primitives.passive.unit)": [[40, "mxpic.components.primitives.passive.unit.Brag_WDM", false]], "bragg (class in mxpic.components.primitives.pic.bragg)": [[43, "mxpic.components.primitives.pic.bragg.Bragg", false]], "bragg_apodized (class in mxpic.components.primitives.pic.bragg)": [[43, "mxpic.components.primitives.pic.bragg.Bragg_apodized", false]], "bs_tdc (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.BS_tdc", false]], "bs_tdc (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.BS_tdc", false]], "cell (mxpic.components.primitives.active.dev_ps.ps_pin attribute)": [[28, "mxpic.components.primitives.active.dev_ps.PS_PIN.cell", false]], "cell (mxpic.components.primitives.pic.spiral.spiral_circle attribute)": [[51, "mxpic.components.primitives.pic.spiral.spiral_circle.cell", false]], "cell (mxpic.components.primitives.spiral.spiral_circle attribute)": [[53, "mxpic.components.primitives.spiral.spiral_circle.cell", false]], "circle (class in mxpic.components.geometry.rings)": [[15, "mxpic.components.geometry.rings.circle", false]], "clothoid (class in mxpic.components.geometry.curves)": [[11, "mxpic.components.geometry.curves.Clothoid", false]], "conchoid (class in mxpic.components.geometry.curves)": [[11, "mxpic.components.geometry.curves.Conchoid", false]], "connpatch() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.connPatch", false]], "connpatch() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.connPatch", false]], "cross (class in mxpic.components.primitives.pic.cross)": [[45, "mxpic.components.primitives.pic.cross.Cross", false]], "cross_sine (class in mxpic.components.primitives.pic.cross)": [[45, "mxpic.components.primitives.pic.cross.Cross_Sine", false]], "crow_aed (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_AED", false]], "crow_circular_ring (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_Circular_ring", false]], "crow_eul_rck (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_Eul_RCK", false]], "crow_eul_ring (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_Eul_Ring", false]], "crow_std_adddrop (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_STD_Adddrop", false]], "crow_std_allpass (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.CROW_STD_Allpass", false]], "dc (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.DC", false]], "dc (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.DC", false]], "dc_bend (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.DC_bend", false]], "dc_bend (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.DC_bend", false]], "dc_px_3sg (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.DC_pX_3sg", false]], "dc_px_3sg (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.DC_pX_3sg", false]], "ec_dual_layer_px3 (class in mxpic.components.primitives.ec_dual_layer_px3)": [[27, "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3", false]], "elipse (class in mxpic.components.geometry.rings)": [[15, "mxpic.components.geometry.rings.Elipse", false]], "elipse_dual (class in mxpic.components.geometry.rings)": [[15, "mxpic.components.geometry.rings.Elipse_dual", false]], "fa (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.FA", false]], "fa (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.FA", false]], "gc_sin_si_dual_layer (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer", false]], "gc_std_1d (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_1D", false]], "gc_std_1d (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_1D", false]], "gc_std_2d (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_2D", false]], "gc_std_2d (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_2D", false]], "gds_lib_load (class in mxpic.components.gds_devices)": [[10, "mxpic.components.gds_devices.gds_lib_load", false]], "generate_2pi_gds() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_2pi_gds", false]], "generate_eic_gds() (mxpic.components.primitives.passive.crows.std_crow_v method)": [[37, "mxpic.components.primitives.passive.crows.STD_CROW_V.generate_eic_gds", false]], "generate_eic_gds() (mxpic.components.primitives.passive.rings.mrr_aed method)": [[39, "mxpic.components.primitives.passive.rings.MRR_AED.generate_eic_gds", false]], "generate_eic_gds() (mxpic.components.primitives.pic.racetrack.racetrack_std_allpass method)": [[49, "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass.generate_eic_gds", false]], "generate_eic_part() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_eic_part", false]], "generate_eic_part() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_eic_part", false]], "generate_err() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[33, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_err", false]], "generate_err() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[44, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_err", false]], "generate_gds() (mxpic.components.composites.mzi.mzi_butterfly method)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.amzi_w method)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.mzi_mesh_u method)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_U.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.umat_2x2_s method)": [[4, "mxpic.components.composites.MZI_mesh.UMat_2x2_S.generate_gds", false]], "generate_gds() (mxpic.components.composites.mzi_mesh.w_waveguide method)": [[4, "mxpic.components.composites.MZI_mesh.W_waveguide.generate_gds", false]], "generate_gds() (mxpic.components.composites.spttree.splittingtree method)": [[5, "mxpic.components.composites.SptTree.SplittingTree.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.pad method)": [[8, "mxpic.components.electronics.eic_units.PAD.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.pads method)": [[8, "mxpic.components.electronics.eic_units.PADs.generate_gds", false]], "generate_gds() (mxpic.components.electronics.eic_units.vias method)": [[8, "mxpic.components.electronics.eic_units.Vias.generate_gds", false]], "generate_gds() (mxpic.components.geometry.curves.clothoid method)": [[11, "mxpic.components.geometry.curves.Clothoid.generate_gds", false]], "generate_gds() (mxpic.components.geometry.racetrack.racetrack method)": [[14, "mxpic.components.geometry.racetrack.Racetrack.generate_gds", false]], "generate_gds() (mxpic.components.geometry.rings.elipse method)": [[15, "mxpic.components.geometry.rings.Elipse.generate_gds", false]], "generate_gds() (mxpic.components.geometry.rings.elipse_dual method)": [[15, "mxpic.components.geometry.rings.Elipse_dual.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.dev_ps.heater_ndoped method)": [[28, "mxpic.components.primitives.active.dev_ps.Heater_NDoped.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.dev_ps.ps_pin method)": [[28, "mxpic.components.primitives.active.dev_ps.PS_PIN.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.pin_wg.waveguide_pin method)": [[30, "mxpic.components.primitives.active.pin_wg.waveguide_PIN.generate_gds", false]], "generate_gds() (mxpic.components.primitives.active.pin_wg.wgdoped method)": [[30, "mxpic.components.primitives.active.pin_wg.WGDoped.generate_gds", false]], "generate_gds() (mxpic.components.primitives.beam_splitters.ybranch method)": [[32, "mxpic.components.primitives.beam_splitters.YBranch.generate_gds", false]], "generate_gds() (mxpic.components.primitives.beam_splitters.ybranch_3wg method)": [[32, "mxpic.components.primitives.beam_splitters.Ybranch_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[33, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.dc_bend method)": [[33, "mxpic.components.primitives.directional_couplers.DC_bend.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.dc_px_3sg method)": [[33, "mxpic.components.primitives.directional_couplers.DC_pX_3sg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.directional_couplers.ring_bus_wg method)": [[33, "mxpic.components.primitives.directional_couplers.ring_bus_wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.ec_dual_layer_px3.ec_dual_layer_px3 method)": [[27, "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.gc_sin_si_dual_layer method)": [[34, "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.grating_2d_hole method)": [[34, "mxpic.components.primitives.grating_couplers.Grating_2D_Hole.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[34, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds", false]], "generate_gds() (mxpic.components.primitives.grating_couplers.taper method)": [[34, "mxpic.components.primitives.grating_couplers.Taper.generate_gds", false]], "generate_gds() (mxpic.components.primitives.multimode_interferometers.mmi_ml method)": [[36, "mxpic.components.primitives.multimode_interferometers.MMI_ML.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.rings.std_ring_amzi_adddrop method)": [[39, "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.unit.ps_2st method)": [[40, "mxpic.components.primitives.passive.unit.PS_2st.generate_gds", false]], "generate_gds() (mxpic.components.primitives.passive.unit.ps_2st_straight method)": [[40, "mxpic.components.primitives.passive.unit.PS_2st_Straight.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[44, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.dc_bend method)": [[44, "mxpic.components.primitives.pic.couplers.DC_bend.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.dc_px_3sg method)": [[44, "mxpic.components.primitives.pic.couplers.DC_pX_3sg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.couplers.ring_bus_wg method)": [[44, "mxpic.components.primitives.pic.couplers.ring_bus_wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.cross.cross method)": [[45, "mxpic.components.primitives.pic.cross.Cross.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole method)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole_3rec method)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.grating_2d_hole_4rec method)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[46, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.gratings.taper method)": [[46, "mxpic.components.primitives.pic.gratings.Taper.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.mmi.mmi_ml method)": [[48, "mxpic.components.primitives.pic.mmi.MMI_ML.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.pbs.pbs_3wg method)": [[41, "mxpic.components.primitives.pic.PBS.PBS_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.racetrack.racetrackresonator method)": [[49, "mxpic.components.primitives.pic.racetrack.RacetrackResonator.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral method)": [[51, "mxpic.components.primitives.pic.spiral.spiral.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral_circle method)": [[51, "mxpic.components.primitives.pic.spiral.spiral_circle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.spiral.spiral_rectangle method)": [[51, "mxpic.components.primitives.pic.spiral.spiral_rectangle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.ybs.ybranch method)": [[42, "mxpic.components.primitives.pic.YBS.YBranch.generate_gds", false]], "generate_gds() (mxpic.components.primitives.pic.ybs.ybranch_3wg method)": [[42, "mxpic.components.primitives.pic.YBS.Ybranch_3wg.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral method)": [[53, "mxpic.components.primitives.spiral.spiral.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral_circle method)": [[53, "mxpic.components.primitives.spiral.spiral_circle.generate_gds", false]], "generate_gds() (mxpic.components.primitives.spiral.spiral_rectangle method)": [[53, "mxpic.components.primitives.spiral.spiral_rectangle.generate_gds", false]], "generate_gds_error() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[34, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds_error", false]], "generate_gds_error() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[46, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds_error", false]], "generate_gds_lib() (in module mxpic.components.gds_devices)": [[10, "mxpic.components.gds_devices.generate_gds_lib", false]], "generate_gds_positive() (mxpic.components.primitives.grating_couplers.nano_ant method)": [[34, "mxpic.components.primitives.grating_couplers.Nano_ant.generate_gds_positive", false]], "generate_gds_positive() (mxpic.components.primitives.pic.gratings.nano_ant method)": [[46, "mxpic.components.primitives.pic.gratings.Nano_ant.generate_gds_positive", false]], "generate_imp_gds() (mxpic.components.primitives.active.rings.aed_ring_pin method)": [[31, "mxpic.components.primitives.active.rings.AED_Ring_PIN.generate_imp_gds", false]], "generate_mzi_gds() (mxpic.components.primitives.active.dev_ps.ps_pin method)": [[28, "mxpic.components.primitives.active.dev_ps.PS_PIN.generate_mzi_gds", false]], "generate_negative() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.bragg.bragg_apodized method)": [[43, "mxpic.components.primitives.pic.bragg.Bragg_apodized.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_negative", false]], "generate_negative() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_negative", false]], "generate_pic_gds() (mxpic.components.primitives.passive.crows.std_crow_v method)": [[37, "mxpic.components.primitives.passive.crows.STD_CROW_V.generate_pic_gds", false]], "generate_pic_gds() (mxpic.components.primitives.pic.rings.aed_ring method)": [[50, "mxpic.components.primitives.pic.rings.AED_ring.generate_pic_gds", false]], "generate_pic_part() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_pic_part", false]], "generate_pic_part() (mxpic.components.primitives.passive.rings.socr_adiabatic method)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic.generate_pic_part", false]], "generate_positive() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.bragg.bragg_apodized method)": [[43, "mxpic.components.primitives.pic.bragg.Bragg_apodized.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_positive", false]], "generate_positive() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_positive", false]], "generate_test_dev() (mxpic.components.primitives.grating_couplers.gc_std_1d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_1D.generate_test_dev", false]], "generate_test_dev() (mxpic.components.primitives.pic.gratings.gc_std_1d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_1D.generate_test_dev", false]], "generate_test_gds() (mxpic.components.composites.mzi.mzi_butterfly method)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly.generate_test_gds", false]], "generate_test_gds() (mxpic.components.composites.mzi_mesh.amzi_w method)": [[4, "mxpic.components.composites.MZI_mesh.AMZI_W.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.active.dev_ps.heater_ndoped method)": [[28, "mxpic.components.primitives.active.dev_ps.Heater_NDoped.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.beam_splitters.ybranch_3wg method)": [[32, "mxpic.components.primitives.beam_splitters.Ybranch_3wg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.adc_std_2x2 method)": [[33, "mxpic.components.primitives.directional_couplers.ADC_STD_2x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc method)": [[33, "mxpic.components.primitives.directional_couplers.DC.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc_bend method)": [[33, "mxpic.components.primitives.directional_couplers.DC_bend.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.dc_px_3sg method)": [[33, "mxpic.components.primitives.directional_couplers.DC_pX_3sg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.directional_couplers.mdm method)": [[33, "mxpic.components.primitives.directional_couplers.MDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.grating_couplers.gc_std_2d method)": [[34, "mxpic.components.primitives.grating_couplers.GC_STD_2D.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.multimode_interferometers.mmi_ml method)": [[36, "mxpic.components.primitives.multimode_interferometers.MMI_ML.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.unit.brag_wdm method)": [[40, "mxpic.components.primitives.passive.unit.Brag_WDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.passive.unit.psr_1x2 method)": [[40, "mxpic.components.primitives.passive.unit.PSR_1x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.adc_std_2x2 method)": [[44, "mxpic.components.primitives.pic.couplers.ADC_STD_2x2.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc method)": [[44, "mxpic.components.primitives.pic.couplers.DC.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc_bend method)": [[44, "mxpic.components.primitives.pic.couplers.DC_bend.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.dc_px_3sg method)": [[44, "mxpic.components.primitives.pic.couplers.DC_pX_3sg.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.couplers.mdm method)": [[44, "mxpic.components.primitives.pic.couplers.MDM.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.cross.cross method)": [[45, "mxpic.components.primitives.pic.cross.Cross.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.gratings.gc_std_2d method)": [[46, "mxpic.components.primitives.pic.gratings.GC_STD_2D.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.mmi.mmi_ml method)": [[48, "mxpic.components.primitives.pic.mmi.MMI_ML.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.rings.aed_ring method)": [[50, "mxpic.components.primitives.pic.rings.AED_ring.generate_test_gds", false]], "generate_test_gds() (mxpic.components.primitives.pic.ybs.ybranch_3wg method)": [[42, "mxpic.components.primitives.pic.YBS.Ybranch_3wg.generate_test_gds", false]], "generate_test_mzi_gds() (mxpic.components.primitives.passive.rings.socr method)": [[39, "mxpic.components.primitives.passive.rings.SOCR.generate_test_mzi_gds", false]], "grating_2d_hole (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.Grating_2D_Hole", false]], "grating_2d_hole (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole", false]], "grating_2d_hole_3rec (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec", false]], "grating_2d_hole_4rec (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec", false]], "heater_ndoped (class in mxpic.components.primitives.active.dev_ps)": [[28, "mxpic.components.primitives.active.dev_ps.Heater_NDoped", false]], "hole (class in mxpic.components.geometry.rings)": [[15, "mxpic.components.geometry.rings.hole", false]], "ic_exception() (in module mxpic.components.routing)": [[54, "mxpic.components.routing.ic_exception", false]], "isl (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.ISL", false]], "line_mm() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.line_mm", false]], "line_mm() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.line_mm", false]], "loopmirror (class in mxpic.components.composites.loopmirror)": [[2, "mxpic.components.composites.LoopMirror.LoopMirror", false]], "mdm (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.MDM", false]], "mdm (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.MDM", false]], "mmi_ml (class in mxpic.components.primitives.multimode_interferometers)": [[36, "mxpic.components.primitives.multimode_interferometers.MMI_ML", false]], "mmi_ml (class in mxpic.components.primitives.pic.mmi)": [[48, "mxpic.components.primitives.pic.mmi.MMI_ML", false]], "mmi_std (class in mxpic.components.primitives.multimode_interferometers)": [[36, "mxpic.components.primitives.multimode_interferometers.MMI_STD", false]], "mmi_std (class in mxpic.components.primitives.pic.mmi)": [[48, "mxpic.components.primitives.pic.mmi.MMI_STD", false]], "module": [[2, "module-mxpic.components.composites.LoopMirror", false], [3, "module-mxpic.components.composites.MZI", false], [4, "module-mxpic.components.composites.MZI_mesh", false], [5, "module-mxpic.components.composites.SptTree", false], [8, "module-mxpic.components.electronics.eic_units", false], [10, "module-mxpic.components.gds_devices", false], [11, "module-mxpic.components.geometry.curves", false], [13, "module-mxpic.components.geometry.polygons", false], [14, "module-mxpic.components.geometry.racetrack", false], [15, "module-mxpic.components.geometry.rings", false], [27, "module-mxpic.components.primitives.EC_dual_layer_px3", false], [28, "module-mxpic.components.primitives.active.dev_ps", false], [30, "module-mxpic.components.primitives.active.pin_wg", false], [31, "module-mxpic.components.primitives.active.rings", false], [32, "module-mxpic.components.primitives.beam_splitters", false], [33, "module-mxpic.components.primitives.directional_couplers", false], [34, "module-mxpic.components.primitives.grating_couplers", false], [36, "module-mxpic.components.primitives.multimode_interferometers", false], [37, "module-mxpic.components.primitives.passive.crows", false], [39, "module-mxpic.components.primitives.passive.rings", false], [40, "module-mxpic.components.primitives.passive.unit", false], [41, "module-mxpic.components.primitives.pic.PBS", false], [42, "module-mxpic.components.primitives.pic.YBS", false], [43, "module-mxpic.components.primitives.pic.bragg", false], [44, "module-mxpic.components.primitives.pic.couplers", false], [45, "module-mxpic.components.primitives.pic.cross", false], [46, "module-mxpic.components.primitives.pic.gratings", false], [48, "module-mxpic.components.primitives.pic.mmi", false], [49, "module-mxpic.components.primitives.pic.racetrack", false], [50, "module-mxpic.components.primitives.pic.rings", false], [51, "module-mxpic.components.primitives.pic.spiral", false], [52, "module-mxpic.components.primitives.pic.taper", false], [53, "module-mxpic.components.primitives.spiral", false], [54, "module-mxpic.components.routing", false]], "mrr_aed (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_AED", false]], "mrr_dw_adddrop (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_DW_Adddrop", false]], "mrr_dw_allpass (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_DW_Allpass", false]], "mrr_mm_adddrop (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_MM_Adddrop", false]], "mrr_mm_allpass (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_MM_Allpass", false]], "mrr_std_adddrop (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_STD_Adddrop", false]], "mrr_std_allpass (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_STD_Allpass", false]], "mrr_std_ring (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.MRR_STD_Ring", false]], "mx_bend (class in mxpic.components.geometry.rings)": [[15, "mxpic.components.geometry.rings.mx_bend", false]], "mxpic.components.composites.loopmirror": [[2, "module-mxpic.components.composites.LoopMirror", false]], "mxpic.components.composites.mzi": [[3, "module-mxpic.components.composites.MZI", false]], "mxpic.components.composites.mzi_mesh": [[4, "module-mxpic.components.composites.MZI_mesh", false]], "mxpic.components.composites.spttree": [[5, "module-mxpic.components.composites.SptTree", false]], "mxpic.components.electronics.eic_units": [[8, "module-mxpic.components.electronics.eic_units", false]], "mxpic.components.gds_devices": [[10, "module-mxpic.components.gds_devices", false]], "mxpic.components.geometry.curves": [[11, "module-mxpic.components.geometry.curves", false]], "mxpic.components.geometry.polygons": [[13, "module-mxpic.components.geometry.polygons", false]], "mxpic.components.geometry.racetrack": [[14, "module-mxpic.components.geometry.racetrack", false]], "mxpic.components.geometry.rings": [[15, "module-mxpic.components.geometry.rings", false]], "mxpic.components.primitives.active.dev_ps": [[28, "module-mxpic.components.primitives.active.dev_ps", false]], "mxpic.components.primitives.active.pin_wg": [[30, "module-mxpic.components.primitives.active.pin_wg", false]], "mxpic.components.primitives.active.rings": [[31, "module-mxpic.components.primitives.active.rings", false]], "mxpic.components.primitives.beam_splitters": [[32, "module-mxpic.components.primitives.beam_splitters", false]], "mxpic.components.primitives.directional_couplers": [[33, "module-mxpic.components.primitives.directional_couplers", false]], "mxpic.components.primitives.ec_dual_layer_px3": [[27, "module-mxpic.components.primitives.EC_dual_layer_px3", false]], "mxpic.components.primitives.grating_couplers": [[34, "module-mxpic.components.primitives.grating_couplers", false]], "mxpic.components.primitives.multimode_interferometers": [[36, "module-mxpic.components.primitives.multimode_interferometers", false]], "mxpic.components.primitives.passive.crows": [[37, "module-mxpic.components.primitives.passive.crows", false]], "mxpic.components.primitives.passive.rings": [[39, "module-mxpic.components.primitives.passive.rings", false]], "mxpic.components.primitives.passive.unit": [[40, "module-mxpic.components.primitives.passive.unit", false]], "mxpic.components.primitives.pic.bragg": [[43, "module-mxpic.components.primitives.pic.bragg", false]], "mxpic.components.primitives.pic.couplers": [[44, "module-mxpic.components.primitives.pic.couplers", false]], "mxpic.components.primitives.pic.cross": [[45, "module-mxpic.components.primitives.pic.cross", false]], "mxpic.components.primitives.pic.gratings": [[46, "module-mxpic.components.primitives.pic.gratings", false]], "mxpic.components.primitives.pic.mmi": [[48, "module-mxpic.components.primitives.pic.mmi", false]], "mxpic.components.primitives.pic.pbs": [[41, "module-mxpic.components.primitives.pic.PBS", false]], "mxpic.components.primitives.pic.racetrack": [[49, "module-mxpic.components.primitives.pic.racetrack", false]], "mxpic.components.primitives.pic.rings": [[50, "module-mxpic.components.primitives.pic.rings", false]], "mxpic.components.primitives.pic.spiral": [[51, "module-mxpic.components.primitives.pic.spiral", false]], "mxpic.components.primitives.pic.taper": [[52, "module-mxpic.components.primitives.pic.taper", false]], "mxpic.components.primitives.pic.ybs": [[42, "module-mxpic.components.primitives.pic.YBS", false]], "mxpic.components.primitives.spiral": [[53, "module-mxpic.components.primitives.spiral", false]], "mxpic.components.routing": [[54, "module-mxpic.components.routing", false]], "mzi (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI", false]], "mzi_2st_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_2st_ubend", false]], "mzi_butterfly (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Butterfly", false]], "mzi_eubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Eubend", false]], "mzi_mesh_parl (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_Parl", false]], "mzi_mesh_tri (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_Tri", false]], "mzi_mesh_u (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.MZI_mesh_U", false]], "mzi_ns (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_NS", false]], "mzi_ns_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_NS_ubend", false]], "mzi_ubend (class in mxpic.components.composites.mzi)": [[3, "mxpic.components.composites.MZI.MZI_Ubend", false]], "nano_ant (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.Nano_ant", false]], "nano_ant (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.Nano_ant", false]], "opt_euler() (mxpic.components.primitives.pic.spiral.spiral_circle method)": [[51, "mxpic.components.primitives.pic.spiral.spiral_circle.opt_euler", false]], "opt_euler() (mxpic.components.primitives.spiral.spiral_circle method)": [[53, "mxpic.components.primitives.spiral.spiral_circle.opt_euler", false]], "pad (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.PAD", false]], "pads (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.PADs", false]], "pbs_3wg (class in mxpic.components.primitives.pic.pbs)": [[41, "mxpic.components.primitives.pic.PBS.PBS_3wg", false]], "pin_mrr_mm_adddrop (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.PIN_MRR_MM_Adddrop", false]], "pin_mrr_mm_allpass (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.PIN_MRR_MM_Allpass", false]], "pin_mrr_std_allpass (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.PIN_MRR_STD_Allpass", false]], "ps_2st (class in mxpic.components.primitives.passive.unit)": [[40, "mxpic.components.primitives.passive.unit.PS_2st", false]], "ps_2st_straight (class in mxpic.components.primitives.passive.unit)": [[40, "mxpic.components.primitives.passive.unit.PS_2st_Straight", false]], "ps_pin (class in mxpic.components.primitives.active.dev_ps)": [[28, "mxpic.components.primitives.active.dev_ps.PS_PIN", false]], "psr (class in mxpic.components.primitives.pic.taper)": [[52, "mxpic.components.primitives.pic.taper.PSR", false]], "psr_1x2 (class in mxpic.components.primitives.passive.unit)": [[40, "mxpic.components.primitives.passive.unit.PSR_1x2", false]], "racetrack (class in mxpic.components.geometry.racetrack)": [[14, "mxpic.components.geometry.racetrack.Racetrack", false]], "racetrack_mm_adddrop (class in mxpic.components.primitives.pic.racetrack)": [[49, "mxpic.components.primitives.pic.racetrack.Racetrack_MM_Adddrop", false]], "racetrack_mm_allpass (class in mxpic.components.primitives.pic.racetrack)": [[49, "mxpic.components.primitives.pic.racetrack.Racetrack_MM_Allpass", false]], "racetrack_std_allpass (class in mxpic.components.primitives.pic.racetrack)": [[49, "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass", false]], "racetrackresonator (class in mxpic.components.primitives.pic.racetrack)": [[49, "mxpic.components.primitives.pic.racetrack.RacetrackResonator", false]], "ring_bus_wg (class in mxpic.components.primitives.directional_couplers)": [[33, "mxpic.components.primitives.directional_couplers.ring_bus_wg", false]], "ring_bus_wg (class in mxpic.components.primitives.pic.couplers)": [[44, "mxpic.components.primitives.pic.couplers.ring_bus_wg", false]], "route (class in mxpic.components.primitives.active.dev_ps)": [[28, "mxpic.components.primitives.active.dev_ps.Route", false]], "route (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.Route", false]], "route (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.Route", false]], "route (class in mxpic.components.primitives.pic.racetrack)": [[49, "mxpic.components.primitives.pic.racetrack.Route", false]], "route (class in mxpic.components.routing)": [[54, "mxpic.components.routing.Route", false]], "rt_bend() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.rt_bend", false]], "rt_bend() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.rt_bend", false]], "sbend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.sbend_p2p", false]], "sbend_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.sbend_p2p", false]], "sbend_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.sbend_p2p_mine", false]], "sbend_p2p_mine() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.sbend_p2p_mine", false]], "sbend_route() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.sbend_route", false]], "sbend_route() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.sbend_route", false]], "socr (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.SOCR", false]], "socr_adiabatic (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic", false]], "socr_adiabatic_cband (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband", false]], "socr_cband (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.SOCR_Cband", false]], "spiral (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.spiral", false]], "spiral (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.spiral", false]], "spiral_cicle_mm (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.Spiral_Cicle_MM", false]], "spiral_cicle_mm (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.Spiral_Cicle_MM", false]], "spiral_cicle_std (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.Spiral_Cicle_STD", false]], "spiral_cicle_std (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.Spiral_Cicle_STD", false]], "spiral_circle (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.spiral_circle", false]], "spiral_circle (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.spiral_circle", false]], "spiral_rect_std (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.Spiral_Rect_STD", false]], "spiral_rect_std (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.Spiral_Rect_STD", false]], "spiral_rectangle (class in mxpic.components.primitives.pic.spiral)": [[51, "mxpic.components.primitives.pic.spiral.spiral_rectangle", false]], "spiral_rectangle (class in mxpic.components.primitives.spiral)": [[53, "mxpic.components.primitives.spiral.spiral_rectangle", false]], "splittingtree (class in mxpic.components.composites.spttree)": [[5, "mxpic.components.composites.SptTree.SplittingTree", false]], "std_crow_v (class in mxpic.components.primitives.passive.crows)": [[37, "mxpic.components.primitives.passive.crows.STD_CROW_V", false]], "std_pic_rings (class in mxpic.components.primitives.pic.rings)": [[50, "mxpic.components.primitives.pic.rings.STD_PIC_Rings", false]], "std_ring_amzi_adddrop (class in mxpic.components.primitives.passive.rings)": [[39, "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop", false]], "std_ring_pin (class in mxpic.components.primitives.active.rings)": [[31, "mxpic.components.primitives.active.rings.STD_Ring_PIN", false]], "strt() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.strt", false]], "strt() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.strt", false]], "strt_bend_strt_p2p_mine() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.strt_bend_strt_p2p_mine", false]], "strt_bend_strt_p2p_mine() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.strt_bend_strt_p2p_mine", false]], "strt_mm() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.strt_mm", false]], "strt_mm() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.strt_mm", false]], "strt_mm_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.strt_mm_p2p", false]], "strt_mm_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.strt_mm_p2p", false]], "strt_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.strt_p2p", false]], "strt_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.strt_p2p", false]], "strt_round_courner (class in mxpic.components.geometry.polygons)": [[13, "mxpic.components.geometry.polygons.strt_round_courner", false]], "szvia (mxpic.components.electronics.eic_units.vias attribute)": [[8, "mxpic.components.electronics.eic_units.Vias.szVia", false]], "taper (class in mxpic.components.primitives.grating_couplers)": [[34, "mxpic.components.primitives.grating_couplers.Taper", false]], "taper (class in mxpic.components.primitives.pic.gratings)": [[46, "mxpic.components.primitives.pic.gratings.Taper", false]], "taper() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.taper", false]], "taper() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.taper", false]], "taper_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.taper_p2p", false]], "taper_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.taper_p2p", false]], "taper_xs2xs (class in mxpic.components.primitives.pic.taper)": [[52, "mxpic.components.primitives.pic.taper.taper_xs2xs", false]], "transition (class in mxpic.components.primitives.pic.taper)": [[52, "mxpic.components.primitives.pic.taper.transition", false]], "tube_mine() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.tube_mine", false]], "tube_mine() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.tube_mine", false]], "ubend_p2p() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.ubend_p2p", false]], "ubend_p2p() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.ubend_p2p", false]], "ubend_route() (mxpic.components.primitives.passive.rings.route method)": [[39, "mxpic.components.primitives.passive.rings.Route.ubend_route", false]], "ubend_route() (mxpic.components.routing.route method)": [[54, "mxpic.components.routing.Route.ubend_route", false]], "umat_2x2_s (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.UMat_2x2_S", false]], "vias (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.Vias", false]], "vias_arc (class in mxpic.components.electronics.eic_units)": [[8, "mxpic.components.electronics.eic_units.Vias_arc", false]], "w_waveguide (class in mxpic.components.composites.mzi_mesh)": [[4, "mxpic.components.composites.MZI_mesh.W_waveguide", false]], "waveguide (class in mxpic.components.primitives.passive.unit)": [[40, "mxpic.components.primitives.passive.unit.waveguide", false]], "waveguide_pin (class in mxpic.components.primitives.active.pin_wg)": [[30, "mxpic.components.primitives.active.pin_wg.waveguide_PIN", false]], "wgdoped (class in mxpic.components.primitives.active.pin_wg)": [[30, "mxpic.components.primitives.active.pin_wg.WGDoped", false]], "ybranch (class in mxpic.components.primitives.beam_splitters)": [[32, "mxpic.components.primitives.beam_splitters.YBranch", false]], "ybranch (class in mxpic.components.primitives.pic.ybs)": [[42, "mxpic.components.primitives.pic.YBS.YBranch", false]], "ybranch_3wg (class in mxpic.components.primitives.beam_splitters)": [[32, "mxpic.components.primitives.beam_splitters.Ybranch_3wg", false]], "ybranch_3wg (class in mxpic.components.primitives.pic.ybs)": [[42, "mxpic.components.primitives.pic.YBS.Ybranch_3wg", false]]}, "objects": {"mxpic.components": [[1, 0, 0, "-", "basic"], [10, 0, 0, "-", "gds_devices"], [26, 0, 0, "-", "pins"], [54, 0, 0, "-", "routing"]], "mxpic.components.composites": [[2, 0, 0, "-", "LoopMirror"], [3, 0, 0, "-", "MZI"], [4, 0, 0, "-", "MZI_mesh"], [5, 0, 0, "-", "SptTree"], [6, 0, 0, "-", "advance"]], "mxpic.components.composites.LoopMirror": [[2, 1, 1, "", "LoopMirror"]], "mxpic.components.composites.MZI": [[3, 1, 1, "", "MZI"], [3, 1, 1, "", "MZI_2st_ubend"], [3, 1, 1, "", "MZI_Butterfly"], [3, 1, 1, "", "MZI_Eubend"], [3, 1, 1, "", "MZI_NS"], [3, 1, 1, "", "MZI_NS_ubend"], [3, 1, 1, "", "MZI_Ubend"]], "mxpic.components.composites.MZI.MZI_Butterfly": [[3, 2, 1, "", "generate_gds"], [3, 2, 1, "", "generate_test_gds"]], "mxpic.components.composites.MZI_mesh": [[4, 1, 1, "", "AMZI_W"], [4, 1, 1, "", "MZI_mesh_Parl"], [4, 1, 1, "", "MZI_mesh_Tri"], [4, 1, 1, "", "MZI_mesh_U"], [4, 1, 1, "", "UMat_2x2_S"], [4, 1, 1, "", "W_waveguide"]], "mxpic.components.composites.MZI_mesh.AMZI_W": [[4, 2, 1, "", "generate_gds"], [4, 2, 1, "", "generate_test_gds"]], "mxpic.components.composites.MZI_mesh.MZI_mesh_U": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.MZI_mesh.UMat_2x2_S": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.MZI_mesh.W_waveguide": [[4, 2, 1, "", "generate_gds"]], "mxpic.components.composites.SptTree": [[5, 1, 1, "", "SplittingTree"]], "mxpic.components.composites.SptTree.SplittingTree": [[5, 2, 1, "", "generate_gds"]], "mxpic.components.electronics": [[8, 0, 0, "-", "eic_units"]], "mxpic.components.electronics.eic_units": [[8, 1, 1, "", "ISL"], [8, 1, 1, "", "PAD"], [8, 1, 1, "", "PADs"], [8, 1, 1, "", "Vias"], [8, 1, 1, "", "Vias_arc"]], "mxpic.components.electronics.eic_units.PAD": [[8, 2, 1, "", "generate_gds"]], "mxpic.components.electronics.eic_units.PADs": [[8, 2, 1, "", "generate_gds"]], "mxpic.components.electronics.eic_units.Vias": [[8, 2, 1, "", "generate_gds"], [8, 3, 1, "", "szVia"]], "mxpic.components.gds_devices": [[10, 1, 1, "", "gds_lib_load"], [10, 4, 1, "", "generate_gds_lib"]], "mxpic.components.gds_devices.gds_lib_load": [[10, 2, 1, "", "add_pin"]], "mxpic.components.geometry": [[11, 0, 0, "-", "curves"], [13, 0, 0, "-", "polygons"], [14, 0, 0, "-", "racetrack"], [15, 0, 0, "-", "rings"]], "mxpic.components.geometry.curves": [[11, 1, 1, "", "Clothoid"], [11, 1, 1, "", "Conchoid"]], "mxpic.components.geometry.curves.Clothoid": [[11, 2, 1, "", "generate_gds"]], "mxpic.components.geometry.polygons": [[13, 1, 1, "", "strt_round_courner"]], "mxpic.components.geometry.racetrack": [[14, 1, 1, "", "Racetrack"]], "mxpic.components.geometry.racetrack.Racetrack": [[14, 2, 1, "", "generate_gds"]], "mxpic.components.geometry.rings": [[15, 1, 1, "", "Elipse"], [15, 1, 1, "", "Elipse_dual"], [15, 1, 1, "", "circle"], [15, 1, 1, "", "hole"], [15, 1, 1, "", "mx_bend"]], "mxpic.components.geometry.rings.Elipse": [[15, 2, 1, "", "generate_gds"]], "mxpic.components.geometry.rings.Elipse_dual": [[15, 2, 1, "", "generate_gds"]], "mxpic.components.others.simulation": [[18, 0, 0, "-", "DualPortElements"]], "mxpic.components.others.simulation.DualPortElements": [[18, 4, 1, "", "DEVICE_2X2_FDTD_INIT"], [18, 1, 1, "", "DEVICE_COUPLER"], [18, 1, 1, "", "DEVICE_PORTS"], [18, 1, 1, "", "DEVICE_RING_BUS"], [18, 1, 1, "", "EULER_CROW_BUS"], [18, 1, 1, "", "EULER_CROW_INTER_CP"], [18, 4, 1, "", "MonitorParas"], [18, 4, 1, "", "PortParas"], [18, 1, 1, "", "RESONATOR"], [18, 1, 1, "", "RING_PHASE"], [18, 4, 1, "", "SimuDataFigurePlot"], [18, 4, 1, "", "tuple_to_complex"]], "mxpic.components.others.simulation.DualPortElements.DEVICE_PORTS": [[18, 3, 1, "", "FolderPath"]], "mxpic.components.pdks": [[20, 0, 0, "-", "AMF_pdk"], [21, 0, 0, "-", "CUMEC_pdk"], [22, 0, 0, "-", "IMECAS_pdk"], [23, 0, 0, "-", "hgl_pdk_A"], [25, 0, 0, "-", "qy_pdk_A"]], "mxpic.components.pdks.AMF_pdk": [[20, 1, 1, "", "GC_TE_1310"], [20, 1, 1, "", "GC_TE_1550"], [20, 1, 1, "", "PD_Cband_Cell"]], "mxpic.components.pdks.CUMEC_pdk": [[21, 1, 1, "", "CRX_TE_1550"], [21, 1, 1, "", "EC_1550"], [21, 1, 1, "", "GC_TE_1310"], [21, 1, 1, "", "GC_TE_1550"], [21, 1, 1, "", "GC_TM_1550"], [21, 1, 1, "", "GPD_1550"], [21, 1, 1, "", "MMI_1x2_TE_1310"], [21, 1, 1, "", "MMI_1x2_TE_1550"], [21, 1, 1, "", "MMI_2x2_TE_1550"], [21, 1, 1, "", "PAD_60_80"], [21, 1, 1, "", "PBS_1550"]], "mxpic.components.pdks.CUMEC_pdk.CRX_TE_1550": [[21, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.GC_TE_1550": [[21, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.GC_TM_1550": [[21, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1550": [[21, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.IMECAS_pdk": [[22, 1, 1, "", "CRX_TE_1310"], [22, 1, 1, "", "CRX_TE_1550"], [22, 1, 1, "", "DC_TE_1550"], [22, 1, 1, "", "EC_TE_1550"], [22, 1, 1, "", "GC_TE_1310"], [22, 1, 1, "", "GC_TE_1550"], [22, 1, 1, "", "GC_TM_1310"], [22, 1, 1, "", "GC_TM_1550"], [22, 1, 1, "", "MMI_1x2_TE_1310"], [22, 1, 1, "", "MMI_1x2_TE_1550"], [22, 1, 1, "", "MMI_2x2_TE_1310"], [22, 1, 1, "", "MMI_2x2_TE_1550"], [22, 1, 1, "", "Template"], [22, 1, 1, "", "Ybranch_TE"]], "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1310": [[22, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.IMECAS_pdk.CRX_TE_1550": [[22, 2, 1, "", "generate_test_gds"]], "mxpic.components.pdks.hgl_pdk_A": [[23, 1, 1, "", "DC_bend_20_80_Cband"], [23, 1, 1, "", "DC_bend_4_96_Cband"], [23, 1, 1, "", "DC_bend_50_50_Cband"]], "mxpic.components.pdks.qy_pdk_A": [[25, 1, 1, "", "DC_pX3_50_50_Cband"], [25, 1, 1, "", "MDM_ADC_TE1_1550"], [25, 1, 1, "", "MDM_ADC_TE2_1550"], [25, 1, 1, "", "MDM_ADC_TE3_1550"], [25, 1, 1, "", "MMG_1D_D14um_1550_2modes"]], "mxpic.components.pdks.qy_pdk_A.DC_pX3_50_50_Cband": [[25, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE1_1550": [[25, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE2_1550": [[25, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE3_1550": [[25, 2, 1, "", "generate_gds_lib"]], "mxpic.components.pdks.qy_pdk_A.MMG_1D_D14um_1550_2modes": [[25, 2, 1, "", "generate_gds_lib"]], "mxpic.components.primitives": [[27, 0, 0, "-", "EC_dual_layer_px3"], [32, 0, 0, "-", "beam_splitters"], [33, 0, 0, "-", "directional_couplers"], [34, 0, 0, "-", "grating_couplers"], [36, 0, 0, "-", "multimode_interferometers"], [53, 0, 0, "-", "spiral"]], "mxpic.components.primitives.EC_dual_layer_px3": [[27, 1, 1, "", "EC_dual_layer_px3"]], "mxpic.components.primitives.EC_dual_layer_px3.EC_dual_layer_px3": [[27, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active": [[28, 0, 0, "-", "dev_ps"], [30, 0, 0, "-", "pin_wg"], [31, 0, 0, "-", "rings"]], "mxpic.components.primitives.active.dev_ps": [[28, 1, 1, "", "Heater_NDoped"], [28, 1, 1, "", "PS_PIN"], [28, 1, 1, "", "Route"]], "mxpic.components.primitives.active.dev_ps.Heater_NDoped": [[28, 2, 1, "", "generate_gds"], [28, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.active.dev_ps.PS_PIN": [[28, 3, 1, "", "cell"], [28, 2, 1, "", "generate_gds"], [28, 2, 1, "", "generate_mzi_gds"]], "mxpic.components.primitives.active.pin_wg": [[30, 1, 1, "", "WGDoped"], [30, 1, 1, "", "waveguide_PIN"]], "mxpic.components.primitives.active.pin_wg.WGDoped": [[30, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active.pin_wg.waveguide_PIN": [[30, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.active.rings": [[31, 1, 1, "", "AED_Ring_PIN"], [31, 1, 1, "", "PIN_MRR_MM_Adddrop"], [31, 1, 1, "", "PIN_MRR_MM_Allpass"], [31, 1, 1, "", "PIN_MRR_STD_Allpass"], [31, 1, 1, "", "Route"], [31, 1, 1, "", "STD_Ring_PIN"]], "mxpic.components.primitives.active.rings.AED_Ring_PIN": [[31, 2, 1, "", "generate_imp_gds"]], "mxpic.components.primitives.beam_splitters": [[32, 1, 1, "", "YBranch"], [32, 1, 1, "", "Ybranch_3wg"]], "mxpic.components.primitives.beam_splitters.YBranch": [[32, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.beam_splitters.Ybranch_3wg": [[32, 2, 1, "", "generate_gds"], [32, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers": [[33, 1, 1, "", "ADC_STD_2x2"], [33, 1, 1, "", "BS_tdc"], [33, 1, 1, "", "DC"], [33, 1, 1, "", "DC_bend"], [33, 1, 1, "", "DC_pX_3sg"], [33, 1, 1, "", "MDM"], [33, 1, 1, "", "ring_bus_wg"]], "mxpic.components.primitives.directional_couplers.ADC_STD_2x2": [[33, 2, 1, "", "generate_err"], [33, 2, 1, "", "generate_gds"], [33, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC": [[33, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC_bend": [[33, 2, 1, "", "generate_gds"], [33, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.DC_pX_3sg": [[33, 2, 1, "", "generate_gds"], [33, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.MDM": [[33, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.directional_couplers.ring_bus_wg": [[33, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers": [[34, 1, 1, "", "FA"], [34, 1, 1, "", "GC_STD_1D"], [34, 1, 1, "", "GC_STD_2D"], [34, 1, 1, "", "GC_SiN_Si_Dual_Layer"], [34, 1, 1, "", "Grating_2D_Hole"], [34, 1, 1, "", "Nano_ant"], [34, 1, 1, "", "Taper"]], "mxpic.components.primitives.grating_couplers.GC_STD_1D": [[34, 2, 1, "", "generate_negative"], [34, 2, 1, "", "generate_positive"], [34, 2, 1, "", "generate_test_dev"]], "mxpic.components.primitives.grating_couplers.GC_STD_2D": [[34, 2, 1, "", "generate_negative"], [34, 2, 1, "", "generate_positive"], [34, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer": [[34, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers.Grating_2D_Hole": [[34, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.grating_couplers.Nano_ant": [[34, 2, 1, "", "generate_gds"], [34, 2, 1, "", "generate_gds_error"], [34, 2, 1, "", "generate_gds_positive"]], "mxpic.components.primitives.grating_couplers.Taper": [[34, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.multimode_interferometers": [[36, 1, 1, "", "MMI_ML"], [36, 1, 1, "", "MMI_STD"]], "mxpic.components.primitives.multimode_interferometers.MMI_ML": [[36, 2, 1, "", "generate_gds"], [36, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive": [[37, 0, 0, "-", "crows"], [39, 0, 0, "-", "rings"], [40, 0, 0, "-", "unit"]], "mxpic.components.primitives.passive.crows": [[37, 1, 1, "", "CROW_AED"], [37, 1, 1, "", "CROW_Circular_ring"], [37, 1, 1, "", "CROW_Eul_RCK"], [37, 1, 1, "", "CROW_Eul_Ring"], [37, 1, 1, "", "CROW_STD_Adddrop"], [37, 1, 1, "", "CROW_STD_Allpass"], [37, 1, 1, "", "STD_CROW_V"]], "mxpic.components.primitives.passive.crows.STD_CROW_V": [[37, 3, 1, "", "A_ht"], [37, 2, 1, "", "generate_eic_gds"], [37, 2, 1, "", "generate_pic_gds"]], "mxpic.components.primitives.passive.rings": [[39, 1, 1, "", "MRR_AED"], [39, 1, 1, "", "MRR_DW_Adddrop"], [39, 1, 1, "", "MRR_DW_Allpass"], [39, 1, 1, "", "MRR_MM_Adddrop"], [39, 1, 1, "", "MRR_MM_Allpass"], [39, 1, 1, "", "MRR_STD_Adddrop"], [39, 1, 1, "", "MRR_STD_Allpass"], [39, 1, 1, "", "MRR_STD_Ring"], [39, 1, 1, "", "Route"], [39, 1, 1, "", "SOCR"], [39, 1, 1, "", "SOCR_Adiabatic"], [39, 1, 1, "", "SOCR_Adiabatic_Cband"], [39, 1, 1, "", "SOCR_Cband"], [39, 1, 1, "", "STD_ring_AMZI_adddrop"]], "mxpic.components.primitives.passive.rings.MRR_AED": [[39, 2, 1, "", "generate_eic_gds"]], "mxpic.components.primitives.passive.rings.Route": [[39, 2, 1, "", "bend_mine"], [39, 2, 1, "", "bend_p2p"], [39, 2, 1, "", "bend_route"], [39, 2, 1, "", "bend_route_p2p"], [39, 2, 1, "", "bend_strt_bend_p2p"], [39, 2, 1, "", "bend_strt_bend_p2p_mine"], [39, 2, 1, "", "connPatch"], [39, 2, 1, "", "line_mm"], [39, 2, 1, "", "rt_bend"], [39, 2, 1, "", "sbend_p2p"], [39, 2, 1, "", "sbend_p2p_mine"], [39, 2, 1, "", "sbend_route"], [39, 2, 1, "", "strt"], [39, 2, 1, "", "strt_bend_strt_p2p_mine"], [39, 2, 1, "", "strt_mm"], [39, 2, 1, "", "strt_mm_p2p"], [39, 2, 1, "", "strt_p2p"], [39, 2, 1, "", "taper"], [39, 2, 1, "", "taper_p2p"], [39, 2, 1, "", "tube_mine"], [39, 2, 1, "", "ubend_p2p"], [39, 2, 1, "", "ubend_route"]], "mxpic.components.primitives.passive.rings.SOCR": [[39, 2, 1, "", "generate_2pi_gds"], [39, 2, 1, "", "generate_eic_part"], [39, 2, 1, "", "generate_gds"], [39, 2, 1, "", "generate_pic_part"], [39, 2, 1, "", "generate_test_gds"], [39, 2, 1, "", "generate_test_mzi_gds"]], "mxpic.components.primitives.passive.rings.SOCR_Adiabatic": [[39, 2, 1, "", "generate_eic_part"], [39, 2, 1, "", "generate_gds"], [39, 2, 1, "", "generate_pic_part"]], "mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop": [[39, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.passive.unit": [[40, 1, 1, "", "Brag_WDM"], [40, 1, 1, "", "PSR_1x2"], [40, 1, 1, "", "PS_2st"], [40, 1, 1, "", "PS_2st_Straight"], [40, 1, 1, "", "waveguide"]], "mxpic.components.primitives.passive.unit.Brag_WDM": [[40, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive.unit.PSR_1x2": [[40, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.passive.unit.PS_2st": [[40, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.passive.unit.PS_2st_Straight": [[40, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic": [[41, 0, 0, "-", "PBS"], [42, 0, 0, "-", "YBS"], [43, 0, 0, "-", "bragg"], [44, 0, 0, "-", "couplers"], [45, 0, 0, "-", "cross"], [46, 0, 0, "-", "gratings"], [48, 0, 0, "-", "mmi"], [49, 0, 0, "-", "racetrack"], [50, 0, 0, "-", "rings"], [51, 0, 0, "-", "spiral"], [52, 0, 0, "-", "taper"]], "mxpic.components.primitives.pic.PBS": [[41, 1, 1, "", "PBS_3wg"]], "mxpic.components.primitives.pic.PBS.PBS_3wg": [[41, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.YBS": [[42, 1, 1, "", "YBranch"], [42, 1, 1, "", "Ybranch_3wg"]], "mxpic.components.primitives.pic.YBS.YBranch": [[42, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.YBS.Ybranch_3wg": [[42, 2, 1, "", "generate_gds"], [42, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.bragg": [[43, 1, 1, "", "Bragg"], [43, 1, 1, "", "Bragg_apodized"]], "mxpic.components.primitives.pic.bragg.Bragg_apodized": [[43, 2, 1, "", "generate_negative"], [43, 2, 1, "", "generate_positive"]], "mxpic.components.primitives.pic.couplers": [[44, 1, 1, "", "ADC_STD_2x2"], [44, 1, 1, "", "BS_tdc"], [44, 1, 1, "", "DC"], [44, 1, 1, "", "DC_bend"], [44, 1, 1, "", "DC_pX_3sg"], [44, 1, 1, "", "MDM"], [44, 1, 1, "", "ring_bus_wg"]], "mxpic.components.primitives.pic.couplers.ADC_STD_2x2": [[44, 2, 1, "", "generate_err"], [44, 2, 1, "", "generate_gds"], [44, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC": [[44, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC_bend": [[44, 2, 1, "", "generate_gds"], [44, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.DC_pX_3sg": [[44, 2, 1, "", "generate_gds"], [44, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.MDM": [[44, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.couplers.ring_bus_wg": [[44, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.cross": [[45, 1, 1, "", "Cross"], [45, 1, 1, "", "Cross_Sine"]], "mxpic.components.primitives.pic.cross.Cross": [[45, 2, 1, "", "generate_gds"], [45, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.gratings": [[46, 1, 1, "", "FA"], [46, 1, 1, "", "GC_STD_1D"], [46, 1, 1, "", "GC_STD_2D"], [46, 1, 1, "", "Grating_2D_Hole"], [46, 1, 1, "", "Grating_2D_Hole_3Rec"], [46, 1, 1, "", "Grating_2D_Hole_4Rec"], [46, 1, 1, "", "Nano_ant"], [46, 1, 1, "", "Taper"]], "mxpic.components.primitives.pic.gratings.GC_STD_1D": [[46, 2, 1, "", "generate_negative"], [46, 2, 1, "", "generate_positive"], [46, 2, 1, "", "generate_test_dev"]], "mxpic.components.primitives.pic.gratings.GC_STD_2D": [[46, 2, 1, "", "generate_negative"], [46, 2, 1, "", "generate_positive"], [46, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.gratings.Nano_ant": [[46, 2, 1, "", "generate_gds"], [46, 2, 1, "", "generate_gds_error"], [46, 2, 1, "", "generate_gds_positive"]], "mxpic.components.primitives.pic.gratings.Taper": [[46, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.mmi": [[48, 1, 1, "", "MMI_ML"], [48, 1, 1, "", "MMI_STD"]], "mxpic.components.primitives.pic.mmi.MMI_ML": [[48, 2, 1, "", "generate_gds"], [48, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.racetrack": [[49, 1, 1, "", "RacetrackResonator"], [49, 1, 1, "", "Racetrack_MM_Adddrop"], [49, 1, 1, "", "Racetrack_MM_Allpass"], [49, 1, 1, "", "Racetrack_STD_Allpass"], [49, 1, 1, "", "Route"]], "mxpic.components.primitives.pic.racetrack.RacetrackResonator": [[49, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.racetrack.Racetrack_STD_Allpass": [[49, 2, 1, "", "generate_eic_gds"]], "mxpic.components.primitives.pic.rings": [[50, 1, 1, "", "AED_ring"], [50, 1, 1, "", "STD_PIC_Rings"]], "mxpic.components.primitives.pic.rings.AED_ring": [[50, 2, 1, "", "generate_pic_gds"], [50, 2, 1, "", "generate_test_gds"]], "mxpic.components.primitives.pic.spiral": [[51, 1, 1, "", "Spiral_Cicle_MM"], [51, 1, 1, "", "Spiral_Cicle_STD"], [51, 1, 1, "", "Spiral_Rect_STD"], [51, 1, 1, "", "spiral"], [51, 1, 1, "", "spiral_circle"], [51, 1, 1, "", "spiral_rectangle"]], "mxpic.components.primitives.pic.spiral.spiral": [[51, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.spiral.spiral_circle": [[51, 3, 1, "", "cell"], [51, 2, 1, "", "generate_gds"], [51, 2, 1, "", "opt_euler"]], "mxpic.components.primitives.pic.spiral.spiral_rectangle": [[51, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.pic.taper": [[52, 1, 1, "", "PSR"], [52, 1, 1, "", "taper_xs2xs"], [52, 1, 1, "", "transition"]], "mxpic.components.primitives.spiral": [[53, 1, 1, "", "Spiral_Cicle_MM"], [53, 1, 1, "", "Spiral_Cicle_STD"], [53, 1, 1, "", "Spiral_Rect_STD"], [53, 1, 1, "", "spiral"], [53, 1, 1, "", "spiral_circle"], [53, 1, 1, "", "spiral_rectangle"]], "mxpic.components.primitives.spiral.spiral": [[53, 2, 1, "", "generate_gds"]], "mxpic.components.primitives.spiral.spiral_circle": [[53, 3, 1, "", "cell"], [53, 2, 1, "", "generate_gds"], [53, 2, 1, "", "opt_euler"]], "mxpic.components.primitives.spiral.spiral_rectangle": [[53, 2, 1, "", "generate_gds"]], "mxpic.components.routing": [[54, 1, 1, "", "Route"], [54, 4, 1, "", "ic_exception"]], "mxpic.components.routing.Route": [[54, 2, 1, "", "bend_mine"], [54, 2, 1, "", "bend_p2p"], [54, 2, 1, "", "bend_route"], [54, 2, 1, "", "bend_route_p2p"], [54, 2, 1, "", "bend_strt_bend_p2p"], [54, 2, 1, "", "bend_strt_bend_p2p_mine"], [54, 2, 1, "", "connPatch"], [54, 2, 1, "", "line_mm"], [54, 2, 1, "", "rt_bend"], [54, 2, 1, "", "sbend_p2p"], [54, 2, 1, "", "sbend_p2p_mine"], [54, 2, 1, "", "sbend_route"], [54, 2, 1, "", "strt"], [54, 2, 1, "", "strt_bend_strt_p2p_mine"], [54, 2, 1, "", "strt_mm"], [54, 2, 1, "", "strt_mm_p2p"], [54, 2, 1, "", "strt_p2p"], [54, 2, 1, "", "taper"], [54, 2, 1, "", "taper_p2p"], [54, 2, 1, "", "tube_mine"], [54, 2, 1, "", "ubend_p2p"], [54, 2, 1, "", "ubend_route"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:function"}, "terms": {"": [39, 53, 54], "0": [2, 3, 4, 5, 8, 10, 11, 14, 15, 18, 21, 22, 25, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "001": [11, 14, 15, 50], "01": [36, 48, 49, 50, 52], "02": [33, 44], "05": [15, 39, 51, 53], "1": [3, 8, 11, 13, 18, 22, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 42, 43, 44, 45, 46, 48, 51, 52, 53, 54], "10": [3, 4, 5, 8, 11, 13, 14, 15, 21, 22, 30, 31, 32, 33, 34, 36, 37, 39, 40, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "100": [8, 14, 27, 28, 30, 33, 39, 44], "10000": 11, "10001": 18, "101": 18, "11": [8, 41], "110": [34, 46], "12": 27, "120": 8, "120degre": [], "1310nm": [20, 21], "140": 40, "15": [3, 4, 27, 32, 33, 37, 40, 42, 43, 44, 49, 52], "150": [3, 40], "1500nm": 23, "1550nm": [20, 21], "16": 5, "1600nm": 23, "18": [32, 42, 50], "180": [31, 51, 53], "1by": 21, "1d": [34, 46], "1um": [], "1x2": 40, "2": [4, 5, 8, 18, 21, 22, 27, 28, 30, 31, 32, 33, 34, 36, 39, 40, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "20": [2, 4, 11, 23, 28, 31, 32, 33, 34, 37, 39, 40, 41, 42, 44, 46, 49, 50, 51, 53, 54], "200": [27, 30, 43], "200nm": [], "2021": [], "2022": [], "2026": [], "22": [18, 33, 44], "25": [4, 30, 34, 41, 46], "250": 39, "270": [31, 39], "28": 5, "2d": [34, 46], "2st": 40, "2um": [], "2x2": 44, "3": [4, 8, 15, 18, 31, 32, 34, 36, 37, 39, 41, 42, 43, 45, 46, 48, 54], "30": [3, 4, 30, 31, 33, 34, 37, 39, 40, 44, 46, 49, 50, 52], "300": [21, 33, 34, 44, 46], "33": [33, 44], "35": [30, 31, 33, 36, 37, 44, 48, 50], "360": 15, "38": 37, "3db": 32, "3rec": 46, "3sg": 44, "3um": [], "3wg": [41, 42], "4": [11, 18, 23, 30, 31, 32, 34, 37, 39, 42, 45, 46, 54], "40": [3, 33, 34, 39, 40, 44, 52, 54], "400": [21, 22, 27, 32, 33, 42, 44, 45], "41": [34, 46], "45": [2, 3, 4, 5, 10, 11, 15, 25, 27, 28, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53], "450nm": [], "4rec": 46, "5": [3, 4, 8, 11, 13, 14, 18, 21, 22, 25, 28, 30, 33, 34, 36, 37, 39, 40, 41, 43, 44, 45, 46, 48, 51, 52, 53, 54], "50": [4, 8, 27, 34, 36, 39, 40, 46, 48, 49, 51, 53, 54], "500": 28, "510nm": [], "55": [31, 33, 39, 40, 41, 44, 50, 52], "57": [34, 46], "5um": [], "6": [4, 15, 18, 27, 31, 32, 34, 39, 42, 45, 46], "60": [8, 28], "61": [33, 44], "64": [8, 13, 33, 44], "65": [31, 37, 50], "7": [40, 41], "75": 3, "8": [4, 8, 27, 30, 31, 32, 33, 37, 40, 42, 44, 46], "80": [4, 8, 23, 32, 33, 42, 44], "800": 28, "88": [33, 44], "9": [31, 34, 39, 40, 50], "90": [8, 28, 31, 39, 49, 54], "908": [], "913": [], "96": 23, "A": [11, 33, 44], "AED": [31, 37, 39, 50], "If": [5, 36, 39, 53, 54], "The": [39, 54], "_description_": 30, "_type_": 30, "a0": 34, "a1": [5, 18], "a1_att": [37, 39, 49, 50], "a1_cp": [37, 39, 49, 50], "a2": 18, "a2_att": [37, 39, 49, 50], "a2_cp": [37, 39, 49, 50], "a_anti": [33, 44], "a_anti_rfl": 34, "a_att": [31, 32, 37, 39, 42, 49], "a_bend": 41, "a_cp": [31, 37, 39, 49], "a_gc_tap": 34, "a_ht": [31, 37, 39], "a_imp_in": 31, "a_imp_out": 31, "a_tap": [34, 46], "abandon": 28, "absent": 8, "account": [39, 54], "activ": [16, 35], "acut": [33, 36], "ad": [34, 39, 46, 54], "adapt": 53, "adapt_width": [28, 31, 39, 49, 54], "adapt_x": [28, 31, 39, 49, 54], "adc": 44, "adc_std_2x2": [35, 47], "add": [31, 32, 33, 36, 37, 39, 41, 42, 44, 48, 49, 50, 51, 53], "add_pin": 10, "adddrop": [31, 37, 39, 49], "adiabat": [27, 33, 39], "adjac": [32, 34, 36, 53], "advanc": [7, 16], "aed_r": [39, 47], "aed_ring_pin": 29, "after": [32, 33, 34, 53], "air": 27, "air_trench": 27, "al": [], "align": [39, 53, 54], "all": [32, 33, 34, 36, 39, 54], "allpass": [31, 37, 39, 49], "alon": 34, "along": [32, 34, 53], "alreadi": 39, "altern": 34, "amax": [39, 54], "amf": 20, "amf_ipkiss_pdk": 20, "amf_pdk": [16, 24], "amzi": 39, "amzi_w": 7, "an": [39, 54], "analysi": [34, 46], "angl": [2, 15, 27, 28, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 49, 50, 53, 54], "angle_til": 27, "ani": [30, 31, 33, 37, 39, 40, 44, 46, 49, 50, 51], "anoth": [39, 54], "antenna": 34, "anti": [33, 34], "apertur": 34, "apod": 43, "aport": 18, "append": [32, 34, 53], "appli": [33, 34, 53, 54], "ar": [33, 34], "arc": [32, 33, 34, 53], "area": [8, 34], "arg": 15, "arm": [32, 33, 36], "arm_sine_width": [36, 48], "arrai": [34, 46], "arrow": [39, 54], "assembl": [], "associ": 27, "assum": [39, 54], "asymmetr": 33, "attach": [32, 39, 53, 54], "auto": 33, "autom": 0, "automat": [39, 54], "avoid": [33, 39, 54], "axi": [32, 53], "b": [2, 3, 4, 43, 44], "b1": [5, 18], "b2": [5, 18], "back": 27, "balanc": [33, 39, 54], "band": 39, "base": [2, 3, 4, 5, 8, 10, 11, 13, 14, 15, 18, 20, 21, 22, 23, 25, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "basic": [0, 16], "bdc": 33, "beam_splitt": [16, 35], "befor": [33, 34, 39, 53, 54], "begin": [39, 54], "begin_flat": 11, "bend": [5, 15, 23, 27, 32, 33, 39, 44, 51, 53, 54], "bend_cel": 14, "bend_dc": [33, 44], "bend_heat": 4, "bend_min": [39, 54], "bend_p2p": [39, 54], "bend_radiu": 5, "bend_rout": [39, 54], "bend_route_p2p": [39, 54], "bend_straight_bend_p2p": [39, 54], "bend_strt_bend": [39, 54], "bend_strt_bend_p2p": [39, 54], "bend_strt_bend_p2p_min": [39, 54], "bendendflag": [39, 54], "bent": 32, "beol": 27, "between": [5, 27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 49, 53, 54], "bodi": [32, 36, 53], "bool": [28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "boolean": 53, "both": [32, 33, 36], "box": [5, 27], "brag": 40, "brag_wdm": 38, "bragg": [35, 40, 47], "bragg_apod": 47, "branch": [5, 32], "broadband": [32, 33, 44], "broadcast": 34, "bs1": 3, "bs2": 3, "bs3": 3, "bs_tdc": [35, 47], "bsb": [39, 54], "bu": [33, 37, 44], "build": [30, 31, 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52], "built": [33, 53], "bus_dop": 31, "bus_ord": 37, "c": 39, "calcul": 33, "can": [5, 15, 34, 39, 46, 54], "cband": 20, "cell": [5, 10, 13, 20, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "cell_attribut": 50, "cell_nam": [10, 28, 34, 39, 46], "cell_transit": 53, "cell_xs_transit": [30, 31, 39, 49, 50, 51, 53], "cellnam": [33, 44], "cellsreus": 10, "center": [15, 32, 34, 53], "central": [27, 36, 51, 53], "chamfer": [32, 33, 36, 39, 53, 54], "channel": [5, 34], "chip": 27, "cicl": 51, "circl": [12, 33, 34, 44, 46, 51, 53], "circular": [15, 33, 37, 44, 53], "circumscrib": [], "clad": [27, 31, 33, 37, 39, 41, 42, 44, 48, 49, 50, 51], "cladmateri": 18, "class": [2, 3, 4, 5, 8, 10, 11, 13, 14, 15, 18, 20, 21, 22, 23, 25, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "clear": 27, "clothoid": [12, 33, 53], "clothoid_ord": [33, 44], "code": [39, 54], "column": 34, "complet": [], "compon": [7, 9, 12, 17, 19, 24, 29, 35, 38, 47], "composit": [0, 16, 37, 40], "conchoid": [12, 53], "condit": 54, "configur": 34, "connect": [5, 37, 39, 53, 54], "connpatch": [39, 54], "constant": 53, "constraint": 53, "contain": [], "continu": [31, 33, 37, 39, 41, 42, 44, 48, 49, 50, 51], "contrast": 27, "control": [32, 53], "conveni": [36, 53], "convert": [27, 53], "core": [27, 33], "corner": [31, 33, 36, 37, 39, 41, 42, 44, 48, 49, 50, 51, 53], "correspond": 36, "cosin": 36, "count": [46, 48, 51], "coupl": [27, 32, 33, 39], "coupler": [20, 21, 23, 27, 32, 33, 34, 35, 46, 47], "cp": [39, 54], "creat": [34, 39, 54], "cross": [23, 27, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53], "cross_nam": 8, "cross_sin": 47, "crow": [35, 38], "crow_a": 38, "crow_circular_r": 38, "crow_custom": 37, "crow_eul_r": 38, "crow_eul_rck": 38, "crow_std_adddrop": 38, "crow_std_allpass": 38, "crx_te_1310": 24, "crx_te_1550": 24, "ct_pitch": 28, "cubic": 32, "cumec": [20, 21], "cumec_csip130cu": [], "cumec_pdk": [16, 24], "cumec_sip130cu_pdk": 21, "curv": [12, 16], "curvatur": 27, "custom": [], "cycl": [51, 53], "d2wg_list": 28, "d_arm": [3, 4], "d_hole": 34, "d_port": [3, 4], "da_tran": [33, 44], "dac": [33, 37, 39, 44], "dc": [35, 47], "dc_bend": [23, 35, 47], "dc_bend_20_80_cband": 24, "dc_bend_4_96_cband": 24, "dc_bend_50_50_cband": 24, "dc_px3_50_50_cband": 24, "dc_px_3sg": [25, 35, 47], "dc_te_1550": 24, "debug": [33, 34, 36], "deep": 27, "default": [5, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "defin": [5, 34, 46], "define_typ": [34, 46], "definit": [30, 31, 34, 37, 39, 40, 49], "deflect": [32, 33, 53], "degre": [27, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 49, 50, 53], "demultiplex": 40, "depend": [30, 31, 39, 49, 50, 51], "depth": 34, "deriv": [33, 53], "describ": [39, 54], "design": 39, "detail": [], "detch": [], "determin": 34, "dev_nam": 18, "dev_p": [29, 35], "devic": [18, 27, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52], "device_2x2_fdtd_init": 19, "device_coupl": 19, "device_port": 19, "device_ring_bu": 19, "devnam": 18, "diamet": [34, 53], "differ": 5, "diffract": 34, "dimens": 27, "direct": [23, 33, 39, 44, 54], "directional_coupl": [16, 35], "disabl": 33, "disconnect": [39, 54], "discret": [32, 33], "disk": 15, "divis": 33, "dl": [3, 4], "dl_amzi": [3, 4], "dl_arm": 39, "dl_cal": 11, "dl_ht": 4, "dl_p2p": [31, 33, 37, 39, 44, 49, 50], "dl_tran": [33, 44], "dl_wg": 11, "dlc": [33, 44], "dlx": [14, 37, 49], "dly": [14, 37, 49], "dmin": [51, 53], "do": 34, "doc": [28, 31, 39, 49, 54], "document": 0, "doe": [39, 54], "dofirst": [39, 54], "dope": 28, "dope_offset": 30, "dope_ovlp": 30, "dostrfirst": [39, 54], "dp_in": [36, 48], "dp_out": [36, 48], "draw": [28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "dt": 43, "dual": [27, 34], "dual_bu": 31, "dual_ht": 3, "dualportel": [17, 19], "dummi": 27, "duti": 34, "duty_cycl": [34, 46], "dw": [33, 39, 44], "dw_toler": 52, "dx": 18, "dx_gc2gc": [21, 22, 32, 33, 34, 36, 42, 44, 45, 46, 48, 50], "dx_hole": [15, 34, 46], "dx_offset": 40, "dxgc2gc": [3, 4], "dy": 18, "dy_gc2gc": [32, 33, 36, 42, 44, 48, 50], "dy_hol": [15, 34, 46], "dygc2gc": [3, 4], "dz": 18, "e": 27, "each": [32, 36, 53], "eas": 53, "ec_1550": 24, "ec_dual_layer_px3": [16, 35], "ec_te_1550": 24, "edg": [8, 27, 34], "edge1": [39, 54], "edge2": [39, 54], "edgepoint": [39, 54], "effici": [], "eic_unit": [9, 16], "either": 34, "electr": [31, 37, 39, 40], "electron": [0, 16], "element": [39, 54], "elips": 12, "elipse_du": 12, "ellipt": 15, "enabl": 33, "end": [15, 33, 34, 39, 54], "end_angl": [39, 54], "end_patch": [11, 33, 44], "enforc": 53, "entir": 53, "entranc": [32, 34], "entri": 34, "epin_di": 39, "epin_dx": 39, "epin_ht_di": 31, "epin_ht_dx": 31, "equal": 36, "err": [33, 44], "err_asi": [32, 42], "et": [], "eta_d": 43, "eta_etch": [34, 43, 46], "etch": [34, 46], "etch_depth": [34, 46], "etch_shap": 43, "etch_typ": [34, 43, 46], "eul": 37, "euler": [33, 44, 53], "euler_anti_bend": [33, 44], "euler_bend": [40, 51, 53], "euler_crow_bu": 19, "euler_crow_inter_cp": 19, "euler_point": [33, 44], "euler_sbend": [51, 53], "euler_transist": [33, 44], "euler_trasit": [31, 37, 39, 49, 50], "evalu": 33, "everi": 53, "exactli": 53, "exampl": [39, 54], "except": [34, 54], "exclus": 27, "exit": 32, "expect": 53, "export": 34, "export_plt": [39, 54], "expos": 34, "extens": [27, 53], "extern": [32, 33], "extra": [34, 39, 54], "f": [39, 54], "fa": [35, 47], "fabric": [33, 44], "facet": 27, "fallback": [39, 54], "fals": [3, 4, 5, 8, 11, 15, 18, 23, 25, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "fan": 34, "fanout": 34, "fcw_tre": [34, 46], "fdtd": 18, "fdtd_height": 18, "fdtdbuild": 18, "feed": 34, "fetch": [34, 43, 46], "fiber": [27, 34, 46], "fiber_coupl": [34, 46], "field": 34, "field_sampl": 18, "file": 15, "fill": 34, "filler": 33, "final": [27, 33, 53], "final_flat": 11, "first": [27, 33, 39, 53, 54], "float": [27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 46, 48, 49, 50, 51, 52, 53, 54], "folderpath": 18, "follow": 36, "footprint": [34, 53], "forc": 33, "form": [32, 53], "four": [], "fraction": 34, "from": [23, 33, 34, 39, 53, 54], "function": [39, 54], "futur": [33, 34, 46], "g": [27, 39, 54], "g0": [33, 44], "g1": [33, 34, 44], "gaolei": [], "gap": [30, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 49, 50, 51, 53, 54], "gap0": [33, 44], "gap1": [33, 37, 39, 44, 49, 50], "gap2": [37, 39, 49, 50], "gap_bu": 37, "gap_cp": 37, "gap_crow": 37, "gap_n_i": 31, "gap_p_i": 31, "gap_teeth_si": 34, "gap_teeth_sin": 34, "gc": [3, 4, 21, 22, 28, 32, 33, 34, 36, 39, 40, 42, 44, 45, 46, 48, 50], "gc2gc_dx": [21, 40], "gc2gc_dy": 40, "gc2gc_length": [21, 28, 39], "gc_in": 40, "gc_offset": 28, "gc_sin_si_dual_lay": 35, "gc_std_1d": [25, 35, 47], "gc_std_2d": [35, 47], "gc_te_1310": 24, "gc_te_1550": 24, "gc_tm_1310": 24, "gc_tm_1550": 24, "gd": [5, 27, 30, 33, 34, 39, 44, 46], "gds_devic": [0, 16], "gds_lib_gener": 25, "gds_lib_load": [16, 20, 21, 22], "ge": 20, "gener": [5, 12, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "generate_2pi_gd": 39, "generate_eic_gd": [37, 39, 49], "generate_eic_part": 39, "generate_err": [33, 44], "generate_gd": [3, 4, 5, 8, 11, 14, 15, 27, 28, 30, 32, 33, 34, 36, 39, 40, 41, 42, 44, 45, 46, 48, 49, 51, 53], "generate_gds_error": [34, 46], "generate_gds_lib": [16, 25], "generate_gds_posit": [34, 46], "generate_imp_gd": 31, "generate_mzi_gd": 28, "generate_neg": [34, 43, 46], "generate_pic_gd": [37, 50], "generate_pic_part": 39, "generate_posit": [34, 43, 46], "generate_test_dev": [34, 46], "generate_test_gd": [3, 4, 21, 22, 28, 32, 33, 34, 36, 39, 40, 42, 44, 45, 46, 48, 50], "generate_test_mzi_gd": 39, "geo": [39, 54], "geometr": 13, "geometri": [0, 16, 31, 33, 34, 37, 39, 41, 42, 44, 48, 49, 50, 51], "getch_tr": [34, 46], "give": [39, 54], "glass": 18, "go": [34, 46], "gpd_1550": 24, "gpuon": 18, "grate": [20, 21, 34, 35, 40, 47], "grating_2d_hol": [35, 47], "grating_2d_hole_3rec": 47, "grating_2d_hole_4rec": 47, "grating_coupl": [16, 35], "grating_unit": 46, "grid": [39, 54], "gridpatch": [39, 54], "gridsnap": [39, 54], "gt_diamet": [34, 46], "gt_layer": [34, 46], "gt_vector": [34, 46], "guid": [33, 39, 54], "h": [], "half": [33, 53], "heater": [3, 4, 28, 30, 31, 37, 39, 40, 49], "heater_length": 28, "heater_ndop": 29, "heater_width": 28, "height": 18, "helper": [13, 32, 36, 53], "hgl_pdk_a": [16, 24], "high": [27, 28], "hole": [12, 34, 46], "hole_shap": [15, 34, 46], "horizont": [33, 34], "horsesho": [39, 54], "ht_notch_dual": [31, 39], "ht_rot": 39, "ht_same_sid": 4, "ht_shift": 37, "hu": [], "huang": [], "i": [5, 23, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "ic": [39, 54], "ic_except": 16, "ictyp": [39, 54], "ident": [], "identifi": [27, 30, 31, 33, 34, 37, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52], "if_open": 28, "ignor": [39, 54], "im": [39, 54], "imec": [34, 46], "imecas_pdk": [16, 24], "imecas_pdk2": 22, "implant": 31, "implement": 53, "import": [39, 54], "in_out_align": [51, 53], "includ": [], "index": 27, "individu": 34, "info": [39, 54], "inherit": 53, "initi": [8, 27, 32, 33], "inner": 53, "innermost": 53, "input": [5, 27, 33, 34, 36, 53], "insert": [32, 33, 36, 53], "insid": [32, 33, 53], "instanc": [34, 39, 54], "instanti": [8, 10, 28, 31, 33, 34, 39, 49, 54], "instead": [36, 53], "instrcutpath": 18, "instruct": 18, "int": [28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "interact": 33, "interconnect": [28, 31, 39, 49, 54], "interfer": 36, "interferomet": 28, "intern": 53, "interpol": 36, "introduc": [39, 54], "io": [32, 33, 53], "iri": [15, 31, 39, 50], "irx": [15, 31, 39, 50], "isl": [3, 4, 9, 31, 37, 39, 40], "isl_left": 37, "isl_low": 4, "isl_right": 37, "isl_upp": 4, "isol": [31, 37, 39, 40], "its": [39, 54], "jump": [39, 54], "junction": 28, "keep": [32, 33, 34, 36], "kei": [32, 33, 34, 36, 53], "kr": 11, "l": [3, 32, 39, 42, 45], "l0": 3, "l1": 40, "l12": [3, 40], "l2": 40, "l_ar": [34, 46], "l_arm": [3, 4, 36, 48], "l_attach": [32, 42], "l_box_end": 27, "l_compens": 4, "l_cp": [33, 44], "l_end": [21, 22, 27, 34, 45, 46], "l_end_si": 34, "l_end_sin": 34, "l_field_cent": [34, 46], "l_heater": [4, 40], "l_ht": [3, 30, 40], "l_in": 27, "l_in_tp": [32, 42], "l_inner": 3, "l_mmi": [36, 48], "l_patch": [3, 4], "l_port": 52, "l_tail": [34, 46], "l_taper": [30, 34, 46, 52], "l_tilt": [31, 37, 39, 49, 50], "l_tp": [3, 39, 40], "l_wg": [4, 28, 30, 40], "la": 15, "laid": 53, "later": [34, 39, 54], "layer": [5, 11, 13, 14, 15, 27, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "layer_d": 52, "layer_dt": 27, "layer_dum_exl_b": 27, "layer_fetch": 52, "layer_height": 18, "layer_metch": 52, "layer_ox_open": 34, "layer_si_etch": 34, "layer_si_slab": 34, "layer_si_teeth": 34, "layer_sin_etch": 34, "layer_sin_slab": [27, 34], "layer_sin_teeth": 34, "layer_top_cov": 27, "layer_u": 52, "layermap": 10, "layernam": [39, 54], "layout": [28, 30, 31, 33, 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52], "lb": 15, "lb0": [33, 44], "lc1": [33, 44], "lc2": [33, 44], "lcp": [32, 41, 42], "ld": [33, 44], "least": [], "len": 36, "length": [5, 8, 13, 27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "length1": [39, 54], "length2": [39, 54], "liang": [], "lib_nam": 10, "lib_path": 10, "libpath": 18, "librari": 0, "like": [], "line_mm": [39, 54], "linear": [34, 36, 39, 46, 54], "link": 32, "list": [28, 30, 34, 37, 42, 45, 46, 48, 52], "ll": [39, 54], "lmax": 8, "lmin": [51, 53], "ln": 3, "ln1": 3, "ln2": 3, "locat": 15, "logic": [34, 46], "longer": [39, 54], "longitudin": [32, 36], "loop": 53, "loopmirror": [7, 16], "lower": 33, "lower_isl": 40, "lp1": [33, 44], "lpatch": [51, 53], "lport": [51, 53], "lr": [39, 54], "ls1": 3, "ls2": 3, "lstart": [39, 54], "lt": [33, 44], "lt_bu": [33, 44], "lt_cp": [33, 44], "lt_rib": 52, "lt_slab": 52, "ltot": [39, 54], "ltp": [3, 4, 39, 40, 51, 53, 54], "ltp1": [27, 52], "ltp2": [27, 52], "ltp3": 27, "ltp_bu": [31, 37, 39, 49, 50], "ltp_mm": [39, 54], "ltp_port": [30, 51, 53], "ltran": 52, "lu": [33, 44], "lumer": 18, "lumericalpath": 18, "lx_end": [34, 46], "lx_port": [34, 46], "lx_side": [34, 46], "lx_sq": 15, "lx_taper": [34, 46], "ly_end": [34, 46], "ly_port": [34, 46], "ly_sid": [34, 46], "ly_sq": 15, "ly_tap": [34, 46], "mach": 28, "made": [39, 54], "mai": [], "main": 34, "manag": 27, "manual": 53, "margin": 34, "marker": [28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53], "master": [], "match": [34, 53], "materi": 18, "matter": [39, 54], "max_theta": [34, 46], "maximum": [33, 34, 39, 53, 54], "mdm": [25, 35, 40, 47], "mdm_adc_te1_1550": 24, "mdm_adc_te2_1550": 24, "mdm_adc_te3_1550": 24, "mean": [33, 34], "measur": 53, "mesh_ord": 18, "mesh_typ": 4, "metal": [3, 4, 8, 30, 31, 37, 39, 40, 49], "metch": [34, 46], "micrometr": [], "micron": [27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53], "mid_offset": 39, "midpoint": 27, "minimum": [5, 33, 51, 53], "mirror": 33, "mitig": 33, "ml": 48, "mm": [31, 39, 49, 51], "mm_rout": [39, 54], "mmg_1d_d14um_1550_2mod": 24, "mmi": [21, 28, 35, 36, 39, 47], "mmi_1x2_te_1310": 24, "mmi_1x2_te_1550": 24, "mmi_2x2_te_1310": 24, "mmi_2x2_te_1550": 24, "mmi_ml": [35, 47], "mmi_sine_width": [36, 48], "mmi_std": [35, 47], "mode": [28, 31, 33, 34, 39, 40, 49, 54], "mode_radiu": 46, "modeidx": 18, "model": [39, 54], "modul": 39, "mohanti": [], "monitor": 20, "monitorpara": 19, "mono": 36, "mrr": [31, 39], "mrr_a": [31, 38], "mrr_dw_adddrop": 38, "mrr_dw_allpass": 38, "mrr_mm_adddrop": 38, "mrr_mm_allpass": 38, "mrr_std_adddrop": 38, "mrr_std_allpass": 38, "mrr_std_ring": 38, "msg": 54, "multi": 36, "multimod": [36, 39], "multimode_interferomet": [16, 35], "multiplex": [33, 40], "must": [32, 36], "mx_bend": 12, "mx_frame_lib": 15, "mxpic": [7, 9, 12, 16, 17, 19, 24, 29, 35, 38, 47], "mxpic_handbook": [], "myself": [39, 54], "mzi": [7, 16], "mzi_2st_ubend": 7, "mzi_butterfli": 7, "mzi_eubend": 7, "mzi_mesh": [7, 16], "mzi_mesh_parl": 7, "mzi_mesh_tri": 7, "mzi_mesh_u": 7, "mzi_n": 7, "mzi_ns_ubend": 7, "mzi_offset": 28, "mzi_ubend": 7, "n": [5, 28, 31, 43], "n_bend": 4, "n_in": [36, 48], "n_layer_list": 28, "n_out": [36, 48], "n_point": [13, 15, 45], "n_port": 4, "n_teeth_si": 34, "n_teeth_sin": 34, "name": [3, 4, 8, 10, 11, 25, 27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "nano": 34, "nano_": [35, 47], "nanoantenna": [34, 46], "nat": [], "nazca": [32, 33, 34, 36, 39, 53, 54], "nd": [34, 39, 53, 54], "ndarrai": 42, "need": [5, 39, 54], "neg": [15, 39, 54], "new": [39, 54], "nitrid": 27, "nld": 30, "node": [39, 54], "nois": 39, "nomin": [33, 53], "non": [34, 46], "none": [2, 3, 4, 5, 8, 10, 11, 13, 14, 15, 18, 25, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "normal": 39, "np": [28, 30, 31, 42], "num": [8, 21, 22, 34, 45, 46], "num_i": [34, 46], "num_socr": 39, "num_x": [34, 46], "number": [5, 33, 34, 36, 39, 46, 53, 54], "nw": [28, 30], "object": [2, 3, 4, 5, 8, 10, 11, 13, 14, 15, 18, 27, 28, 30, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53], "offset": [15, 28, 31, 33, 34, 39, 49, 50, 54], "offset_a": 15, "offset_b": 15, "offset_i": [15, 31, 39, 50], "offset_x": [15, 31, 39, 50], "op": 53, "open": [27, 34], "oper": 18, "opt_eul": [51, 53], "optic": [27, 34, 46], "optim": [51, 53], "option": [27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "order": 33, "ori": [15, 31, 39, 50], "ori_teeth_offset": 34, "orient": [39, 54], "original_funct": [39, 54], "orthogon": [39, 54], "orx": [15, 31, 39, 50], "other": [0, 16, 19], "out": [34, 53], "outer": 32, "outer_isl": 3, "outermost": 53, "output": [5, 32, 33, 34, 36, 39, 53, 54], "output_numb": 5, "output_pitch": 5, "over": 39, "overal": 34, "overrid": 53, "oxid": 27, "oxide_facet": 27, "p": [31, 40], "p_ar": [34, 46], "p_in_n_out": 31, "p_layer_list": 28, "packag": [39, 54], "pad": [9, 27, 28], "pad_60_80": 24, "pad_opt": 27, "pair": 53, "palik": 18, "para": 5, "parabol": [34, 46], "parallel": [39, 54], "paramet": [8, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "parametr": 53, "part": 32, "passiv": [16, 35], "patch": [31, 33, 37, 39, 41, 42, 44, 48, 49, 50, 51, 54], "path": [18, 53], "pattern": 30, "pb": [35, 47], "pbs_1550": 24, "pbs_3wg": 47, "pcb": [28, 31, 39, 49, 54], "pd_cband_cel": 24, "pdk": [0, 16], "pdk_path": [20, 21, 22], "per": [32, 34], "perform": 53, "period": [34, 43, 46], "phase": [28, 33, 34, 39, 46], "photon": 0, "photoresist": [34, 46], "physic": 34, "pic": [16, 35], "pin": [0, 5, 16, 18, 28, 30, 31, 33, 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "pin1": [39, 54], "pin2": [39, 54], "pin_mrr_mm_adddrop": 29, "pin_mrr_mm_allpass": 29, "pin_mrr_std_allpass": 29, "pin_nam": 10, "pin_wg": [29, 35], "pinstyl": [28, 31, 39, 49, 54], "pitch": [5, 32, 34, 36, 46], "place": [15, 39, 54], "planar": 34, "plane": 33, "pld": 30, "point": [32, 33, 39, 54], "polar": [40, 52], "polygon": [12, 15, 16, 32, 33, 36, 53], "polysi_diamet": [34, 46], "polysi_lay": [34, 46], "polysi_vector": [34, 46], "polysilicon": 34, "port": [18, 32, 33, 34, 36, 53], "port_align": 4, "port_angl": [51, 53], "port_dist": 18, "port_nam": 18, "port_radiu": 18, "port_symmetr": [33, 44], "port_width": 18, "portpara": 19, "ports_extend": 18, "posit": [34, 39, 46, 54], "possibl": [39, 54], "power": [20, 33, 44], "pp": [28, 30, 31], "pre": 53, "preced": 34, "preset": 53, "primit": [0, 11, 12, 14, 15, 16, 29, 38, 47], "profil": 34, "provid": [39, 54], "ps_2st": 38, "ps_2st_straight": 38, "ps_pin": 29, "psr": [40, 47], "psr_1x2": 38, "psr_unit": 52, "purpos": [33, 34], "put": [39, 54], "pw": [28, 30], "px": [33, 34, 44, 46], "px_type": [33, 44], "py": [15, 34, 46], "quickstart": [], "qy_pdk_a": [16, 24], "r": [8, 11, 51, 53], "r0": [11, 32, 33, 37, 42, 44, 49, 51, 53], "r0_rck": 49, "r1": [37, 49], "r1_att": [37, 39, 49, 50], "r1_att_min": [37, 39, 49, 50], "r1_cp": [37, 39, 49, 50], "r1_rck": 49, "r2": 37, "r2_att": [37, 39, 49, 50], "r2_att_min": [37, 39, 49, 50], "r2_cp": [37, 39, 49, 50], "r_att": [31, 32, 37, 39, 42, 49], "r_att_min": [31, 37, 39, 49], "r_bend": [3, 4, 14, 27, 36, 39, 40, 41, 48, 50, 51, 53], "r_compens": 4, "r_cp": [31, 33, 37, 44], "r_hole": 15, "r_in": [33, 44], "r_max_anti": [33, 44], "r_max_tran": [33, 44], "r_min_anti": [33, 44], "r_out": 39, "r_outer": 37, "r_ratio_mamnu": [51, 53], "r_rck": 49, "r_ring": [18, 31, 37, 39, 50], "r_teeth_ori_si": 34, "r_teeth_ori_sin": 34, "racetrack": [12, 16, 35, 47], "racetrack_mm_adddrop": 47, "racetrack_mm_allpass": 47, "racetrack_std_allpass": 47, "racetrackreson": 47, "radian": 53, "radiu": [2, 5, 13, 15, 18, 27, 28, 31, 32, 33, 34, 37, 39, 40, 41, 42, 44, 49, 50, 51, 53, 54], "radius1": [39, 54], "radius2": [39, 54], "rais": [34, 54], "rang": 15, "ratio": 53, "ratt": 49, "rbend": [32, 42], "rc_point": 8, "rc_radiu": 8, "rc_ratio": 53, "rck": 37, "rd0": [33, 44], "rd1": [33, 44], "re": [8, 11, 14, 15, 32, 33, 36, 39, 42, 44, 45, 48, 49, 50, 51, 52, 53], "reach": 53, "rect": 51, "rectangl": [34, 43, 51], "rectangular": [34, 53], "reduc": [27, 33], "ref": [39, 54], "refer": [34, 39, 54], "reflect": [27, 34], "reflector": 34, "reflector_vector": [34, 46], "region": [32, 34, 36, 46], "regist": 33, "renam": 10, "repeat": 34, "repetit": [46, 48, 51], "res_eic": 39, "reserv": 33, "resolut": [15, 36, 53], "reson": 19, "respect": 27, "result": [34, 39, 46, 54], "return": [30, 39, 54], "reusabl": 12, "revers": 4, "rib": [30, 52, 53], "rib2strip": [51, 53], "rib_tap": 30, "rib_tr": 52, "right": [39, 54], "ring": [12, 16, 29, 33, 35, 37, 38, 44, 47], "ring_bus_wg": [35, 47], "ring_phas": 19, "rl": [39, 54], "rm_ratio": 53, "rmax": [3, 11, 33, 44], "rmax_bend": [51, 53], "rmin": [3, 33, 40, 44], "rmin_bend": [51, 53], "rmin_bend_cent": [51, 53], "rmin_eul": [51, 53], "robust": [], "root": [], "rotat": [40, 52], "rout": [0, 16, 27, 29, 33, 38, 47], "row": [8, 34], "row_offset": 8, "rr": [39, 54], "rt_bend": [39, 54], "ru0": [33, 44], "ru1": [33, 44], "run": 18, "runfdtd": 18, "sa": [8, 30], "same": 53, "sampl": [32, 33, 36, 53], "sample_build": 53, "sample_point": 18, "sample_step": [34, 46], "saveflag": 18, "sbend": [33, 39, 54], "sbend_p2p": [39, 54], "sbend_p2p_min": [39, 54], "sbend_rout": [39, 54], "sbend_typ": [33, 44], "scaffold": 33, "scalar": 34, "scale": [], "scheme": 34, "second": [27, 33, 39, 54], "secondari": 27, "section": [27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "sector": 34, "sector_gc": [34, 46], "see": [], "segment": [32, 33, 34, 36, 53], "selector": 34, "self": 5, "separ": 53, "sequenc": [32, 34, 36], "set": [33, 39, 53, 54], "setch": 34, "shape": [32, 34, 39, 40, 46, 51, 52, 53, 54], "share": 53, "sharp": [31, 33, 37, 39, 41, 42, 44, 48, 49, 50, 51], "sharp_patch": [2, 3, 11, 15, 21, 31, 32, 33, 36, 37, 39, 41, 42, 44, 48, 49, 50, 51, 53, 54], "sharp_path": [39, 54], "shift": [28, 39, 54], "shifter": [28, 33], "shortest": [39, 54], "should": [], "show_pin": [3, 4, 5, 8, 11, 15, 23, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53], "showpin": [39, 54], "si": [18, 34], "side": 34, "sidelob": [39, 54], "sidewai": [39, 54], "sidewya": [39, 54], "silicon": [0, 18], "simpl": 13, "simu_x": 18, "simubox": 18, "simudatafigureplot": 19, "simul": [16, 17, 34, 46], "simupath": 18, "sin": [27, 34], "sin_rib_wg": 27, "sine": [11, 15, 45, 52], "singl": [33, 34, 36, 53], "single_end": [33, 44], "sio2": 18, "size": [27, 34, 39, 54], "slab": [27, 34], "slab_width": 28, "small": [33, 53], "socr": 38, "socr_adiabat": 38, "socr_adiabatic_cband": 38, "socr_cband": 38, "soi": 27, "sourc": [], "sourcemod": 18, "sp_cont": 31, "sp_isl_met": 8, "sp_isl_wg": 8, "sp_sc": 30, "sp_via_i2m": 30, "sp_via_x": 8, "space": [8, 30, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 49, 50, 51, 53], "specif": [39, 54], "speed": 28, "sphinx": [], "spiral": [11, 16, 33, 35, 47], "spiral_cicle_mm": [35, 47], "spiral_cicle_std": [35, 47], "spiral_circl": [35, 47], "spiral_ord": 11, "spiral_rect_std": [35, 47], "spiral_rectangl": [35, 47], "spline": 32, "split": [5, 33, 44], "splitter": [33, 40, 52], "splittingtre": 7, "spot": 27, "spttree": [7, 16], "squar": 34, "stand": 34, "standard": [33, 36], "start": [15, 39, 54], "std": [31, 37, 39, 44, 46, 48, 49, 50, 51], "std_crow_v": 38, "std_pic_r": 47, "std_ring_amzi_adddrop": 38, "std_ring_pin": 29, "step": [33, 53], "stop": 15, "str": [27, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "straight": [32, 33, 34, 39, 40, 53, 54], "strict_condit": [51, 53], "strip": [2, 3, 4, 11, 14, 15, 18, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "strip_cor": [30, 34, 46], "strip_tr": 52, "strong": 39, "strt": [39, 54], "strt_bend_strt_p2p": [39, 54], "strt_bend_strt_p2p_min": [39, 54], "strt_mm": [39, 54], "strt_mm_p2p": [39, 54], "strt_p2p": [39, 54], "strt_round_courn": 12, "structur": [12, 15, 34, 46, 53], "stub": [32, 33, 34, 36, 53], "style": 53, "success": 53, "suffix": [], "sun": [], "suppli": [], "support": [34, 53], "suppr": 39, "symbol": [39, 54], "symmetr": [32, 33, 39, 44, 54], "symmetri": [], "symmetric_bu": [33, 44], "sz": 8, "sz_bu": 37, "sz_ring": 37, "sz_via_i2m": 30, "szvia": 8, "t": [11, 18, 39, 54], "take": [39, 54], "taken": [39, 54], "taper": [27, 32, 33, 35, 36, 39, 47, 53, 54], "taper_length": [34, 46], "taper_p2p": [39, 54], "taper_xs2x": 47, "target": 33, "tdc": 44, "te": [20, 21], "teeth": 34, "teeth_numb": [34, 46], "templat": 24, "termin": [33, 34], "tessel": 53, "test": 28, "theta_arc": [33, 39, 44], "theta_ext": [33, 44], "theta_start": [8, 15], "theta_stop": [8, 15], "thi": [23, 27, 28, 30, 31, 33, 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "thin_attach": 40, "third": 27, "three": 33, "through": 23, "throughout": 53, "tilt": [27, 53], "tip": [27, 33], "toctre": [], "toler": [33, 44], "tooth": 34, "top": 27, "topologi": 33, "total": [32, 34], "tp_angl": [33, 44], "transit": [27, 33, 34, 36, 47, 53], "translat": [39, 54], "tree": 5, "trench": [27, 31, 37, 39, 40], "triangl": 4, "triangular": [], "true": [2, 3, 4, 8, 10, 11, 15, 18, 21, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 46, 48, 49, 50, 51, 53, 54], "tube": [39, 54], "tube_min": [39, 54], "tunabl": 33, "tupl": [39, 53, 54], "tuple_to_complex": 19, "turn": 53, "two": [5, 32, 33, 39, 54], "twod_grat": [], "type": [15, 30, 33, 34, 39, 46, 54], "type_tap": [34, 46], "u": [39, 54], "ubend": [39, 54], "ubend_offset": 40, "ubend_p2p": [39, 54], "ubend_rout": [39, 54], "um": [5, 39, 54], "umat_2x2_": 7, "uniform": 36, "uninstanti": [32, 34, 36], "uniqu": [27, 30, 31, 33, 34, 37, 39, 41, 42, 44, 45, 46, 48, 49, 50, 51, 52], "unit": [35, 38, 46], "unit_mesh_2x2": 4, "unless": [39, 54], "upper": 33, "upper_isl": 40, "us": [5, 12, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "util": 13, "v": 37, "valu": [28, 30, 31, 34, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 54], "varnam": [28, 31, 39, 49, 54], "vector": [34, 46], "versatil": 34, "vertic": [32, 33, 34, 36, 53], "via": [9, 30, 31, 37, 39, 40, 49], "via_cel": 8, "via_h2m": [3, 4, 30, 31, 37, 39, 40, 49], "via_i2m": 31, "via_s2m": [8, 30], "vias_arc": 9, "visibl": [], "w": [8, 11, 14, 32, 42, 43, 45, 52], "w0": [32, 33, 37, 42, 44, 49], "w0_rck": 49, "w0_ring": 39, "w1": [3, 32, 33, 37, 40, 42, 44, 49], "w1_bu": [37, 39, 49, 50], "w1_rck": 49, "w1_ring": 39, "w1_slab": 27, "w1_tp": 41, "w2": [3, 40], "w2_bu": [37, 39, 49, 50], "w2_tp": 41, "w_1": 52, "w_2": 52, "w_arm": [3, 4, 36, 48], "w_arm_min": 3, "w_bend_cent": [51, 53], "w_bend_port": [51, 53], "w_box": 27, "w_box_end": 27, "w_bu": [31, 33, 37, 39, 44, 49], "w_cp": [33, 39, 44], "w_dt": 27, "w_end": [11, 21, 22, 45], "w_grow_rib": 52, "w_grow_strip": 52, "w_gt": [34, 46], "w_heater": [3, 31, 37, 39, 40], "w_ht": [3, 4, 30, 49], "w_i": [30, 31], "w_in": [27, 33, 39, 44], "w_itr": 30, "w_m": 41, "w_metal": [3, 4, 31, 37, 39, 40], "w_metal_pn": 30, "w_mid_slab": 27, "w_mmi": [36, 48], "w_mt": [30, 49], "w_n": [30, 31], "w_n_ct": 30, "w_ncont": 31, "w_out": [33, 39, 44], "w_ovlp": 31, "w_p": [30, 31], "w_p_ct": 30, "w_pcont": 31, "w_plus_max": 28, "w_port": [30, 32, 34, 36, 40, 42, 48, 51, 53], "w_ram": 4, "w_rck": 49, "w_rib": 52, "w_ring": [31, 37, 39, 50], "w_slab": 28, "w_teeth_si": 34, "w_teeth_sin": 34, "w_term": 50, "w_tip_cor": 27, "w_tip_slab": 27, "w_tran": [33, 44], "w_waveguid": 7, "w_wg": [2, 3, 4, 5, 23, 25, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 46, 48, 49, 50], "w_wg_slab": 28, "wa": [15, 37], "wa0": [33, 44], "wa1": [33, 44], "wai": [], "waveguid": [5, 27, 30, 32, 33, 34, 36, 37, 38, 39, 53, 54], "waveguide1": 5, "waveguide2": 5, "waveguide_pin": 29, "wavelength": [], "wb": [15, 37], "wb0": [33, 44], "wb1": [33, 44], "wb_in": [33, 44], "wb_out": [33, 44], "wd0": [33, 44], "wd1": [33, 44], "wd_in": [33, 44], "wd_out": [33, 44], "wdm": 40, "welcom": 0, "wg": 44, "wg_ltp": [33, 44], "wgdope": 29, "when": [32, 33, 34, 36, 39, 53, 54], "where": [39, 54], "whether": [28, 30, 31, 33, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52], "which": [5, 39, 54], "wideband": 23, "width": [5, 8, 10, 13, 15, 18, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "width1": [34, 39, 46, 54], "width2": [34, 39, 46, 54], "width2_mm": [39, 54], "width_mm": [39, 54], "width_typ": [11, 15, 37], "with_txt": 10, "within": [36, 53], "wl": 18, "wmin_bend": [51, 53], "wrapper": [33, 36, 46], "write": 18, "written": [], "wu0": [33, 44], "wu1": [33, 44], "wu_in": [33, 44], "wu_out": [33, 44], "x": [8, 10, 11, 14, 15, 18, 28, 30, 31, 32, 33, 34, 36, 39, 40, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 53, 54], "x_space": 8, "xout_offset": [36, 48], "xs2x": 52, "xs_1": 52, "xs_2": 52, "xs_cont_wg": [30, 31], "xs_heater": [3, 4, 30, 31, 37, 39, 40], "xs_ht": [3, 30, 49], "xs_l1": 8, "xs_l2": 8, "xs_metal": [3, 4, 30, 31, 37, 39, 40], "xs_metal_imp": 31, "xs_mt": [30, 49], "xs_n": [30, 31], "xs_ncont": [30, 31], "xs_open": [34, 46], "xs_p": [30, 31], "xs_pad": 8, "xs_pcont": [30, 31], "xs_pn_ct": 30, "xs_port": 30, "xs_ring": [31, 37, 39], "xs_sa": 30, "xs_sin": 27, "xs_trench": 27, "xs_via_h2m": 30, "xs_via_s2m": 30, "xs_wg": [2, 3, 4, 30, 33, 34, 37, 39, 40, 44, 46], "xsection": [39, 54], "xya": 10, "y": [5, 18, 32, 34, 39, 54], "y_cut": 15, "y_space": 8, "yb": [35, 47], "ybranch": [5, 35, 47], "ybranch_3wg": [35, 47], "ybranch_t": 24, "you": [], "your": [], "z": 18, "zehnder": 28, "\u00b5m": [32, 34, 36, 53], "\u03c0": 53}, "titles": ["mxPIC Handbook", "mxpic.components.basic", "mxpic.components.composites.LoopMirror", "mxpic.components.composites.MZI", "mxpic.components.composites.MZI_mesh", "mxpic.components.composites.SptTree", "mxpic.components.composites.advance", "Composites", "mxpic.components.electronics.eic_units", "Electronics", "mxpic.components.gds_devices", "mxpic.components.geometry.curves", "Geometry", "mxpic.components.geometry.polygons", "mxpic.components.geometry.racetrack", "mxpic.components.geometry.rings", "Components", "Others", "mxpic.components.others.simulation.DualPortElements", "Simulation", "mxpic.components.pdks.AMF_pdk", "mxpic.components.pdks.CUMEC_pdk", "mxpic.components.pdks.IMECAS_pdk", "mxpic.components.pdks.hgl_pdk_A", "Pdks", "mxpic.components.pdks.qy_pdk_A", "mxpic.components.pins", "mxpic.components.primitives.EC_dual_layer_px3", "mxpic.components.primitives.active.dev_ps", "Active", "mxpic.components.primitives.active.pin_wg", "mxpic.components.primitives.active.rings", "mxpic.components.primitives.beam_splitters", "mxpic.components.primitives.directional_couplers", "mxpic.components.primitives.grating_couplers", "Primitives", "mxpic.components.primitives.multimode_interferometers", "mxpic.components.primitives.passive.crows", "Passive", "mxpic.components.primitives.passive.rings", "mxpic.components.primitives.passive.unit", "mxpic.components.primitives.pic.PBS", "mxpic.components.primitives.pic.YBS", "mxpic.components.primitives.pic.bragg", "mxpic.components.primitives.pic.couplers", "mxpic.components.primitives.pic.cross", "mxpic.components.primitives.pic.gratings", "Pic", "mxpic.components.primitives.pic.mmi", "mxpic.components.primitives.pic.racetrack", "mxpic.components.primitives.pic.rings", "mxpic.components.primitives.pic.spiral", "mxpic.components.primitives.pic.taper", "mxpic.components.primitives.spiral", "mxpic.components.routing"], "titleterms": {"activ": [28, 29, 30, 31], "adc_std_2x2": [33, 44], "advanc": 6, "aed_r": 50, "aed_ring_pin": 31, "amf_pdk": 20, "amzi_w": 4, "autom": [], "basic": 1, "beam_splitt": 32, "brag_wdm": 40, "bragg": 43, "bragg_apod": 43, "bs_tdc": [33, 44], "circl": 15, "clothoid": 11, "compon": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 14, 15, 16, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "composit": [2, 3, 4, 5, 6, 7], "conchoid": 11, "coupler": 44, "cross": 45, "cross_sin": 45, "crow": 37, "crow_a": 37, "crow_circular_r": 37, "crow_eul_r": 37, "crow_eul_rck": 37, "crow_std_adddrop": 37, "crow_std_allpass": 37, "crx_te_1310": 22, "crx_te_1550": [21, 22], "cumec_pdk": 21, "curv": 11, "dc": [33, 44], "dc_bend": [33, 44], "dc_bend_20_80_cband": 23, "dc_bend_4_96_cband": 23, "dc_bend_50_50_cband": 23, "dc_px3_50_50_cband": 25, "dc_px_3sg": [33, 44], "dc_te_1550": 22, "dev_p": 28, "device_2x2_fdtd_init": 18, "device_coupl": 18, "device_port": 18, "device_ring_bu": 18, "directional_coupl": 33, "document": [], "dualportel": 18, "ec_1550": 21, "ec_dual_layer_px3": 27, "ec_te_1550": 22, "eic_unit": 8, "electron": [8, 9], "elips": 15, "elipse_du": 15, "euler_crow_bu": 18, "euler_crow_inter_cp": 18, "fa": [34, 46], "gc_sin_si_dual_lay": 34, "gc_std_1d": [34, 46], "gc_std_2d": [34, 46], "gc_te_1310": [20, 21, 22], "gc_te_1550": [20, 21, 22], "gc_tm_1310": 22, "gc_tm_1550": [21, 22], "gds_devic": 10, "gds_lib_load": 10, "generate_gds_lib": 10, "geometri": [11, 12, 13, 14, 15], "gpd_1550": 21, "grate": 46, "grating_2d_hol": [34, 46], "grating_2d_hole_3rec": 46, "grating_2d_hole_4rec": 46, "grating_coupl": 34, "handbook": 0, "heater_ndop": 28, "hgl_pdk_a": 23, "hole": 15, "ic_except": 54, "imecas_pdk": 22, "isl": 8, "librari": [], "loopmirror": 2, "mdm": [33, 44], "mdm_adc_te1_1550": 25, "mdm_adc_te2_1550": 25, "mdm_adc_te3_1550": 25, "mmg_1d_d14um_1550_2mod": 25, "mmi": 48, "mmi_1x2_te_1310": [21, 22], "mmi_1x2_te_1550": [21, 22], "mmi_2x2_te_1310": 22, "mmi_2x2_te_1550": [21, 22], "mmi_ml": [36, 48], "mmi_std": [36, 48], "monitorpara": 18, "mrr_a": 39, "mrr_dw_adddrop": 39, "mrr_dw_allpass": 39, "mrr_mm_adddrop": 39, "mrr_mm_allpass": 39, "mrr_std_adddrop": 39, "mrr_std_allpass": 39, "mrr_std_ring": 39, "multimode_interferomet": 36, "mx_bend": 15, "mxpic": [0, 1, 2, 3, 4, 5, 6, 8, 10, 11, 13, 14, 15, 18, 20, 21, 22, 23, 25, 26, 27, 28, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54], "mzi": 3, "mzi_2st_ubend": 3, "mzi_butterfli": 3, "mzi_eubend": 3, "mzi_mesh": 4, "mzi_mesh_parl": 4, "mzi_mesh_tri": 4, "mzi_mesh_u": 4, "mzi_n": 3, "mzi_ns_ubend": 3, "mzi_ubend": 3, "nano_": [34, 46], "other": [17, 18], "pad": 8, "pad_60_80": 21, "passiv": [37, 38, 39, 40], "pb": 41, "pbs_1550": 21, "pbs_3wg": 41, "pd_cband_cel": 20, "pdk": [20, 21, 22, 23, 24, 25], "photon": [], "pic": [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], "pin": 26, "pin_mrr_mm_adddrop": 31, "pin_mrr_mm_allpass": 31, "pin_mrr_std_allpass": 31, "pin_wg": 30, "polygon": 13, "portpara": 18, "primit": [27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53], "ps_2st": 40, "ps_2st_straight": 40, "ps_pin": 28, "psr": 52, "psr_1x2": 40, "qy_pdk_a": 25, "racetrack": [14, 49], "racetrack_mm_adddrop": 49, "racetrack_mm_allpass": 49, "racetrack_std_allpass": 49, "racetrackreson": 49, "reson": 18, "ring": [15, 31, 39, 50], "ring_bus_wg": [33, 44], "ring_phas": 18, "rout": [28, 31, 39, 49, 54], "silicon": [], "simudatafigureplot": 18, "simul": [18, 19], "socr": 39, "socr_adiabat": 39, "socr_adiabatic_cband": 39, "socr_cband": 39, "spiral": [51, 53], "spiral_cicle_mm": [51, 53], "spiral_cicle_std": [51, 53], "spiral_circl": [51, 53], "spiral_rect_std": [51, 53], "spiral_rectangl": [51, 53], "splittingtre": 5, "spttree": 5, "std_crow_v": 37, "std_pic_r": 50, "std_ring_amzi_adddrop": 39, "std_ring_pin": 31, "strt_round_courn": 13, "structur": [], "taper": [34, 46, 52], "taper_xs2x": 52, "templat": 22, "transit": 52, "tuple_to_complex": 18, "umat_2x2_": 4, "unit": 40, "via": 8, "vias_arc": 8, "w_waveguid": 4, "waveguid": 40, "waveguide_pin": 30, "welcom": [], "wgdope": 30, "yb": 42, "ybranch": [32, 42], "ybranch_3wg": [32, 42], "ybranch_t": 22}}) \ No newline at end of file diff --git a/docs/source/mxpic/components/geometry/curves.md b/docs/source/mxpic/components/geometry/curves.md new file mode 100644 index 0000000..b18def6 --- /dev/null +++ b/docs/source/mxpic/components/geometry/curves.md @@ -0,0 +1,24 @@ +# mxpic.components.geometry.curves + +```{eval-rst} +.. automodule:: mxpic.components.geometry.curves + :no-members: +``` + +## Conchoid + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.curves.Conchoid + :members: + :undoc-members: + :show-inheritance: +``` + +## Clothoid + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.curves.Clothoid + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/source/mxpic/components/geometry/index.md b/docs/source/mxpic/components/geometry/index.md new file mode 100644 index 0000000..8284e52 --- /dev/null +++ b/docs/source/mxpic/components/geometry/index.md @@ -0,0 +1,12 @@ +# Geometry + +Reusable geometry structures used by component and primitive generators. + +```{toctree} + :maxdepth: 2 + +polygons +rings +curves +racetrack +``` diff --git a/docs/source/mxpic/components/geometry/polygons.md b/docs/source/mxpic/components/geometry/polygons.md new file mode 100644 index 0000000..236edfb --- /dev/null +++ b/docs/source/mxpic/components/geometry/polygons.md @@ -0,0 +1,15 @@ +# mxpic.components.geometry.polygons + +```{eval-rst} +.. automodule:: mxpic.components.geometry.polygons + :no-members: +``` + +## strt_round_courner + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.polygons.strt_round_courner + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/source/mxpic/components/geometry/racetrack.md b/docs/source/mxpic/components/geometry/racetrack.md new file mode 100644 index 0000000..f3db3dc --- /dev/null +++ b/docs/source/mxpic/components/geometry/racetrack.md @@ -0,0 +1,15 @@ +# mxpic.components.geometry.racetrack + +```{eval-rst} +.. automodule:: mxpic.components.geometry.racetrack + :no-members: +``` + +## Racetrack + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.racetrack.Racetrack + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/source/mxpic/components/geometry/rings.md b/docs/source/mxpic/components/geometry/rings.md new file mode 100644 index 0000000..7de59b2 --- /dev/null +++ b/docs/source/mxpic/components/geometry/rings.md @@ -0,0 +1,51 @@ +# mxpic.components.geometry.rings + +```{eval-rst} +.. automodule:: mxpic.components.geometry.rings + :no-members: +``` + +## circle + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.circle + :members: + :undoc-members: + :show-inheritance: +``` + +## mx_bend + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.mx_bend + :members: + :undoc-members: + :show-inheritance: +``` + +## Elipse_dual + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.Elipse_dual + :members: + :undoc-members: + :show-inheritance: +``` + +## Elipse + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.Elipse + :members: + :undoc-members: + :show-inheritance: +``` + +## hole + +```{eval-rst} +.. autoclass:: mxpic.components.geometry.rings.hole + :members: + :undoc-members: + :show-inheritance: +``` diff --git a/docs/source/mxpic/components/index.md b/docs/source/mxpic/components/index.md index ae9950c..32b47a3 100644 --- a/docs/source/mxpic/components/index.md +++ b/docs/source/mxpic/components/index.md @@ -12,5 +12,5 @@ basic gds_devices pins routing -structures +geometry/index ``` diff --git a/docs/source/mxpic/components/structures.md b/docs/source/mxpic/components/structures.md deleted file mode 100644 index 44abfaf..0000000 --- a/docs/source/mxpic/components/structures.md +++ /dev/null @@ -1,87 +0,0 @@ -# mxpic.components.structures - -```{eval-rst} -.. automodule:: mxpic.components.structures - :no-members: -``` - -## strt_round_courner - -```{eval-rst} -.. autoclass:: mxpic.components.structures.strt_round_courner - :members: - :undoc-members: - :show-inheritance: -``` - -## circle - -```{eval-rst} -.. autoclass:: mxpic.components.structures.circle - :members: - :undoc-members: - :show-inheritance: -``` - -## mx_bend - -```{eval-rst} -.. autoclass:: mxpic.components.structures.mx_bend - :members: - :undoc-members: - :show-inheritance: -``` - -## Elipse_dual - -```{eval-rst} -.. autoclass:: mxpic.components.structures.Elipse_dual - :members: - :undoc-members: - :show-inheritance: -``` - -## Elipse - -```{eval-rst} -.. autoclass:: mxpic.components.structures.Elipse - :members: - :undoc-members: - :show-inheritance: -``` - -## hole - -```{eval-rst} -.. autoclass:: mxpic.components.structures.hole - :members: - :undoc-members: - :show-inheritance: -``` - -## Conchoid - -```{eval-rst} -.. autoclass:: mxpic.components.structures.Conchoid - :members: - :undoc-members: - :show-inheritance: -``` - -## Clothoid - -```{eval-rst} -.. autoclass:: mxpic.components.structures.Clothoid - :members: - :undoc-members: - :show-inheritance: -``` - -## Racetrack - -```{eval-rst} -.. autoclass:: mxpic.components.structures.Racetrack - :members: - :undoc-members: - :show-inheritance: -``` diff --git a/mxpic/__init__.py b/mxpic/__init__.py index 635756a..5b388cf 100644 --- a/mxpic/__init__.py +++ b/mxpic/__init__.py @@ -14,7 +14,7 @@ from .components.gds_devices import * from .components.routing import * from . import components -from .components import structures +from .components import geometry from .components import primitives from .components.primitives import passive diff --git a/mxpic/components/__init__.py b/mxpic/components/__init__.py index b67c01e..43c4a89 100644 --- a/mxpic/components/__init__.py +++ b/mxpic/components/__init__.py @@ -8,7 +8,7 @@ from . import basic from . import gds_devices from . import pins from . import routing -from . import structures +from . import geometry from . import primitives from . import composites diff --git a/mxpic/components/composites/LoopMirror.py b/mxpic/components/composites/LoopMirror.py index 94f0b2c..87a55e7 100644 --- a/mxpic/components/composites/LoopMirror.py +++ b/mxpic/components/composites/LoopMirror.py @@ -3,7 +3,7 @@ import nazca as nd import numpy as np import nazca.interconnects as IC -from ..structures import * +from ..geometry import * from ..routing import * from ..primitives.pic import * diff --git a/mxpic/components/composites/MZI.py b/mxpic/components/composites/MZI.py index fc6d439..bf90a68 100644 --- a/mxpic/components/composites/MZI.py +++ b/mxpic/components/composites/MZI.py @@ -4,7 +4,7 @@ import numpy as np # from mxpic.passive.unit import PS_3xg -from ..structures import * +from ..geometry import * from ..routing import Route from ..primitives.pic import * diff --git a/mxpic/components/composites/MZI_mesh.py b/mxpic/components/composites/MZI_mesh.py index b807e54..c20aa89 100644 --- a/mxpic/components/composites/MZI_mesh.py +++ b/mxpic/components/composites/MZI_mesh.py @@ -4,7 +4,7 @@ import numpy as np from ..primitives.passive import DC -from ..structures import * +from ..geometry import * from ..routing import Route from ..primitives.pic import * diff --git a/mxpic/components/composites/SptTree.py b/mxpic/components/composites/SptTree.py index fe24ef2..1bd11dc 100644 --- a/mxpic/components/composites/SptTree.py +++ b/mxpic/components/composites/SptTree.py @@ -3,7 +3,7 @@ import nazca as nd import numpy as np import nazca.interconnects as IC -from ..structures import * +from ..geometry import * from ..routing import * from ..primitives.pic import * diff --git a/mxpic/components/electronics/eic_units.py b/mxpic/components/electronics/eic_units.py index 4fa4fc4..0815520 100644 --- a/mxpic/components/electronics/eic_units.py +++ b/mxpic/components/electronics/eic_units.py @@ -2,7 +2,7 @@ from typing import Any, Optional import nazca as nd import numpy as np -from ..structures import * +from ..geometry import * from ...technologies import * from ..basic import __cell_arg__ diff --git a/mxpic/components/gds_devices.py b/mxpic/components/gds_devices.py index fdb74ac..7ade075 100644 --- a/mxpic/components/gds_devices.py +++ b/mxpic/components/gds_devices.py @@ -4,7 +4,7 @@ import nazca as nd import numpy as np import os -from .structures import * +from .geometry import * class gds_lib_load: diff --git a/mxpic/components/geometry/__init__.py b/mxpic/components/geometry/__init__.py new file mode 100644 index 0000000..49f6b92 --- /dev/null +++ b/mxpic/components/geometry/__init__.py @@ -0,0 +1,38 @@ +"""Reusable geometry structures used by MxPIC components. + +Wildcard exports intentionally include the small math/Nazca aliases that +older component modules imported from ``structures.py``. +""" + +from typing import Any, Optional +from cmath import pi + +import nazca as nd +import nazca.clipper as clp +import numpy as np + +from .polygons import _my_polygon, strt_round_courner +from .rings import circle, mx_bend, Elipse_dual, Elipse, hole +from .curves import Conchoid, _line2wg_, _my_poly_spiral, Clothoid +from .racetrack import Racetrack + +__all__ = [ + "Any", + "Optional", + "pi", + "nd", + "clp", + "np", + "_my_polygon", + "strt_round_courner", + "circle", + "mx_bend", + "Elipse_dual", + "Elipse", + "hole", + "Conchoid", + "_line2wg_", + "_my_poly_spiral", + "Clothoid", + "Racetrack", +] diff --git a/mxpic/components/geometry/curves.py b/mxpic/components/geometry/curves.py new file mode 100644 index 0000000..2835f5d --- /dev/null +++ b/mxpic/components/geometry/curves.py @@ -0,0 +1,442 @@ +"""Curve and spiral geometry primitives.""" + +from typing import Any, Optional +from cmath import pi + +import nazca as nd +import numpy as np + +from .polygons import _my_polygon + +class Conchoid: + def __init__(self,R0: Any,kR: Any,T: Any,w: float,layer: str,w_end: Optional[float]=None,res: float=0.1,final_flat: Any=None,begin_flat: Any=None,xs: Optional[str]=None) -> None: + ## with half circle to be one cycle + + if (w_end==None): + w_end = w + + + with nd.Cell(instantiate=False)as C: + n_sects = int(np.floor(T/np.pi)) ## intersecting into different semi-circle + + L = R0*T + 1/2*kR*T**2 ## The total length of the Conchoid center line + n_points = int(np.floor(L/res))+1 + + ## calculating sections + if (np.abs(T-n_sects*np.pi) <0.0001): + n_sects = n_sects + else: + n_sects = n_sects+1 + + # res_sect = int(np.floor(res/n_sects))+1 + + # res = 0 + + if (layer!=None): + nd.add_xsection(name='temp') + nd.add_layer2xsection(xsection='temp',layer=layer,growx=0,growy=0) + xs = 'temp' + + for _n_ in range(0,n_sects): + # phi_start = _n_*pi + # phi_end = min(T,_n_*pi+pi) ## forward placement + + phi_end = T - _n_*pi + phi_start = max(0,T - _n_*pi - pi) + + L_sect = R0*(phi_end-phi_start) + 1/2*kR*(phi_end**2 - phi_start**2) + n_points = int(L_sect/res)+1 + + if (layer!=None): + Theta = np.linspace(phi_start, phi_end ,n_points) + R = (Theta*kR+R0) ## conchoid function + + # res = kR/2*T*T + R0*T + # res = res + np.sum(R[0:-1]*np.diff(Theta)) + + w_cur = w + + if (_n_==0): + w_cur = np.linspace(w,w_end,n_points) + # print("Loading Taper area") + + vtx_cx = R*np.cos(Theta) + vtx_cy = R*np.sin(Theta) + vtx_center = np.c_[vtx_cx,vtx_cy] + + e_theta = -1/((R0/kR)+Theta) ## actuall norm towards spiral + # e_rou = np.ones(len(e_theta)) + ey = np.sin(Theta) - np.cos(Theta)*kR/R + ex = np.cos(Theta) + np.sin(Theta)*kR/R + + if (final_flat!=None and _n_==0): + ey[-1] = np.sin(final_flat/180*np.pi) + ex[-1] = np.cos(final_flat/180*np.pi) + + if (begin_flat!=None and _n_==n_sects-1): + ey[0] = np.sin(begin_flat/180*np.pi) + ex[0] = np.cos(begin_flat/180*np.pi) + # if (final_flat!=None and _n_==0): + # e_theta[-1] = final_flat + # if (begin_flat!=None and _n_==n_sects-1): + # e_theta[0] = begin_flat + + if (_n_==0): + self.Atilt = np.arctan(ey[0]/ex[0])/np.pi*180 + # print("Atilt_conchoid = %.5f" % self.Atilt) + + Lnorm = np.sqrt(np.power(ex,2)+np.power(ey,2)) + + vtx_x = R*np.cos(Theta) + vtx_y = R*np.sin(Theta) + + vtx_out_x = vtx_x + w_cur/2*ex/Lnorm + vtx_out_y = vtx_y + w_cur/2*ey/Lnorm + + vtx_in_x = vtx_x - w_cur/2*ex/Lnorm + vtx_in_y = vtx_y - w_cur/2*ey/Lnorm + + vtx_in = np.c_[np.flip(vtx_in_x),np.flip(vtx_in_y)] + vtx_out = np.c_[vtx_out_x,vtx_out_y] + vtx = np.r_[vtx_out,vtx_in] + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) + + elif(layer==None and xs!=None): + for layers,growx,growy,acc in nd.layeriter(xs=xs): + (a1,b1), (a2,b2),c1,c2 = growx + Theta = np.linspace(phi_start, phi_end ,n_points) + R = (Theta*kR+R0) + # res = kR/2*T*T + R0*T + # res = res + np.sum(R[0:-1]*np.diff(Theta) + + w_cur = w*(a1-a2) + (b1-b2) + + if (_n_==0): + w_cur = np.linspace(w,w_end,n_points) + w_cur = w_cur*(a1-a2) + (b1-b2) + + vtx_cx = R*np.cos(Theta) + vtx_cy = R*np.sin(Theta) + vtx_center = np.c_[vtx_cx,vtx_cy] + + # e_theta = -1/((R0/kR)+Theta) + # e_rou = np.ones(len(e_theta)) + + # if (final_flat!=None and _n_==0): + # e_theta[-1] = final_flat + # if (begin_flat!=None and _n_==n_sects-1): + # e_theta[0] = begin_flat + + + ey = np.sin(Theta)*R - np.sin(Theta)*kR + ex = np.cos(Theta)*R + np.cos(Theta)*kR + + if (final_flat!=None and _n_==0): + ey[-1] = np.sin(final_flat/180*np.pi) + ex[-1] = np.cos(final_flat/180*np.pi) + + if (begin_flat!=None and _n_==n_sects-1): + ey[0] = np.sin(begin_flat/180*np.pi) + ex[0] = np.cos(begin_flat/180*np.pi) + + Lnorm = np.sqrt(np.power(ex,2)+np.power(ey,2)) + vtx_x = R*np.cos(Theta) + vtx_y = R*np.sin(Theta) + + vtx_out_x = vtx_x + w_cur/2*ex/Lnorm + vtx_out_y = vtx_y + w_cur/2*ey/Lnorm + + vtx_in_x = vtx_x - w_cur/2*ex/Lnorm + vtx_in_y = vtx_y - w_cur/2*ey/Lnorm + + vtx_in = np.c_[np.flip(vtx_in_x),np.flip(vtx_in_y)] + vtx_out = np.c_[vtx_out_x,vtx_out_y] + vtx = np.r_[vtx_out,vtx_in] + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) + + Rmax = T*kR+R0 + nd.Pin(name="a1").put(R0,0,-90) + nd.Pin(name="b1").put(Rmax*np.cos(T),Rmax*np.sin(T),(T/np.pi*180+90)) + + self.L = L + self.cell =C + self.vtx_center = vtx_center + self.vtx = vtx + self.K_end = (np.power(np.max(R),2) + 2*np.power(kR,2)) / np.power((np.power(np.max(R),2) + np.power(kR,2)),1.5) + self.R_end = 1/self.K_end + +def _line2wg_(x,y,wu,wd,theta,n_points): + """ building waveguide with center line and side expansion + + Args: + vtx_line (list[float]): the location of points, [x,y] + width (list[float]): the expansion width of points vertical to the pointing vector, [wu,wd] + theta (list[float]): the pointing angle, [theta], 0 represent right, 180 represent left + """ + + theta = theta*np.pi/180 + x_u = x+wu*np.cos(theta+pi/2) + x_d = x+wd*np.cos(theta-pi/2) + + y_u = y+wu*np.sin(theta+pi/2) + y_d = y+wd*np.sin(theta-pi/2) + + ### polygon section, reducing resolution + sect = np.linspace(start= 0,stop= len(x_u)-1,num= n_points) + sect = np.asarray(sect, dtype = int) + + x_u = x_u[sect] + x_d = x_d[sect] + y_u = y_u[sect] + y_d = y_d[sect] + + vtx_u = np.c_[x_u,y_u] + vtx_d = np.c_[x_d,y_d] + + + + vtx = np.r_[vtx_u,np.flip(vtx_d,0)] + + return vtx + +def _my_poly_spiral(r,theta,order,res,R_max,sz_restrict=None): + ''' generating a poly spiral curve + Args + r (2*1 list) :r[0] is the begining + theta (2*1 list) :theta[0] is the begining [in degree] + Return + frame (nazca.cell): + ''' + theta[0] = theta[0]/180*np.pi ## angle format changing + theta[1] = theta[1]/180*np.pi ## angle format changing + + K_ends = np.array([1/r[0],1/r[1]]) ## definition of the curvature, r[0] is the beginnin and r[1] is the ending + L0 = np.abs(theta[0]-theta[1])/(K_ends[0] + (K_ends[1]-K_ends[0])*order/(order+1)) + L = np.linspace(0,L0,int(np.floor(L0/res)+1)) ## L = [0:res:L0]; + K = K_ends[0] + (K_ends[1] - K_ends[0])/np.power(L0,order)*(np.power(L0,order) - np.power(np.abs(L-L0),order)) + R = 1/K + + dir = np.sign(theta[1] - theta[0]) + dt = dir*res/R + + theta_temp = np.cumsum(dt) + theta[0] + """ 2023.08.01 updated, using array calculation instead of for loop""" + + dx = dir*R[1:]*( np.sin(theta_temp[1:]) - np.sin(theta_temp[0:-1])) + dy = -dir*R[1:]*( np.cos(theta_temp[1:]) - np.cos(theta_temp[0:-1])) + + x = np.r_[0,np.cumsum(dx)] + y = np.r_[0,np.cumsum(dy)] + # x = np.zeros(len(L)) + # y = np.zeros(len(L)) + + # idx = np.linspace(1,len(L)-1,len(L)-1) + + # for _idx_ in idx : + # _idx_ = int(_idx_) + # x[_idx_] = x[_idx_-1] + dir*R[_idx_]*( np.sin(theta_temp[_idx_]) - np.sin(theta_temp[_idx_-1])) + # y[_idx_] = y[_idx_-1] - dir*R[_idx_]*( np.cos(theta_temp[_idx_]) - np.cos(theta_temp[_idx_-1])) + + vector = np.c_[x,y,theta_temp,L] + + return (vector,L0) + +class Clothoid: + def __init__(self, + name:str=None, + R: 'list|np.ndarray'=[10,20], + w: 'list|np.ndarray|float'=[0.4,0.5], ## w either has the length as R, or 1 element, or 2 element + A: 'list|np.ndarray'=[0,45], + width_type: str='sine', + spiral_order: float=1, + Rmax:float=10000, + dL_cal:float=0.001, + dL_wg: float = 0.1, + # n_points:int=1024, + xs:str='strip', + layer:str=None, + sharp_patch:bool=True, + end_patch : bool=True, + show_pins:bool=False) -> None: + """_summary_ + + Args: + R (list|np.ndarray, optional): Curvature radius in each attaching point. Defaults to [10,20]. + w (list|np.ndarray|float, optional): Width at each attaching point corresponding to R, or it can be set to one or two element. Defaults to [0.4,0.5]. + A (list|np.ndarray, optional): Angle at each attaching point. Defaults to [0,45]. + width_type (str, optional): The width function with length or angle 'linear' 'linear2' 'sine' 'sine2'. Defaults to 'sine'. + spiral_order (float, optional): The curvature order of spiral. Defaults to 1. + Rmax (float, optional): Maxmum radius. Defaults to 10000. + res (float, optional): Resolution in calculation. Defaults to 0.001. + n_points (int, optional): Resolution in GDS. Defaults to 1024. + xs (str, optional): XSection of the devices. Defaults to 'strip'. + layer (str, optional): Layer of the devices. Defaults to None. + sharp_patch (bool, optional): Either to patch. Defaults to True. + show_pins (bool, optional): Either to show pins. Defaults to False. + + Raises: + Exception: _description_ + Exception: _description_ + """ + + if (isinstance(w,int) or isinstance(w,float)): + w= np.array([w,w]) + + self.name = name + self.R = R + self.A = A + self.width_type = width_type + self.spiral_order = spiral_order + self.dL_cal = dL_cal + # self.n_points = n_points + self.xs =xs + self.layer = layer + self.dL_wg = dL_wg + + if (len(R) != len(A)): + raise Exception("ERROR: In , and are not matched in length, please keep len(A) = len(R)") + + if (isinstance(spiral_order,int) or isinstance(spiral_order,float)): + spiral_order = spiral_order*np.ones(len(R)-1) + + elif(isinstance(spiral_order,list)): + spiral_order = np.array(spiral_order) + + ## center curve routing + _idx_act_=0 + for _idx_ in range(0,len(R)-1): + if ( abs( A[_idx_] - A[_idx_+1] )<0.001 ): + + continue + vec_cur,L0_cur = _my_poly_spiral([R[_idx_],R[_idx_+1]],[A[_idx_],A[_idx_+1]],spiral_order[_idx_],dL_cal,Rmax) + _idx_act_ = _idx_act_+1 + + x_cur = vec_cur[:,0] + y_cur = vec_cur[:,1] + theta_cur = vec_cur[:,2]/np.pi*180 ## pointing vector + L_cur = vec_cur[:,3] + + if (_idx_act_==1): + L = L_cur + x = x_cur + y = y_cur + theta = theta_cur + L0 = L0_cur + else : + L = np.r_[L,L_cur+L[-1]] + x = np.r_[x,x_cur+x[-1]] + y = np.r_[y,y_cur+y[-1]] + theta = np.r_[theta,theta_cur] + L0 = L0 + L0_cur + + if (len(w)>2 and len(w)==len(R)): + w_cur = (w[_idx_+1]-w[_idx_])/L0_cur*L_cur + (w[_idx_]) + if (_idx_act_==1): + w_fianl = w_cur + else : + w_fianl = np.r_[w_fianl,w_cur] + + self.x = x + self.y = y + self.L = L + self.L0 = L0 + self.theta = theta + self.vtx_center = np.c_[x,y] + self.end_patch = end_patch + self.sz = [np.abs(max(self.x) - min(self.x)),np.abs(max(self.y) - min(self.y))] + + if (dL_wg!=None): + self.n_points = int(np.floor(self.L0/self.dL_wg)+1) ## overwrite n_points + + # print("n points",self.n_points) + + if (len(w)==2): + ## width winding + if (width_type=='linear'): + w = (w[1]-w[0])/L0*L + w[0] + elif (width_type=='dual_linear'): + w = (w[1]-w[0])/L0/2*np.abs(L-L0/2) + w[0] + elif (width_type=='sine'): + w = (w[0]-w[1])*np.cos(theta/180*pi)*np.cos(theta/180*pi) + w[1] + elif (width_type=='dual_sine'): + w = (w[0]-w[1])*np.cos(theta/2/180*pi)*np.cos(theta/2/180*pi) + w[1] + elif (width_type=='crow_customize' or width_type=='pumpkin'): + dw = (w[1]-w[0]) + z = theta/180*np.pi + z = np.sqrt(z)*np.sqrt(np.pi/2) + z = np.sin(z)**2*np.pi/2 + + w = dw*np.sin(z)**2 + w[0] + + + else : + w = (w[1]-w[0])/L0*L + w[0] + + self.w = np.array(w) + elif (len(w)==len(R)): + self.w = w_fianl + else: + raise Exception("ERROR, In , is not matched with , please keep len(w)=2 or len(w)=R or w=int") + + self.cell = self.generate_gds(sharp_patch=sharp_patch,show_pins=show_pins) + + + def generate_gds(self,sharp_patch,show_pins): + if (self.name is None): + self.instantiate = False + else: + self.instantiate = True + with nd.Cell(name=self.name,instantiate=self.instantiate) as C: + + if (self.layer==None and self.xs!=None): ## if definition is in layers + for layers,growx,growy,acc in nd.layeriter(xs=self.xs): + (a1,b1), (a2,b2),c1,c2 = growx + if (b1!=0 and b2!=0): + vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w*a1+b1,wd= -self.w*a2-b2,theta=self.theta,n_points=self.n_points) + + dX = np.max(vtx_wg[:,0]) - np.min(vtx_wg[:,0]) + dY = np.max(vtx_wg[:,1]) - np.min(vtx_wg[:,1]) + cX = np.max(vtx_wg[:,0])/2 + np.min(vtx_wg[:,0])/2 + cY = np.max(vtx_wg[:,1])/2 + np.min(vtx_wg[:,1])/2 + + if (sharp_patch): + if (self.end_patch): + nd.strt(length = dX+(b1-b2),width = dY,layer=layers).put(cX-dX/2-b1,cY,0) + + else: + nd.strt(length = dX,width = dY,layer=layers).put(cX-dX/2,cY,0) + else : + + + _my_polygon(layers,vtx_wg).put(0,0,0) + + else : + vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w*a1+b1,wd= -self.w*a2-b2,theta=self.theta,n_points=self.n_points) + self.vtx =vtx_wg + _my_polygon(layers,vtx_wg).put(0,0,0) + + nd.Pin(name='a0',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) + nd.Pin(name='b0',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) + + nd.Pin(name='a1',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) + nd.Pin(name='b1',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) + elif(self.layer!=None) : ## if definition is in xsections + + vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w/2,wd= self.w/2,theta=self.theta,n_points=self.n_points) + + _my_polygon(self.layer,vtx_wg).put(0,0,0) + + nd.Pin(name='a0',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) + nd.Pin(name='b0',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) + + nd.Pin(name='a1',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) + nd.Pin(name='b1',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) + + else: + raise Exception("ERROR: In , not defined") + + if (show_pins): + nd.put_stub() + self.sz_p2p = [np.abs(self.x[-1] - self.x[0]),np.abs(self.y[-1] - self.y[0])] + + return C diff --git a/mxpic/components/geometry/polygons.py b/mxpic/components/geometry/polygons.py new file mode 100644 index 0000000..284c51d --- /dev/null +++ b/mxpic/components/geometry/polygons.py @@ -0,0 +1,85 @@ +"""Polygon helpers and simple geometric utility cells.""" + +from typing import Optional + +import nazca as nd +import nazca.clipper as clp +import numpy as np + +def _my_polygon (layer_wg,vtx,vtx_not=None) : + ''' establishing a polygon with input vertices + Args + vtx (2*x list) : + Return + frame (nazca.cell): + ''' + sz_l = vtx.shape + sz_l = sz_l[0] + + idx_seq = np.linspace(1,sz_l-1,sz_l-1) + + _points_ = [(vtx[0,0],vtx[0,1])] + for idx in idx_seq: + _point_cur_ = [(vtx[int(idx),0],vtx[int(idx),1])] + _points_.extend(_point_cur_) + + if (isinstance(vtx_not,np.ndarray) ): + _points_cut_ = [(vtx_not[0,0],vtx_not[0,1])] + sz_l = vtx_not.shape + sz_l = sz_l[0] + for idx in range(0,sz_l): + _point_cur_ = [(vtx_not[int(idx),0],vtx_not[int(idx),1])] + _points_cut_.extend(_point_cur_) + + _points_ = clp.diff_polygons(paths_A=[_points_],paths_B=[_points_cut_]) + _points_ = _points_[0] + # nd.Polygon(layer=layer_wg, points = _points_cut_).put() + frame = nd.Polygon(layer=layer_wg, points = _points_) + + return frame + +class strt_round_courner: + def __init__(self, width: float=5, length: float = 10, layer: Optional[str]=None, radius: float=1, n_points: int=64) -> None: + + if (radius>width/2): + radius = width/2 + + with nd.Cell(instantiate=False) as C: + + theta = np.linspace(0,np.pi/2,n_points) ## establish a arc + vtx_ru_x = radius*np.cos(theta) + length-radius + vtx_ru_y = radius*np.sin(theta) + width/2 - radius + + theta = np.linspace(np.pi/2,np.pi,n_points) ## establish a arc + vtx_lu_x = radius*np.cos(theta) + radius + vtx_lu_y = radius*np.sin(theta) + width/2 - radius + + + theta = np.linspace(np.pi,np.pi/2*3,n_points) ## establish a arc + vtx_ld_x = radius*np.cos(theta) + radius + vtx_ld_y = radius*np.sin(theta) - width/2 + radius + + theta = np.linspace(-np.pi/2,0,n_points) ## establish a arc + vtx_rd_x = radius*np.cos(theta) + length-radius + vtx_rd_y = radius*np.sin(theta) - width/2 + radius + + vtx_x = np.r_[vtx_ru_x,vtx_lu_x,vtx_ld_x,vtx_rd_x] + vtx_y = np.r_[vtx_ru_y,vtx_lu_y,vtx_ld_y,vtx_rd_y] + + + # vtx_x = vtx_ru_x + # vtx_y = vtx_ru_y + + + vtx = np.c_[vtx_x,vtx_y] + # vtx = np.transpose(vtx) + # print(np.shape(vtx)) + + _my_polygon(layer_wg=layer,vtx=vtx).put() + + nd.Pin(name='a0',width=width).put(0,0,180) + nd.Pin(name='b0',width=width).put(length,0,0) + + nd.put_stub() + + self.cell = C diff --git a/mxpic/components/geometry/racetrack.py b/mxpic/components/geometry/racetrack.py new file mode 100644 index 0000000..8ec26de --- /dev/null +++ b/mxpic/components/geometry/racetrack.py @@ -0,0 +1,99 @@ +"""Racetrack geometry primitive.""" + +from typing import Any, Optional + +import nazca as nd +import numpy as np + +from .rings import circle + +class Racetrack: + def __init__(self, + bend_cell: Any=None, + xs: str = 'strip', + layer: Optional[str] = None, + R_bend: int = 10, + w: float = 0.5, + dLx: float = 100, + dLy: float = 100, + # n_points = 128, + res: float = 0.001, + ) -> None: + + if (bend_cell==None): + bend_cell = circle(xs=xs,theta_start=0,theta_stop=90,res=res, + # n_points=n_points, + radius=R_bend,width=w).cell + + if (isinstance(bend_cell,nd.Cell)): + bend_cell = bend_cell + elif (hasattr(bend_cell,'cell')) : + bend_cell = bend_cell.cell + + else: + raise Exception("ERROR: In , not a regonizable class, please input [nd.Cell] or class with [nd.Cell]") + + self.dLx = dLx + self.R_bend =R_bend + self.dLy = dLy + self.xs = xs + self.layer = layer + + self.bend_cell = bend_cell + + self.A_bend = np.abs(bend_cell.pin['a1'].a - bend_cell.pin['b1'].a) + self.w = [bend_cell.pin['b1'].width,bend_cell.pin['a1'].width] + + self.w_crack = 0.002 + + self.cell = self.generate_gds() + + + def generate_gds(self): + with nd.Cell(instantiate=False) as C: + + bend_sz = [ abs(self.bend_cell.pin['a0'].x - self.bend_cell.pin['b0'].x) + ,abs(self.bend_cell.pin['a0'].y - self.bend_cell.pin['b0'].y)] + + if (self.layer==None): + if (self.A_bend==90): + nd.strt(length=self.dLx+self.w_crack,width=self.w[1],xs=self.xs).put(-self.dLx/2-self.w_crack/2,-self.dLy/2-bend_sz[1],0) + self.bend_cell.put(-self.dLx/2,-self.dLy/2-bend_sz[1],0,flip=0) + nd.strt(length=self.dLy+self.w_crack,width=self.w[0],xs=self.xs).put( self.dLx/2+bend_sz[0],-self.dLy/2-self.w_crack/2,90) + self.bend_cell.put( self.dLx/2,-self.dLy/2-bend_sz[1],180,flip=1) + nd.strt(length=self.dLx+self.w_crack,width=self.w[1],xs=self.xs).put(-self.dLx/2-self.w_crack/2, self.dLy/2+bend_sz[1],0) + self.bend_cell.put(-self.dLx/2, self.dLy/2+bend_sz[1],0,flip=1) + nd.strt(length=self.dLy+self.w_crack,width=self.w[0],xs=self.xs).put(-self.dLx/2-bend_sz[0],-self.dLy/2-self.w_crack/2,90) + self.bend_cell.put( self.dLx/2, self.dLy/2+bend_sz[1],180,flip=0) + elif (self.A_bend==0 or self.A_bend==360): ## in this case, dy is not used + temp = nd.strt(length=self.dLx,width=self.w[0],xs=self.xs).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) + sp_r = self.bend_cell.put() + sp_l = self.bend_cell.put(temp.pin['a0'].xya(),flip=1) + temp = nd.strt(length=np.abs(sp_r.pin['b0'].x-sp_l.pin['b0'].x),width=sp_r.pin['b0'].width,xs=self.xs).put() + else: + if (self.A_bend==90): + nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) + temp = self.bend_cell.put() + temp = nd.strt(length=self.dLy,width=self.w[1],layer=self.layer).put() + temp = self.bend_cell.put('b0',temp.pin['b0'].xya(),flip=1) + temp = nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(temp.pin['a0'].xya()) + temp = self.bend_cell.put() + temp = nd.strt(length=self.dLy,width=self.w[1],layer=self.layer).put() + temp = self.bend_cell.put('b0',temp.pin['b0'].xya(),flip=1) + elif (self.A_bend==0 or self.A_bend==360): ## in this case, dy is not used + temp = nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) + sp_r = self.bend_cell.put() + sp_l = self.bend_cell.put(temp.pin['a0'].xya(),flip=1) + temp = nd.strt(length=np.abs(sp_r.pin['b0'].x-sp_l.pin['b0'].x),width=sp_r.pin['b0'].width,layer=self.layer).put() + + + nd.Pin(name="r1",width=self.w[0]).put(0,-self.dLy/2-bend_sz[1],0) + nd.Pin(name="r3",width=self.w[0]).put(0, self.dLy/2+bend_sz[1],180) + + nd.Pin(name="r2",width=self.w[1]).put(-self.dLx/2-bend_sz[0], 0, 90) + nd.Pin(name="r4",width=self.w[1]).put( self.dLx/2+bend_sz[0], 0,-90) + + sz = [2*bend_sz[0]+self.dLx,2*bend_sz[1]+self.dLy] + self.sz = sz + + return C diff --git a/mxpic/components/geometry/rings.py b/mxpic/components/geometry/rings.py new file mode 100644 index 0000000..a1dcede --- /dev/null +++ b/mxpic/components/geometry/rings.py @@ -0,0 +1,514 @@ +"""Circular, elliptical, and bend geometry primitives.""" + +from typing import Any, Optional +from cmath import pi + +import nazca as nd +import numpy as np + +from .polygons import _my_polygon + +class circle : + ''' + # ================================================================= + # @ File : + # @ structure: circle ring or disk + # @ Args : * radius : center radius of the ring + # : * width : width of the ring + # : * theta_start : start end of the ring, range [0~360], can be negative + # : * theta_stop : stop end of the ring, range [0~360], can be negative + # : * n_points : resolution of the polygon + # : * xs : placing layer + # @ located in the center of the ring + # ================================================================= + ''' + def __init__(self,radius: float = 10, width: float = 0.45, theta_start: float=0, theta_stop: float=360,res: float=0.05,angle: Optional[float]=None, + # n_points = 64, + xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True, + y_cut: Optional[float] = None) -> None: + with nd.Cell(instantiate=False) as C: + + if (angle!=None): + theta_start = 0 + theta_stop = angle + + if (res!=None): + n_points = int(np.floor(abs(theta_start-theta_stop)*radius*np.pi/180/res)+1) + + if (layer==None): + for layers,growx,growy,acc in nd.layeriter(xs=xs): + (a1,b1), (a2,b2),c1,c2 = growx + + theta = np.linspace(theta_start,theta_stop,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(radius+width*a1 + b1) + vtx_outer_y = np.sin(theta)*(radius+width*a1 + b1) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + ## used for 360 degree + if (radius+width*a2+b1>0.0000001 or np.abs(theta_stop-theta_start)<360): + vtx_inner_x = np.cos(theta)*(radius+width*a2 + b2) + vtx_inner_y = np.sin(theta)*(radius+width*a2 + b2) + vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] + + vtx = np.r_[vtx_outer,vtx_inner] + else : + vtx = vtx_outer + + """ add in 2023.09.20 """ + vtx_y = vtx[:,1] + vtx_x = vtx[:,0] + + vtx_cut = None + if (y_cut!=None): + if (y_cut> min(vtx_y)): + x_cut_max = max(vtx_x) + x_cut_min = min(vtx_x) + + y_cut_max = y_cut + y_cut_min = min(vtx_y)-1 + + vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) + vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) + + vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] + + + """ """ + + if (sharp_patch==True and b2!=0 and b1!=0): + L_patch = max([max(vtx_outer_x),max(vtx_inner_x)])-min([min(vtx_outer_x),min(vtx_inner_x)]) + X_patch = 1/2*(max([max(vtx_outer_x),max(vtx_inner_x)])+min([min(vtx_outer_x),min(vtx_inner_x)])) + W_patch = (max([max(vtx_outer_y),max(vtx_inner_y)])-min([min(vtx_outer_y),min(vtx_inner_y)])) + Y_patch = 1/2*(max([max(vtx_outer_y),max(vtx_inner_y)])+min([min(vtx_outer_y),min(vtx_inner_y)])) + + nd.strt(length=L_patch,width=W_patch,layer=layers).put(X_patch-L_patch/2,Y_patch,0) + + else: + _my_polygon(layer_wg=layers,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) + + + nd.Pin(name='a1',width=width,xs=xs).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) + nd.Pin(name='b1',width=width,xs=xs).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) + + else: + theta = np.linspace(theta_start,theta_stop,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(radius+width/2) + vtx_outer_y = np.sin(theta)*(radius+width/2) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + if (radius-width/2>0.0000001 or np.abs(theta_stop-theta_start)<360): + vtx_inner_x = np.cos(theta)*(radius-width/2) + vtx_inner_y = np.sin(theta)*(radius-width/2) + vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] + + vtx = np.r_[vtx_outer,vtx_inner] + else : + vtx = vtx_outer + + """ add in 2023.09.20 """ + vtx_y = vtx[:, 1] + vtx_x = vtx[:, 0] + + vtx_cut = None + if (y_cut!=None): + if (y_cut> min(vtx_y)): + x_cut_max = max(vtx_x) + x_cut_min = min(vtx_x) + + y_cut_max = y_cut + y_cut_min = min(vtx_y)-1 + + vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) + vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) + + vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] + + """ """ + + _my_polygon(layer_wg=layer,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) + nd.Pin(name='a1',width=width,layer=layer).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) + nd.Pin(name='b1',width=width,layer=layer).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) + + self.vtx = vtx + self.sz = [radius*2,radius*2] + self.w = [width,width] + self.cell = C + +class mx_bend : + def __init__(self,radius: float = 10, width: float = 0.45, theta_start: float=0, theta_stop: float=360,res: float=0.05,angle: Optional[float]=None, + # n_points = 64, + xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True) -> None: + with nd.Cell(instantiate=False) as C: + + if (angle!=None): + theta_start = 0 + theta_stop = angle + if (res!=None): + n_points = int(np.floor(abs(theta_start-theta_stop)*radius/180*np.pi/res)+1) + + if (layer==None): + for layers,growx,growy,acc in nd.layeriter(xs=xs): + (a1,b1), (a2,b2),c1,c2 = growx + + theta = np.linspace(theta_start,theta_stop,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(radius+width*a1 + b1) + vtx_outer_y = np.sin(theta)*(radius+width*a1 + b1) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + if (radius+width*a2+b1>0.0000001 or np.abs(theta_stop-theta_start)<360): + vtx_inner_x = np.cos(theta)*(radius+width*a2 + b2) + vtx_inner_y = np.sin(theta)*(radius+width*a2 + b2) + vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] + + vtx = np.r_[vtx_outer,vtx_inner] + else : + vtx = vtx_outer + if (sharp_patch==True and b2!=0 and b1!=0): + L_patch = max([max(vtx_outer_x),max(vtx_inner_x)])-min([min(vtx_outer_x),min(vtx_inner_x)]) + X_patch = 1/2*(max([max(vtx_outer_x),max(vtx_inner_x)])+min([min(vtx_outer_x),min(vtx_inner_x)])) + W_patch = (max([max(vtx_outer_y),max(vtx_inner_y)])-min([min(vtx_outer_y),min(vtx_inner_y)])) + Y_patch = 1/2*(max([max(vtx_outer_y),max(vtx_inner_y)])+min([min(vtx_outer_y),min(vtx_inner_y)])) + + nd.strt(length=L_patch,width=W_patch,layer=layers).put(X_patch-L_patch/2,Y_patch,0) + + + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) + nd.Pin(name='a0',width=width,xs=xs).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) + nd.Pin(name='b0',width=width,xs=xs).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) + + else: + theta = np.linspace(theta_start,theta_stop,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(radius+width/2) + vtx_outer_y = np.sin(theta)*(radius+width/2) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + if (radius-width/2>0.0000001 or np.abs(theta_stop-theta_start)<360): + vtx_inner_x = np.cos(theta)*(radius-width/2) + vtx_inner_y = np.sin(theta)*(radius-width/2) + vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] + + vtx = np.r_[vtx_outer,vtx_inner] + else : + vtx = vtx_outer + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) + nd.Pin(name='a0',width=width,layer=layer).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) + nd.Pin(name='b0',width=width,layer=layer).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) + self.sz = [radius*2,radius*2] + self.w = [width,width] + self.cell = C + +class Elipse_dual : + def __init__(self, + ORx : float , + ORy : float , + IRx : float , + IRy : float , + offset_X : float = 0, + offset_Y : float = 0, + xs : Optional[str] = None, + layer : Optional[str] = None, + theta_start : float = 0, + theta_stop : float = 360, + sharp_patch : bool = True, + # n_points : int = 1024, + res : float = 0.001, + y_cut: Optional[float]=None) -> None: + """_summary_ + + Args: + ORx (float): Outer semi X-axis length + ORy (float): Outer semi Y-axis length + IRx (float): Inner semi X-axis length + IRy (float): Inner semi Y-axis length + offset_X (float, optional): Outer and Inner elipse offset in X. Defaults to 0. + offset_Y (float, optional): Outer and Inner elipse offset in Y. Defaults to 0. + xs (str, optional): xsection. Defaults to None. + layer (str, optional): layer. Defaults to None. + theta_start (str, optional): X-axis positvive starts at 0, rotation anti-clockwise . Defaults to 0. + theta_stop (str, optional): X-axis positvive starts at 0, rotation anti-clockwise. Defaults to 360. + sharp_patch (bool, optional): sharp patch. Defaults to True. + n_points (int, optional): points of the ring. Defaults to 1024. + """ + self.ORx = ORx + self.ORy = ORy + self.IRx = IRx + self.IRy = IRy + self.offset_X = offset_X + self.offset_Y = offset_Y + self.xs = xs + self.layer = layer + self.res = res + # self.n_points = int(n_points) ## Force type fixing + self.theta_start = theta_start + self.theta_stop = theta_stop + self.y_cut = y_cut + + self.cell = self.generate_gds(sharp_patch=sharp_patch) + self.wa = ORx-IRx + self.wb = ORy-IRy + + def generate_gds(self,sharp_patch): + with nd.Cell(instantiate=False) as C: + if (self.layer==None and self.xs!=None): + for layers,growx,growy,acc in nd.layeriter(xs=self.xs): + (a1,b1), (a2,b2),c1,c2 = growx + + """ Calculating points inside the ring """ + Rb = min([self.ORx+self.IRx,self.ORy+self.IRy])/2 + Ra = max([self.ORx+self.IRx,self.ORy+self.IRy])/2 + _L_perimeter_ = 2*pi*Rb + 4*(Ra-Rb) + n_points = int(_L_perimeter_/self.res) + + n_points = int(n_points/360*abs(self.theta_start-self.theta_stop)) ## modified the points by the angle of ring + + theta = np.linspace(self.theta_start,self.theta_stop,n_points) + + Ox = (self.ORx + b1)*np.cos(theta/180*pi) + Oy = (self.ORy + b1)*np.sin(theta/180*pi) + + Ix = (self.IRx + b2)*np.cos(theta/180*pi)+self.offset_X + Iy = (self.IRy + b2)*np.sin(theta/180*pi)+self.offset_Y + + dX = np.max([np.max(Ox),np.max(Ix)]) - np.min([np.min(Ox),np.min(Ix)]) + dY = np.max([np.max(Oy),np.max(Iy)]) - np.min([np.min(Oy),np.min(Iy)]) + + X = np.max([np.max(Ox),np.max(Ix)])/2 + np.min([np.min(Ox),np.min(Ix)])/2 + Y = np.max([np.max(Oy),np.max(Iy)])/2 + np.min([np.min(Oy),np.min(Iy)])/2 + + cx = Ox/2+Ix/2 + cy = Oy/2+Iy/2 + + LX = np.max(cx) - np.min(cx) + LY = np.max(cy) - np.min(cy) + + self.sz = [LX,LY] + vtx_out = np.c_[Ox,Oy] + vtx_In = np.c_[np.flip(Ix),np.flip(Iy)] + vtx = np.r_[vtx_out,vtx_In] + + """ add in 2023.09.20 """ + vtx_y = vtx[:,1] + vtx_x = vtx[:,0] + + vtx_cut = None + if (self.y_cut!=None): + if (self.y_cut> min(vtx_y)): + x_cut_max = max(vtx_x) + x_cut_min = min(vtx_x) + + y_cut_max = self.y_cut + y_cut_min = min(vtx_y)-1 + + vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) + vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) + + vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] + """ """ + + if (sharp_patch==True and b1!=0 and b2!=0): + patch = hole(r_hole=min([self.IRx + b2,self.IRy + b2]),Lx_sq=dX,Ly_sq=dY,layer=layers) + patch.cell.put(0,Y,0) + patch.cell.put(0,Y,0,flip=1) + # nd.strt(length=dX,width=dY,layer=layers).put(X-dX/2,Y,0) + + else: + _my_polygon(layer_wg=layers,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) + + nd.Pin(name='a1').put((Ox[0]+Ix[0])/2,(Oy[0]+Iy[0])/2,theta[0]-90) + nd.Pin(name='b1').put((Ox[-1]+Ix[-1])/2,(Oy[-1]+Iy[-1])/2,theta[-1]+90) + + return C + +class Elipse: + def __init__(self,La: Any=None,Lb: Any=None,wa: Any=None,wb: Any=None,offset_a: float=0,offset_b: float=0,type: str="center",width_type: str='sine',layer: Optional[str]=None,xs: Optional[str]=None,theta_start: float=0,theta_stop: float=360, + # n_points=512, + res: float = 0.001, + sharp_patch: bool=False,show_pins: bool=False) -> None: + self.La = La + self.Lb = Lb + self.wa = wa + self.wb = wb + self.offset_a = offset_a + self.offset_b = offset_b + self.type = type + self.layer = layer + self.xs = xs + self.theta_start = theta_start + self.theta_stop = theta_stop + # self.n_points = n_points + + self.res = res + + self.cell = self.generate_gds(sharp_patch=sharp_patch,show_pins=show_pins) + + def generate_gds(self,sharp_patch,show_pins): + with nd.Cell(instantiate=False) as C: + + if (self.layer==None and self.xs!=None): + for layers,growx,growy,acc in nd.layeriter(xs=self.xs): + (a1,b1), (a2,b2),c1,c2 = growx + + """ calculated number of points """ + Rb = self.La + Ra = self.Lb + _L_perimeter_ = 2*pi*Rb + 4*(Ra-Rb) + n_points = int(_L_perimeter_/self.res) + + n_points = int(n_points/360*abs(self.theta_start-self.theta_stop)) ## modified the points by the angle of ring + + theta = np.linspace(self.theta_start,self.theta_stop,n_points) + + if (self.type=='center'): + + cx = self.La*np.cos(theta/180*pi) + cy = self.Lb*np.sin(theta/180*pi) + w = (self.wa-self.wb)*np.cos(theta/180*pi)*np.cos(theta/180*pi) + self.wb + offset = (self.offset_a-self.offset_b)*np.cos(theta/180*pi)*np.cos(theta/180*pi) + self.offset_b + + w = w*(a1-a2) + (b1-b2) + ## norm vector + nx = 2*cx/self.La/self.La + ny = 2*cy/self.Lb/self.Lb + + Ln = np.sqrt(nx*nx + ny*ny) + + + Ox = cx + nx*(w/2 + offset)/Ln + Oy = cy + ny*(w/2 + offset)/Ln + Ix = cx + nx*(-w/2 + offset)/Ln + Iy = cy + ny*(-w/2 + offset)/Ln + + + + elif (self.type == 'concentric'): + Ox = (self.La+(self.wa*a1+b1))*np.cos(theta/180*pi) + Oy = (self.Lb+(self.wb*a1+b1))*np.sin(theta/180*pi) + Ix = (self.La+(self.wa*a2+b2))*np.cos(theta/180*pi) + Iy = (self.Lb+(self.wb*a2+b2))*np.sin(theta/180*pi) + + cx = Ox/2+Ix/2 + cy = Oy/2+Iy/2 + + else : + raise Exception("ERROR: In , not recongized, please input [center | concentric]") + + dX = np.max([np.max(Ox),np.max(Ix)]) - np.min([np.min(Ox),np.min(Ix)]) + dY = np.max([np.max(Oy),np.max(Iy)]) - np.min([np.min(Oy),np.min(Iy)]) + + X = np.max([np.max(Ox),np.max(Ix)])/2 + np.min([np.min(Ox),np.min(Ix)])/2 + Y = np.max([np.max(Oy),np.max(Iy)])/2 + np.min([np.min(Oy),np.min(Iy)])/2 + + LX = np.max(cx) - np.min(cx) + LY = np.max(cy) - np.min(cy) + + self.sz = [LX,LY] + vtx_out = np.c_[Ox,Oy] + vtx_In = np.c_[np.flip(Ix),np.flip(Iy)] + vtx = np.r_[vtx_out,vtx_In] + + if (sharp_patch==True and b1!=0 and b2!=0): + nd.strt(length=dX,width=dY,layer=layers).put(X-dX/2,Y,0) + else: + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) + + Ain = np.angle(nx[0]+1j*ny[0])/pi*180 + Aout = np.angle(nx[-1]+1j*ny[-1])/pi*180 + + nd.Pin(name='a1').put(Ox[0]/2+Ix[0]/2,Oy[0]/2+Iy[0]/2,Ain-90) + nd.Pin(name='b1').put(Ox[-1]/2+Ix[-1]/2,Oy[-1]/2+Iy[-1]/2,Aout+90) + + nd.Pin(name='a0').put(0,0,180) + nd.Pin(name='b0').put(0,0,0) + if (show_pins): + nd.put_stub() + return C + +class hole : + def __init__(self,r_hole: float = 0.3,Dx_hole: float=0.3,Dy_hole: float=0.3,Lx_sq: int = 6,Ly_sq: int=6,offset: float=0, + # n_points = 1024, + res: float = 0.05, + xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True,hole_shape: str='circle') -> None: + with nd.Cell(instantiate=False) as C: + if (r_hole+offset>Lx_sq/2 or -r_hole+offset<-Lx_sq/2): + raise Exception("ERROR: In , hole outside sqaure area, ") + + if (Dx_hole/2+offset>Lx_sq/2 or -Dx_hole/2+offset<-Lx_sq/2): + raise Exception("ERROR: In , hole outside sqaure area, ") + + if (Dy_hole>Ly_sq): + raise Exception("ERROR: In , hole outside sqaure area, ") + + + n_points = int(np.floor(r_hole*2*np.pi/res)+1) + + if (layer==None): + + for layers,growx,growy,acc in nd.layeriter(xs=xs): + (a1,b1), (a2,b2),c1,c2 = growx + if (b1==0 and b2==0): + if (hole_shape=='circle'): + theta = np.linspace(0,180,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(r_hole)+offset + vtx_outer_y = np.sin(theta)*(r_hole) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) + vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) + vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] + + vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,180,flip=1) + + elif (hole_shape=='rectangle'): + vtx_outer_x = np.array([Dx_hole/2,Dx_hole/2,-Dx_hole/2,-Dx_hole/2])+offset + vtx_outer_y = np.array([0,Dy_hole/2, Dy_hole/2,0]) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) + vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) + vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] + + vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) + _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,180,flip=1) + + else : + _L_ = Lx_sq*(a1-a2)+(b1-b1) + _w_ = Ly_sq*(a1-a2)+(b1-b1) + nd.strt(length=_L_,width=_w_,layer=layers).put(-_L_/2,0,0) + + + else: + if (hole_shape=='circle'): + theta = np.linspace(0,180,n_points) + theta = theta/180*np.pi + vtx_outer_x = np.cos(theta)*(r_hole)+offset + vtx_outer_y = np.sin(theta)*(r_hole) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) + vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) + vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] + + vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0,flip=1) + elif (hole_shape=='rectangle'): + vtx_outer_x = np.array([Dx_hole/2,Dx_hole/2,-Dx_hole/2,-Dx_hole/2])+offset + vtx_outer_y = np.array([0,Dy_hole/2, Dy_hole/2,0]) + vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] + + vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) + vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) + vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] + + vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) + _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,180,flip=1) + self.cell = C diff --git a/mxpic/components/primitives/EC_dual_layer_px3.py b/mxpic/components/primitives/EC_dual_layer_px3.py index 0fbb511..54c03c5 100644 --- a/mxpic/components/primitives/EC_dual_layer_px3.py +++ b/mxpic/components/primitives/EC_dual_layer_px3.py @@ -1,8 +1,7 @@ import nazca as nd import numpy as np -from mxpic.structures import _my_polygon -# from ....structures import _my_polygon +from ..geometry import _my_polygon class EC_dual_layer_px3(): """ diff --git a/mxpic/components/primitives/active/dev_ps.py b/mxpic/components/primitives/active/dev_ps.py index 0fcd2e3..5c9e570 100644 --- a/mxpic/components/primitives/active/dev_ps.py +++ b/mxpic/components/primitives/active/dev_ps.py @@ -12,9 +12,24 @@ from ...electronics import Vias class Heater_NDoped(): - ''' - This is the class for N-doped heater as a phase shifter. - ''' + """ + This is the class for N-doped heater as a phase shifter. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + slab_width : float, optional + Value for the slab_width parameter. Default is 1.1. + heater_length : int, optional + Value for the heater_length parameter. Default is 100. + heater_width : int, optional + Value for the heater_width parameter. Default is 1. + if_open : bool, optional + Value for the if_open parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__( self, w_wg: float=0.45, @@ -197,9 +212,30 @@ class Heater_NDoped(): class PS_PIN() : - ''' - PIN junction for a high-speed phase shift. - ''' + """ + PIN junction for a high-speed phase shift. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w_wg_slab : float, optional + Width parameter in microns. Default is 0.5. + w_slab : float, optional + Width parameter in microns. Default is 1. + l_wg : float, optional + Value for the l_wg parameter. Default is 800. + d2wg_list : list, optional + Value for the d2wg_list parameter. Default is [0.2, 1]. + p_layer_list : list, optional + Value for the p_layer_list parameter. Default is ['PW', 'PP']. + n_layer_list : list, optional + Value for the n_layer_list parameter. Default is ['NW', 'NP']. + w_plus_max : float, optional + Width parameter in microns. Default is 5.1. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__( self, w_wg: float=0.45, diff --git a/mxpic/components/primitives/active/pin_wg.py b/mxpic/components/primitives/active/pin_wg.py index 85ff9f8..0fff99f 100644 --- a/mxpic/components/primitives/active/pin_wg.py +++ b/mxpic/components/primitives/active/pin_wg.py @@ -10,6 +10,66 @@ import nazca.interconnects as IC from ...basic import __list_convert__,__array_convert__ class waveguide_PIN: + """ + waveguide PIN primitive component. + + This component builds the waveguide PIN layout cell. + + Parameters + ---------- + xs : str, optional + Layer or cross-section name used by the device. Default is 'rib'. + L_wg : float, optional + Length parameter in microns. Default is 100. + w_wg : float, optional + Width parameter in microns. Default is 1.2. + xs_pn_ct : str, optional + Layer or cross-section name used by the device. Default is 'strip_cor'. + w_itr : float, optional + Width parameter in microns. Default is 2.0. + w_p : float, optional + Width parameter in microns. Default is 4.0. + w_n : float, optional + Width parameter in microns. Default is 4.0. + w_p_ct : float, optional + Width parameter in microns. Default is 4.0. + w_n_ct : float, optional + Width parameter in microns. Default is 4.0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + xs_via_h2m : str, optional + Layer or cross-section name used by the device. Default is 'via_h2m'. + w_metal_pn : float, optional + Width parameter in microns. Default is 8. + sz_via_i2m : float, optional + Value for the sz_via_i2m parameter. Default is 0.25. + sp_via_i2m : float, optional + Spacing or gap parameter in microns. Default is 0.35. + sp_sc : float, optional + Spacing or gap parameter in microns. Default is 1. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'pw'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'nw'. + xs_pcont : str, optional + Layer or cross-section name used by the device. Default is 'pp'. + xs_ncont : str, optional + Layer or cross-section name used by the device. Default is 'np'. + xs_sa : str, optional + Layer or cross-section name used by the device. Default is 'sa'. + xs_via_s2m : str, optional + Layer or cross-section name used by the device. Default is 'via_s2m'. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + rib_taper : bool, optional + Value for the rib_taper parameter. Default is True. + L_taper : float, optional + Length parameter in microns. Default is 30. + xs_port : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. + """ def __init__(self, xs: str="rib", ## note, this xsection cannot directly mixed iwth 'rib' L_wg: float = 100, @@ -183,6 +243,58 @@ class waveguide_PIN: class WGDoped(): + """ + WGDoped primitive component. + + This component builds the WGDoped layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + w_port : float, optional + Width parameter in microns. Default is 0.5. + Ltp_port : int, optional + Length parameter in microns. Default is 10. + L_wg : int, optional + Length parameter in microns. Default is 200. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'rib'. + xs_n : list, optional + Layer or cross-section name used by the device. Default is ['nld', 'np']. + xs_p : list, optional + Layer or cross-section name used by the device. Default is ['pld', 'pp']. + w_n : list, optional + Width parameter in microns. Default is [0.5, 1]. + w_p : list, optional + Width parameter in microns. Default is [0.5, 1]. + w_ht : float, optional + Width parameter in microns. Default is 0. + L_ht : Any, optional + Length parameter in microns. Default is None. + xs_ht : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_mt : Optional[float], optional + Width parameter in microns. Default is None. + xs_mt : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_i : Optional[float], optional + Width parameter in microns. Default is None. + dope_offset : int, optional + Value for the dope_offset parameter. Default is 0. + via_s2m : Any, optional + Value for the via_s2m parameter. Default is None. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + dope_ovlp : float, optional + Value for the dope_ovlp parameter. Default is 0.2. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + """ def __init__(self, name: Optional[str]=None, w_wg: float = 0.5, diff --git a/mxpic/components/primitives/active/rings.py b/mxpic/components/primitives/active/rings.py index cff4fd9..33f70dc 100644 --- a/mxpic/components/primitives/active/rings.py +++ b/mxpic/components/primitives/active/rings.py @@ -8,7 +8,7 @@ from ...electronics.eic_units import Vias_arc from ..pic.taper import taper_xs2xs -from ...structures import * +from ...geometry import * import nazca.interconnects as IC class Route(IC.Interconnect): @@ -26,6 +26,114 @@ from ...basic import __list_convert__,__array_convert__ """ This is used within the situation that double side is the same, and concentric coupling """ """ Refreshed 2023.09.14 """ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23 + """ + AED Ring PIN primitive component. + + This component builds the AED Ring PIN layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + ORx : float, optional + Value for the ORx parameter. Default is 10. + ORy : float, optional + Value for the ORy parameter. Default is 9. + IRx : float, optional + Value for the IRx parameter. Default is 10 - 0.65. + IRy : float, optional + Value for the IRy parameter. Default is 9 - 0.4. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + dual_BUS : bool, optional + Value for the dual_BUS parameter. Default is False. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + R_cp : Any, optional + Radius parameter in microns. Default is None. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_ht_dX : int, optional + Value for the epin_ht_dX parameter. Default is 10. + epin_ht_dY : int, optional + Value for the epin_ht_dY parameter. Default is 3. + via_i2m : Any, optional + Via definition used between implant and metal layers. Default is None. + xs_metal_imp : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'p'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'n'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_p : float, optional + Width parameter in microns. Default is 3.0. + gap_p_i : float, optional + Spacing or gap parameter in microns. Default is 1. + gap_n_i : float, optional + Spacing or gap parameter in microns. Default is 1. + w_n : float, optional + Width parameter in microns. Default is 3.0. + offset_i : float, optional + Value for the offset_i parameter. Default is 0. + A_imp_in : int, optional + Angle parameter in degrees. Default is 180. + A_imp_out : int, optional + Angle parameter in degrees. Default is 180. + sp_cont : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_ovlp : float, optional + Width parameter in microns. Default is 0.1. + bus_dopping : bool, optional + Value for the bus_dopping parameter. Default is True. + p_in_n_out : bool, optional + Value for the p_in_n_out parameter. Default is False. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + """ def __init__(self, name: Optional[str]=None, ORx: float=10, @@ -579,6 +687,116 @@ class AED_Ring_PIN(MRR_AED): ## Finished in 2022.11.23 ## Sub-classes for standard ring resonators class STD_Ring_PIN(AED_Ring_PIN): + """ + STD Ring PIN primitive component. + + This component builds the STD Ring PIN layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.55. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + dual_BUS : bool, optional + Value for the dual_BUS parameter. Default is True. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + R_cp : Any, optional + Radius parameter in microns. Default is None. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_ht_dX : int, optional + Value for the epin_ht_dX parameter. Default is 10. + epin_ht_dY : int, optional + Value for the epin_ht_dY parameter. Default is 3. + xs_metal_imp : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_i2m : Any, optional + Via definition used between implant and metal layers. Default is None. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'p'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'n'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_p : float, optional + Width parameter in microns. Default is 3. + gap_p_i : float, optional + Spacing or gap parameter in microns. Default is 1. + gap_n_i : float, optional + Spacing or gap parameter in microns. Default is 1. + w_n : float, optional + Width parameter in microns. Default is 3. + offset_i : float, optional + Value for the offset_i parameter. Default is 0. + A_imp_in : int, optional + Angle parameter in degrees. Default is 180. + A_imp_out : int, optional + Angle parameter in degrees. Default is 180. + xs_pcont : str, optional + Layer or cross-section name used by the device. Default is 'pp'. + xs_ncont : str, optional + Layer or cross-section name used by the device. Default is 'np'. + w_pcont : float, optional + Width parameter in microns. Default is 3. + w_ncont : float, optional + Width parameter in microns. Default is 3. + sp_cont : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_ovlp : float, optional + Width parameter in microns. Default is 0.2. + bus_dopping : bool, optional + Value for the bus_dopping parameter. Default is True. + p_in_n_out : bool, optional + Value for the p_in_n_out parameter. Default is False. + """ def __init__(self, name: str, r_ring: float=10, @@ -676,10 +894,6 @@ class STD_Ring_PIN(AED_Ring_PIN): A_imp_in = A_imp_in, A_imp_out = A_imp_out, - xs_pcont = xs_pcont, - xs_ncont = xs_ncont, - w_pcont = w_pcont, - w_ncont = w_ncont, sp_cont = sp_cont, w_ovlp = w_ovlp, ## overlapping area for doping @@ -691,6 +905,102 @@ class STD_Ring_PIN(AED_Ring_PIN): ## Sub-classed for allpass rings with Euler shape coupling class PIN_MRR_MM_Allpass(AED_Ring_PIN): + """ + PIN MRR MM Allpass primitive component. + + This component builds the PIN MRR MM Allpass layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.55. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + R_cp : Any, optional + Radius parameter in microns. Default is None. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + R_att : int, optional + Radius parameter in microns. Default is 10. + R_att_min : int, optional + Radius parameter in microns. Default is 10. + A_att : int, optional + Angle parameter in degrees. Default is 10. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_ht_dX : int, optional + Value for the epin_ht_dX parameter. Default is 10. + epin_ht_dY : int, optional + Value for the epin_ht_dY parameter. Default is 3. + xs_metal_imp : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_i2m : Any, optional + Via definition used between implant and metal layers. Default is None. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'p'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'n'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_p : float, optional + Width parameter in microns. Default is 3. + w_n : float, optional + Width parameter in microns. Default is 3. + w_i : float, optional + Width parameter in microns. Default is 1. + offset_i : float, optional + Value for the offset_i parameter. Default is 0. + A_imp_in : int, optional + Angle parameter in degrees. Default is 180. + A_imp_out : int, optional + Angle parameter in degrees. Default is 180. + sp_cont : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_ovlp : float, optional + Width parameter in microns. Default is 0.2. + bus_dopping : bool, optional + Value for the bus_dopping parameter. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + p_in_n_out : bool, optional + Value for the p_in_n_out parameter. Default is False. + """ def __init__(self, name: Optional[str] = None, r_ring: float=10, @@ -803,6 +1113,102 @@ class PIN_MRR_MM_Allpass(AED_Ring_PIN): ## Sub-classed for allpass rings with Euler shape coupling class PIN_MRR_MM_Adddrop(AED_Ring_PIN): + """ + PIN MRR MM Adddrop primitive component. + + This component builds the PIN MRR MM Adddrop layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.55. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + R_cp : Any, optional + Radius parameter in microns. Default is None. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + R_att : int, optional + Radius parameter in microns. Default is 10. + R_att_min : int, optional + Radius parameter in microns. Default is 10. + A_att : int, optional + Angle parameter in degrees. Default is 10. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_ht_dX : int, optional + Value for the epin_ht_dX parameter. Default is 10. + epin_ht_dY : int, optional + Value for the epin_ht_dY parameter. Default is 3. + xs_metal_imp : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_i2m : Any, optional + Via definition used between implant and metal layers. Default is None. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'p'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'n'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_p : float, optional + Width parameter in microns. Default is 3. + w_n : float, optional + Width parameter in microns. Default is 3. + w_i : float, optional + Width parameter in microns. Default is 1. + offset_i : float, optional + Value for the offset_i parameter. Default is 0. + A_imp_in : int, optional + Angle parameter in degrees. Default is 180. + A_imp_out : int, optional + Angle parameter in degrees. Default is 180. + sp_cont : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_ovlp : float, optional + Width parameter in microns. Default is 0.2. + bus_dopping : bool, optional + Value for the bus_dopping parameter. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + p_in_n_out : bool, optional + Value for the p_in_n_out parameter. Default is False. + """ def __init__(self, name: Optional[str] = None, r_ring: float=10, @@ -917,6 +1323,92 @@ class PIN_MRR_MM_Adddrop(AED_Ring_PIN): ## Sub-classed for allpass rings with standard coupling class PIN_MRR_STD_Allpass(AED_Ring_PIN): + """ + PIN MRR STD Allpass primitive component. + + This component builds the PIN MRR STD Allpass layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.55. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_ht_dX : int, optional + Value for the epin_ht_dX parameter. Default is 10. + epin_ht_dY : int, optional + Value for the epin_ht_dY parameter. Default is 3. + xs_metal_imp : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_i2m : Any, optional + Via definition used between implant and metal layers. Default is None. + xs_p : str, optional + Layer or cross-section name used by the device. Default is 'p'. + xs_n : str, optional + Layer or cross-section name used by the device. Default is 'n'. + xs_cont_wg : Optional[str], optional + Layer or cross-section name used by the device. Default is None. + w_p : float, optional + Width parameter in microns. Default is 3. + w_n : float, optional + Width parameter in microns. Default is 3. + w_i : float, optional + Width parameter in microns. Default is 1. + offset_i : float, optional + Value for the offset_i parameter. Default is 0. + A_imp_in : int, optional + Angle parameter in degrees. Default is 180. + A_imp_out : int, optional + Angle parameter in degrees. Default is 180. + sp_cont : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_ovlp : float, optional + Width parameter in microns. Default is 0.2. + bus_dopping : bool, optional + Value for the bus_dopping parameter. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + p_in_n_out : bool, optional + Value for the p_in_n_out parameter. Default is False. + """ def __init__(self, name: Optional[str]=None, r_ring: float=10, @@ -1017,4 +1509,4 @@ class PIN_MRR_STD_Allpass(AED_Ring_PIN): bus_dopping = bus_dopping, p_in_n_out=p_in_n_out, ## default , p-outside n-inside cell_xs_transition=cell_xs_transition, - ) \ No newline at end of file + ) diff --git a/mxpic/components/primitives/beam_splitters.py b/mxpic/components/primitives/beam_splitters.py index 1ae0765..82f4521 100644 --- a/mxpic/components/primitives/beam_splitters.py +++ b/mxpic/components/primitives/beam_splitters.py @@ -4,11 +4,11 @@ from scipy.interpolate import CubicSpline from ...routing import Route -from ...structures import * +from ..geometry import * from ...foundries import * import pandas as pd -from ...structures import _my_polygon +from ..geometry import _my_polygon from ...basic import __cell_arg__ class YBranch: diff --git a/mxpic/components/primitives/directional_couplers.py b/mxpic/components/primitives/directional_couplers.py index 1b4ceb7..be7ca2f 100644 --- a/mxpic/components/primitives/directional_couplers.py +++ b/mxpic/components/primitives/directional_couplers.py @@ -4,7 +4,7 @@ import numpy as np from numpy import pi from ...routing import Route -from ...structures import _my_polygon,circle,Clothoid +from ..geometry import _my_polygon,circle,Clothoid from ...basic import __cell_arg__ class ring_bus_wg: @@ -853,10 +853,34 @@ class MDM(ADC_STD_2x2): class DC_bend : - ''' - This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. - Written by HU GAOLEI at 2022.5.15. - ''' + """ + This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. + + Parameters + ---------- + name : Any, optional + Unique identifier for the device cell. Default is None. + w_in : float, optional + Width parameter in microns. Default is 0.45. + w_out : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + r_in : int, optional + Radius parameter in microns. Default is 40. + theta_arc : int, optional + Angle parameter in degrees. Default is 30. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + theta_ext : int, optional + Angle parameter in degrees. Default is 15. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ """ Bend-based directional coupler for broadband, fabrication-tolerant splitting. diff --git a/mxpic/components/primitives/grating_couplers.py b/mxpic/components/primitives/grating_couplers.py index 45eaf38..c9445c3 100644 --- a/mxpic/components/primitives/grating_couplers.py +++ b/mxpic/components/primitives/grating_couplers.py @@ -4,7 +4,7 @@ import math import pandas as pd from ...routing import Route -from ...structures import _my_polygon,circle,Clothoid,hole +from ..geometry import _my_polygon,circle,Clothoid,hole from ...basic import __cell_arg__ @@ -1113,6 +1113,58 @@ class FA: self.cell = C class GC_SiN_Si_Dual_Layer: + """ + GC SiN Si Dual Layer primitive component. + + This component builds the GC SiN Si Dual Layer layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + w_teeth_SiN : list or float, optional + Width parameter in microns. Default is 0.5. + gap_teeth_SiN : list or float, optional + Spacing or gap parameter in microns. Default is 0.5. + w_teeth_Si : list or float, optional + Width parameter in microns. Default is 0.5. + gap_teeth_Si : list or float, optional + Spacing or gap parameter in microns. Default is 0.5. + ori_teeth_offset : float, optional + Value for the ori_teeth_offset parameter. Default is 5.0. + n_teeth_Si : float, optional + Value for the n_teeth_Si parameter. Default is 30. + n_teeth_SiN : float, optional + Value for the n_teeth_SiN parameter. Default is 30. + A_gc_taper : float, optional + Angle parameter in degrees. Default is 25.0. + R_teeth_ori_SiN : float, optional + Radius parameter in microns. Default is 40.0. + R_teeth_ori_Si : float, optional + Radius parameter in microns. Default is 40.0. + L_end_Si : float, optional + Length parameter in microns. Default is 0.2. + L_end_SiN : float, optional + Length parameter in microns. Default is 5.0. + w_port : float, optional + Width parameter in microns. Default is 0.9. + A_anti_rfl : float, optional + Angle parameter in degrees. Default is 4.0. + layer_SiN_slab : str, optional + Layer or cross-section name used by the device. Default is None. + layer_Si_slab : str, optional + Layer or cross-section name used by the device. Default is None. + layer_Si_teeth : str, optional + Layer or cross-section name used by the device. Default is None. + layer_SiN_teeth : str, optional + Layer or cross-section name used by the device. Default is None. + layer_SiN_etch : str, optional + Layer or cross-section name used by the device. Default is None. + layer_Si_etch : str, optional + Layer or cross-section name used by the device. Default is None. + layer_ox_open : str, optional + Layer or cross-section name used by the device. Default is None. + """ def __init__(self, name:str=None, w_teeth_SiN:'list|float' = 0.5, diff --git a/mxpic/components/primitives/multimode_interferometers.py b/mxpic/components/primitives/multimode_interferometers.py index 6884441..add0bf8 100644 --- a/mxpic/components/primitives/multimode_interferometers.py +++ b/mxpic/components/primitives/multimode_interferometers.py @@ -5,9 +5,9 @@ import math from ...routing import Route -from ...structures import * +from ..geometry import * -from ...structures import _my_polygon,Conchoid +from ..geometry import _my_polygon,Conchoid """ Mono layer MMI """ class MMI_ML: diff --git a/mxpic/components/primitives/passive/crows.py b/mxpic/components/primitives/passive/crows.py index 8b30a0a..2d5c54c 100644 --- a/mxpic/components/primitives/passive/crows.py +++ b/mxpic/components/primitives/passive/crows.py @@ -4,7 +4,7 @@ import nazca as nd import numpy as np import nazca.interconnects as IC -from ...structures import * +from ...geometry import * from ...routing import * from .unit import * @@ -16,6 +16,56 @@ from ...electronics import Vias from ...basic import __array_convert__,__list_convert__,__xs_exist__,__cell_arg__ class STD_CROW_V: + """ + STD CROW V primitive component. + + This component builds the STD CROW V layout cell. + + Parameters + ---------- + ring : Any + Ring cell or component used by this composite. + bus : Any + Bus waveguide cell or component used by this composite. + w_bus : float or list + Width parameter in microns. + w_ring : float or list + Width parameter in microns. + sz_ring : float or list + Value for the sz_ring parameter. + sz_bus : float or list + Value for the sz_bus parameter. + name : str, optional + Unique identifier for the device cell. Default is None. + gap_crows : float or list, optional + Spacing or gap parameter in microns. Default is [0.4]. + gap_cp : float or list, optional + Spacing or gap parameter in microns. Default is [0.45, 0.45]. + w_heater : float or list, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + ISL_LEFT : bool, optional + Value for the ISL_LEFT parameter. Default is True. + ISL_RIGHT : bool, optional + Value for the ISL_RIGHT parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, ring: Any, @@ -425,6 +475,82 @@ class STD_CROW_V: class CROW_Eul_Ring(STD_CROW_V) : + """ + CROW Eul Ring primitive component. + + This component builds the CROW Eul Ring layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + R0 : int, optional + Radius parameter in microns. Default is 10. + R1 : int, optional + Radius parameter in microns. Default is 3. + w0 : float, optional + Width parameter in microns. Default is 0.38. + w1 : float, optional + Width parameter in microns. Default is 0.65. + w_bus : float, optional + Width parameter in microns. Default is 0.35. + R_att : int, optional + Radius parameter in microns. Default is 15. + R_att_min : int, optional + Radius parameter in microns. Default is 3. + A_att : int, optional + Angle parameter in degrees. Default is 30. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + dLx : float, optional + Value for the dLx parameter. Default is 0. + dLy : float, optional + Value for the dLy parameter. Default is 0. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap_crows : list, optional + Spacing or gap parameter in microns. Default is [0.4]. + gap_cp : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + ISL_LEFT : bool, optional + Value for the ISL_LEFT parameter. Default is True. + ISL_RIGHT : bool, optional + Value for the ISL_RIGHT parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + R_cp : Any, optional + Radius parameter in microns. Default is None. + bus_order : float, optional + Value for the bus_order parameter. Default is 1.0. + width_type : str, optional + Width parameter in microns. Default is 'crow_customize'. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + """ def __init__(self, name: str, R0: int = 10, R1: int=3, @@ -516,6 +642,76 @@ class CROW_Eul_Ring(STD_CROW_V) : A_ht=A_ht) class CROW_Eul_RCK(STD_CROW_V) : + """ + CROW Eul RCK primitive component. + + This component builds the CROW Eul RCK layout cell. + + Parameters + ---------- + R0 : int, optional + Radius parameter in microns. Default is 10. + R1 : int, optional + Radius parameter in microns. Default is 3. + R2 : int, optional + Radius parameter in microns. Default is 20. + w0 : float, optional + Width parameter in microns. Default is 0.38. + w1 : float, optional + Width parameter in microns. Default is 0.65. + w_bus : float, optional + Width parameter in microns. Default is 0.35. + R_att : int, optional + Radius parameter in microns. Default is 15. + R_att_min : int, optional + Radius parameter in microns. Default is 3. + A_att : int, optional + Angle parameter in degrees. Default is 30. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + dAc : float, optional + Value for the dAc parameter. Default is 0. + dLx : float, optional + Value for the dLx parameter. Default is 0. + dLy : float, optional + Value for the dLy parameter. Default is 0. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap_crows : list, optional + Spacing or gap parameter in microns. Default is [0.4]. + gap_cp : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + ISL_LEFT : bool, optional + Value for the ISL_LEFT parameter. Default is True. + ISL_RIGHT : bool, optional + Value for the ISL_RIGHT parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + """ def __init__(self, R0: int = 10, R1: int=3,R2: int=20, w0: float = 0.38,w1: float=0.65, @@ -590,6 +786,84 @@ class CROW_Eul_RCK(STD_CROW_V) : """ Circular ring """ class CROW_Circular_ring(STD_CROW_V): + """ + CROW Circular ring primitive component. + + This component builds the CROW Circular ring layout cell. + + Parameters + ---------- + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + A1_cp : int, optional + Angle parameter in degrees. Default is 10. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0.45. + A2_cp : int, optional + Angle parameter in degrees. Default is 10. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.45. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is True. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + R1_att : float, optional + Radius parameter in microns. Default is 10. + R2_att : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 5. + R2_att_min : float, optional + Radius parameter in microns. Default is 5. + A1_att : int, optional + Angle parameter in degrees. Default is 45. + A2_att : int, optional + Angle parameter in degrees. Default is 45. + gap_crows : float or list, optional + Spacing or gap parameter in microns. Default is [0.4]. + w_heater : float or list, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + ISL_LEFT : bool, optional + Value for the ISL_LEFT parameter. Default is True. + ISL_RIGHT : bool, optional + Value for the ISL_RIGHT parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + """ def __init__(self, r_ring: float = 10, w_ring:float = 0.45,xs_ring: str='strip', w1_bus: float = 0.45,A1_cp: int = 10, @@ -723,6 +997,64 @@ class CROW_Circular_ring(STD_CROW_V): """ CROW with standard identical ring """ class CROW_STD_Allpass(CROW_Circular_ring): + """ + CROW STD Allpass primitive component. + + This component builds the CROW STD Allpass layout cell. + + Parameters + ---------- + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 10. + gap_bus : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is True. + R_att : float, optional + Radius parameter in microns. Default is 10. + R_att_min : float, optional + Radius parameter in microns. Default is 5. + A_att : int, optional + Angle parameter in degrees. Default is 45. + gap_crows : float or list, optional + Spacing or gap parameter in microns. Default is [0.4]. + w_heater : float or list, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + """ def __init__(self, r_ring: float=10, w_ring: float = 0.45, @@ -786,6 +1118,64 @@ class CROW_STD_Allpass(CROW_Circular_ring): A_ht=A_ht) class CROW_STD_Adddrop(CROW_Circular_ring): + """ + CROW STD Adddrop primitive component. + + This component builds the CROW STD Adddrop layout cell. + + Parameters + ---------- + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 10. + gap_bus : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is True. + R_att : float, optional + Radius parameter in microns. Default is 10. + R_att_min : float, optional + Radius parameter in microns. Default is 5. + A_att : int, optional + Angle parameter in degrees. Default is 45. + gap_crows : float or list, optional + Spacing or gap parameter in microns. Default is [0.4]. + w_heater : float or list, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + """ def __init__(self, r_ring: float=10, w_ring: float = 0.45, @@ -851,6 +1241,90 @@ class CROW_STD_Adddrop(CROW_Circular_ring): """ Adiabatic Elipse Diameter """ class CROW_AED(STD_CROW_V): + """ + CROW AED primitive component. + + This component builds the CROW AED layout cell. + + Parameters + ---------- + r_outer : float, optional + Radius parameter in microns. Default is 10. + wa : float, optional + Width parameter in microns. Default is 0.45. + wb : float, optional + Width parameter in microns. Default is 0.45. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + A1_cp : int, optional + Angle parameter in degrees. Default is 10. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0.45. + A2_cp : int, optional + Angle parameter in degrees. Default is 10. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.45. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is True. + R1_cp : float, optional + Radius parameter in microns. Default is None. + R2_cp : float, optional + Radius parameter in microns. Default is None. + R1_att : float, optional + Radius parameter in microns. Default is 15. + R2_att : float, optional + Radius parameter in microns. Default is 15. + R1_att_min : float, optional + Radius parameter in microns. Default is 5. + R2_att_min : float, optional + Radius parameter in microns. Default is 5. + L_tilt : int, optional + Length parameter in microns. Default is 0. + A1_att : int, optional + Angle parameter in degrees. Default is 45. + A2_att : int, optional + Angle parameter in degrees. Default is 45. + Ltp_bus : int, optional + Length parameter in microns. Default is 0. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + gap_crows : float or list, optional + Spacing or gap parameter in microns. Default is [0.4]. + gap_cp : float or list, optional + Spacing or gap parameter in microns. Default is [0.45, 0.45]. + w_heater : float or list, optional + Width parameter in microns. Default is 0. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + connected : bool, optional + Value for the connected parameter. Default is True. + w_metal : float, optional + Width parameter in microns. Default is 8. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + ISL_LEFT : bool, optional + Value for the ISL_LEFT parameter. Default is True. + ISL_RIGHT : bool, optional + Value for the ISL_RIGHT parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + ht_shift : int, optional + Value for the ht_shift parameter. Default is 0. + A_ht : int, optional + Angle parameter in degrees. Default is 45. + """ def __init__(self, r_outer: float = 10, wa: float = 0.45, diff --git a/mxpic/components/primitives/passive/rings.py b/mxpic/components/primitives/passive/rings.py index dd31f00..c1c93b7 100644 --- a/mxpic/components/primitives/passive/rings.py +++ b/mxpic/components/primitives/passive/rings.py @@ -4,7 +4,7 @@ import numpy as np from ...basic import __xs_exist__ -from ...structures import * +from ...geometry import * import nazca.interconnects as IC class Route(IC.Interconnect): @@ -21,9 +21,42 @@ from ...basic import __xs_exist__ class SOCR(): - ''' - This is the class for normal Strong Over Coupled Ring for phase modulation. - ''' + """ + This is the class for normal Strong Over Coupled Ring for phase modulation. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w_cp : float, optional + Width parameter in microns. Default is 0.45. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + r_ring : float, optional + Radius parameter in microns. Default is 6. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + theta_arc : float, optional + Angle parameter in degrees. Default is 100. + Ls : float, optional + Length parameter in microns. Default is 2. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_heater : float, optional + Width parameter in microns. Default is 1.5. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_metal : float, optional + Width parameter in microns. Default is 6. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. + """ def __init__( self, @@ -365,22 +398,65 @@ class SOCR(): return C class SOCR_Cband(SOCR): - ''' - This is the class for already designed SOCR with multimode waveguide to suppres the phase noise. - ''' - def __init__(self, w_wg : float = 0.45, show_pins : bool = True) -> None: + """ + This is the class for already designed SOCR with multimode waveguide to suppres the phase noise. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. + """ + def __init__(self, w_wg : float = 0.45, via_h2m: Any = None, show_pins : bool = True) -> None: super().__init__( w_wg=w_wg, w_cp=0.45, w_ring=0.8, r_ring=5.6, gap=0.18, theta_arc=150, Ls=1, w_heater=1.5, + via_h2m=via_h2m, show_pins=show_pins ) class SOCR_Adiabatic(SOCR): - ''' - This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation. - See detail in: - [1] Liang, G., Huang, H., Mohanty, A. et al. Robust, efficient, micrometre-scale phase modulators at visible wavelengths. Nat. Photon. 15, 908–913 (2021). - ''' + """ + This is the class for adiabatic Strong Over Coupled Ring(SOCR) for phase modulation. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w_cp : float, optional + Width parameter in microns. Default is 0.45. + w_in : float, optional + Width parameter in microns. Default is 0.45. + w_out : float, optional + Width parameter in microns. Default is 2. + r_out : float, optional + Radius parameter in microns. Default is 6. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + theta_arc : float, optional + Angle parameter in degrees. Default is 100. + Ls : float, optional + Length parameter in microns. Default is 2. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_heater : float, optional + Width parameter in microns. Default is 1.5. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_metal : float, optional + Width parameter in microns. Default is 6. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. + """ def __init__( self, @@ -588,27 +664,122 @@ class SOCR_Adiabatic(SOCR): return super().generate_gds() class SOCR_Adiabatic_Cband(SOCR_Adiabatic): - ''' - This is already designed SOCR at C-band. + """ + This is already designed SOCR at C-band. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.45. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. + """ - Args: - - Gap: 200nm - - w_wg: 450nm - - w_in: 510nm - - w_out: 2um - - gap: 200nm - - theta_arc: 120degree - - Ls: 1um - ''' - - def __init__(self, w_wg : float=0.45, show_pins : bool = True) -> None: + def __init__(self, w_wg : float=0.45, via_h2m: Any = None, show_pins : bool = True) -> None: super().__init__( w_wg=w_wg, w_cp=0.45, w_in=0.51, w_out=2, r_out=9, gap=0.2, theta_arc=120, Ls=1, + via_h2m=via_h2m, show_pins=show_pins ) class MRR_AED(AED_ring): + """ + MRR AED primitive component. + + This component builds the MRR AED layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + ORx : float, optional + Value for the ORx parameter. Default is 10. + ORy : float, optional + Value for the ORy parameter. Default is 10. + IRx : float, optional + Value for the IRx parameter. Default is 10 - 0.45. + IRy : float, optional + Value for the IRy parameter. Default is 10 - 0.5. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0.45. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + A1_cp : int, optional + Angle parameter in degrees. Default is 0. + A2_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R1_att : float, optional + Radius parameter in microns. Default is 20. + R2_att : float, optional + Radius parameter in microns. Default is 20. + R2_att_min : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 10. + A1_att : float, optional + Angle parameter in degrees. Default is 30. + A2_att : float, optional + Angle parameter in degrees. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is None. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is None. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is True. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: Optional[str] =None, ORx: float=10, @@ -842,6 +1013,96 @@ class MRR_AED(AED_ring): class MRR_STD_Ring(MRR_AED) : + """ + MRR STD Ring primitive component. + + This component builds the MRR STD Ring layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + A1_cp : int, optional + Angle parameter in degrees. Default is 0. + A2_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R1_att : float, optional + Radius parameter in microns. Default is 20. + R2_att : float, optional + Radius parameter in microns. Default is 20. + R2_att_min : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 10. + A1_att : float, optional + Angle parameter in degrees. Default is 30. + A2_att : float, optional + Angle parameter in degrees. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + ht_notch_dual : bool, optional + Value for the ht_notch_dual parameter. Default is False. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: Optional[str]=None, r_ring: float=10, @@ -950,6 +1211,68 @@ class MRR_STD_Ring(MRR_AED) : """ Simplified classed for Standard ring """ class MRR_STD_Allpass(MRR_STD_Ring): + """ + MRR STD Allpass primitive component. + + This component builds the MRR STD Allpass layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + r_ring : float + Radius parameter in microns. + w_ring : float + Width parameter in microns. + gap : float + Spacing or gap parameter in microns. + w_bus : float + Width parameter in microns. + A_cp : Any + Angle parameter in degrees. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: str, r_ring: float, w_ring: float, @@ -1048,6 +1371,68 @@ class MRR_STD_Allpass(MRR_STD_Ring): ht_rot=ht_rot) class MRR_STD_Adddrop(MRR_STD_Ring): + """ + MRR STD Adddrop primitive component. + + This component builds the MRR STD Adddrop layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + r_ring : float + Radius parameter in microns. + w_ring : float + Width parameter in microns. + gap : float + Spacing or gap parameter in microns. + w_bus : float + Width parameter in microns. + A_cp : Any + Angle parameter in degrees. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: str, r_ring: float, w_ring: float, @@ -1121,6 +1506,70 @@ class MRR_STD_Adddrop(MRR_STD_Ring): """ Multimode ring simplified """ class MRR_MM_Allpass(MRR_STD_Ring): + """ + MRR MM Allpass primitive component. + + This component builds the MRR MM Allpass layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: Optional[str]=None, r_ring: float=10, w_ring: float=0.45, @@ -1200,6 +1649,70 @@ class MRR_MM_Allpass(MRR_STD_Ring): ht_rot=ht_rot) class MRR_MM_Adddrop(MRR_STD_Ring): + """ + MRR MM Adddrop primitive component. + + This component builds the MRR MM Adddrop layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: Optional[str]=None, r_ring: float=10, w_ring: float=0.45, @@ -1275,6 +1788,72 @@ class MRR_MM_Adddrop(MRR_STD_Ring): """ Dual width controled ring with Euler shape coupler """ class MRR_DW_Adddrop(MRR_AED): + """ + MRR DW Adddrop primitive component. + + This component builds the MRR DW Adddrop layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + r_ring : float + Radius parameter in microns. + w0_ring : float + Value for the w0_ring parameter. + w1_ring : float + Value for the w1_ring parameter. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: str, r_ring: float, w0_ring: float, @@ -1338,6 +1917,72 @@ class MRR_DW_Adddrop(MRR_AED): epin_dX=epin_dX, epin_dY=epin_dY, res=res, res_eic=res_eic,ht_rot=ht_rot) class MRR_DW_Allpass(MRR_AED): + """ + MRR DW Allpass primitive component. + + This component builds the MRR DW Allpass layout cell. + + Parameters + ---------- + name : str + Unique identifier for the device cell. + r_ring : float + Radius parameter in microns. + w0_ring : float + Value for the w0_ring parameter. + w1_ring : float + Value for the w1_ring parameter. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : float, optional + Radius parameter in microns. Default is 20. + R_att_min : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 30. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + xs_ring : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_heater : float, optional + Width parameter in microns. Default is 0. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_metal : float, optional + Width parameter in microns. Default is 0. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + A_ht : float, optional + Angle parameter in degrees. Default is 270. + epin_dX : int, optional + Value for the epin_dX parameter. Default is 0. + epin_dY : int, optional + Value for the epin_dY parameter. Default is 0. + res : float, optional + Value for the res parameter. Default is 0.05. + res_eic : float, optional + Value for the res_eic parameter. Default is 0.5. + ht_rot : bool, optional + Value for the ht_rot parameter. Default is False. + """ def __init__(self, name: str, r_ring: float, w0_ring: float, @@ -1403,6 +2048,56 @@ class MRR_DW_Allpass(MRR_AED): """ NEW CLASS: 2023.03.21""" class STD_ring_AMZI_adddrop: + """ + STD ring AMZI adddrop primitive component. + + This component builds the STD ring AMZI adddrop layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 30. + w_ring : float, optional + Width parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + dAc : float, optional + Value for the dAc parameter. Default is 10. + L_tilt : int, optional + Length parameter in microns. Default is 1. + dL_arm : float, optional + Value for the dL_arm parameter. Default is 10. + w_heater : float, optional + Width parameter in microns. Default is 2.5. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + w_metal : float, optional + Width parameter in microns. Default is 6. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + res : float, optional + Value for the res parameter. Default is 0.1. + R_bend : int, optional + Radius parameter in microns. Default is 10. + L_tp : int, optional + Length parameter in microns. Default is 5. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: Optional[str]=None, r_ring: float = 30, diff --git a/mxpic/components/primitives/passive/unit.py b/mxpic/components/primitives/passive/unit.py index 6839bb7..3c5597a 100644 --- a/mxpic/components/primitives/passive/unit.py +++ b/mxpic/components/primitives/passive/unit.py @@ -3,7 +3,7 @@ from typing import Any, Optional import nazca as nd import numpy as np -from ...structures import * +from ...geometry import * from ....technologies import * from ...electronics import Vias from ...electronics import ISL @@ -17,6 +17,56 @@ from ...routing import Route class waveguide: + """ + waveguide primitive component. + + This component builds the waveguide layout cell. + + Parameters + ---------- + w_heater : float, optional + Width parameter in microns. Default is 2.5. + L_wg : int, optional + Length parameter in microns. Default is 150. + L_heater : int, optional + Length parameter in microns. Default is 150. + w_metal : float, optional + Width parameter in microns. Default is 10. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w_port : Optional[float], optional + Width parameter in microns. Default is None. + Ltp : Any, optional + Length parameter in microns. Default is None. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + euler_bend : bool, optional + Value for the euler_bend parameter. Default is False. + Rmin : int, optional + Radius parameter in microns. Default is 5. + thin_attach : bool, optional + Value for the thin_attach parameter. Default is False. + UPPER_ISL : bool, optional + Value for the UPPER_ISL parameter. Default is True. + LOWER_ISL : bool, optional + Length parameter in microns. Default is True. + shape : str, optional + Value for the shape parameter. Default is 'strip'. + R_bend : int, optional + Radius parameter in microns. Default is 10. + ubend_offset : int, optional + Value for the ubend_offset parameter. Default is 20. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, w_heater: float=2.5, L_wg: int=150, @@ -185,6 +235,54 @@ class waveguide: """ NEW CLASS:: 2023.03.21, two stage phase shifters, to replace PS_3wg """ class PS_2st: + """ + PS 2st primitive component. + + This component builds the PS 2st layout cell. + + Parameters + ---------- + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + w1 : float, optional + Width parameter in microns. Default is 0.7. + w2 : float, optional + Width parameter in microns. Default is 0.9. + L1 : int, optional + Length parameter in microns. Default is 10. + L2 : int, optional + Length parameter in microns. Default is 55. + L_wg : int, optional + Length parameter in microns. Default is 0. + L_tp : int, optional + Length parameter in microns. Default is 1. + L12 : Any, optional + Length parameter in microns. Default is None. + L_ht : Any, optional + Length parameter in microns. Default is None. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_heater : float, optional + Width parameter in microns. Default is 2.5. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + UPPER_ISL : bool, optional + Value for the UPPER_ISL parameter. Default is True. + LOWER_ISL : bool, optional + Length parameter in microns. Default is True. + R_bend : int, optional + Radius parameter in microns. Default is 10. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, xs_wg: str = 'strip', w_wg: float = 0.5, @@ -320,6 +418,52 @@ class PS_2st: return C class PS_2st_Straight: + """ + PS 2st Straight primitive component. + + This component builds the PS 2st Straight layout cell. + + Parameters + ---------- + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + w1 : float, optional + Width parameter in microns. Default is 0.7. + w2 : float, optional + Width parameter in microns. Default is 0.9. + L1 : int, optional + Length parameter in microns. Default is 10. + L2 : int, optional + Length parameter in microns. Default is 55. + L_wg : int, optional + Length parameter in microns. Default is 0. + L_tp : int, optional + Length parameter in microns. Default is 1. + L12 : Any, optional + Length parameter in microns. Default is None. + L_ht : Any, optional + Length parameter in microns. Default is None. + xs_heater : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + xs_metal : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + w_heater : float, optional + Width parameter in microns. Default is 2.5. + w_metal : float, optional + Width parameter in microns. Default is 8. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + isl : Any, optional + Isolation-trench definition used by the electrical layout. Default is None. + UPPER_ISL : bool, optional + Value for the UPPER_ISL parameter. Default is True. + LOWER_ISL : bool, optional + Length parameter in microns. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, xs_wg: str = 'strip', w_wg: float = 0.5, @@ -427,6 +571,26 @@ class PS_2st_Straight: return C class PSR_1x2: + """ + PSR 1x2 primitive component. + + This component builds the PSR 1x2 layout cell. + + Parameters + ---------- + PSR : Any + Polarization splitter-rotator cell or component used by this composite. + MDM : Any + Mode multiplexer/demultiplexer cell or component used by this composite. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + L_tp : int, optional + Length parameter in microns. Default is 15. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self,PSR: Any,MDM: Any,xs: str='strip',w_wg: float=0.45,L_tp: int=15,show_pins: bool=False) -> None: self.w_wg = w_wg @@ -477,6 +641,24 @@ class PSR_1x2: return C class Brag_WDM: + """ + Brag WDM primitive component. + + This component builds the Brag WDM layout cell. + + Parameters + ---------- + Brag : Any + Bragg grating cell or component used by this composite. + MDM : Any + Mode multiplexer/demultiplexer cell or component used by this composite. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + L_tp : int, optional + Length parameter in microns. Default is 30. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self,Brag: Any,MDM: Any,w_wg: float=0.45,L_tp: int=30,show_pins: bool=False) -> None: self.w_wg = w_wg diff --git a/mxpic/components/primitives/pic/PBS.py b/mxpic/components/primitives/pic/PBS.py index d6a65d3..683b909 100644 --- a/mxpic/components/primitives/pic/PBS.py +++ b/mxpic/components/primitives/pic/PBS.py @@ -7,10 +7,42 @@ import math from .taper import taper_xs2xs from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * class PBS_3wg: + """ + PBS 3wg primitive component. + + This component builds the PBS 3wg layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + Lcp : float, optional + Length parameter in microns. Default is 11.7. + w1_tp : float, optional + Value for the w1_tp parameter. Default is 0.55. + w2_tp : float, optional + Value for the w2_tp parameter. Default is 0.3. + w_m : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.25. + R_bend : int, optional + Radius parameter in microns. Default is 20. + A_bend : float, optional + Angle parameter in degrees. Default is 7.5. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: Optional[str] = None, xs: str = 'strip', diff --git a/mxpic/components/primitives/pic/YBS.py b/mxpic/components/primitives/pic/YBS.py index 022c6fd..ca4d7f7 100644 --- a/mxpic/components/primitives/pic/YBS.py +++ b/mxpic/components/primitives/pic/YBS.py @@ -4,15 +4,43 @@ import numpy as np import math from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * import pandas as pd -from ...structures import _my_polygon +from ...geometry import _my_polygon from scipy.interpolate import CubicSpline from ...basic import __cell_arg__ class YBranch: + """ + YBranch primitive component. + + This component builds the YBranch layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w : list or np.ndarray, optional + Width parameter in microns. Default is [1.2, 1.0, 1.8, 1.2, 1.0, 1.2, 1.2]. + L : float, optional + Length parameter in microns. Default is 6. + R_att : float, optional + Radius parameter in microns. Default is 10. + A_att : float, optional + Angle parameter in degrees. Default is 10. + w_port : float, optional + Width parameter in microns. Default is 0.45. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + res : float, optional + Value for the res parameter. Default is 0.1. + """ def __init__(self, name : str = None, xs : str = 'strip', @@ -105,6 +133,38 @@ class YBranch: class Ybranch_3wg: + """ + Ybranch 3wg primitive component. + + This component builds the Ybranch 3wg layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + w0 : float, optional + Width parameter in microns. Default is 0.4. + w1 : float, optional + Width parameter in microns. Default is 0.2. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.18. + Lcp : float, optional + Length parameter in microns. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R0 : float, optional + Radius parameter in microns. Default is 10. + angle : float, optional + Angle parameter in degrees. Default is 20. + L_attach : float, optional + Length parameter in microns. Default is 3. + L_in_tp : float, optional + Length parameter in microns. Default is 3. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: Optional[str] = None, w0:float=0.4, diff --git a/mxpic/components/primitives/pic/bragg.py b/mxpic/components/primitives/pic/bragg.py index 7bf8302..be599d1 100644 --- a/mxpic/components/primitives/pic/bragg.py +++ b/mxpic/components/primitives/pic/bragg.py @@ -2,13 +2,43 @@ import nazca as nd import numpy as np -from ...structures import * +from ...geometry import * from ...routing import Route from . import MDM class Bragg_apodized: + """ + Bragg apodized primitive component. + + This component builds the Bragg apodized layout cell. + + Parameters + ---------- + Period : float, optional + Value for the Period parameter. Default is 0.3. + w : float, optional + Width parameter in microns. Default is 1.1. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + etch_type : str, optional + Value for the etch_type parameter. Default is 'FETCH'. + etch_shape : str, optional + Value for the etch_shape parameter. Default is 'rectangle'. + N : int, optional + Value for the N parameter. Default is 200. + eta_etch : float, optional + Value for the eta_etch parameter. Default is 0.5. + dT : float, optional + Value for the dT parameter. Default is 0.15. + b : int, optional + Value for the b parameter. Default is 10. + eta_ds : float, optional + Value for the eta_ds parameter. Default is 0.5. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, Period: float = 0.3, w: float = 1.1, @@ -138,6 +168,32 @@ class Bragg_apodized: return C class Bragg(Bragg_apodized): + """ + Bragg primitive component. + + This component builds the Bragg layout cell. + + Parameters + ---------- + Period : float, optional + Value for the Period parameter. Default is 0.3. + w : float, optional + Width parameter in microns. Default is 1.1. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + etch_type : str, optional + Value for the etch_type parameter. Default is 'FETCH'. + etch_shape : str, optional + Value for the etch_shape parameter. Default is 'rectangle'. + N : int, optional + Value for the N parameter. Default is 200. + eta_etch : float, optional + Value for the eta_etch parameter. Default is 0.5. + dT : float, optional + Value for the dT parameter. Default is 0.15. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, Period: float=0.3, w: float=1.1, xs: str='strip', diff --git a/mxpic/components/primitives/pic/couplers.py b/mxpic/components/primitives/pic/couplers.py index 10d6249..90f65dd 100644 --- a/mxpic/components/primitives/pic/couplers.py +++ b/mxpic/components/primitives/pic/couplers.py @@ -5,20 +5,74 @@ import numpy as np from . import taper -from ...structures import * +from ...geometry import * from ...routing import Route # import nazca.interconnects as IC # class Route(IC.Interconnect): # pass -from ...structures import _my_polygon +from ...geometry import _my_polygon from ...basic import __cell_arg__ class ring_bus_wg : ## two types: ## DC, BDC + """ + ring bus wg primitive component. + + This component builds the ring bus wg layout cell. + + Parameters + ---------- + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + R_cp : int, optional + Radius parameter in microns. Default is 20. + w_bus : float, optional + Width parameter in microns. Default is 0.5. + bend_DC : bool, optional + Value for the bend_DC parameter. Default is True. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + dLc : float, optional + Value for the dLc parameter. Default is 10. + dAc : float, optional + Value for the dAc parameter. Default is 10. + euler_transistion : bool, optional + Value for the euler_transistion parameter. Default is False. + dL_trans : float, optional + Value for the dL_trans parameter. Default is 10. + dA_trans : float, optional + Value for the dA_trans parameter. Default is 30. + R_max_trans : int, optional + Radius parameter in microns. Default is 100. + w_trans : float, optional + Width parameter in microns. Default is 0.5. + euler_anti_bend : bool, optional + Value for the euler_anti_bend parameter. Default is False. + R_max_anti : int, optional + Radius parameter in microns. Default is 100. + R_min_anti : int, optional + Radius parameter in microns. Default is 10. + A_anti : Any, optional + Angle parameter in degrees. Default is None. + res : float, optional + Value for the res parameter. Default is 0.1. + wg_Ltp : int, optional + Value for the wg_Ltp parameter. Default is 5. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + end_patch : bool, optional + Value for the end_patch parameter. Default is False. + clothoid_order : int, optional + Value for the clothoid_order parameter. Default is 1. + """ def __init__(self, xs: str='strip', R_cp: int = 20, @@ -183,6 +237,68 @@ class ring_bus_wg : class ADC_STD_2x2: + """ + ADC STD 2x2 primitive component. + + This component builds the ADC STD 2x2 layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + wu0 : float, optional + Value for the wu0 parameter. Default is 0.45. + wu1 : float, optional + Value for the wu1 parameter. Default is 0.61. + wu_in : float, optional + Value for the wu_in parameter. Default is 0.45. + wu_out : float, optional + Value for the wu_out parameter. Default is 0.8. + wd0 : float, optional + Value for the wd0 parameter. Default is 0.33. + wd1 : float, optional + Value for the wd1 parameter. Default is 0.2. + wd_in : float, optional + Value for the wd_in parameter. Default is 0.45. + wd_out : float, optional + Value for the wd_out parameter. Default is 0.8. + Lu : int, optional + Length parameter in microns. Default is 33. + Ld : int, optional + Length parameter in microns. Default is 33. + angle : float, optional + Angle parameter in degrees. Default is 20. + g0 : float, optional + Value for the g0 parameter. Default is 0.2. + g1 : float, optional + Value for the g1 parameter. Default is 0.2. + sbend_type : str, optional + Value for the sbend_type parameter. Default is 'euler'. + Rmax : Any, optional + Radius parameter in microns. Default is None. + Rmin : int, optional + Radius parameter in microns. Default is 5. + Ru0 : int, optional + Radius parameter in microns. Default is 0. + Ru1 : int, optional + Radius parameter in microns. Default is 20. + Rd0 : int, optional + Radius parameter in microns. Default is 20. + Rd1 : int, optional + Radius parameter in microns. Default is 0. + tp_angle : int, optional + Value for the tp_angle parameter. Default is 2. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + euler_points : int, optional + Value for the euler_points parameter. Default is 64. + res : float, optional + Value for the res parameter. Default is 0.1. + """ def __init__ (self, name: Optional[str] = None, xs: str='strip', @@ -504,6 +620,42 @@ class ADC_STD_2x2: class DC(ADC_STD_2x2): + """ + DC primitive component. + + This component builds the DC layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_cp : float, optional + Width parameter in microns. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + L_cp : float, optional + Length parameter in microns. Default is 30. + angle : float, optional + Angle parameter in degrees. Default is 20. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + sbend_type : str, optional + Value for the sbend_type parameter. Default is 'circular'. + Rmax : float, optional + Radius parameter in microns. Default is None. + Rmin : float, optional + Radius parameter in microns. Default is 5. + R0 : float, optional + Radius parameter in microns. Default is 10. + tp_angle : float, optional + Value for the tp_angle parameter. Default is 2. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, name: Optional[str] = None, xs:str='strip', @@ -580,6 +732,38 @@ class DC(ADC_STD_2x2): return C class BS_tdc(ADC_STD_2x2): + """ + BS tdc primitive component. + + This component builds the BS tdc layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + wa0 : float, optional + Value for the wa0 parameter. Default is 0.35. + wa1 : float, optional + Value for the wa1 parameter. Default is 0.45. + wb0 : float, optional + Value for the wb0 parameter. Default is 0.55. + wb1 : float, optional + Value for the wb1 parameter. Default is 0.45. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + Lt : float, optional + Length parameter in microns. Default is 20. + R0 : float, optional + Radius parameter in microns. Default is 30. + angle : float, optional + Angle parameter in degrees. Default is 15. + sbend_type : str, optional + Value for the sbend_type parameter. Default is 'circle'. + """ def __init__(self, name: Optional[str]=None, xs:str ='strip', @@ -622,6 +806,52 @@ class BS_tdc(ADC_STD_2x2): class MDM(ADC_STD_2x2): + """ + MDM primitive component. + + This component builds the MDM layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + wb0 : float, optional + Value for the wb0 parameter. Default is 0.45. + wb1 : float, optional + Value for the wb1 parameter. Default is 0.61. + wb_in : float, optional + Value for the wb_in parameter. Default is 0.45. + wb_out : float, optional + Value for the wb_out parameter. Default is 0.88. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w0 : float, optional + Width parameter in microns. Default is 0.33. + w1 : float, optional + Width parameter in microns. Default is 0.2. + gap0 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + Lt_bus : float, optional + Length parameter in microns. Default is 20. + R0 : float, optional + Radius parameter in microns. Default is 40. + angle : float, optional + Angle parameter in degrees. Default is 22.5. + Lt_cp : float, optional + Length parameter in microns. Default is None. + gap1 : float, optional + Spacing or gap parameter in microns. Default is None. + Lb0 : float, optional + Length parameter in microns. Default is None. + symmetric_BUS : bool, optional + Value for the symmetric_BUS parameter. Default is True. + single_end : bool, optional + Value for the single_end parameter. Default is True. + Rmin : float, optional + Radius parameter in microns. Default is 8. + """ def __init__(self, name: Optional[str] = None, xs:str='strip', @@ -749,10 +979,34 @@ class MDM(ADC_STD_2x2): class DC_bend : - ''' - This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. - Written by HU GAOLEI at 2022.5.15. - ''' + """ + This is a class for bend directional coupler for broadband and fabrication tolerant power splitting. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + w_in : float, optional + Width parameter in microns. Default is 0.45. + w_out : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + r_in : float, optional + Radius parameter in microns. Default is 40. + theta_arc : float, optional + Angle parameter in degrees. Default is 30. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + theta_ext : float, optional + Angle parameter in degrees. Default is 15. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__( self, @@ -903,6 +1157,44 @@ class DC_bend : class DC_pX_3sg: + """ + DC pX 3sg primitive component. + + This component builds the DC pX 3sg layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + Lc1 : float, optional + Length parameter in microns. Default is 10. + Lp1 : float, optional + Length parameter in microns. Default is 5. + Lc2 : float, optional + Length parameter in microns. Default is 10. + Lt : float, optional + Length parameter in microns. Default is 1. + w_cp : float, optional + Width parameter in microns. Default is 0.5. + dw : float, optional + Value for the dw parameter. Default is 0.1. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + R0 : float, optional + Radius parameter in microns. Default is 10. + A : float, optional + Angle parameter in degrees. Default is 15. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + pX_type : str, optional + Value for the pX_type parameter. Default is 'symmetric'. + port_symmetric : bool, optional + Value for the port_symmetric parameter. Default is True. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: Optional[str] = None, xs_wg:str='strip', diff --git a/mxpic/components/primitives/pic/cross.py b/mxpic/components/primitives/pic/cross.py index 7d9d28a..ff7dcd5 100644 --- a/mxpic/components/primitives/pic/cross.py +++ b/mxpic/components/primitives/pic/cross.py @@ -4,13 +4,31 @@ import numpy as np import math from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * import pandas as pd -from ...structures import _my_polygon +from ...geometry import _my_polygon class Cross: + """ + Cross primitive component. + + This component builds the Cross layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + L : list, optional + Length parameter in microns. Default is [0, 1, 2, 3, 4]. + w : list, optional + Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5]. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, name: Optional[str] = None, L: list = [0 , 1, 2, 3, 4], @@ -97,6 +115,26 @@ class Cross: return C class Cross_Sine(Cross): + """ + Cross Sine primitive component. + + This component builds the Cross Sine layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + res : list, optional + Value for the res parameter. Default is [1, 1, 1, 1]. + w : list, optional + Width parameter in microns. Default is [0.5, 0.45, 0.6, 0.4, 0.5]. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + n_points : int, optional + Value for the n_points parameter. Default is 4. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, name: Optional[str] = None, res: list = [1,1,1,1], diff --git a/mxpic/components/primitives/pic/gratings.py b/mxpic/components/primitives/pic/gratings.py index 1a66fa1..6baf638 100644 --- a/mxpic/components/primitives/pic/gratings.py +++ b/mxpic/components/primitives/pic/gratings.py @@ -3,8 +3,8 @@ import nazca as nd import numpy as np import math -from ...structures import * -from ...structures import _my_polygon +from ...geometry import * +from ...geometry import _my_polygon from ...basic import __cell_arg__ from ...routing import Route @@ -13,26 +13,37 @@ import pandas as pd ''' Class for nanoantenna ''' class Nano_ant(): - """Class of nanoantenna for optical phased array. - - This is the class of nanoantenna for optical phased array. GDS cell can be generated using this class. Simulation structure generation and simulation results analysis is going to be added in the future. - - Args: - - tapeout [class] (Default: CUMEC_CSiP130Cu) - - w_wg [um] (Default: 0.5um) - Width of input waveguide - - vector [um] (Default: [0.5,..,0.5]]) - Vectors to define the length of each teeth - - taper_length [um] (Default: 1um) - Length of the linear taper region - - width [um] (Default: 3um) - Width of the nanoantenna - - max_theta [degree](Default: 110) - Open degree of linear taper - - define_type [str] (Default: non-periodic) - Way to define the antenna, including: "non-periodic", "periodic" - - etch_depth [str] (Default: "DETCH") - Define the etch depth, including: "FETCH", "METCH", "SETCH" + """ + Class of nanoantenna for optical phased array. + + This is the class of nanoantenna for optical phased array. GDS cell can be generated using this class. Simulation structure generation and simulation results analysis is going to be added in the future. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.41. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + define_type : str, optional + Value for the define_type parameter. Default is 'non-periodic'. + vector : list, optional + Value for the vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5, 0.5]. + taper_length : float, optional + Value for the taper_length parameter. Default is 3. + width : float, optional + Width parameter in microns. Default is 6. + max_theta : float, optional + Value for the max_theta parameter. Default is 110. + pitch : float, optional + Spacing or gap parameter in microns. Default is 0.6. + duty_cycle : float, optional + Value for the duty_cycle parameter. Default is 0.3. + teeth_number : float, optional + Value for the teeth_number parameter. Default is 6. + etch_depth : list, optional + Value for the etch_depth parameter. Default is ['METCH']. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is True. """ def __init__( @@ -193,6 +204,24 @@ class Nano_ant(): ''' Class for 2D antenna array for FMF grating ''' class Taper() : + """ + Taper primitive component. + + This component builds the Taper layout cell. + + Parameters + ---------- + width1 : float, optional + Width parameter in microns. Default is 4. + width2 : float, optional + Width parameter in microns. Default is 0.45. + length : float, optional + Length parameter in microns. Default is 30. + type : str, optional + Value for the type parameter. Default is 'linear'. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, width1: float=4, width2: float=0.45, length: float=30, type: str="linear", show_pins: bool=False) -> None: self.width1 = width1 self.width2 = width2 @@ -252,9 +281,36 @@ class Taper() : class Grating_2D_Hole() : - ''' - This is a class for 2D Grating in IMEC. - ''' + """ + This is a class for 2D Grating in IMEC. + + Parameters + ---------- + w_wg : float, optional + Width parameter in microns. Default is 0.5. + w_gt : float, optional + Width parameter in microns. Default is 5. + l_taper : float, optional + Value for the l_taper parameter. Default is 30. + type_taper : str, optional + Value for the type_taper parameter. Default is 'parabolic'. + gt_vector : list, optional + Value for the gt_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5]. + gt_diameter : float, optional + Value for the gt_diameter parameter. Default is 0.4. + gt_layer : str, optional + Value for the gt_layer parameter. Default is 'STRIP_COR'. + polysi_vector : list, optional + Value for the polysi_vector parameter. Default is [0.5, 0.5, 0.5, 0.5, 0.5]. + polysi_diameter : float, optional + Value for the polysi_diameter parameter. Default is 0.4. + polysi_layer : str, optional + Value for the polysi_layer parameter. Default is 'FCW_TRE'. + reflector_vector : list, optional + Value for the reflector_vector parameter. Default is [0.3, 0.3, 0.3, 0.3, 0.3, 0.3]. + l_field_center : float, optional + Value for the l_field_center parameter. Default is 1. + """ def __init__( self, w_wg: float=0.5, @@ -344,6 +400,22 @@ class Grating_2D_Hole() : class Grating_2D_Hole_4Rec() : + """ + Grating 2D Hole 4Rec primitive component. + + This component builds the Grating 2D Hole 4Rec layout cell. + + Parameters + ---------- + grating_unit : Any + Grating unit cell or component used by this wrapper. + mode_radius : int, optional + Value for the mode_radius parameter. Default is 8. + cell_name : Optional[str], optional + Optional generated cell name. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, grating_unit: Any, mode_radius: int=8, cell_name: Optional[str]=None, show_pins: bool=False) -> None: self.gt_2D_class = grating_unit self.cell_unit = grating_unit.cell @@ -416,6 +488,22 @@ class Grating_2D_Hole_4Rec() : class Grating_2D_Hole_3Rec() : + """ + Grating 2D Hole 3Rec primitive component. + + This component builds the Grating 2D Hole 3Rec layout cell. + + Parameters + ---------- + grating_unit : Any + Grating unit cell or component used by this wrapper. + mode_radius : float, optional + Value for the mode_radius parameter. Default is 6.5. + cell_name : Optional[str], optional + Optional generated cell name. Default is None. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, grating_unit: Any, mode_radius: float=6.5, cell_name: Optional[str]=None, show_pins: bool=False) -> None: self.gt_2D_class = grating_unit self.cell_unit = grating_unit.cell @@ -484,6 +572,62 @@ class Grating_2D_Hole_3Rec() : """ Renamed for simplification in 2023.04.02 """ class GC_STD_2D: + """ + GC STD 2D primitive component. + + This component builds the GC STD 2D layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + etch_type : str, optional + Value for the etch_type parameter. Default is 'FETCH'. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'grating'. + Dx_hole : float, optional + Value for the Dx_hole parameter. Default is 0.3. + Dy_hole : float, optional + Value for the Dy_hole parameter. Default is 0.3. + hole_shape : str, optional + Value for the hole_shape parameter. Default is 'circle'. + shape : str, optional + Value for the shape parameter. Default is 'circle'. + xs_open : str, optional + Layer or cross-section name used by the device. Default is None. + Px : float, optional + Value for the Px parameter. Default is 0.57. + Py : float, optional + Value for the Py parameter. Default is 0.57. + num_x : float, optional + Count or repetition parameter. Default is 25. + num_y : float, optional + Count or repetition parameter. Default is 25. + Lx_taper : float, optional + Length parameter in microns. Default is 50. + Ly_taper : float, optional + Length parameter in microns. Default is 0. + Lx_end : float, optional + Length parameter in microns. Default is 1. + Ly_end : float, optional + Length parameter in microns. Default is 1. + Lx_side : float, optional + Length parameter in microns. Default is 0.5. + Ly_side : float, optional + Length parameter in microns. Default is 0.5. + Lx_port : float, optional + Length parameter in microns. Default is 5. + Ly_port : float, optional + Length parameter in microns. Default is 5. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + P_AR : float, optional + Value for the P_AR parameter. Default is 0.6. + L_AR : float, optional + Length parameter in microns. Default is 1. + """ def __init__(self, name: Optional[str]=None, etch_type :str = 'FETCH', @@ -773,6 +917,46 @@ class GC_STD_2D: return C class GC_STD_1D: + """ + GC STD 1D primitive component. + + This component builds the GC STD 1D layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs_wg : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + w_wg : float, optional + Width parameter in microns. Default is 0.5. + etch_type : str, optional + Value for the etch_type parameter. Default is 'FETCH'. + xs_open : str, optional + Layer or cross-section name used by the device. Default is None. + L_taper : float, optional + Length parameter in microns. Default is 10. + L_end : float, optional + Length parameter in microns. Default is 2. + A_taper : float, optional + Angle parameter in degrees. Default is 30. + Period : float, optional + Value for the Period parameter. Default is 0.5. + eta_etch : float, optional + Value for the eta_etch parameter. Default is 0.5. + num : float, optional + Count or repetition parameter. Default is 20. + sector_gc : bool, optional + Value for the sector_gc parameter. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + L_tail : int, optional + Length parameter in microns. Default is 2. + P_AR : float, optional + Value for the P_AR parameter. Default is 1. + L_AR : float, optional + Length parameter in microns. Default is 2. + """ def __init__ (self, name: Optional[str]=None, xs_wg : str = 'strip', @@ -1074,6 +1258,22 @@ class GC_STD_1D: return C class FA: + """ + FA primitive component. + + This component builds the FA layout cell. + + Parameters + ---------- + fiber_coupler : Any + Fiber coupler cell or component used by this array. + pitch : float + Spacing or gap parameter in microns. + number : int + Count or repetition parameter. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self,fiber_coupler: Any,pitch: float,number: int,show_pins: bool=False) -> None: # if (isinstance(fiber_coupler,nd.Cell)): diff --git a/mxpic/components/primitives/pic/mmi.py b/mxpic/components/primitives/pic/mmi.py index 3511bd6..5380129 100644 --- a/mxpic/components/primitives/pic/mmi.py +++ b/mxpic/components/primitives/pic/mmi.py @@ -7,13 +7,51 @@ import math from .taper import taper_xs2xs from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * -from ...structures import _my_polygon,Conchoid +from ...geometry import _my_polygon,Conchoid """ Mono layer MMI """ class MMI_ML: + """ + MMI ML primitive component. + + This component builds the MMI ML layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + L_arm : list, optional + Length parameter in microns. Default is [10]. + w_arm : list, optional + Width parameter in microns. Default is [0.45, 1.35]. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + arm_sine_width : bool, optional + Value for the arm_sine_width parameter. Default is False. + L_mmi : list, optional + Length parameter in microns. Default is [10]. + w_mmi : list, optional + Width parameter in microns. Default is [5, 5]. + mmi_sine_width : bool, optional + Value for the mmi_sine_width parameter. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + res : float, optional + Value for the res parameter. Default is 0.01. + N_out : int, optional + Count or repetition parameter. Default is 3. + N_in : int, optional + Count or repetition parameter. Default is 1. + Dp_out : float, optional + Value for the Dp_out parameter. Default is 1.5. + Dp_in : float, optional + Value for the Dp_in parameter. Default is 1.5. + """ def __init__(self, name: Optional[str]=None, L_arm: list=[10], @@ -163,6 +201,40 @@ class MMI_ML: class MMI_STD(MMI_ML): + """ + MMI STD primitive component. + + This component builds the MMI STD layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + N_out : int, optional + Count or repetition parameter. Default is 3. + N_in : int, optional + Count or repetition parameter. Default is 1. + L_arm : int, optional + Length parameter in microns. Default is 10. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + w_port : float, optional + Width parameter in microns. Default is 1.2. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + L_mmi : int, optional + Length parameter in microns. Default is 10. + w_mmi : float, optional + Width parameter in microns. Default is 5. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + Dp_out : float, optional + Value for the Dp_out parameter. Default is 1.5. + Dp_in : float, optional + Value for the Dp_in parameter. Default is 1.5. + """ def __init__(self, name: Optional[str]=None, N_out: int=3, diff --git a/mxpic/components/primitives/pic/racetrack.py b/mxpic/components/primitives/pic/racetrack.py index f6719b7..9d2b4a2 100644 --- a/mxpic/components/primitives/pic/racetrack.py +++ b/mxpic/components/primitives/pic/racetrack.py @@ -5,7 +5,7 @@ from .couplers import ring_bus_wg from .taper import taper_xs2xs -from ...structures import Racetrack,Clothoid,circle,Elipse_dual +from ...geometry import Racetrack,Clothoid,circle,Elipse_dual from . import ring_bus_wg from ...electronics import Vias import nazca.interconnects as IC @@ -18,6 +18,76 @@ class Route(IC.Interconnect): class RacetrackResonator: + """ + RacetrackResonator primitive component. + + This component builds the RacetrackResonator layout cell. + + Parameters + ---------- + R0 : Any + Radius parameter in microns. + w0 : float + Width parameter in microns. + R1 : Any + Radius parameter in microns. + w1 : float + Width parameter in microns. + dLy : float + Value for the dLy parameter. + dLx : float + Value for the dLx parameter. + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0.45. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + A1_cp : int, optional + Angle parameter in degrees. Default is 0. + A2_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R1_att : float, optional + Radius parameter in microns. Default is 20. + R2_att : float, optional + Radius parameter in microns. Default is 20. + R2_att_min : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 10. + A1_att : float, optional + Angle parameter in degrees. Default is 30. + A2_att : float, optional + Angle parameter in degrees. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + res : float, optional + Value for the res parameter. Default is 0.01. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, R0: Any, @@ -147,6 +217,58 @@ class RacetrackResonator: class Racetrack_STD_Allpass(RacetrackResonator): + """ + Racetrack STD Allpass primitive component. + + This component builds the Racetrack STD Allpass layout cell. + + Parameters + ---------- + r_rck : float + Radius parameter in microns. + w_rck : float + Width parameter in microns. + dLy : float + Value for the dLy parameter. + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 0. + Ratt : int, optional + Radius parameter in microns. Default is 10. + w_ht : float, optional + Width parameter in microns. Default is 0. + w_mt : float, optional + Width parameter in microns. Default is 10. + via_h2m : Any, optional + Via definition used between heater and metal layers. Default is None. + xs_ht : str, optional + Layer or cross-section name used by the device. Default is 'heater'. + xs_mt : str, optional + Layer or cross-section name used by the device. Default is 'metal'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + res : float, optional + Value for the res parameter. Default is 0.01. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, r_rck: float, w_rck: float, dLy: float, @@ -232,6 +354,54 @@ class Racetrack_STD_Allpass(RacetrackResonator): class Racetrack_MM_Allpass(RacetrackResonator): + """ + Racetrack MM Allpass primitive component. + + This component builds the Racetrack MM Allpass layout cell. + + Parameters + ---------- + r1_rck : float + Value for the r1_rck parameter. + w1_rck : float + Value for the w1_rck parameter. + r0_rck : float + Value for the r0_rck parameter. + w0_rck : float + Value for the w0_rck parameter. + dLy : float + Value for the dLy parameter. + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : int, optional + Radius parameter in microns. Default is 50. + R_att_min : int, optional + Radius parameter in microns. Default is 10. + A_att : int, optional + Angle parameter in degrees. Default is 15. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + res : float, optional + Value for the res parameter. Default is 0.01. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, r1_rck: float, w1_rck: float, r0_rck: float, w0_rck: float, @@ -264,6 +434,54 @@ class Racetrack_MM_Allpass(RacetrackResonator): class Racetrack_MM_Adddrop(RacetrackResonator): + """ + Racetrack MM Adddrop primitive component. + + This component builds the Racetrack MM Adddrop layout cell. + + Parameters + ---------- + r1_rck : float + Value for the r1_rck parameter. + w1_rck : float + Value for the w1_rck parameter. + r0_rck : float + Value for the r0_rck parameter. + w0_rck : float + Value for the w0_rck parameter. + dLy : float + Value for the dLy parameter. + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + gap : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w_bus : float, optional + Width parameter in microns. Default is 0.45. + A_cp : int, optional + Angle parameter in degrees. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R_att : int, optional + Radius parameter in microns. Default is 50. + R_att_min : int, optional + Radius parameter in microns. Default is 10. + A_att : int, optional + Angle parameter in degrees. Default is 15. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + res : float, optional + Value for the res parameter. Default is 0.01. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, r1_rck: float, w1_rck: float, r0_rck: float, w0_rck: float, diff --git a/mxpic/components/primitives/pic/rings.py b/mxpic/components/primitives/pic/rings.py index daf9e41..fef014e 100644 --- a/mxpic/components/primitives/pic/rings.py +++ b/mxpic/components/primitives/pic/rings.py @@ -5,7 +5,7 @@ from .couplers import ring_bus_wg from .taper import taper_xs2xs -from ...structures import * +from ...geometry import * # import nazca.interconnects as IC from ...routing import Route @@ -20,6 +20,76 @@ from ...basic import __cell_arg__ """ NOTE: n_points will not be used in any future class, res will be the accurancy parameter """ class AED_ring : + """ + AED ring primitive component. + + This component builds the AED ring layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + ORx : float, optional + Value for the ORx parameter. Default is 10. + ORy : float, optional + Value for the ORy parameter. Default is 10. + IRx : float, optional + Value for the IRx parameter. Default is 10 - 0.45. + IRy : float, optional + Value for the IRy parameter. Default is 10 - 0.65. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0.45. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + A1_cp : int, optional + Angle parameter in degrees. Default is 0. + A2_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R1_att : float, optional + Radius parameter in microns. Default is 20. + R2_att : float, optional + Radius parameter in microns. Default is 20. + R2_att_min : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 10. + A1_att : float, optional + Angle parameter in degrees. Default is 30. + A2_att : float, optional + Angle parameter in degrees. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + res : float, optional + Value for the res parameter. Default is 0.01. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, name: Optional[str]=None, ORx: float = 10, @@ -247,6 +317,72 @@ class AED_ring : return C class STD_PIC_Rings(AED_ring): + """ + STD PIC Rings primitive component. + + This component builds the STD PIC Rings layout cell. + + Parameters + ---------- + name : Optional[str], optional + Unique identifier for the device cell. Default is None. + r_ring : float, optional + Radius parameter in microns. Default is 10. + w_ring : float, optional + Width parameter in microns. Default is 10. + gap1 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + gap2 : float, optional + Spacing or gap parameter in microns. Default is 0.2. + w1_bus : float, optional + Value for the w1_bus parameter. Default is 0.45. + w2_bus : float, optional + Value for the w2_bus parameter. Default is 0. + R1_cp : Any, optional + Radius parameter in microns. Default is None. + R2_cp : Any, optional + Radius parameter in microns. Default is None. + A1_cp : int, optional + Angle parameter in degrees. Default is 0. + A2_cp : int, optional + Angle parameter in degrees. Default is 0. + offset_X : float, optional + Value for the offset_X parameter. Default is 0. + offset_Y : float, optional + Value for the offset_Y parameter. Default is 0. + w_wg : float, optional + Width parameter in microns. Default is 0.45. + R1_att : float, optional + Radius parameter in microns. Default is 20. + R2_att : float, optional + Radius parameter in microns. Default is 20. + R2_att_min : float, optional + Radius parameter in microns. Default is 10. + R1_att_min : float, optional + Radius parameter in microns. Default is 10. + A1_att : float, optional + Angle parameter in degrees. Default is 30. + A2_att : float, optional + Angle parameter in degrees. Default is 20. + Ltp_bus : int, optional + Length parameter in microns. Default is 10. + dL_p2p : Optional[float], optional + Value for the dL_p2p parameter. Default is None. + L_tilt : int, optional + Length parameter in microns. Default is 10. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + Euler_trasition : bool, optional + Value for the Euler_trasition parameter. Default is False. + res : float, optional + Value for the res parameter. Default is 0.001. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, name: Optional[str] = None, r_ring: float=10, diff --git a/mxpic/components/primitives/pic/spiral.py b/mxpic/components/primitives/pic/spiral.py index 135cbcb..0820e7e 100644 --- a/mxpic/components/primitives/pic/spiral.py +++ b/mxpic/components/primitives/pic/spiral.py @@ -7,14 +7,66 @@ import math from .taper import taper_xs2xs from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * -from ...structures import _my_polygon,Conchoid,_my_poly_spiral +from ...geometry import _my_polygon,Conchoid,_my_poly_spiral from scipy import optimize class spiral: + """ + spiral primitive component. + + This component builds the spiral layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + shape : str, optional + Value for the shape parameter. Default is 'circle'. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + R_bend : float, optional + Radius parameter in microns. Default is 10. + Rmin_euler : float, optional + Radius parameter in microns. Default is 10. + Lmin : float, optional + Length parameter in microns. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is 0.45. + w_bend_center : float, optional + Width parameter in microns. Default is 1. + Rmin_bend_center : float, optional + Radius parameter in microns. Default is 10. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + w_bend_port : Optional[float], optional + Width parameter in microns. Default is None. + Ltp_port : int, optional + Length parameter in microns. Default is 10. + res : float, optional + Value for the res parameter. Default is 0.5. + rib2strip : bool, optional + Value for the rib2strip parameter. Default is True. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + Euler_bend : bool, optional + Value for the Euler_bend parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: str = None, shape: str = 'circle', @@ -350,6 +402,58 @@ class spiral: return C class spiral_rectangle: + """ + spiral rectangle primitive component. + + This component builds the spiral rectangle layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + Rmax_bend : float, optional + Radius parameter in microns. Default is 10. + Rmin_bend : float, optional + Radius parameter in microns. Default is 10. + wmin_bend : float, optional + Value for the wmin_bend parameter. Default is 10. + Lmin : float, optional + Length parameter in microns. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is None. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + w_bend_port : Optional[float], optional + Width parameter in microns. Default is None. + Lport : int, optional + Length parameter in microns. Default is 10. + Ltp : int, optional + Length parameter in microns. Default is 10. + res : float, optional + Value for the res parameter. Default is 0.5. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + in_out_align : bool, optional + Value for the in_out_align parameter. Default is True. + Lpatch : float, optional + Length parameter in microns. Default is 0.05. + """ def __init__(self, name: str = None, Dmin: float = 50, @@ -653,6 +757,48 @@ class spiral_rectangle: return C class Spiral_Rect_STD(spiral_rectangle): + """ + Spiral Rect STD primitive component. + + This component builds the Spiral Rect STD layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + R_bend : float, optional + Radius parameter in microns. Default is 10. + Lmin : float, optional + Length parameter in microns. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + Lport : int, optional + Length parameter in microns. Default is 10. + in_out_align : bool, optional + Value for the in_out_align parameter. Default is True. + res : float, optional + Value for the res parameter. Default is 0.5. + cell_xs_transition : Any, optional + Cell or component dependency used by this device. Default is None. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + """ def __init__(self, name: str = None, Dmin: float = 50, @@ -693,6 +839,50 @@ class Spiral_Rect_STD(spiral_rectangle): in_out_align=in_out_align) class spiral_circle: + """ + spiral circle primitive component. + + This component builds the spiral circle layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is 0.45. + w_bend_center : float, optional + Width parameter in microns. Default is 1. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + Lport : int, optional + Length parameter in microns. Default is 10. + res : float, optional + Value for the res parameter. Default is 0.5. + rib2strip : bool, optional + Value for the rib2strip parameter. Default is True. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + Euler_Sbend : bool, optional + Value for the Euler_Sbend parameter. Default is False. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + strict_condition : bool, optional + Value for the strict_condition parameter. Default is False. + R_ratio_mamnual : Any, optional + Radius parameter in microns. Default is None. + """ def __init__(self, name: str = None, Dmin: float = 50, @@ -942,6 +1132,46 @@ class spiral_circle: return C class Spiral_Cicle_MM(spiral_circle): + """ + Spiral Cicle MM primitive component. + + This component builds the Spiral Cicle MM layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is 0.45. + w_bend_center : float, optional + Width parameter in microns. Default is 1. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + Lport : int, optional + Length parameter in microns. Default is 10. + res : float, optional + Value for the res parameter. Default is 0.5. + rib2strip : bool, optional + Value for the rib2strip parameter. Default is True. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + strict_condition : bool, optional + Value for the strict_condition parameter. Default is False. + """ def __init__(self, name: str = None, Dmin: float = 50, @@ -974,6 +1204,44 @@ class Spiral_Cicle_MM(spiral_circle): strict_condition=strict_condition) class Spiral_Cicle_STD(spiral_circle): + """ + Spiral Cicle STD primitive component. + + This component builds the Spiral Cicle STD layout cell. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is None. + Dmin : float, optional + Value for the Dmin parameter. Default is 50. + width : float, optional + Width parameter in microns. Default is 2. + w_port : float, optional + Width parameter in microns. Default is 0.45. + gap : float, optional + Spacing or gap parameter in microns. Default is 1. + cycles : float, optional + Count or repetition parameter. Default is 20. + xs : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + layer : str, optional + Layer or cross-section name used by the device. Default is None. + Lport : int, optional + Length parameter in microns. Default is 10. + res : float, optional + Value for the res parameter. Default is 0.5. + rib2strip : bool, optional + Value for the rib2strip parameter. Default is True. + port_angle : float, optional + Value for the port_angle parameter. Default is 180. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + sharp_patch : bool, optional + Whether to add geometry patches for sharp corners or cladding continuity. Default is True. + strict_condition : bool, optional + Value for the strict_condition parameter. Default is False. + """ def __init__(self, name: str = None, Dmin: float = 50, diff --git a/mxpic/components/primitives/pic/taper.py b/mxpic/components/primitives/pic/taper.py index 2d51b2d..1e30446 100644 --- a/mxpic/components/primitives/pic/taper.py +++ b/mxpic/components/primitives/pic/taper.py @@ -3,14 +3,44 @@ import numpy as np import math from ...routing import Route -from ...structures import * +from ...geometry import * from ....technologies import * import pandas as pd -from ...structures import _my_polygon +from ...geometry import _my_polygon """ NEW Classes :: Transistion area of rib to strip, to minize the loss """ class transition: + """ + transition primitive component. + + This component builds the transition layout cell. + + Parameters + ---------- + layer_FETCH : str, optional + Layer or cross-section name used by the device. Default is 'STRIP_TRE'. + layer_METCH : str, optional + Layer or cross-section name used by the device. Default is 'RIB_TRE'. + w_rib : float, optional + Width parameter in microns. Default is 1.1. + dw_tolerance : float, optional + Value for the dw_tolerance parameter. Default is 0.2. + w_grow_rib : float, optional + Width parameter in microns. Default is 2. + w_grow_strip : float, optional + Width parameter in microns. Default is 2. + Ltp1 : int, optional + Length parameter in microns. Default is 15. + Ltp2 : int, optional + Length parameter in microns. Default is 10. + Ltrans : int, optional + Length parameter in microns. Default is 5. + L_port : int, optional + Length parameter in microns. Default is 2. + show_pins : bool, optional + Whether to draw pin markers in the generated layout. Default is False. + """ def __init__(self, layer_FETCH: str="STRIP_TRE", layer_METCH: str="RIB_TRE", @@ -59,6 +89,26 @@ class transition: self.cell = C class taper_xs2xs: + """ + taper xs2xs primitive component. + + This component builds the taper xs2xs layout cell. + + Parameters + ---------- + xs_1 : str, optional + Layer or cross-section name used by the device. Default is 'rib'. + xs_2 : str, optional + Layer or cross-section name used by the device. Default is 'strip'. + L_taper : float, optional + Length parameter in microns. Default is 10. + w_1 : float, optional + Width parameter in microns. Default is 0.45. + w_2 : float, optional + Width parameter in microns. Default is 0.45. + L_port : float, optional + Length parameter in microns. Default is 0. + """ def __init__ (self, xs_1:str='rib', xs_2:str='strip', @@ -157,7 +207,32 @@ class taper_xs2xs: class PSR: """ - Polarization Splitter & rotator + Polarization Splitter & rotator. + + Parameters + ---------- + name : str, optional + Unique identifier for the device cell. Default is 'PSR_unit'. + xs : str, optional + Layer or cross-section name used by the device. Default is 'rib'. + layer_u : str, optional + Layer or cross-section name used by the device. Default is None. + layer_d : str, optional + Layer or cross-section name used by the device. Default is None. + w : list, optional + Width parameter in microns. Default is [0.45, 0.45, 0.55, 1.2, 1.2]. + Lt_rib : list, optional + Length parameter in microns. Default is [10, 30, 30, 10]. + ws : list, optional + Value for the ws parameter. Default is [0.45, 2, 1.2]. + Lt_slab : list, optional + Length parameter in microns. Default is [40, 40]. + shape : str, optional + Value for the shape parameter. Default is 'sine'. + L_port : float, optional + Length parameter in microns. Default is 5. + res : float, optional + Value for the res parameter. Default is 0.01. """ def __init__ (self, diff --git a/mxpic/components/primitives/spiral.py b/mxpic/components/primitives/spiral.py index 9349f2b..cc5335b 100644 --- a/mxpic/components/primitives/spiral.py +++ b/mxpic/components/primitives/spiral.py @@ -5,10 +5,10 @@ import math from ...routing import Route -from ...structures import * +from ..geometry import * from ...foundries import * -from ...structures import _my_polygon,Conchoid,_my_poly_spiral +from ..geometry import _my_polygon,Conchoid,_my_poly_spiral from scipy import optimize diff --git a/mxpic/components/routing.py b/mxpic/components/routing.py index a171f35..4f35920 100644 --- a/mxpic/components/routing.py +++ b/mxpic/components/routing.py @@ -10,8 +10,8 @@ import nazca.cp as cp -from .structures import * -from .structures import _my_polygon +from .geometry import * +from .geometry import _my_polygon # from .dev_passive import * def ic_exception(msg=''): diff --git a/mxpic/components/structures.py b/mxpic/components/structures.py deleted file mode 100644 index 7286719..0000000 --- a/mxpic/components/structures.py +++ /dev/null @@ -1,1116 +0,0 @@ -from typing import Any, Optional -from cmath import pi -import nazca as nd -import nazca.clipper as clp -import numpy as np - -def _my_polygon (layer_wg,vtx,vtx_not=None) : - ''' establishing a polygon with input vertices - Args - vtx (2*x list) : - Return - frame (nazca.cell): - ''' - sz_l = vtx.shape - sz_l = sz_l[0] - - idx_seq = np.linspace(1,sz_l-1,sz_l-1) - - _points_ = [(vtx[0,0],vtx[0,1])] - for idx in idx_seq: - _point_cur_ = [(vtx[int(idx),0],vtx[int(idx),1])] - _points_.extend(_point_cur_) - - if (isinstance(vtx_not,np.ndarray) ): - _points_cut_ = [(vtx_not[0,0],vtx_not[0,1])] - sz_l = vtx_not.shape - sz_l = sz_l[0] - for idx in range(0,sz_l): - _point_cur_ = [(vtx_not[int(idx),0],vtx_not[int(idx),1])] - _points_cut_.extend(_point_cur_) - - _points_ = clp.diff_polygons(paths_A=[_points_],paths_B=[_points_cut_]) - _points_ = _points_[0] - # nd.Polygon(layer=layer_wg, points = _points_cut_).put() - frame = nd.Polygon(layer=layer_wg, points = _points_) - - return frame - -""" New Class, added in 2023/04/30 """ -class strt_round_courner: - def __init__(self, width: float=5, length: float = 10, layer: Optional[str]=None, radius: float=1, n_points: int=64) -> None: - - if (radius>width/2): - radius = width/2 - - with nd.Cell(instantiate=False) as C: - - theta = np.linspace(0,np.pi/2,n_points) ## establish a arc - vtx_ru_x = radius*np.cos(theta) + length-radius - vtx_ru_y = radius*np.sin(theta) + width/2 - radius - - theta = np.linspace(np.pi/2,np.pi,n_points) ## establish a arc - vtx_lu_x = radius*np.cos(theta) + radius - vtx_lu_y = radius*np.sin(theta) + width/2 - radius - - - theta = np.linspace(np.pi,np.pi/2*3,n_points) ## establish a arc - vtx_ld_x = radius*np.cos(theta) + radius - vtx_ld_y = radius*np.sin(theta) - width/2 + radius - - theta = np.linspace(-np.pi/2,0,n_points) ## establish a arc - vtx_rd_x = radius*np.cos(theta) + length-radius - vtx_rd_y = radius*np.sin(theta) - width/2 + radius - - vtx_x = np.r_[vtx_ru_x,vtx_lu_x,vtx_ld_x,vtx_rd_x] - vtx_y = np.r_[vtx_ru_y,vtx_lu_y,vtx_ld_y,vtx_rd_y] - - - # vtx_x = vtx_ru_x - # vtx_y = vtx_ru_y - - - vtx = np.c_[vtx_x,vtx_y] - # vtx = np.transpose(vtx) - # print(np.shape(vtx)) - - _my_polygon(layer_wg=layer,vtx=vtx).put() - - nd.Pin(name='a0',width=width).put(0,0,180) - nd.Pin(name='b0',width=width).put(length,0,0) - - nd.put_stub() - - self.cell = C - -class circle : - ''' - # ================================================================= - # @ File : - # @ structure: circle ring or disk - # @ Args : * radius : center radius of the ring - # : * width : width of the ring - # : * theta_start : start end of the ring, range [0~360], can be negative - # : * theta_stop : stop end of the ring, range [0~360], can be negative - # : * n_points : resolution of the polygon - # : * xs : placing layer - # @ located in the center of the ring - # ================================================================= - ''' - def __init__(self,radius: float = 10, width: float = 0.45, theta_start: float=0, theta_stop: float=360,res: float=0.05,angle: Optional[float]=None, - # n_points = 64, - xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True, - y_cut: Optional[float] = None) -> None: - with nd.Cell(instantiate=False) as C: - - if (angle!=None): - theta_start = 0 - theta_stop = angle - - if (res!=None): - n_points = int(np.floor(abs(theta_start-theta_stop)*radius*np.pi/180/res)+1) - - if (layer==None): - for layers,growx,growy,acc in nd.layeriter(xs=xs): - (a1,b1), (a2,b2),c1,c2 = growx - - theta = np.linspace(theta_start,theta_stop,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(radius+width*a1 + b1) - vtx_outer_y = np.sin(theta)*(radius+width*a1 + b1) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - ## used for 360 degree - if (radius+width*a2+b1>0.0000001 or np.abs(theta_stop-theta_start)<360): - vtx_inner_x = np.cos(theta)*(radius+width*a2 + b2) - vtx_inner_y = np.sin(theta)*(radius+width*a2 + b2) - vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] - - vtx = np.r_[vtx_outer,vtx_inner] - else : - vtx = vtx_outer - - """ add in 2023.09.20 """ - vtx_y = vtx[:,1] - vtx_x = vtx[:,0] - - vtx_cut = None - if (y_cut!=None): - if (y_cut> min(vtx_y)): - x_cut_max = max(vtx_x) - x_cut_min = min(vtx_x) - - y_cut_max = y_cut - y_cut_min = min(vtx_y)-1 - - vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) - vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) - - vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] - - - """ """ - - if (sharp_patch==True and b2!=0 and b1!=0): - L_patch = max([max(vtx_outer_x),max(vtx_inner_x)])-min([min(vtx_outer_x),min(vtx_inner_x)]) - X_patch = 1/2*(max([max(vtx_outer_x),max(vtx_inner_x)])+min([min(vtx_outer_x),min(vtx_inner_x)])) - W_patch = (max([max(vtx_outer_y),max(vtx_inner_y)])-min([min(vtx_outer_y),min(vtx_inner_y)])) - Y_patch = 1/2*(max([max(vtx_outer_y),max(vtx_inner_y)])+min([min(vtx_outer_y),min(vtx_inner_y)])) - - nd.strt(length=L_patch,width=W_patch,layer=layers).put(X_patch-L_patch/2,Y_patch,0) - - else: - _my_polygon(layer_wg=layers,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) - - - nd.Pin(name='a1',width=width,xs=xs).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) - nd.Pin(name='b1',width=width,xs=xs).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) - - else: - theta = np.linspace(theta_start,theta_stop,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(radius+width/2) - vtx_outer_y = np.sin(theta)*(radius+width/2) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - """ add in 2023.09.20 """ - vtx_y = np.r_[vtx_outer_y,vtx_inner_y] - vtx_x = np.r_[vtx_outer_x,vtx_inner_x] - - vtx_cut = None - if (y_cut!=None): - if (y_cut> min(vtx_y)): - x_cut_max = max(vtx_x) - x_cut_min = min(vtx_x) - - y_cut_max = y_cut - y_cut_min = min(vtx_y)-1 - - vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) - vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) - - vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] - - - """ """ - - if (radius-width/2>0.0000001 or np.abs(theta_stop-theta_start)<360): - vtx_inner_x = np.cos(theta)*(radius-width/2) - vtx_inner_y = np.sin(theta)*(radius-width/2) - vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] - - vtx = np.r_[vtx_outer,vtx_inner] - else : - vtx = vtx_outer - - _my_polygon(layer_wg=layer,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) - nd.Pin(name='a1',width=width,layer=layer).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) - nd.Pin(name='b1',width=width,layer=layer).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) - - self.vtx = vtx - self.sz = [radius*2,radius*2] - self.w = [width,width] - self.cell = C - -class mx_bend : - def __init__(self,radius: float = 10, width: float = 0.45, theta_start: float=0, theta_stop: float=360,res: float=0.05,angle: Optional[float]=None, - # n_points = 64, - xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True) -> None: - with nd.Cell(instantiate=False) as C: - - if (angle!=None): - theta_start = 0 - theta_stop = angle - if (res!=None): - n_points = int(np.floor(abs(theta_start-theta_stop)*radius/180*np.pi/res)+1) - - if (layer==None): - for layers,growx,growy,acc in nd.layeriter(xs=xs): - (a1,b1), (a2,b2),c1,c2 = growx - - theta = np.linspace(theta_start,theta_stop,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(radius+width*a1 + b1) - vtx_outer_y = np.sin(theta)*(radius+width*a1 + b1) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - if (radius+width*a2+b1>0.0000001 or np.abs(theta_stop-theta_start)<360): - vtx_inner_x = np.cos(theta)*(radius+width*a2 + b2) - vtx_inner_y = np.sin(theta)*(radius+width*a2 + b2) - vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] - - vtx = np.r_[vtx_outer,vtx_inner] - else : - vtx = vtx_outer - if (sharp_patch==True and b2!=0 and b1!=0): - L_patch = max([max(vtx_outer_x),max(vtx_inner_x)])-min([min(vtx_outer_x),min(vtx_inner_x)]) - X_patch = 1/2*(max([max(vtx_outer_x),max(vtx_inner_x)])+min([min(vtx_outer_x),min(vtx_inner_x)])) - W_patch = (max([max(vtx_outer_y),max(vtx_inner_y)])-min([min(vtx_outer_y),min(vtx_inner_y)])) - Y_patch = 1/2*(max([max(vtx_outer_y),max(vtx_inner_y)])+min([min(vtx_outer_y),min(vtx_inner_y)])) - - nd.strt(length=L_patch,width=W_patch,layer=layers).put(X_patch-L_patch/2,Y_patch,0) - - - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) - nd.Pin(name='a0',width=width,xs=xs).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) - nd.Pin(name='b0',width=width,xs=xs).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) - - else: - theta = np.linspace(theta_start,theta_stop,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(radius+width/2) - vtx_outer_y = np.sin(theta)*(radius+width/2) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - if (radius-width/2>0.0000001 or np.abs(theta_stop-theta_start)<360): - vtx_inner_x = np.cos(theta)*(radius-width/2) - vtx_inner_y = np.sin(theta)*(radius-width/2) - vtx_inner = np.c_[np.flip(vtx_inner_x),np.flip(vtx_inner_y)] - - vtx = np.r_[vtx_outer,vtx_inner] - else : - vtx = vtx_outer - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) - nd.Pin(name='a0',width=width,layer=layer).put(radius*np.cos(theta_start/180*np.pi),radius*np.sin(theta_start/180*np.pi),theta_start-90) - nd.Pin(name='b0',width=width,layer=layer).put(radius*np.cos(theta_stop/180*np.pi),radius*np.sin(theta_stop/180*np.pi),theta_stop+90) - self.sz = [radius*2,radius*2] - self.w = [width,width] - self.cell = C - -class Elipse_dual : - def __init__(self, - ORx : float , - ORy : float , - IRx : float , - IRy : float , - offset_X : float = 0, - offset_Y : float = 0, - xs : Optional[str] = None, - layer : Optional[str] = None, - theta_start : float = 0, - theta_stop : float = 360, - sharp_patch : bool = True, - # n_points : int = 1024, - res : float = 0.001, - y_cut: Optional[float]=None) -> None: - """_summary_ - - Args: - ORx (float): Outer semi X-axis length - ORy (float): Outer semi Y-axis length - IRx (float): Inner semi X-axis length - IRy (float): Inner semi Y-axis length - offset_X (float, optional): Outer and Inner elipse offset in X. Defaults to 0. - offset_Y (float, optional): Outer and Inner elipse offset in Y. Defaults to 0. - xs (str, optional): xsection. Defaults to None. - layer (str, optional): layer. Defaults to None. - theta_start (str, optional): X-axis positvive starts at 0, rotation anti-clockwise . Defaults to 0. - theta_stop (str, optional): X-axis positvive starts at 0, rotation anti-clockwise. Defaults to 360. - sharp_patch (bool, optional): sharp patch. Defaults to True. - n_points (int, optional): points of the ring. Defaults to 1024. - """ - self.ORx = ORx - self.ORy = ORy - self.IRx = IRx - self.IRy = IRy - self.offset_X = offset_X - self.offset_Y = offset_Y - self.xs = xs - self.layer = layer - self.res = res - # self.n_points = int(n_points) ## Force type fixing - self.theta_start = theta_start - self.theta_stop = theta_stop - self.y_cut = y_cut - - self.cell = self.generate_gds(sharp_patch=sharp_patch) - self.wa = ORx-IRx - self.wb = ORy-IRy - - def generate_gds(self,sharp_patch): - with nd.Cell(instantiate=False) as C: - if (self.layer==None and self.xs!=None): - for layers,growx,growy,acc in nd.layeriter(xs=self.xs): - (a1,b1), (a2,b2),c1,c2 = growx - - """ Calculating points inside the ring """ - Rb = min([self.ORx+self.IRx,self.ORy+self.IRy])/2 - Ra = max([self.ORx+self.IRx,self.ORy+self.IRy])/2 - _L_perimeter_ = 2*pi*Rb + 4*(Ra-Rb) - n_points = int(_L_perimeter_/self.res) - - n_points = int(n_points/360*abs(self.theta_start-self.theta_stop)) ## modified the points by the angle of ring - - theta = np.linspace(self.theta_start,self.theta_stop,n_points) - - Ox = (self.ORx + b1)*np.cos(theta/180*pi) - Oy = (self.ORy + b1)*np.sin(theta/180*pi) - - Ix = (self.IRx + b2)*np.cos(theta/180*pi)+self.offset_X - Iy = (self.IRy + b2)*np.sin(theta/180*pi)+self.offset_Y - - dX = np.max([np.max(Ox),np.max(Ix)]) - np.min([np.min(Ox),np.min(Ix)]) - dY = np.max([np.max(Oy),np.max(Iy)]) - np.min([np.min(Oy),np.min(Iy)]) - - X = np.max([np.max(Ox),np.max(Ix)])/2 + np.min([np.min(Ox),np.min(Ix)])/2 - Y = np.max([np.max(Oy),np.max(Iy)])/2 + np.min([np.min(Oy),np.min(Iy)])/2 - - cx = Ox/2+Ix/2 - cy = Oy/2+Iy/2 - - LX = np.max(cx) - np.min(cx) - LY = np.max(cy) - np.min(cy) - - self.sz = [LX,LY] - vtx_out = np.c_[Ox,Oy] - vtx_In = np.c_[np.flip(Ix),np.flip(Iy)] - vtx = np.r_[vtx_out,vtx_In] - - """ add in 2023.09.20 """ - vtx_y = vtx[:,1] - vtx_x = vtx[:,0] - - vtx_cut = None - if (self.y_cut!=None): - if (self.y_cut> min(vtx_y)): - x_cut_max = max(vtx_x) - x_cut_min = min(vtx_x) - - y_cut_max = self.y_cut - y_cut_min = min(vtx_y)-1 - - vtx_x_cut = np.array([x_cut_max,x_cut_max,x_cut_min,x_cut_min]) - vtx_y_cut = np.array([y_cut_max,y_cut_min,y_cut_min,y_cut_max]) - - vtx_cut = np.c_[vtx_x_cut,vtx_y_cut] - """ """ - - if (sharp_patch==True and b1!=0 and b2!=0): - patch = hole(r_hole=min([self.IRx + b2,self.IRy + b2]),Lx_sq=dX,Ly_sq=dY,layer=layers) - patch.cell.put(0,Y,0) - patch.cell.put(0,Y,0,flip=1) - # nd.strt(length=dX,width=dY,layer=layers).put(X-dX/2,Y,0) - - else: - _my_polygon(layer_wg=layers,vtx=vtx,vtx_not=vtx_cut).put(0,0,0) - - nd.Pin(name='a1').put((Ox[0]+Ix[0])/2,(Oy[0]+Iy[0])/2,theta[0]-90) - nd.Pin(name='b1').put((Ox[-1]+Ix[-1])/2,(Oy[-1]+Iy[-1])/2,theta[-1]+90) - - return C - -class Elipse: - def __init__(self,La: Any=None,Lb: Any=None,wa: Any=None,wb: Any=None,offset_a: float=0,offset_b: float=0,type: str="center",width_type: str='sine',layer: Optional[str]=None,xs: Optional[str]=None,theta_start: float=0,theta_stop: float=360, - # n_points=512, - res: float = 0.001, - sharp_patch: bool=False,show_pins: bool=False) -> None: - self.La = La - self.Lb = Lb - self.wa = wa - self.wb = wb - self.offset_a = offset_a - self.offset_b = offset_b - self.type = type - self.layer = layer - self.xs = xs - self.theta_start = theta_start - self.theta_stop = theta_stop - # self.n_points = n_points - - self.res = res - - self.cell = self.generate_gds(sharp_patch=sharp_patch,show_pins=show_pins) - - def generate_gds(self,sharp_patch,show_pins): - with nd.Cell(instantiate=False) as C: - - if (self.layer==None and self.xs!=None): - for layers,growx,growy,acc in nd.layeriter(xs=self.xs): - (a1,b1), (a2,b2),c1,c2 = growx - - """ calculated number of points """ - Rb = self.La - Ra = self.Lb - _L_perimeter_ = 2*pi*Rb + 4*(Ra-Rb) - n_points = int(_L_perimeter_/self.res) - - n_points = int(n_points/360*abs(self.theta_start-self.theta_stop)) ## modified the points by the angle of ring - - theta = np.linspace(self.theta_start,self.theta_stop,n_points) - - if (self.type=='center'): - - cx = self.La*np.cos(theta/180*pi) - cy = self.Lb*np.sin(theta/180*pi) - w = (self.wa-self.wb)*np.cos(theta/180*pi)*np.cos(theta/180*pi) + self.wb - offset = (self.offset_a-self.offset_b)*np.cos(theta/180*pi)*np.cos(theta/180*pi) + self.offset_b - - w = w*(a1-a2) + (b1-b2) - ## norm vector - nx = 2*cx/self.La/self.La - ny = 2*cy/self.Lb/self.Lb - - Ln = np.sqrt(nx*nx + ny*ny) - - - Ox = cx + nx*(w/2 + offset)/Ln - Oy = cy + ny*(w/2 + offset)/Ln - Ix = cx + nx*(-w/2 + offset)/Ln - Iy = cy + ny*(-w/2 + offset)/Ln - - - - elif (self.type == 'concentric'): - Ox = (self.La+(self.wa*a1+b1))*np.cos(theta/180*pi) - Oy = (self.Lb+(self.wb*a1+b1))*np.sin(theta/180*pi) - Ix = (self.La+(self.wa*a2+b2))*np.cos(theta/180*pi) - Iy = (self.Lb+(self.wb*a2+b2))*np.sin(theta/180*pi) - - cx = Ox/2+Ix/2 - cy = Oy/2+Iy/2 - - else : - raise Exception("ERROR: In , not recongized, please input [center | concentric]") - - dX = np.max([np.max(Ox),np.max(Ix)]) - np.min([np.min(Ox),np.min(Ix)]) - dY = np.max([np.max(Oy),np.max(Iy)]) - np.min([np.min(Oy),np.min(Iy)]) - - X = np.max([np.max(Ox),np.max(Ix)])/2 + np.min([np.min(Ox),np.min(Ix)])/2 - Y = np.max([np.max(Oy),np.max(Iy)])/2 + np.min([np.min(Oy),np.min(Iy)])/2 - - LX = np.max(cx) - np.min(cx) - LY = np.max(cy) - np.min(cy) - - self.sz = [LX,LY] - vtx_out = np.c_[Ox,Oy] - vtx_In = np.c_[np.flip(Ix),np.flip(Iy)] - vtx = np.r_[vtx_out,vtx_In] - - if (sharp_patch==True and b1!=0 and b2!=0): - nd.strt(length=dX,width=dY,layer=layers).put(X-dX/2,Y,0) - else: - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) - - Ain = np.angle(nx[0]+1j*ny[0])/pi*180 - Aout = np.angle(nx[-1]+1j*ny[-1])/pi*180 - - nd.Pin(name='a1').put(Ox[0]/2+Ix[0]/2,Oy[0]/2+Iy[0]/2,Ain-90) - nd.Pin(name='b1').put(Ox[-1]/2+Ix[-1]/2,Oy[-1]/2+Iy[-1]/2,Aout+90) - - nd.Pin(name='a0').put(0,0,180) - nd.Pin(name='b0').put(0,0,0) - if (show_pins): - nd.put_stub() - return C - -class hole : - def __init__(self,r_hole: float = 0.3,Dx_hole: float=0.3,Dy_hole: float=0.3,Lx_sq: int = 6,Ly_sq: int=6,offset: float=0, - # n_points = 1024, - res: float = 0.05, - xs: str='strip',layer: Optional[str]=None,sharp_patch: bool=True,hole_shape: str='circle') -> None: - with nd.Cell(instantiate=False) as C: - if (r_hole+offset>Lx_sq/2 or -r_hole+offset<-Lx_sq/2): - raise Exception("ERROR: In , hole outside sqaure area, ") - - if (Dx_hole/2+offset>Lx_sq/2 or -Dx_hole/2+offset<-Lx_sq/2): - raise Exception("ERROR: In , hole outside sqaure area, ") - - if (Dy_hole>Ly_sq): - raise Exception("ERROR: In , hole outside sqaure area, ") - - - n_points = int(np.floor(r_hole*2*np.pi/res)+1) - - if (layer==None): - - for layers,growx,growy,acc in nd.layeriter(xs=xs): - (a1,b1), (a2,b2),c1,c2 = growx - if (b1==0 and b2==0): - if (hole_shape=='circle'): - theta = np.linspace(0,180,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(r_hole)+offset - vtx_outer_y = np.sin(theta)*(r_hole) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) - vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) - vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] - - vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,180,flip=1) - - elif (hole_shape=='rectangle'): - vtx_outer_x = np.array([Dx_hole/2,Dx_hole/2,-Dx_hole/2,-Dx_hole/2])+offset - vtx_outer_y = np.array([0,Dy_hole/2, Dy_hole/2,0]) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) - vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) - vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] - - vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,180,flip=1) - - else : - _L_ = Lx_sq*(a1-a2)+(b1-b1) - _w_ = Ly_sq*(a1-a2)+(b1-b1) - nd.strt(length=_L_,width=_w_,layer=layers).put(-_L_/2,0,0) - - - else: - if (hole_shape=='circle'): - theta = np.linspace(0,180,n_points) - theta = theta/180*np.pi - vtx_outer_x = np.cos(theta)*(r_hole)+offset - vtx_outer_y = np.sin(theta)*(r_hole) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) - vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) - vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] - - vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0,flip=1) - elif (hole_shape=='rectangle'): - vtx_outer_x = np.array([Dx_hole/2,Dx_hole/2,-Dx_hole/2,-Dx_hole/2])+offset - vtx_outer_y = np.array([0,Dy_hole/2, Dy_hole/2,0]) - vtx_outer = np.c_[vtx_outer_x,vtx_outer_y] - - vtx_sq_x = np.array([Lx_sq/2, Lx_sq/2,-Lx_sq/2,-Lx_sq/2]) - vtx_sq_y = np.array([ 0, Ly_sq/2, Ly_sq/2, 0]) - vtx_sq = np.c_[vtx_sq_x,vtx_sq_y] - - vtx = np.r_[vtx_outer,np.flip(vtx_sq,0)] - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,180,flip=1) - self.cell = C - -class Conchoid: - def __init__(self,R0: Any,kR: Any,T: Any,w: float,layer: str,w_end: Optional[float]=None,res: float=0.1,final_flat: Any=None,begin_flat: Any=None,xs: Optional[str]=None) -> None: - ## with half circle to be one cycle - - if (w_end==None): - w_end = w - - - with nd.Cell(instantiate=False)as C: - n_sects = int(np.floor(T/np.pi)) ## intersecting into different semi-circle - - L = R0*T + 1/2*kR*T**2 ## The total length of the Conchoid center line - n_points = int(np.floor(L/res))+1 - - ## calculating sections - if (np.abs(T-n_sects*np.pi) <0.0001): - n_sects = n_sects - else: - n_sects = n_sects+1 - - # res_sect = int(np.floor(res/n_sects))+1 - - # res = 0 - - if (layer!=None): - nd.add_xsection(name='temp') - nd.add_layer2xsection(xsection='temp',layer=layer,growx=0,growy=0) - xs = 'temp' - - for _n_ in range(0,n_sects): - # phi_start = _n_*pi - # phi_end = min(T,_n_*pi+pi) ## forward placement - - phi_end = T - _n_*pi - phi_start = max(0,T - _n_*pi - pi) - - L_sect = R0*(phi_end-phi_start) + 1/2*kR*(phi_end**2 - phi_start**2) - n_points = int(L_sect/res)+1 - - if (layer!=None): - Theta = np.linspace(phi_start, phi_end ,n_points) - R = (Theta*kR+R0) ## conchoid function - - # res = kR/2*T*T + R0*T - # res = res + np.sum(R[0:-1]*np.diff(Theta)) - - w_cur = w - - if (_n_==0): - w_cur = np.linspace(w,w_end,n_points) - # print("Loading Taper area") - - vtx_cx = R*np.cos(Theta) - vtx_cy = R*np.sin(Theta) - vtx_center = np.c_[vtx_cx,vtx_cy] - - e_theta = -1/((R0/kR)+Theta) ## actuall norm towards spiral - # e_rou = np.ones(len(e_theta)) - ey = np.sin(Theta) - np.cos(Theta)*kR/R - ex = np.cos(Theta) + np.sin(Theta)*kR/R - - if (final_flat!=None and _n_==0): - ey[-1] = np.sin(final_flat/180*np.pi) - ex[-1] = np.cos(final_flat/180*np.pi) - - if (begin_flat!=None and _n_==n_sects-1): - ey[0] = np.sin(begin_flat/180*np.pi) - ex[0] = np.cos(begin_flat/180*np.pi) - # if (final_flat!=None and _n_==0): - # e_theta[-1] = final_flat - # if (begin_flat!=None and _n_==n_sects-1): - # e_theta[0] = begin_flat - - if (_n_==0): - self.Atilt = np.arctan(ey[0]/ex[0])/np.pi*180 - # print("Atilt_conchoid = %.5f" % self.Atilt) - - Lnorm = np.sqrt(np.power(ex,2)+np.power(ey,2)) - - vtx_x = R*np.cos(Theta) - vtx_y = R*np.sin(Theta) - - vtx_out_x = vtx_x + w_cur/2*ex/Lnorm - vtx_out_y = vtx_y + w_cur/2*ey/Lnorm - - vtx_in_x = vtx_x - w_cur/2*ex/Lnorm - vtx_in_y = vtx_y - w_cur/2*ey/Lnorm - - vtx_in = np.c_[np.flip(vtx_in_x),np.flip(vtx_in_y)] - vtx_out = np.c_[vtx_out_x,vtx_out_y] - vtx = np.r_[vtx_out,vtx_in] - _my_polygon(layer_wg=layer,vtx=vtx).put(0,0,0) - - elif(layer==None and xs!=None): - for layers,growx,growy,acc in nd.layeriter(xs=xs): - (a1,b1), (a2,b2),c1,c2 = growx - Theta = np.linspace(phi_start, phi_end ,n_points) - R = (Theta*kR+R0) - # res = kR/2*T*T + R0*T - # res = res + np.sum(R[0:-1]*np.diff(Theta) - - w_cur = w*(a1-a2) + (b1-b2) - - if (_n_==0): - w_cur = np.linspace(w,w_end,n_points) - w_cur = w_cur*(a1-a2) + (b1-b2) - - vtx_cx = R*np.cos(Theta) - vtx_cy = R*np.sin(Theta) - vtx_center = np.c_[vtx_cx,vtx_cy] - - # e_theta = -1/((R0/kR)+Theta) - # e_rou = np.ones(len(e_theta)) - - # if (final_flat!=None and _n_==0): - # e_theta[-1] = final_flat - # if (begin_flat!=None and _n_==n_sects-1): - # e_theta[0] = begin_flat - - - ey = np.sin(Theta)*R - np.sin(Theta)*kR - ex = np.cos(Theta)*R + np.cos(Theta)*kR - - if (final_flat!=None and _n_==0): - ey[-1] = np.sin(final_flat/180*np.pi) - ex[-1] = np.cos(final_flat/180*np.pi) - - if (begin_flat!=None and _n_==n_sects-1): - ey[0] = np.sin(begin_flat/180*np.pi) - ex[0] = np.cos(begin_flat/180*np.pi) - - Lnorm = np.sqrt(np.power(ex,2)+np.power(ey,2)) - vtx_x = R*np.cos(Theta) - vtx_y = R*np.sin(Theta) - - vtx_out_x = vtx_x + w_cur/2*ex/Lnorm - vtx_out_y = vtx_y + w_cur/2*ey/Lnorm - - vtx_in_x = vtx_x - w_cur/2*ex/Lnorm - vtx_in_y = vtx_y - w_cur/2*ey/Lnorm - - vtx_in = np.c_[np.flip(vtx_in_x),np.flip(vtx_in_y)] - vtx_out = np.c_[vtx_out_x,vtx_out_y] - vtx = np.r_[vtx_out,vtx_in] - _my_polygon(layer_wg=layers,vtx=vtx).put(0,0,0) - - Rmax = T*kR+R0 - nd.Pin(name="a1").put(R0,0,-90) - nd.Pin(name="b1").put(Rmax*np.cos(T),Rmax*np.sin(T),(T/np.pi*180+90)) - - self.L = L - self.cell =C - self.vtx_center = vtx_center - self.vtx = vtx - self.K_end = (np.power(np.max(R),2) + 2*np.power(kR,2)) / np.power((np.power(np.max(R),2) + np.power(kR,2)),1.5) - self.R_end = 1/self.K_end - -def _line2wg_(x,y,wu,wd,theta,n_points): - """ building waveguide with center line and side expansion - - Args: - vtx_line (list[float]): the location of points, [x,y] - width (list[float]): the expansion width of points vertical to the pointing vector, [wu,wd] - theta (list[float]): the pointing angle, [theta], 0 represent right, 180 represent left - """ - - theta = theta*np.pi/180 - x_u = x+wu*np.cos(theta+pi/2) - x_d = x+wd*np.cos(theta-pi/2) - - y_u = y+wu*np.sin(theta+pi/2) - y_d = y+wd*np.sin(theta-pi/2) - - ### polygon section, reducing resolution - sect = np.linspace(start= 0,stop= len(x_u)-1,num= n_points) - sect = np.asarray(sect, dtype = int) - - x_u = x_u[sect] - x_d = x_d[sect] - y_u = y_u[sect] - y_d = y_d[sect] - - vtx_u = np.c_[x_u,y_u] - vtx_d = np.c_[x_d,y_d] - - - - vtx = np.r_[vtx_u,np.flip(vtx_d,0)] - - return vtx - -def _my_poly_spiral(r,theta,order,res,R_max,sz_restrict=None): - ''' generating a poly spiral curve - Args - r (2*1 list) :r[0] is the begining - theta (2*1 list) :theta[0] is the begining [in degree] - Return - frame (nazca.cell): - ''' - theta[0] = theta[0]/180*np.pi ## angle format changing - theta[1] = theta[1]/180*np.pi ## angle format changing - - K_ends = np.array([1/r[0],1/r[1]]) ## definition of the curvature, r[0] is the beginnin and r[1] is the ending - L0 = np.abs(theta[0]-theta[1])/(K_ends[0] + (K_ends[1]-K_ends[0])*order/(order+1)) - L = np.linspace(0,L0,int(np.floor(L0/res)+1)) ## L = [0:res:L0]; - K = K_ends[0] + (K_ends[1] - K_ends[0])/np.power(L0,order)*(np.power(L0,order) - np.power(np.abs(L-L0),order)) - R = 1/K - - dir = np.sign(theta[1] - theta[0]) - dt = dir*res/R - - theta_temp = np.cumsum(dt) + theta[0] - """ 2023.08.01 updated, using array calculation instead of for loop""" - - dx = dir*R[1:]*( np.sin(theta_temp[1:]) - np.sin(theta_temp[0:-1])) - dy = -dir*R[1:]*( np.cos(theta_temp[1:]) - np.cos(theta_temp[0:-1])) - - x = np.r_[0,np.cumsum(dx)] - y = np.r_[0,np.cumsum(dy)] - # x = np.zeros(len(L)) - # y = np.zeros(len(L)) - - # idx = np.linspace(1,len(L)-1,len(L)-1) - - # for _idx_ in idx : - # _idx_ = int(_idx_) - # x[_idx_] = x[_idx_-1] + dir*R[_idx_]*( np.sin(theta_temp[_idx_]) - np.sin(theta_temp[_idx_-1])) - # y[_idx_] = y[_idx_-1] - dir*R[_idx_]*( np.cos(theta_temp[_idx_]) - np.cos(theta_temp[_idx_-1])) - - vector = np.c_[x,y,theta_temp,L] - - return (vector,L0) - -class Clothoid: - def __init__(self, - name:str=None, - R: 'list|np.ndarray'=[10,20], - w: 'list|np.ndarray|float'=[0.4,0.5], ## w either has the length as R, or 1 element, or 2 element - A: 'list|np.ndarray'=[0,45], - width_type: str='sine', - spiral_order: float=1, - Rmax:float=10000, - dL_cal:float=0.001, - dL_wg: float = 0.1, - # n_points:int=1024, - xs:str='strip', - layer:str=None, - sharp_patch:bool=True, - end_patch : bool=True, - show_pins:bool=False) -> None: - """_summary_ - - Args: - R (list|np.ndarray, optional): Curvature radius in each attaching point. Defaults to [10,20]. - w (list|np.ndarray|float, optional): Width at each attaching point corresponding to R, or it can be set to one or two element. Defaults to [0.4,0.5]. - A (list|np.ndarray, optional): Angle at each attaching point. Defaults to [0,45]. - width_type (str, optional): The width function with length or angle 'linear' 'linear2' 'sine' 'sine2'. Defaults to 'sine'. - spiral_order (float, optional): The curvature order of spiral. Defaults to 1. - Rmax (float, optional): Maxmum radius. Defaults to 10000. - res (float, optional): Resolution in calculation. Defaults to 0.001. - n_points (int, optional): Resolution in GDS. Defaults to 1024. - xs (str, optional): XSection of the devices. Defaults to 'strip'. - layer (str, optional): Layer of the devices. Defaults to None. - sharp_patch (bool, optional): Either to patch. Defaults to True. - show_pins (bool, optional): Either to show pins. Defaults to False. - - Raises: - Exception: _description_ - Exception: _description_ - """ - - if (isinstance(w,int) or isinstance(w,float)): - w= np.array([w,w]) - - self.name = name - self.R = R - self.A = A - self.width_type = width_type - self.spiral_order = spiral_order - self.dL_cal = dL_cal - # self.n_points = n_points - self.xs =xs - self.layer = layer - self.dL_wg = dL_wg - - if (len(R) != len(A)): - raise Exception("ERROR: In , and are not matched in length, please keep len(A) = len(R)") - - if (isinstance(spiral_order,int) or isinstance(spiral_order,float)): - spiral_order = spiral_order*np.ones(len(R)-1) - - elif(isinstance(spiral_order,list)): - spiral_order = np.array(spiral_order) - - ## center curve routing - _idx_act_=0 - for _idx_ in range(0,len(R)-1): - if ( abs( A[_idx_] - A[_idx_+1] )<0.001 ): - - continue - vec_cur,L0_cur = _my_poly_spiral([R[_idx_],R[_idx_+1]],[A[_idx_],A[_idx_+1]],spiral_order[_idx_],dL_cal,Rmax) - _idx_act_ = _idx_act_+1 - - x_cur = vec_cur[:,0] - y_cur = vec_cur[:,1] - theta_cur = vec_cur[:,2]/np.pi*180 ## pointing vector - L_cur = vec_cur[:,3] - - if (_idx_act_==1): - L = L_cur - x = x_cur - y = y_cur - theta = theta_cur - L0 = L0_cur - else : - L = np.r_[L,L_cur+L[-1]] - x = np.r_[x,x_cur+x[-1]] - y = np.r_[y,y_cur+y[-1]] - theta = np.r_[theta,theta_cur] - L0 = L0 + L0_cur - - if (len(w)>2 and len(w)==len(R)): - w_cur = (w[_idx_+1]-w[_idx_])/L0_cur*L_cur + (w[_idx_]) - if (_idx_act_==1): - w_fianl = w_cur - else : - w_fianl = np.r_[w_fianl,w_cur] - - self.x = x - self.y = y - self.L = L - self.L0 = L0 - self.theta = theta - self.vtx_center = np.c_[x,y] - self.end_patch = end_patch - self.sz = [np.abs(max(self.x) - min(self.x)),np.abs(max(self.y) - min(self.y))] - - if (dL_wg!=None): - self.n_points = int(np.floor(self.L0/self.dL_wg)+1) ## overwrite n_points - - # print("n points",self.n_points) - - if (len(w)==2): - ## width winding - if (width_type=='linear'): - w = (w[1]-w[0])/L0*L + w[0] - elif (width_type=='dual_linear'): - w = (w[1]-w[0])/L0/2*np.abs(L-L0/2) + w[0] - elif (width_type=='sine'): - w = (w[0]-w[1])*np.cos(theta/180*pi)*np.cos(theta/180*pi) + w[1] - elif (width_type=='dual_sine'): - w = (w[0]-w[1])*np.cos(theta/2/180*pi)*np.cos(theta/2/180*pi) + w[1] - elif (width_type=='crow_customize' or width_type=='pumpkin'): - dw = (w[1]-w[0]) - z = theta/180*np.pi - z = np.sqrt(z)*np.sqrt(np.pi/2) - z = np.sin(z)**2*np.pi/2 - - w = dw*np.sin(z)**2 + w[0] - - - else : - w = (w[1]-w[0])/L0*L + w[0] - - self.w = np.array(w) - elif (len(w)==len(R)): - self.w = w_fianl - else: - raise Exception("ERROR, In , is not matched with , please keep len(w)=2 or len(w)=R or w=int") - - self.cell = self.generate_gds(sharp_patch=sharp_patch,show_pins=show_pins) - - - def generate_gds(self,sharp_patch,show_pins): - if (self.name is None): - self.instantiate = False - else: - self.instantiate = True - with nd.Cell(name=self.name,instantiate=self.instantiate) as C: - - if (self.layer==None and self.xs!=None): ## if definition is in layers - for layers,growx,growy,acc in nd.layeriter(xs=self.xs): - (a1,b1), (a2,b2),c1,c2 = growx - if (b1!=0 and b2!=0): - vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w*a1+b1,wd= -self.w*a2-b2,theta=self.theta,n_points=self.n_points) - - dX = np.max(vtx_wg[:,0]) - np.min(vtx_wg[:,0]) - dY = np.max(vtx_wg[:,1]) - np.min(vtx_wg[:,1]) - cX = np.max(vtx_wg[:,0])/2 + np.min(vtx_wg[:,0])/2 - cY = np.max(vtx_wg[:,1])/2 + np.min(vtx_wg[:,1])/2 - - if (sharp_patch): - if (self.end_patch): - nd.strt(length = dX+(b1-b2),width = dY,layer=layers).put(cX-dX/2-b1,cY,0) - - else: - nd.strt(length = dX,width = dY,layer=layers).put(cX-dX/2,cY,0) - else : - - - _my_polygon(layers,vtx_wg).put(0,0,0) - - else : - vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w*a1+b1,wd= -self.w*a2-b2,theta=self.theta,n_points=self.n_points) - self.vtx =vtx_wg - _my_polygon(layers,vtx_wg).put(0,0,0) - - nd.Pin(name='a0',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) - nd.Pin(name='b0',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) - - nd.Pin(name='a1',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) - nd.Pin(name='b1',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) - elif(self.layer!=None) : ## if definition is in xsections - - vtx_wg = _line2wg_(x=self.x,y=self.y,wu=self.w/2,wd= self.w/2,theta=self.theta,n_points=self.n_points) - - _my_polygon(self.layer,vtx_wg).put(0,0,0) - - nd.Pin(name='a0',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) - nd.Pin(name='b0',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) - - nd.Pin(name='a1',width=self.w[0],type="Optical:").put(self.x[0],self.y[0],self.A[0]+180) - nd.Pin(name='b1',width=self.w[-1],type="Optical:").put(self.x[-1],self.y[-1],self.A[-1]) - - else: - raise Exception("ERROR: In , not defined") - - if (show_pins): - nd.put_stub() - self.sz_p2p = [np.abs(self.x[-1] - self.x[0]),np.abs(self.y[-1] - self.y[0])] - - return C - -class Racetrack: - def __init__(self, - bend_cell: Any=None, - xs: str = 'strip', - layer: Optional[str] = None, - R_bend: int = 10, - w: float = 0.5, - dLx: float = 100, - dLy: float = 100, - # n_points = 128, - res: float = 0.001, - ) -> None: - - if (bend_cell==None): - bend_cell = circle(xs=xs,theta_start=0,theta_stop=90,res=res, - # n_points=n_points, - radius=R_bend,width=w).cell - - if (isinstance(bend_cell,nd.Cell)): - bend_cell = bend_cell - elif (hasattr(bend_cell,'cell')) : - bend_cell = bend_cell.cell - - else: - raise Exception("ERROR: In , not a regonizable class, please input [nd.Cell] or class with [nd.Cell]") - - self.dLx = dLx - self.R_bend =R_bend - self.dLy = dLy - self.xs = xs - self.layer = layer - - self.bend_cell = bend_cell - - self.A_bend = np.abs(bend_cell.pin['a1'].a - bend_cell.pin['b1'].a) - self.w = [bend_cell.pin['b1'].width,bend_cell.pin['a1'].width] - - self.w_crack = 0.002 - - self.cell = self.generate_gds() - - - def generate_gds(self): - with nd.Cell(instantiate=False) as C: - - bend_sz = [ abs(self.bend_cell.pin['a0'].x - self.bend_cell.pin['b0'].x) - ,abs(self.bend_cell.pin['a0'].y - self.bend_cell.pin['b0'].y)] - - if (self.layer==None): - if (self.A_bend==90): - nd.strt(length=self.dLx+self.w_crack,width=self.w[1],xs=self.xs).put(-self.dLx/2-self.w_crack/2,-self.dLy/2-bend_sz[1],0) - self.bend_cell.put(-self.dLx/2,-self.dLy/2-bend_sz[1],0,flip=0) - nd.strt(length=self.dLy+self.w_crack,width=self.w[0],xs=self.xs).put( self.dLx/2+bend_sz[0],-self.dLy/2-self.w_crack/2,90) - self.bend_cell.put( self.dLx/2,-self.dLy/2-bend_sz[1],180,flip=1) - nd.strt(length=self.dLx+self.w_crack,width=self.w[1],xs=self.xs).put(-self.dLx/2-self.w_crack/2, self.dLy/2+bend_sz[1],0) - self.bend_cell.put(-self.dLx/2, self.dLy/2+bend_sz[1],0,flip=1) - nd.strt(length=self.dLy+self.w_crack,width=self.w[0],xs=self.xs).put(-self.dLx/2-bend_sz[0],-self.dLy/2-self.w_crack/2,90) - self.bend_cell.put( self.dLx/2, self.dLy/2+bend_sz[1],180,flip=0) - elif (self.A_bend==0 or self.A_bend==360): ## in this case, dy is not used - temp = nd.strt(length=self.dLx,width=self.w[0],xs=self.xs).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) - sp_r = self.bend_cell.put() - sp_l = self.bend_cell.put(temp.pin['a0'].xya(),flip=1) - temp = nd.strt(length=np.abs(sp_r.pin['b0'].x-sp_l.pin['b0'].x),width=sp_r.pin['b0'].width,xs=self.xs).put() - else: - if (self.A_bend==90): - nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) - temp = self.bend_cell.put() - temp = nd.strt(length=self.dLy,width=self.w[1],layer=self.layer).put() - temp = self.bend_cell.put('b0',temp.pin['b0'].xya(),flip=1) - temp = nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(temp.pin['a0'].xya()) - temp = self.bend_cell.put() - temp = nd.strt(length=self.dLy,width=self.w[1],layer=self.layer).put() - temp = self.bend_cell.put('b0',temp.pin['b0'].xya(),flip=1) - elif (self.A_bend==0 or self.A_bend==360): ## in this case, dy is not used - temp = nd.strt(length=self.dLx,width=self.w[0],layer=self.layer).put(-self.dLx/2,-self.dLy/2-bend_sz[1],0) - sp_r = self.bend_cell.put() - sp_l = self.bend_cell.put(temp.pin['a0'].xya(),flip=1) - temp = nd.strt(length=np.abs(sp_r.pin['b0'].x-sp_l.pin['b0'].x),width=sp_r.pin['b0'].width,layer=self.layer).put() - - - nd.Pin(name="r1",width=self.w[0]).put(0,-self.dLy/2-bend_sz[1],0) - nd.Pin(name="r3",width=self.w[0]).put(0, self.dLy/2+bend_sz[1],180) - - nd.Pin(name="r2",width=self.w[1]).put(-self.dLx/2-bend_sz[0], 0, 90) - nd.Pin(name="r4",width=self.w[1]).put( self.dLx/2+bend_sz[0], 0,-90) - - sz = [2*bend_sz[0]+self.dLx,2*bend_sz[1]+self.dLy] - self.sz = sz - - return C - - diff --git a/mxpic/routing/routing.py b/mxpic/routing/routing.py index a3f3f0c..cdf0e2a 100644 --- a/mxpic/routing/routing.py +++ b/mxpic/routing/routing.py @@ -9,8 +9,8 @@ import nazca.cp as cp -from ..structures import * -from ..structures import _my_polygon +from ..components.geometry import * +from ..components.geometry import _my_polygon # from .dev_passive import * diff --git a/tests/build_all_primitives.gds b/tests/build_all_primitives.gds new file mode 100644 index 0000000..dbe8318 Binary files /dev/null and b/tests/build_all_primitives.gds differ diff --git a/tests/build_all_primitives.py b/tests/build_all_primitives.py new file mode 100644 index 0000000..ca84e1d --- /dev/null +++ b/tests/build_all_primitives.py @@ -0,0 +1,330 @@ +from __future__ import annotations + +import importlib +import inspect +import pkgutil +import re +import sys +from pathlib import Path +from typing import Any + + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) + +import nazca as nd + +import mxpic as mx + + +OUTPUT_GDS = ROOT / "tests" / "build_all_primitives.gds" +PRIMITIVES_PACKAGE = "mxpic.components.primitives" +SKIP_CLASSES = {"Route"} + + +def bootstrap_technology() -> None: + """Register broad layer and xsection defaults used by primitive examples.""" + mx.technologies.CUMEC.CUMEC_CSiP130Cu() + mx.technologies.Silterra.EOM1_2ML_CU() + + # Compatibility layer aliases used by older primitive modules. + alias_layers = { + "STRIP_COR": (31, 1), + "STRIP_CLD": (31, 2), + "STRIP_TRE": (31, 3), + "SRIB_COR": (32, 1), + "SRIB_CLD": (32, 2), + "SRIB_TRE": (32, 3), + "RIB_COR": (33, 1), + "RIB_CLD": (33, 2), + "RIB_TRE": (33, 3), + "FETCH": (31, 3), + "METCH": (33, 3), + "SETCH": (32, 3), + "FCW_TRE": (31, 3), + "FECOR": (31, 1), + "MECOR": (33, 1), + "FECLD": (31, 2), + "MECLD": (33, 2), + "GC_OPEN": (61, 0), + "PLD": (24, 0), + "NLD": (23, 0), + "PW": (22, 0), + "NW": (21, 0), + "SA": (128, 60), + } + + for alias, layer in alias_layers.items(): + nd.add_layer(name=alias, layer=layer, overwrite=True) + + xsection_layers = { + "heater": ["HEATER"], + "metal": ["METAL"], + "metal_1": ["UTM"], + "metal_2": ["UTM2"], + "via_h2m": ["CT_SI"], + "via_s2m": ["CT_SI"], + "p": ["P"], + "n": ["N"], + "pp": ["PP"], + "np": ["NP"], + "pw": ["PW"], + "nw": ["NW"], + "pld": ["PLD"], + "nld": ["NLD"], + "sa": ["SA"], + "sin": ["SiN_Rib_WG"], + "air_trench": ["OXIDE_FACET"], + "grating": ["STRIP_COR"], + } + + for xsection, layers in xsection_layers.items(): + nd.add_xsection(name=xsection) + for layer in layers: + try: + nd.add_layer2xsection( + xsection=xsection, + layer=layer, + overwrite=True, + ) + except Exception: + pass + + +def discover_primitive_classes() -> list[type[Any]]: + package = importlib.import_module(PRIMITIVES_PACKAGE) + classes: list[type[Any]] = [] + + for module_info in pkgutil.walk_packages(package.__path__, package.__name__ + "."): + if module_info.ispkg: + continue + + module = importlib.import_module(module_info.name) + for _, cls in inspect.getmembers(module, inspect.isclass): + if cls.__module__ != module.__name__: + continue + if cls.__name__ in SKIP_CLASSES: + continue + if "__init__" not in cls.__dict__: + continue + classes.append(cls) + + return classes + + +def safe_name(prefix: str, index: int, class_name: str) -> str: + cleaned = re.sub(r"[^A-Za-z0-9_]", "_", class_name) + return f"{prefix}{index:03d}_{cleaned}"[:32] + + +def get_cell(device: Any) -> nd.Cell: + if isinstance(device, nd.Cell): + return device + + cell = getattr(device, "cell", None) + if isinstance(cell, nd.Cell): + return cell + + raise TypeError(f"{type(device).__name__} did not expose a nazca Cell through .cell") + + +def build_fiber_coupler_seed() -> nd.Cell: + with nd.Cell(name="_seed_fiber_coupler", instantiate=False) as cell: + straight = nd.strt(length=10, width=0.45, xs="strip").put(0, 0, 0) + nd.Pin(name="g1", pin=straight.pin["a0"]).put() + nd.Pin(name="a0", pin=straight.pin["a0"]).put() + nd.Pin(name="b0", pin=straight.pin["b0"]).put() + return cell + + +def build_context() -> dict[str, Any]: + from mxpic.components.electronics import Vias + from mxpic.components.primitives.pic.bragg import Bragg + from mxpic.components.primitives.pic.couplers import MDM, ring_bus_wg + from mxpic.components.primitives.pic.gratings import Grating_2D_Hole + from mxpic.components.primitives.pic.rings import AED_ring + from mxpic.components.primitives.pic.taper import PSR + + ring = AED_ring(name="_seed_aed_ring") + bus = ring_bus_wg() + via_i2m = Vias( + xs="via_s2m", + area=[1.0, 1.0], + sz=[0.25, 0.25], + spacing=[0.35, 0.35], + xs_l1="p", + xs_l2="metal", + ) + via_h2m = Vias( + xs="via_h2m", + area=[1.0, 1.0], + sz=[0.25, 0.25], + spacing=[0.35, 0.35], + xs_l1="heater", + xs_l2="metal", + ) + + return { + "fiber_coupler": build_fiber_coupler_seed(), + "grating_unit": Grating_2D_Hole(), + "psr": PSR(name="_seed_psr"), + "mdm": MDM(name="_seed_mdm"), + "bragg": Bragg(), + "crow_ring": ring.cell, + "crow_bus": bus.cell, + "crow_w_bus": bus.w, + "crow_w_ring": [0.45, 0.65], + "crow_sz_ring": [20, 20], + "crow_sz_bus": bus.sz, + "via_h2m": via_h2m, + "via_i2m": via_i2m, + } + + +REQUIRED_VALUES: dict[str, Any] = { + "A_cp": 10, + "Brag": lambda context: context["bragg"], + "MDM": lambda context: context["mdm"], + "PSR": lambda context: context["psr"], + "R0": 10, + "R1": 6, + "bus": lambda context: context["crow_bus"], + "dLx": 0, + "dLy": 10, + "fiber_coupler": lambda context: context["fiber_coupler"], + "gap": 0.2, + "grating_unit": lambda context: context["grating_unit"], + "number": 4, + "pitch": 127, + "r0_rck": 6, + "r1_rck": 10, + "r_ring": 10, + "r_rck": 10, + "ring": lambda context: context["crow_ring"], + "sz_bus": lambda context: context["crow_sz_bus"], + "sz_ring": lambda context: context["crow_sz_ring"], + "w0": 0.45, + "w0_ring": 0.35, + "w0_rck": 0.45, + "w1": 0.45, + "w1_ring": 0.55, + "w1_rck": 0.45, + "w_bus": 0.45, + "w_ring": 0.45, + "w_rck": 0.45, +} + + +def class_overrides( + class_path: str, + context: dict[str, Any], +) -> dict[str, Any]: + grating_arrays = { + "w_teeth_SiN": [0.5] * 30, + "gap_teeth_SiN": [0.5] * 30, + "w_teeth_Si": [0.45] * 30, + "gap_teeth_Si": [0.45] * 30, + "layer_Si_teeth": "WG_HM", + "layer_Si_slab": "WG_HIGHRIB", + "layer_SiN_etch": "SiN_Rib_WG", + "layer_SiN_slab": "WG_N", + } + + overrides = { + "mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer": grating_arrays, + "mxpic.components.primitives.pic.couplers.ADC_STD_2x2": {"Rd1": 20}, + "mxpic.components.primitives.pic.gratings.GC_STD_1D": {"sector_gc": False}, + "mxpic.components.primitives.passive.rings.SOCR": { + "via_h2m": context["via_h2m"], + "show_pins": False, + }, + "mxpic.components.primitives.passive.rings.SOCR_Adiabatic": { + "via_h2m": context["via_h2m"], + "show_pins": False, + }, + "mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband": { + "via_h2m": context["via_h2m"], + "show_pins": False, + }, + "mxpic.components.primitives.passive.rings.SOCR_Cband": { + "via_h2m": context["via_h2m"], + "show_pins": False, + }, + } + + return dict(overrides.get(class_path, {})) + + +def required_value(parameter: str, context: dict[str, Any]) -> Any: + value = REQUIRED_VALUES[parameter] + if callable(value): + return value(context) + return value + + +def build_kwargs(cls: type[Any], device_name: str, context: dict[str, Any]) -> dict[str, Any]: + signature = inspect.signature(cls) + kwargs: dict[str, Any] = {} + class_path = f"{cls.__module__}.{cls.__name__}" + + for parameter_name, parameter in signature.parameters.items(): + if parameter_name == "self": + continue + + if parameter_name == "name": + kwargs[parameter_name] = device_name + continue + + if parameter_name == "cell_name": + kwargs[parameter_name] = device_name + continue + + if parameter_name == "via_i2m": + kwargs[parameter_name] = context["via_i2m"] + continue + + if parameter.default is inspect.Parameter.empty: + kwargs[parameter_name] = required_value(parameter_name, context) + + kwargs.update(class_overrides(class_path, context)) + return kwargs + + +def build_top_cell(cell: nd.Cell, top_name: str) -> nd.Cell: + with nd.Cell(name=top_name, instantiate=False) as top_cell: + cell.put(0, 0, 0) + return top_cell + + +def main() -> None: + bootstrap_technology() + context = build_context() + topcells = [] + failures = [] + + for index, cls in enumerate(discover_primitive_classes(), start=1): + device_name = safe_name("DEV", index, cls.__name__) + top_name = safe_name("TOP", index, cls.__name__) + class_path = f"{cls.__module__}.{cls.__name__}" + + try: + kwargs = build_kwargs(cls, device_name, context) + device = cls(**kwargs) + topcells.append(build_top_cell(get_cell(device), top_name)) + print(f"built {top_name}: {class_path}") + except Exception as exc: + failures.append((class_path, exc)) + print(f"failed {class_path}: {exc}") + + if failures: + print("\nPrimitive build failures:") + for class_path, exc in failures: + print(f"- {class_path}: {exc}") + raise RuntimeError(f"{len(failures)} primitive(s) failed to build") + + nd.export_gds(topcells=topcells, filename=str(OUTPUT_GDS)) + print(f"\nWrote {len(topcells)} top cells to {OUTPUT_GDS}") + + +if __name__ == "__main__": + main()