New forge coding added

This commit is contained in:
=
2026-06-04 23:21:39 +08:00
parent 518eb06591
commit 8da92ced57
288 changed files with 52017 additions and 1913 deletions
+95 -82
View File
@@ -1,118 +1,131 @@
import os
import sys
import importlib import importlib
import inspect
from pathlib import Path from pathlib import Path
import matplotlib import matplotlib
import shutil
matplotlib.use('Agg') matplotlib.use("Agg")
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import nazca as nd import nazca as nd
import mxpic as mx
# 2. Define your mxPIC Color Palette from generate_handbook import DEFAULT_PACKAGE_ROOT, DEFAULT_SRC_ROOT, public_top_level_members
# You can map by your custom layer names (if defined) or raw GDS (layer, datatype) tuples.
# Matplotlib accepts standard color names ('blue', 'cyan') or hex codes ('#FFD700').
PALETTE = { PALETTE = {
"WG": "blue", # Example: Core waveguide layer "WG": "blue",
"SLAB": "cyan", # Example: Shallow etch / Slab "SLAB": "cyan",
"M1": "#FFD700", # Example: Metal 1 (Gold) "M1": "#FFD700",
"M2": "silver", # Example: Metal 2 "M2": "silver",
"DEEP_TRENCH": "black", # Example: Trenching "DEEP_TRENCH": "black",
(1, 0): "darkred", # Fallback: You can use raw GDS tuples directly (1, 0): "darkred",
(2, 0): "green", (2, 0): "green",
(1111, 0): "green", (1111, 0): "green",
(63, 30): "#FFD700", (63, 30): "#FFD700",
} }
def apply_mxpic_colors():
"""Applies the custom color palette to Nazca's active layer map.""" def apply_mxpic_colors() -> None:
print("🎨 Applying mxPIC layer colors...") """Apply the mxPIC color palette to Nazca when the layers are available."""
print("Applying mxPIC layer colors...")
for layer_id, color in PALETTE.items(): for layer_id, color in PALETTE.items():
try: try:
# Nazca's built-in command to register plot colors
nd.set_layercolor(layer=layer_id, color=color) nd.set_layercolor(layer=layer_id, color=color)
except Exception: except Exception:
# If a specific layer name doesn't exist in the registry yet, it safely skips continue
pass
def generate_component_images(img_root="images/components"):
print("📸 Starting mxPIC Component Image Generation...")
# Define our source and target directories def remove_generated_pngs(img_root: Path) -> None:
src_root = Path("mxpic/components") """Remove generated images while preserving Markdown and other docs files."""
if not img_root.exists():
return
for png_file in img_root.rglob("*.png"):
png_file.unlink()
def module_name_for(py_file: Path, src_root: Path, package_root: str) -> str:
relative_path = py_file.relative_to(src_root).with_suffix("")
return f"{package_root}.{'.'.join(relative_path.parts)}"
def generate_image_for_class(target_dir: Path, class_name: str, component_class: type) -> str:
"""Instantiate one component class and save its cell image."""
nd.clear_layout()
instance = component_class()
cell = getattr(instance, "cell", None)
if cell is None:
return "skipped"
target_dir.mkdir(parents=True, exist_ok=True)
image_path = target_dir / f"{class_name}.png"
nd.export_plt(path="", title=class_name, topcells=[cell])
plt.savefig(image_path, bbox_inches="tight", dpi=300)
plt.close()
return "generated"
def generate_component_images(
img_root: Path = Path("images/components"),
src_root: Path = DEFAULT_SRC_ROOT,
package_root: str = DEFAULT_PACKAGE_ROOT,
) -> dict[str, int]:
print("Starting mxPIC component image generation...")
img_root = Path(img_root) img_root = Path(img_root)
src_root = Path(src_root)
# 1. Delete the directory and all its contents counts = {"generated": 0, "skipped": 0, "failed": 0}
if img_root.exists() and img_root.is_dir():
shutil.rmtree(img_root)
# 2. Recreate the directory
img_root.mkdir(parents=True, exist_ok=True)
if not src_root.exists(): if not src_root.exists():
print(f"❌ Error: Source directory '{src_root}' not found.") print(f"Source directory not found: {src_root}")
sys.exit(1) counts["failed"] += 1
return counts
# Walk through all Python files in the components folder img_root.mkdir(parents=True, exist_ok=True)
success_count = 0 remove_generated_pngs(img_root)
fail_count = 0 apply_mxpic_colors()
tapeout = mx.foundries.Silterra.EOM1_2ML_CU()
for py_file in src_root.rglob("*.py"): for py_file in sorted(src_root.rglob("*.py")):
if py_file.name == "__init__.py": if py_file.name == "__init__.py":
continue continue
# Convert the file path to a Python module path (e.g., mxpic.components.mzm) module_name = module_name_for(py_file, src_root, package_root)
rel_path = py_file.relative_to(src_root)
module_name = "mxpic.components." + str(rel_path.with_suffix("")).replace(os.sep, ".")
try: try:
# Dynamically import the module
module = importlib.import_module(module_name) module = importlib.import_module(module_name)
except Exception as e: except Exception as error:
print(f"⚠️ Could not import {module_name}: {e}") print(f"Skipped module import {module_name}: {error}")
fail_count += 1 counts["skipped"] += 1
continue continue
class_names, _ = public_top_level_members(py_file)
# Scan the module for all defined classes for class_name in class_names:
for name, obj in inspect.getmembers(module, inspect.isclass): component_class = getattr(module, class_name, None)
# Only process classes actually defined IN this file (ignore imported classes) if component_class is None:
if obj.__module__ == module_name: print(f"Skipped missing class {module_name}.{class_name}")
counts["skipped"] += 1
# Determine where to save the image continue
target_dir = img_root / rel_path.parent
target_dir.mkdir(parents=True, exist_ok=True)
# img_path = target_dir / f"{name}.png"
try: try:
# 1. Clear the Nazca canvas so components don't overlap! target_dir = img_root / py_file.relative_to(src_root).parent
nd.clear_layout() result = generate_image_for_class(target_dir, class_name, component_class)
except Exception as error:
plt.close()
print(f"Failed image for {module_name}.{class_name}: {error}")
counts["failed"] += 1
continue
# 2. Instantiate the class (assuming zero arguments) counts[result] += 1
instance = obj() if result == "generated":
print(f"Generated: {target_dir / f'{class_name}.png'}")
else:
print(f"Skipped class without cell: {module_name}.{class_name}")
# 4. Export the image using Nazca print(
nd.export_plt(path="",title=f"{name}",topcells=[instance.cell]) "Image generation complete. "
# 3. Explicitly save to disk with tight borders f"Generated: {counts['generated']} | "
plt.savefig(str(target_dir)+f"\\{name}.png", bbox_inches='tight', dpi=300) f"Skipped: {counts['skipped']} | "
f"Failures: {counts['failed']}"
# 4. CRITICAL: Clear the figure from RAM so the next loop is clean )
plt.close() return counts
print(f"✅ Generated: {str(target_dir)}\\{name}.png")
success_count += 1
except Exception as e:
print(f"❌ Failed to generate image for {name} in {module_name}: {e}")
fail_count += 1
print("\n✨ Image generation complete!")
print(f"📊 Success: {success_count} | Failures: {fail_count}")
if __name__ == "__main__": if __name__ == "__main__":
generate_component_images(img_root="docs/source/mxpic/components/") generate_component_images(img_root=Path("docs/source/mxpic/components"))
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

+5 -11
View File
@@ -1,16 +1,10 @@
.. mxpic_handbook documentation master file, created by # mxPIC Handbook
sphinx-quickstart on Sun May 3 16:05:57 2026.
You can adapt this file completely to your liking, but it should at least Welcome to the automated documentation for the mxPIC silicon photonics library.
contain the root `toctree` directive.
# Welcome to the automated documentation for the mxPIC silicon photonics library.
```{toctree} ```{toctree}
:maxdepth: 2 :maxdepth: 2
:caption: Components: :caption: Components:
mxpic/components/primitives/beam_splitters mxpic/components/index
mxpic/components/primitives/directional_couplers ```
mxpic/components/primitives/EC_dual_layer_px3
mxpic/components/primitives/grating_couplers
mxpic/components/primitives/multimode_interferometers
mxpic/components/primitives/spiral
@@ -0,0 +1,6 @@
# mxpic.components.basic
```{eval-rst}
.. automodule:: mxpic.components.basic
:no-members:
```
@@ -0,0 +1,15 @@
# mxpic.components.composites.LoopMirror
```{eval-rst}
.. automodule:: mxpic.components.composites.LoopMirror
:no-members:
```
## LoopMirror
```{eval-rst}
.. autoclass:: mxpic.components.composites.LoopMirror.LoopMirror
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,69 @@
# mxpic.components.composites.MZI
```{eval-rst}
.. automodule:: mxpic.components.composites.MZI
:no-members:
```
## MZI
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI
:members:
:undoc-members:
:show-inheritance:
```
## MZI_NS
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_NS
:members:
:undoc-members:
:show-inheritance:
```
## MZI_NS_ubend
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_NS_ubend
:members:
:undoc-members:
:show-inheritance:
```
## MZI_2st_ubend
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_2st_ubend
:members:
:undoc-members:
:show-inheritance:
```
## MZI_Eubend
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_Eubend
:members:
:undoc-members:
:show-inheritance:
```
## MZI_Ubend
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_Ubend
:members:
:undoc-members:
:show-inheritance:
```
## MZI_Butterfly
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI.MZI_Butterfly
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,60 @@
# mxpic.components.composites.MZI_mesh
```{eval-rst}
.. automodule:: mxpic.components.composites.MZI_mesh
:no-members:
```
## W_waveguide
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.W_waveguide
:members:
:undoc-members:
:show-inheritance:
```
## UMat_2x2_S
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.UMat_2x2_S
:members:
:undoc-members:
:show-inheritance:
```
## MZI_mesh_U
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.MZI_mesh_U
:members:
:undoc-members:
:show-inheritance:
```
## AMZI_W
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.AMZI_W
:members:
:undoc-members:
:show-inheritance:
```
## MZI_mesh_Parl
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.MZI_mesh_Parl
:members:
:undoc-members:
:show-inheritance:
```
## MZI_mesh_Tri
```{eval-rst}
.. autoclass:: mxpic.components.composites.MZI_mesh.MZI_mesh_Tri
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,15 @@
# mxpic.components.composites.SptTree
```{eval-rst}
.. automodule:: mxpic.components.composites.SptTree
:no-members:
```
## SplittingTree
```{eval-rst}
.. autoclass:: mxpic.components.composites.SptTree.SplittingTree
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,6 @@
# mxpic.components.composites.advance
```{eval-rst}
.. automodule:: mxpic.components.composites.advance
:no-members:
```
@@ -0,0 +1,11 @@
# Composites
```{toctree}
:maxdepth: 2
LoopMirror
MZI
MZI_mesh
SptTree
advance
```
@@ -0,0 +1,51 @@
# mxpic.components.electronics.eic_units
```{eval-rst}
.. automodule:: mxpic.components.electronics.eic_units
:no-members:
```
## ISL
```{eval-rst}
.. autoclass:: mxpic.components.electronics.eic_units.ISL
:members:
:undoc-members:
:show-inheritance:
```
## Vias
```{eval-rst}
.. autoclass:: mxpic.components.electronics.eic_units.Vias
:members:
:undoc-members:
:show-inheritance:
```
## PAD
```{eval-rst}
.. autoclass:: mxpic.components.electronics.eic_units.PAD
:members:
:undoc-members:
:show-inheritance:
```
## PADs
```{eval-rst}
.. autoclass:: mxpic.components.electronics.eic_units.PADs
:members:
:undoc-members:
:show-inheritance:
```
## Vias_arc
```{eval-rst}
.. autoclass:: mxpic.components.electronics.eic_units.Vias_arc
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,7 @@
# Electronics
```{toctree}
:maxdepth: 2
eic_units
```
@@ -0,0 +1,21 @@
# mxpic.components.gds_devices
```{eval-rst}
.. automodule:: mxpic.components.gds_devices
:no-members:
```
## gds_lib_load
```{eval-rst}
.. autoclass:: mxpic.components.gds_devices.gds_lib_load
:members:
:undoc-members:
:show-inheritance:
```
## generate_gds_lib
```{eval-rst}
.. autofunction:: mxpic.components.gds_devices.generate_gds_lib
```
+16
View File
@@ -0,0 +1,16 @@
# Components
```{toctree}
:maxdepth: 2
composites/index
electronics/index
others/index
pdks/index
primitives/index
basic
gds_devices
pins
routing
structures
```
@@ -0,0 +1,7 @@
# Others
```{toctree}
:maxdepth: 2
simulation/index
```
@@ -0,0 +1,99 @@
# mxpic.components.others.simulation.DualPortElements
```{eval-rst}
.. automodule:: mxpic.components.others.simulation.DualPortElements
:no-members:
```
## DEVICE_PORTS
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.DEVICE_PORTS
:members:
:undoc-members:
:show-inheritance:
```
## DEVICE_RING_BUS
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.DEVICE_RING_BUS
:members:
:undoc-members:
:show-inheritance:
```
## DEVICE_COUPLER
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.DEVICE_COUPLER
:members:
:undoc-members:
:show-inheritance:
```
## EULER_CROW_INTER_CP
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.EULER_CROW_INTER_CP
:members:
:undoc-members:
:show-inheritance:
```
## EULER_CROW_BUS
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.EULER_CROW_BUS
:members:
:undoc-members:
:show-inheritance:
```
## RESONATOR
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.RESONATOR
:members:
:undoc-members:
:show-inheritance:
```
## RING_PHASE
```{eval-rst}
.. autoclass:: mxpic.components.others.simulation.DualPortElements.RING_PHASE
:members:
:undoc-members:
:show-inheritance:
```
## PortParas
```{eval-rst}
.. autofunction:: mxpic.components.others.simulation.DualPortElements.PortParas
```
## MonitorParas
```{eval-rst}
.. autofunction:: mxpic.components.others.simulation.DualPortElements.MonitorParas
```
## DEVICE_2X2_FDTD_INIT
```{eval-rst}
.. autofunction:: mxpic.components.others.simulation.DualPortElements.DEVICE_2X2_FDTD_INIT
```
## tuple_to_complex
```{eval-rst}
.. autofunction:: mxpic.components.others.simulation.DualPortElements.tuple_to_complex
```
## SimuDataFigurePlot
```{eval-rst}
.. autofunction:: mxpic.components.others.simulation.DualPortElements.SimuDataFigurePlot
```
@@ -0,0 +1,7 @@
# Simulation
```{toctree}
:maxdepth: 2
DualPortElements
```
@@ -0,0 +1,33 @@
# mxpic.components.pdks.AMF_pdk
```{eval-rst}
.. automodule:: mxpic.components.pdks.AMF_pdk
:no-members:
```
## GC_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.AMF_pdk.GC_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.AMF_pdk.GC_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## PD_Cband_Cell
```{eval-rst}
.. autoclass:: mxpic.components.pdks.AMF_pdk.PD_Cband_Cell
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,105 @@
# mxpic.components.pdks.CUMEC_pdk
```{eval-rst}
.. automodule:: mxpic.components.pdks.CUMEC_pdk
:no-members:
```
## PAD_60_80
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.PAD_60_80
:members:
:undoc-members:
:show-inheritance:
```
## GPD_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.GPD_1550
:members:
:undoc-members:
:show-inheritance:
```
## EC_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.EC_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.GC_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TM_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.GC_TM_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.GC_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## MMI_1x2_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## MMI_1x2_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.MMI_1x2_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## MMI_2x2_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.MMI_2x2_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## CRX_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.CRX_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## PBS_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.CUMEC_pdk.PBS_1550
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,132 @@
# mxpic.components.pdks.IMECAS_pdk
```{eval-rst}
.. automodule:: mxpic.components.pdks.IMECAS_pdk
:no-members:
```
## Template
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.Template
:members:
:undoc-members:
:show-inheritance:
```
## EC_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.EC_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.GC_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TM_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.GC_TM_1550
:members:
:undoc-members:
:show-inheritance:
```
## GC_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.GC_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## GC_TM_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.GC_TM_1310
:members:
:undoc-members:
:show-inheritance:
```
## DC_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.DC_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## MMI_2x2_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.MMI_2x2_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## MMI_1x2_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.MMI_1x2_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## MMI_2x2_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.MMI_2x2_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## MMI_1x2_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.MMI_1x2_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
## Ybranch_TE
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.Ybranch_TE
:members:
:undoc-members:
:show-inheritance:
```
## CRX_TE_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.CRX_TE_1550
:members:
:undoc-members:
:show-inheritance:
```
## CRX_TE_1310
```{eval-rst}
.. autoclass:: mxpic.components.pdks.IMECAS_pdk.CRX_TE_1310
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,33 @@
# mxpic.components.pdks.hgl_pdk_A
```{eval-rst}
.. automodule:: mxpic.components.pdks.hgl_pdk_A
:no-members:
```
## DC_bend_50_50_Cband
```{eval-rst}
.. autoclass:: mxpic.components.pdks.hgl_pdk_A.DC_bend_50_50_Cband
:members:
:undoc-members:
:show-inheritance:
```
## DC_bend_20_80_Cband
```{eval-rst}
.. autoclass:: mxpic.components.pdks.hgl_pdk_A.DC_bend_20_80_Cband
:members:
:undoc-members:
:show-inheritance:
```
## DC_bend_4_96_Cband
```{eval-rst}
.. autoclass:: mxpic.components.pdks.hgl_pdk_A.DC_bend_4_96_Cband
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,11 @@
# Pdks
```{toctree}
:maxdepth: 2
AMF_pdk
CUMEC_pdk
IMECAS_pdk
hgl_pdk_A
qy_pdk_A
```
@@ -0,0 +1,51 @@
# mxpic.components.pdks.qy_pdk_A
```{eval-rst}
.. automodule:: mxpic.components.pdks.qy_pdk_A
:no-members:
```
## DC_pX3_50_50_Cband
```{eval-rst}
.. autoclass:: mxpic.components.pdks.qy_pdk_A.DC_pX3_50_50_Cband
:members:
:undoc-members:
:show-inheritance:
```
## MMG_1D_D14um_1550_2modes
```{eval-rst}
.. autoclass:: mxpic.components.pdks.qy_pdk_A.MMG_1D_D14um_1550_2modes
:members:
:undoc-members:
:show-inheritance:
```
## MDM_ADC_TE1_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE1_1550
:members:
:undoc-members:
:show-inheritance:
```
## MDM_ADC_TE2_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE2_1550
:members:
:undoc-members:
:show-inheritance:
```
## MDM_ADC_TE3_1550
```{eval-rst}
.. autoclass:: mxpic.components.pdks.qy_pdk_A.MDM_ADC_TE3_1550
:members:
:undoc-members:
:show-inheritance:
```
+6
View File
@@ -0,0 +1,6 @@
# mxpic.components.pins
```{eval-rst}
.. automodule:: mxpic.components.pins
:no-members:
```
@@ -17,4 +17,3 @@
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
``` ```
@@ -0,0 +1,33 @@
# mxpic.components.primitives.active.dev_ps
```{eval-rst}
.. automodule:: mxpic.components.primitives.active.dev_ps
:no-members:
```
## Route
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.dev_ps.Route
:members:
:undoc-members:
:show-inheritance:
```
## Heater_NDoped
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.dev_ps.Heater_NDoped
:members:
:undoc-members:
:show-inheritance:
```
## PS_PIN
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.dev_ps.PS_PIN
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,9 @@
# Active
```{toctree}
:maxdepth: 2
dev_ps
pin_wg
rings
```
@@ -0,0 +1,24 @@
# mxpic.components.primitives.active.pin_wg
```{eval-rst}
.. automodule:: mxpic.components.primitives.active.pin_wg
:no-members:
```
## waveguide_PIN
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.pin_wg.waveguide_PIN
:members:
:undoc-members:
:show-inheritance:
```
## WGDoped
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.pin_wg.WGDoped
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,60 @@
# mxpic.components.primitives.active.rings
```{eval-rst}
.. automodule:: mxpic.components.primitives.active.rings
:no-members:
```
## Route
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.Route
:members:
:undoc-members:
:show-inheritance:
```
## AED_Ring_PIN
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.AED_Ring_PIN
:members:
:undoc-members:
:show-inheritance:
```
## STD_Ring_PIN
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.STD_Ring_PIN
:members:
:undoc-members:
:show-inheritance:
```
## PIN_MRR_MM_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.PIN_MRR_MM_Allpass
:members:
:undoc-members:
:show-inheritance:
```
## PIN_MRR_MM_Adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.PIN_MRR_MM_Adddrop
:members:
:undoc-members:
:show-inheritance:
```
## PIN_MRR_STD_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.active.rings.PIN_MRR_STD_Allpass
:members:
:undoc-members:
:show-inheritance:
```
@@ -30,4 +30,3 @@
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
``` ```
@@ -5,6 +5,19 @@
:no-members: :no-members:
``` ```
## ring_bus_wg
```{eval-rst}
.. image:: ring_bus_wg.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.ring_bus_wg
:members:
:undoc-members:
:show-inheritance:
```
## ADC_STD_2x2 ## ADC_STD_2x2
```{eval-rst} ```{eval-rst}
@@ -18,6 +31,19 @@
:show-inheritance: :show-inheritance:
``` ```
## DC
```{eval-rst}
.. image:: DC.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.DC
:members:
:undoc-members:
:show-inheritance:
```
## BS_tdc ## BS_tdc
```{eval-rst} ```{eval-rst}
@@ -31,14 +57,14 @@
:show-inheritance: :show-inheritance:
``` ```
## DC ## MDM
```{eval-rst} ```{eval-rst}
.. image:: DC.png .. image:: MDM.png
:align: center :align: center
:width: 600px :width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.DC .. autoclass:: mxpic.components.primitives.directional_couplers.MDM
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
@@ -69,30 +95,3 @@
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
``` ```
## MDM
```{eval-rst}
.. image:: MDM.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.MDM
:members:
:undoc-members:
:show-inheritance:
```
## ring_bus_wg
```{eval-rst}
.. image:: ring_bus_wg.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.ring_bus_wg
:members:
:undoc-members:
:show-inheritance:
```
@@ -5,84 +5,6 @@
:no-members: :no-members:
``` ```
## FA
```{eval-rst}
.. image:: FA.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.FA
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_1D
```{eval-rst}
.. image:: GC_STD_1D.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.GC_STD_1D
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_2D
```{eval-rst}
.. image:: GC_STD_2D.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.GC_STD_2D
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole
```{eval-rst}
.. image:: Grating_2D_Hole.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.Grating_2D_Hole
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole_3Rec
```{eval-rst}
.. image:: Grating_2D_Hole_3Rec.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.Grating_2D_Hole_3Rec
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole_4Rec
```{eval-rst}
.. image:: Grating_2D_Hole_4Rec.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.Grating_2D_Hole_4Rec
:members:
:undoc-members:
:show-inheritance:
```
## Nano_ant ## Nano_ant
```{eval-rst} ```{eval-rst}
@@ -109,3 +31,59 @@
:show-inheritance: :show-inheritance:
``` ```
## Grating_2D_Hole
```{eval-rst}
.. image:: Grating_2D_Hole.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.Grating_2D_Hole
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_2D
```{eval-rst}
.. image:: GC_STD_2D.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.GC_STD_2D
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_1D
```{eval-rst}
.. image:: GC_STD_1D.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.grating_couplers.GC_STD_1D
:members:
:undoc-members:
:show-inheritance:
```
## FA
```{eval-rst}
.. autoclass:: mxpic.components.primitives.grating_couplers.FA
:members:
:undoc-members:
:show-inheritance:
```
## GC_SiN_Si_Dual_Layer
```{eval-rst}
.. autoclass:: mxpic.components.primitives.grating_couplers.GC_SiN_Si_Dual_Layer
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,15 @@
# Primitives
```{toctree}
:maxdepth: 2
active/index
passive/index
pic/index
EC_dual_layer_px3
beam_splitters
directional_couplers
grating_couplers
multimode_interferometers
spiral
```
@@ -30,4 +30,3 @@
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
``` ```
@@ -0,0 +1,69 @@
# mxpic.components.primitives.passive.crows
```{eval-rst}
.. automodule:: mxpic.components.primitives.passive.crows
:no-members:
```
## STD_CROW_V
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.STD_CROW_V
:members:
:undoc-members:
:show-inheritance:
```
## CROW_Eul_Ring
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_Eul_Ring
:members:
:undoc-members:
:show-inheritance:
```
## CROW_Eul_RCK
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_Eul_RCK
:members:
:undoc-members:
:show-inheritance:
```
## CROW_Circular_ring
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_Circular_ring
:members:
:undoc-members:
:show-inheritance:
```
## CROW_STD_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_STD_Allpass
:members:
:undoc-members:
:show-inheritance:
```
## CROW_STD_Adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_STD_Adddrop
:members:
:undoc-members:
:show-inheritance:
```
## CROW_AED
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.crows.CROW_AED
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,9 @@
# Passive
```{toctree}
:maxdepth: 2
crows
rings
unit
```
@@ -0,0 +1,132 @@
# mxpic.components.primitives.passive.rings
```{eval-rst}
.. automodule:: mxpic.components.primitives.passive.rings
:no-members:
```
## Route
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.Route
:members:
:undoc-members:
:show-inheritance:
```
## SOCR
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.SOCR
:members:
:undoc-members:
:show-inheritance:
```
## SOCR_Cband
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.SOCR_Cband
:members:
:undoc-members:
:show-inheritance:
```
## SOCR_Adiabatic
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.SOCR_Adiabatic
:members:
:undoc-members:
:show-inheritance:
```
## SOCR_Adiabatic_Cband
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.SOCR_Adiabatic_Cband
:members:
:undoc-members:
:show-inheritance:
```
## MRR_AED
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_AED
:members:
:undoc-members:
:show-inheritance:
```
## MRR_STD_Ring
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_STD_Ring
:members:
:undoc-members:
:show-inheritance:
```
## MRR_STD_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_STD_Allpass
:members:
:undoc-members:
:show-inheritance:
```
## MRR_STD_Adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_STD_Adddrop
:members:
:undoc-members:
:show-inheritance:
```
## MRR_MM_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_MM_Allpass
:members:
:undoc-members:
:show-inheritance:
```
## MRR_MM_Adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_MM_Adddrop
:members:
:undoc-members:
:show-inheritance:
```
## MRR_DW_Adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_DW_Adddrop
:members:
:undoc-members:
:show-inheritance:
```
## MRR_DW_Allpass
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.MRR_DW_Allpass
:members:
:undoc-members:
:show-inheritance:
```
## STD_ring_AMZI_adddrop
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.rings.STD_ring_AMZI_adddrop
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,51 @@
# mxpic.components.primitives.passive.unit
```{eval-rst}
.. automodule:: mxpic.components.primitives.passive.unit
:no-members:
```
## waveguide
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.unit.waveguide
:members:
:undoc-members:
:show-inheritance:
```
## PS_2st
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.unit.PS_2st
:members:
:undoc-members:
:show-inheritance:
```
## PS_2st_Straight
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.unit.PS_2st_Straight
:members:
:undoc-members:
:show-inheritance:
```
## PSR_1x2
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.unit.PSR_1x2
:members:
:undoc-members:
:show-inheritance:
```
## Brag_WDM
```{eval-rst}
.. autoclass:: mxpic.components.primitives.passive.unit.Brag_WDM
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,15 @@
# mxpic.components.primitives.pic.PBS
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.PBS
:no-members:
```
## PBS_3wg
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.PBS.PBS_3wg
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,24 @@
# mxpic.components.primitives.pic.YBS
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.YBS
:no-members:
```
## YBranch
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.YBS.YBranch
:members:
:undoc-members:
:show-inheritance:
```
## Ybranch_3wg
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.YBS.Ybranch_3wg
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,24 @@
# mxpic.components.primitives.pic.bragg
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.bragg
:no-members:
```
## Bragg_apodized
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.bragg.Bragg_apodized
:members:
:undoc-members:
:show-inheritance:
```
## Bragg
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.bragg.Bragg
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,69 @@
# mxpic.components.primitives.pic.couplers
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.couplers
:no-members:
```
## ring_bus_wg
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.ring_bus_wg
:members:
:undoc-members:
:show-inheritance:
```
## ADC_STD_2x2
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.ADC_STD_2x2
:members:
:undoc-members:
:show-inheritance:
```
## DC
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.DC
:members:
:undoc-members:
:show-inheritance:
```
## BS_tdc
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.BS_tdc
:members:
:undoc-members:
:show-inheritance:
```
## MDM
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.MDM
:members:
:undoc-members:
:show-inheritance:
```
## DC_bend
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.DC_bend
:members:
:undoc-members:
:show-inheritance:
```
## DC_pX_3sg
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.couplers.DC_pX_3sg
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,24 @@
# mxpic.components.primitives.pic.cross
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.cross
:no-members:
```
## Cross
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.cross.Cross
:members:
:undoc-members:
:show-inheritance:
```
## Cross_Sine
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.cross.Cross_Sine
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,78 @@
# mxpic.components.primitives.pic.gratings
```{eval-rst}
.. automodule:: mxpic.components.primitives.pic.gratings
:no-members:
```
## Nano_ant
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.Nano_ant
:members:
:undoc-members:
:show-inheritance:
```
## Taper
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.Taper
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.Grating_2D_Hole
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole_4Rec
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.Grating_2D_Hole_4Rec
:members:
:undoc-members:
:show-inheritance:
```
## Grating_2D_Hole_3Rec
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.Grating_2D_Hole_3Rec
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_2D
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.GC_STD_2D
:members:
:undoc-members:
:show-inheritance:
```
## GC_STD_1D
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.GC_STD_1D
:members:
:undoc-members:
:show-inheritance:
```
## FA
```{eval-rst}
.. autoclass:: mxpic.components.primitives.pic.gratings.FA
:members:
:undoc-members:
:show-inheritance:
```
@@ -0,0 +1,17 @@
# Pic
```{toctree}
:maxdepth: 2
PBS
YBS
bragg
couplers
cross
gratings
mmi
racetrack
rings
spiral
taper
```

Some files were not shown because too many files have changed in this diff Show More