Silicon Sandbox — interactive device physics
hover the die for a live readout — paint with the left button, erase with the right
Presets
PN diode<br>NMOS<br>BJT<br>Schottky<br>Resistor<br>NAND<br>AND<br>OR<br>XOR<br>Half adder<br>Full adder<br>clear
Tool
✎ Paint<br>◈ Dope<br>◎ Probe
⬤ Brush▭ Rectangle
brush3
N · donorsP · acceptors
concentration10^2.3 nᵢ
Left-drag paints the selected material · right-drag erases to vacuum.
Materials
Probes
voltage0.0
contact<br>OhmicSchottky
0 V_T ≈ 0 mV<br>✎ rename<br>remove
Switch to Probe mode and click the die to attach a voltage terminal. Click a selected probe again (or press Delete) to remove it.
🏷 add voltage label
View
electric field arrows<br>current flow particles
I–V Plotter
sweep<br>read
from<br>to<br>pts
▶ run sweep<br>log |I|
Sweeps one probe's voltage and plots the current read at another — e.g. sweep G, read D for the NMOS transfer curve. The sim stays live.
Simulation
reset to equilibrium
sub-steps / frame6
grid<br>64 × 4896 × 72<br>128 × 96160 × 120<br>192 × 144224 × 160<br>256 × 192<br>larger = slower
save layout<br>load layout
Advanced<br>moderate doping10²
heavy doping10³
SRH lifetime τ10
Schottky work fn W−6.0
Poisson sweeps24
transport sweeps10
Densities are in units of nᵢ, potentials in V_T = kT/q ≈ 25.9 mV, lengths in intrinsic Debye lengths λD ≈ 41 µm for Si.
? help<br>normalized De Mari units · SG + damped Gummel · Rust→wasm core
▮ SILICON SANDBOX
A 2D drift–diffusion simulator: Poisson + Scharfetter–Gummel carrier transport on a grid.<br>Paint a device out of silicon, oxide and metal, attach voltage probes, and watch potential,<br>carriers and current respond live.
Painting
Pick a material, then left-drag on the die to paint; right-drag erases to vacuum.
Painted regions start at charge-neutral equilibrium.
Probes
In Probe mode, click anywhere to attach a voltage terminal (ohmic contact on silicon; equipotential on metal).
Click a probe to select it, drag the voltage slider; click it again or press ⌫ to remove.
The chip list shows each probe's live terminal current.
Doping brush
The Dope tool paints net doping into any semiconductor cell (Si, Ge, GaAs) without changing the material —<br>pick N or P and a concentration, then drag. Right-drag resets cells to intrinsic. Graded and asymmetric junctions welcome.
The Advanced doping sliders re-dope all cells of the four named Si materials and overwrite brushed values there.
Contacts & Schottky
Each probe can be Ohmic (carriers pinned to doping equilibrium) or Schottky : the surface is pinned to the<br>metal's Fermi level offset by the work function W (Advanced) — with W<br>Logic presets
NAND, AND, OR, XOR and the full adder are real circuits: ratioed-NMOS stages with silicon pull-up<br>resistors, floating output nodes, and (XOR/adder) buried N+ crossunders. ▸ amber tags mark input<br>terminals — set them to 0 / +48 via the chips (same-letter chips are one net and move together).<br>Green tags mark outputs with their live node voltage. Internal nets show gray ≈ tags.
I–V plotter
Sweeps one probe and plots the current read at another, live: sweep G / read D gives the NMOS transfer curve,<br>sweep D / read D the output curve, sweep A / read A the diode I–V. Toggle log |I| for subthreshold slopes.
Materials note
Ge and GaAs implement per-material nᵢ and mobilities (ratios to Si: μₙ 2.8× / 6.1×). Their nᵢ ratios are compressed<br>(40 and 0.02 vs the physical 2.4·10³ and 2·10⁻⁴) so junctions stay resolvable on this grid; interfaces to Si are<br>nᵢ-heterojunctions only — no band-offset physics.
Save / load layout stores materials, per-cell doping and probes as JSON.
Reading the views
ψ — electrostatic potential (diverging map). log n / log p — carrier densities, log scale.
net charge — space charge; depletion regions show as colored bands.
|J| & particles — conduction current; particles ride the actual computed J field.
Keys
Space play/pause · S step · R reset · 1..8 materials ·<br>B paint · P probe · ⌫ delete probe · ? help · Esc close
close