Skip to content

miller_gain

miller_gain(
voltages: collections.abc.Sequence[typing.Annotated[float, units='V']],
*,
breakdown_voltage: Annotated[float, exclusiveMinimum=0, units='V'],
exponent: Annotated[float, exclusiveMinimum=0] = 3.0,
punch_through_voltage: Annotated[float, minimum=0] = 0.0,
max_multiplication: Annotated[float, exclusiveMinimum=0] = 1000.0,
) -> photonforge.Interpolator

Tabulate Miller’s empirical multiplication curve.

M(V)=[1−(VVbr)n]−1M(V) = \left[1 - \left(\frac{V}{V_{\rm br}}\right)^n\right]^{-1}

Below punch_through_voltage the depletion region has not reached the multiplication layer, so the gain is held at 1. The curve is clipped at max_multiplication because it diverges at breakdown and a compact model should not return infinity.

All voltages are reverse-bias magnitudes, so pass positive numbers.

Args

  • voltages: Reverse bias grid to tabulate over, in V.
  • breakdown_voltage: VbrV_{\rm br}, in V.
  • exponent: nn, typically 2 to 6. Fit it to a measured gain curve.
  • punch_through_voltage: Below this the gain is 1, in V.
  • max_multiplication: Clip value near breakdown.

Returns

Interpolator of MM against reverse bias, clamped outside the grid, ready to pass as multiplication.