The atp command computes the avalanche triggering probability [1] along a one-dimensional pn junction.

Syntax |
Description |
---|---|

result = atp(x, config); |
x: position grid coordinates along the one-dimensional pn junction.
config: struct with the following fields, "field", "temperature", "alpha_e", and "alpha_h" (see detailed explanation below). When both "alpha_e" and "alpha_h" are specified, the values of "field" and "temperature” will be ignored. When both "alpha_e" and "alpha_h" are omitted, "field" and "temperature” must be provided.
result: matrix with three columns. Its number of rows equals the length of x. The first column provides the avalanche triggering probability (ATP) due to an electron, the second column provides the ATP due to a hole, and the third column provides the ATP due to a hole-electron pair. All the ATPs are functions of the position of the triggering particle (pair). |

Parameter |
Unit |
Default value |
Type |
Description |

x | m | None | vector | Position coordinates of grid points along the one-dimensional pn junction. The values in x must be ordered incrementally. The spacing between adjacent grid points does not have to be uniform. |

field | V/m | None | vector |
Electrical field along the one-dimensional pn junction. Its vector size must equal that of x, and its value must not change sign. A positive field value indicates the direction with increasing x. Temperature and field must be provided by user if both alpha_e and alpha_h are omitted. In this case, ionization coefficients will be computed according to [2]. |

temperature | K | None | scalar | Temperature and field must be provided by user if both alpha_e and alpha_h are omitted. In this case, ionization coefficients will be computed according to [2]. |

alpha_e | 1/m | None | vector |
Electron ionization coefficient along the one-dimensional pn junction. Its vector size must equal that of x, and its value must not change sign. When both alpha_e and alpha_h are specified, the values of "field" and "temperature” will be ignored. |

alpha_h | 1/m | None | vector |
hole ionization coefficient along the one-dimensional pn junction. Its vector size must equal that of x, and the sign of its values must be the same as that of alpha_e. When both alpha_e and alpha_h are specified, the values of "field" and "temperature” will be ignored. |

Using “alpha_e” and “alpha_h” directly (without specifying “temperature” and “field”) allows for more flexibility such that the user can use their impact ionization model specific to the material of interest. When both “alpha_e” and “alpha_h” are omitted, the command uses the input parameters “temperature” and “field” to determine the ionization coefficients based on the Okuto-Crowell model specific to silicon [2]:

$$ \alpha = a E [1+c(T-T_{ref})] \text{exp} \left \{ -\frac{ b^2(1+d(T-T_{ref}))^2 }{ E^2 } \right \} $$

where a,b,c,d are material parameters, E is the electric field, and \(T_{ref}\) is the reference temperature 300K.

## Code example:

#compute ionization coefficients according to Okuto-Crowell model [2]

function okuto(a300,c0,b300,d,E,T){

alpha = a300*(1+c0*(T-300))*E*exp(-(b300*(1+d*(T-300))/E)^2);

return alpha*1e2;

}

T = 300;

#define 1D grid, in unit of meter

x = linspace(0,1,101)*1e-6;

#Simplified field along pn junction, V/m

#Since efield >= 0 here, the x-coordinate of the n-region is smaller than that of the p-region.

efield = 100/(x(end)-x(1))*(1-abs(x-mean(x))/((x(end)-x(1))/4));

efield(find(efield < 0)) = 0;

# Here the Okuto-Crowell model[2] specific to silicon is used inside the command to determine ionization coefficients.

p = atp(x, {"field": efield, "temperature": T});

#specify alpha_e and alpha_h instead of field and temperature

#Here we assume the material is silicon, and we use default parameters (a,b,c,d) for silicon.

a300_e = 0.426; c_e = 3.05e-4; b300_e = 4.81e5; d_e = 6.86e-4;

a300_h = 0.243; c_h = 5.35e-4; b300_h = 6.53e5; d_h = 5.67e-4;

alphae = okuto(a300_e,c_e,b300_e,d_e,efield/100,T);

alphah = okuto(a300_h,c_h,b300_h,d_h,efield/100,T);

# Here alpha_e and alpha_h are specified directly instead of field and temperature

p = atp(x,{"alpha_e": alphae, "alpha_h": alphah});

### References

[1] R. McIntyre, "On the avalanche initiation probability of avalanche diodes above the breakdown voltage," *IEEE Transactions on Electron Devices, *vol. 20, no. 7, p. 637, 1973.

[2] Y. Okuto and C. R. Crowell, "Ionization coefficients in semiconductors: A nonlocalized property," *Phys. Rev. B, *vol. 10, p. 4284, 1974.

### See Also

SPAD Dark Count Rate, SPAD Secondary Emission and Absorption