Skip to content

Roadmap & Phased Plan

This roadmap focuses on teaching and learning with SemiconductorSim. It spells out concrete phases so contributors and instructors can track progress and plan lessons.

Status Overview

  • Completed: Phase 0 (Baseline), Phase 1 (Hygiene), Phase 2 (Tutorials & Gallery), Phase 3 (Interactivity), Phase 4 (Materials & Models)
  • In Progress: Phase 6 (Plotting API Unification – partial via helpers)
  • Next Up: Phase 5 (New Devices), Phase 8 (CLI Enhancements), Phase 7 (Units – optional)

Phased Plan

Phase 0 — Decisions & Baseline

  • ADR: Standardize device return tuples for iv_characteristic (ordering, names, shapes).
  • Hygiene: Keep CI green; baseline Ruff/mypy/tests/docs.
  • Acceptance: ADR merged in docs; Ruff + mypy clean; tests unchanged or improved.

Phase 1 — Hygiene & Test Coverage (Completed)

  • Ruff modernizations: Optional/Union → X | Y, Tupletuple where sensible. Clarify import-location rule for lazy matplotlib imports.
  • Types: Remove Any-return warnings (notably in recombination and MOS capacitor) with precise NumPy typing.
  • Tests: Improve LED/Zener coverage; add headless plot smoke tests.
  • Acceptance: Ruff and mypy pass; coverage ≥ 90% on core devices; docs build strict OK.
  • Three guided labs: PN basics, LED, Solar — with goals, prompts, and solutions.
  • Docs: Example gallery, glossary of terms/symbols/units, troubleshooting.
  • Acceptance: Pages linked in nav; notebooks run; CI docs job green.

Phase 3 — Interactivity (Completed)

  • ipywidgets: canonical slider notebooks per device (doping, temperature, illumination).
  • Demo App: minimal Panel or Streamlit app to compare PN/LED.
  • Acceptance: Notebooks interactive; app launches locally; short guide included.

Phase 4 — Materials & Models (Completed)

  • Materials registry: Si/Ge/GaAs Varshni parameters; integrate with bandgap and intrinsic carrier density.
  • Optional: simple mobility vs. doping/temperature for teaching.
  • Acceptance: Tested registry; devices can opt into materials; docs reference sources.

Phase 5 — New Devices (Teaching-Simple) [In Progress]

  • Schottky diode (added) → next: PIN + photodiode → MOSFET (intro) → BJT (intro).
  • Each device: consistent API, docstrings with assumptions/units, example script, one notebook, tests.
  • Acceptance: Each device meets the above; CI remains green.

Phase A — Foundations (Mobility, SRH, Schottky) [In Progress]

  • Models: Caughey–Thomas mobility (mu_n, mu_p); SRH recombination rate utility.
  • Device: Schottky diode (thermionic emission) with docs and gallery.
  • Docs: API sections for materials/models/devices updated; gallery entry added.
  • CI: Gallery generator and checks extended for new image.
  • Acceptance: Lint/type/tests/docs all green; examples render headless; image present in gallery.

Phase 6 — Plotting API Unification (In Progress)

  • Centralize plotting helpers; optional backend selection (matplotlib/plotly) in one place.
  • Acceptance: All device plots run headless in CI; one plotting guide in docs.

Phase 7 — Optional Units with Pint (Feature-Flag)

  • Offer unit-safe examples behind a toggle, not a hard dependency.
  • Acceptance: Unit-enabled examples run; docs explain tradeoffs.

Phase 8 — CLI Enhancements

  • Extend semisim with ranges/export (CSV/PNG) and tests.
  • Acceptance: CLI paths covered; docs include quickstart.

Phase 9 — Release v0.2.0 (Planned)

  • Version bump, changelog, docs refresh, highlights in README.
  • Acceptance: CI+publish succeed; release notes emphasize learning features and new devices.

Learning Themes (Ongoing)

  • Tutorials & Exercises: parameter sweeps, IV fitting with scipy.optimize.curve_fit.
  • Concept Visuals: depletion width, band diagrams, quasi-Fermi levels.
  • Contribution Tasks: good-first-issues for labs, plots, and gallery entries.

Notes on Scope & Style

  • Keep models “teaching-simple,” with clear defaults and explicit units.
  • Prefer vectorized NumPy implementations and headless-safe plotting.
  • Document assumptions and cite sources for parameters where practical.

Contributions welcome! Open an issue or PR with a small, focused change.