Actual output from the SGFramework program.
This graph shows the electron concentration across the surface of a BJTtransistor.
The SGFramework program can display this type of graph on theCRT, or output to a Postscript file.
The graph can be rotated through 360 degrees on all 3 axes to provide anydesired perspective of the device under simulation.
Axis labels, tick marks, and comments can be added.
Another view of a BJT transistor electron concentration simulation.
SGFramework is a flexible software
package that you can use to model semiconductor devices as well as solving
many problems involving solution of simultaneous equations. A new book
from Prentice Hall is available describing the many things you can do with
SGFramework.
You can link
directly to the book which contains SGFramework or
you can link to Prentice Hall,
the book's publisher.
Title of the Book Containing SGFramework:
W.
Nicholas. G. Hitchon
Electrical and Computer Engineering Department
University of Wisconsin-Madison
1415 Engineering Drive
(608) 262-2501 - voice
(608) 265-2614 - fax
hitchon@percy.engr.wisc.edu
The SGFramework book and its associated software package describe how to set up very general, complex semiconductor simulations very easily and provides the software to permit the user to do this. After review of the semiconductor equations and parameter models, an overview of the numerical solution of PDE's, and an introduction to the software, this text is devoted to describing how to set up microscopic models of the main classes of semiconductor devices. This includes static and dynamic models, followed by "mixed-mode" simulations (where the device is included in a time-varying external circuit). Finally advanced topics including photodiodes MOSFETs for VLSI applications ore on mixed mode simulations and power semiconductors are treated. In each case, the physical operation of the device is described and illustrated by means of the simulation results. The software reads the specification of a discretized set of PDEs from a compact input file and performs all the steps involved in setting up the code to solve the equations, solving them and plotting the results. This package is used to describe a variety of semiconductor devices in detail. This approach allows the user much greater control over and understanding of the simulations than has been possible before.
The SGFramework book will allow students and professionals greatly
enhanced insight into device operation, much more readily than can be obtained
in any other way at present. At present, semiconductor modeling tools are
"canned" programs which only use the models provided by the author. They
are also very expensive, they require substantial computing power and the
user may need to attend lengthy training to learn how to use them. Our
package is very flexible; a short input file specifies as complex a problem
as desired and this can be modified however the user chooses. It is an
ideal teaching tool, since the physical models and the results are clearly
displayed. It is capable of running on high end PCs with the appropriate
software, and it is relatively easy to learn to use.
Some key features of the SGFramework software and book package
are:
Semiconductor modeling is at present an esoteric art, even with the aid of existing canned programs. The book and software tool will open this topic up to a much larger group of workers.
The SGFramework book and software package is intended for:
People involved in the following industries are among those who will find this package useful:
As in other computer languages, the variables to be used must be declared. The declaration for this is var variable_name. Next we will set up our system of equations to solve. This is done with the unknown unknown_name and the equ unknown_name -> statements.
The two slash marks indicate comments in the file. Note semi-colon at the end of the variable declaration. Each line of your file must be terminated with a semi-colon with the exception of commented lines.
// declaring variables and unknowns var x1, x2; unknown x1, x2; // equations to solve equ x1 -> x1 + x2 = 4; equ x2 -> 3*x1 + x2 = 7;Arithmetic operations are carried out by the typical symbols, +, -, *, and /, addition, subtraction, multiplication, and division, respectively.
After declaring the variables, unknowns, and equations, we can begin the main program. In our program we will solve our system of equations and write the results to a file.
To begin the main program, use the command begin main. In order to solve the equations, use the command solve; Then, the results can be written to a file by the following lines:
begin main // solve equations solve; // write the results open "answer" write; file write x1, x2; close; endThe file specified by "file_name" will contain the values of x and y that satisfy the system of equations declared above.
Note that the commands begin main and end do not use semi-colons.
In order to run this file in SGFramework, the file name must have an *.sg extension. For example, save this file as sample.sg.
1. First, at the command prompt, type SGFramework sample.sg. This will produce three files, sample.cpp, sample.h, and sample.top.
2. Next, type sgbuild sim sample. No extension is used after the file name. An executable file is produced during this step.
3. Run the executable file just created, by typing sample*. Here, the file containing the solutions of the equations is created and a sample.res file is created. You can extract data from this file and plot the results using Matlab, but at this time we will not be plotting results.
4. Looking at your results file, you will see the solutions, 1.5 and 2.5. These are the values of x and y that satisfy our given equations.
First, a usable form of Laplace's equation is needed. This is obtained by using the method of finite differences. We can have a uniformly spaced mesh or a nonuniformly spaced mesh for calculating the potential values between the two plates. Here is the form of Laplace's equation for a nonuniform mesh.
{V[i-1,j]/h[i-1]-V[i,j]/h[i-1]-V[i,j]/h[i]+V[i+1,j]/h[i]}/ave(h[i],h[i-1]) + {V[i,j-1]/k[j-1]-V[i,j]/k[j-1]-V[i,j]/k[j]+V[i,j+1]/k[j]}/ave(k[j],k[j-1]) = 0
Where the function ave() takes the average of the two points in parenthesis.
The following are the specifications in order to create the file for this problem:
The mesh size needs to be specified. This is done by defining constants.
// defining constants for mesh parameters const NX = 21; //number of x mesh points const NY = 21; //number of y mesh points const LX = NX - 1; //index of last x mesh point const LY = NY - 1; //index of last y mesh pointDeclare variables and unknowns.
var x[NX], y{NY]; var h[LX], var k[LY]; var V[NX,NY]; unknown V[1..LX-1,1..LY-1];The unknown statement specifies the points of the mesh where the equation will be solved. These values of the potential can be written to a file and plotted.
Laplace's equation must be specified as follows:
equ V[i=1..LX-1,j=1..LY-1] -> {V[i-1,j]/h[i-1]-V[i,j]/h[i-1]-V[i,j]/h[i]+V[i+1,j]/h[i]}/ave(h[i],h[i-1]) + {V[i,j-1]/k[j-1]-V[i,j]/k[j-1]-V[i,j]/k[j]+V[i,j+1]/k[j]}/ave(k[j],k[j-1]) = 0.0;Now the main program:
begin main // read the mesh open "mesh.dat" read; file read x, y; close;The file mesh.dat contains the points that the user specifies for the application. Using the nonuniform mesh, mesh points can be concentrated for better definition in certain areas of the plot if desired. The number of x and y values must correspond to the constants Nx and Ny specified at the beginning of the program. In this example, there should be 21 x values and 21 y values.
//compute h and k assign h[i=all] = x[i+1] - x[i]; assign k[i=all] = y[i+1] - y[i];The two lines above determine the distance between points of the mesh.dat file. These values are stored in the h and k arrays and used in the calculation of the Laplace equation.
//initialize variables assign V[i=all,j=0] = 10; // This statement is the boundary condition // of this problem. One plate has a 10 volt // potential. The remaining mesh point // values on the boundary default to zero. // Everything has been specified and the // equation can now be solved. //solve the equations solve;
//write the results open "x.dat" write; file write x; close; open "y.dat" write; file write y; close; open "V.dat" write; file write V; close; endResults are written to the specified files and can be used to plot the results for a visual interpretation.