Technolgy file archetecture revised with dictionary input method
This commit is contained in:
@@ -1,18 +1,67 @@
|
||||
"""Dataclass models used by manifest-backed technologies."""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Any, Optional, Tuple
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class LayerSpec:
|
||||
native_name: str
|
||||
gds: Any
|
||||
"""One canonical foundry GDS layer plus optional process metadata."""
|
||||
|
||||
name: str
|
||||
layer: Tuple[int, int]
|
||||
aliases: Tuple[str, ...] = ()
|
||||
material: Optional[str] = None
|
||||
z_start: Optional[float] = None
|
||||
thickness: Optional[float] = None
|
||||
sidewall_angle: Optional[float] = None
|
||||
process: Optional[str] = None
|
||||
description: str = ""
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class XSectionLayerSpec:
|
||||
"""One layer contribution inside a Nazca xsection."""
|
||||
|
||||
layer: str
|
||||
growx: Optional[float] = None
|
||||
growy: Optional[float] = None
|
||||
leftedge: Optional[Tuple[float, float]] = None
|
||||
rightedge: Optional[Tuple[float, float]] = None
|
||||
overwrite: bool = True
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class XSectionSpec:
|
||||
"""Named cross-section made from one or more layer contributions."""
|
||||
|
||||
name: str
|
||||
layers: Tuple[Any, ...]
|
||||
growth: Tuple[Any, ...]
|
||||
growy: Optional[Any] = None
|
||||
layers: Tuple[XSectionLayerSpec, ...]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class MaterialSpec:
|
||||
"""Material metadata and optional refractive-index data reference."""
|
||||
|
||||
name: str
|
||||
display_name: Optional[str] = None
|
||||
source_file: Optional[str] = None
|
||||
source_revision: Optional[str] = None
|
||||
data_file: Optional[str] = None
|
||||
notes: str = ""
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ProcessLayerSpec:
|
||||
"""Detailed process-stack row reserved for full process exports."""
|
||||
|
||||
name: str
|
||||
gds: Any = None
|
||||
z_start_um: Optional[float] = None
|
||||
thickness_um: Optional[float] = None
|
||||
material: Optional[str] = None
|
||||
pattern_material: Optional[str] = None
|
||||
process: Optional[str] = None
|
||||
sidewall_angle: Optional[float] = None
|
||||
pattern_growth_delta_um: Optional[float] = None
|
||||
enabled: Optional[bool] = None
|
||||
|
||||
Reference in New Issue
Block a user