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 inspect
from pathlib import Path
import matplotlib
import shutil
matplotlib.use('Agg')
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import nazca as nd
import mxpic as mx
# 2. Define your mxPIC Color Palette
# 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').
from generate_handbook import DEFAULT_PACKAGE_ROOT, DEFAULT_SRC_ROOT, public_top_level_members
PALETTE = {
"WG": "blue", # Example: Core waveguide layer
"SLAB": "cyan", # Example: Shallow etch / Slab
"M1": "#FFD700", # Example: Metal 1 (Gold)
"M2": "silver", # Example: Metal 2
"DEEP_TRENCH": "black", # Example: Trenching
(1, 0): "darkred", # Fallback: You can use raw GDS tuples directly
"WG": "blue",
"SLAB": "cyan",
"M1": "#FFD700",
"M2": "silver",
"DEEP_TRENCH": "black",
(1, 0): "darkred",
(2, 0): "green",
(1111, 0): "green",
(63, 30): "#FFD700",
}
def apply_mxpic_colors():
"""Applies the custom color palette to Nazca's active layer map."""
print("🎨 Applying mxPIC layer colors...")
def apply_mxpic_colors() -> None:
"""Apply the mxPIC color palette to Nazca when the layers are available."""
print("Applying mxPIC layer colors...")
for layer_id, color in PALETTE.items():
try:
# Nazca's built-in command to register plot colors
nd.set_layercolor(layer=layer_id, color=color)
except Exception:
# If a specific layer name doesn't exist in the registry yet, it safely skips
pass
continue
def generate_component_images(img_root="images/components"):
print("📸 Starting mxPIC Component Image Generation...")
# Define our source and target directories
src_root = Path("mxpic/components")
def remove_generated_pngs(img_root: Path) -> None:
"""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)
# 1. Delete the directory and all its contents
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)
src_root = Path(src_root)
counts = {"generated": 0, "skipped": 0, "failed": 0}
if not src_root.exists():
print(f"❌ Error: Source directory '{src_root}' not found.")
sys.exit(1)
print(f"Source directory not found: {src_root}")
counts["failed"] += 1
return counts
# Walk through all Python files in the components folder
success_count = 0
fail_count = 0
tapeout = mx.foundries.Silterra.EOM1_2ML_CU()
img_root.mkdir(parents=True, exist_ok=True)
remove_generated_pngs(img_root)
apply_mxpic_colors()
for py_file in src_root.rglob("*.py"):
for py_file in sorted(src_root.rglob("*.py")):
if py_file.name == "__init__.py":
continue
# Convert the file path to a Python module path (e.g., mxpic.components.mzm)
rel_path = py_file.relative_to(src_root)
module_name = "mxpic.components." + str(rel_path.with_suffix("")).replace(os.sep, ".")
module_name = module_name_for(py_file, src_root, package_root)
try:
# Dynamically import the module
module = importlib.import_module(module_name)
except Exception as e:
print(f"⚠️ Could not import {module_name}: {e}")
fail_count += 1
except Exception as error:
print(f"Skipped module import {module_name}: {error}")
counts["skipped"] += 1
continue
# Scan the module for all defined classes
for name, obj in inspect.getmembers(module, inspect.isclass):
# Only process classes actually defined IN this file (ignore imported classes)
if obj.__module__ == module_name:
# Determine where to save the image
target_dir = img_root / rel_path.parent
target_dir.mkdir(parents=True, exist_ok=True)
# img_path = target_dir / f"{name}.png"
class_names, _ = public_top_level_members(py_file)
for class_name in class_names:
component_class = getattr(module, class_name, None)
if component_class is None:
print(f"Skipped missing class {module_name}.{class_name}")
counts["skipped"] += 1
continue
try:
# 1. Clear the Nazca canvas so components don't overlap!
nd.clear_layout()
try:
target_dir = img_root / py_file.relative_to(src_root).parent
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)
instance = obj()
counts[result] += 1
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
nd.export_plt(path="",title=f"{name}",topcells=[instance.cell])
# 3. Explicitly save to disk with tight borders
plt.savefig(str(target_dir)+f"\\{name}.png", bbox_inches='tight', dpi=300)
# 4. CRITICAL: Clear the figure from RAM so the next loop is clean
plt.close()
print(f"✅ Generated: {str(target_dir)}\\{name}.png")
success_count += 1
print(
"Image generation complete. "
f"Generated: {counts['generated']} | "
f"Skipped: {counts['skipped']} | "
f"Failures: {counts['failed']}"
)
return counts
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__":
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
sphinx-quickstart on Sun May 3 16:05:57 2026.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
# mxPIC Handbook
Welcome to the automated documentation for the mxPIC silicon photonics library.
# Welcome to the automated documentation for the mxPIC silicon photonics library.
```{toctree}
:maxdepth: 2
:caption: Components:
mxpic/components/primitives/beam_splitters
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
mxpic/components/index
```
@@ -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:
: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:
:show-inheritance:
```
@@ -5,6 +5,19 @@
: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
```{eval-rst}
@@ -18,6 +31,19 @@
: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
```{eval-rst}
@@ -31,14 +57,14 @@
:show-inheritance:
```
## DC
## MDM
```{eval-rst}
.. image:: DC.png
.. image:: MDM.png
:align: center
:width: 600px
.. autoclass:: mxpic.components.primitives.directional_couplers.DC
.. autoclass:: mxpic.components.primitives.directional_couplers.MDM
:members:
:undoc-members:
:show-inheritance:
@@ -69,30 +95,3 @@
:undoc-members:
: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:
```
## 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
```{eval-rst}
@@ -109,3 +31,59 @@
: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:
: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