Solar Cell Simulation : Solar Cell Simulation

Requires: SSuprem 4/S-Pisces/Luminous
Minimum Versions: Athena 5.22.0.R, Atlas 5.22.1.R

This example shows how a solar cell structure can be simulated in Athena and Atlas. The structure used and the results obtained are similar to those in the book "VLSI Technology" by Sze. The example file consists of:

  • Construction of solar cell doping and geometry in Athena
  • Simulation of short circuit current
  • Simulation of open circuit voltage
  • Simulation of spectral response
  • Simulation of illuminated and unilluminated IV characteristics

The initial part of the example file uses Athena to create a typical solar cell structure. The device used is a diode of n+ over a p substrate. The junction depth is approx 0.25um. A single contact is placed in the center of the structure. Typical solar cells will have this structure repeated many times across a large area. Here advantage is taken of the reflecting boundary conditions at the edges of the structure to simulate just one cathode contact.

The process consists of an implant and diffusion followed by electrode formation. The electrode statement is then used to define the electrodes for Atlas.

The first Atlas run in the file simulates the response of the device to illumination by the solar spectrum. The material parameters for the structure are set at the start of the file . The imaginary refractive index (which is directly related to the absorption coefficient) of the metal is defined to a high value to ensure it is opaque to the incident radiation.

The illumination by solar spectrum is defined by the beam statement. The origin and angle of incidence need to be defined. An angle of 90 degrees means normal incidence from the top. The parameter power.file points to an external file that contains a list of wavelengths vs. intensity. The file 'solarex01.spec' contains data for the Air Mass Zero Solar Spectrum. The intensity in the file can be considered just as relative intensity between the wavelengths.

It is possible to store the optical intensity of the illumination by specifying output at any time before saving a structure file. The photogeneration rate will appear in the solution structure file by default.

The short circuit current is the current when the anode and cathode are shorted. This is simulated by illuminating the device with zero voltage on all contacts. The B<n> parameter of the solve statement sets the power of the light. An extract statement is used to measure the short circuit current. An extracted target like this can be used for optimization or as targets in VWF.

The system is reset using the command 'solve init' for the second test. To simulate open circuit voltage, the current through the device is forced to be zero. The device is illuminated and the voltage sustained across the device is measured.

To set the current to zero it is first necessary to set one electrode to have current boundary conditions. This is performed on the cathode using the current parameter of the contact statement. Simulating with the device illuminated and icathode=0 gives the open circuit voltage. This voltage is measured using the extract statement. Note the use of the syntax vint."cathode" as opposed to v."cathode" . This is necessary when you want to extract the voltage directly on the semiconductor contact as opposed to the applied bias.

The structure stored at this point can be plotted to show contours of photogeneration, carrier concentration or potential. The photogeneration contours show the effect of the opaque cathode contact. It is also possible to show ray tracing of light beams in this file. However in our example normal illumination was used so there are no refractive effects to see. A similar run using non-normal incidence and a narrower illumination spot would show the ray tracing inside the device.

The second Atlas run in this file is used to simulate the spectral response of the solar cell. At the start the definition of material parameters and opaque metal contact is repeated. For this test a different light beam is required. A beam origin and angle of incidence are set as before. The wavelength or spectrum file is not defined since the wavelength is to be varied in this test.

The short circuit case is considered, so zero biases are set on both electrodes. The parameter lambda of the solve statement is used to set the wavelength of the incident light. The range of wavelength used was 300nm to 1000nm.

Plotting the resulting log file it is possible to see how the cathode current varies with wavelength. Setting a plot vs wavelength of source photocurrent (current available in the light beam), available photocurrent (current available for collection), and actual cathode current can show how the device behaves. The losses between source and available photocurrent are caused by reflections and transmission. This dominates the losses at all except the shortest wavelengths. The losses from available photocurrent to the actual simulated cathode current are due to recombination. These are very low except at the extremes.

This simulation has produced all the data needed to create a plot of efficiency vs light frequency as used in the reference. All that is needed is to transform the data in TonyPlot.

On the y-axis the quantum efficiency is needed. This is defined as (current in/current out). In TonyPlot the following function is needed:

Source Photocurrent/cathode current .

This plot shows the same functional form as the reference material. The peak efficiency falls off quickly at low energies and more slowly at higher energies.

The third simulation is a plot of illuminated and un-illuminated I-V characteristics, allowing the designer to choose a suitable load line for the device under normal operating conditions. A number of useful parameters are also extracted from this curve using the extract statement. Finally the extracted plot of external power versus cathode voltage is displayed.

To load and run this example, select the Load example button in DeckBuild. This will copy the input file and any support files to your current working directory. Select the run button to execute the example.