By comparing saved MCSR structures of the same system matrix assembled by the formerly used and the new module, misordering problems have been detected. As a consequence, the new modules were presumed to deliver wrong results and an investigation of the problem was started which finally resulted in an elegant solution for the problem which is directly related to the row transformation.
The row transformation as discussed in Section 4.7.1 is used to supply equations (or rows of the system matrix) with equations having a higher priority. This is necessary, because several segments (with different priorities) could contain the same grid point. Each of the control functions determines a result for this grid point, but only the one with the highest priority should be used.
See Figure 4.6 for an illustration of the physical background as it occurs for a MOS structure. The semiconductor segment (segment 1), the gate oxide (segment 2), and the source contact (segment 3) share one physical grid point. Thus, three equations are assembled to obtain the solution for the potential at this point.
Since the contact segment has the highest priority, its solution has to
be used by the other two segments. However, during the assembly of the
three interface equations, the interface models (which are responsible
for setting up the transformation matrix), do not have the full
information about all three segments involved. They only take two
segments into account, namely the segments the interface is
in-between. As a consequence, the following transformation entries can
be found in
:
These transformations result in the following equations of the complete linear
equation system. Depending whether a correction is activated or not, equation 3
is shown in (4.27) and (4.28), respectively. stand for
other contributions equal for both cases and thus not of interest here. The
coefficients
denote entries wrongly transferred to (4.30)
instead of (4.27). With
as the contact potential
of segment 3 (source contact), the correct and wrong equation 115 can be seen
in (4.29) and (4.30), respectively:
Since the segment equation should also be transferred to the equation of the boundary charge, the red/ dashed transformation is wrong and should be replaced by the green/thick one. As a consequence, the gate oxide is transferring its incomplete equation to the semiconductor segment. Such situations could be prevented if the respective models are provided with the complete information. Since this is not the case for the main simulator MINIMOS-NT and for unstructured meshes an arbitrary number of segments would have to be considered, the assembly module was equipped with an algorithm which corrects the transformation matrix before it is applied. This algorithm has the full information available, but remains deactivated for all simulators which do not require this correction. See Table 4.3 for a comparison of the terminal quantities showing significant differences particularly for the boundary charge.
The reason for the differences between the formerly used and new module can be explained as follows: one important difference between the modules is the assembly sequence. The new assembly module assembles four matrices and compiles them afterwards to the complete linear system (see Section 4.14). This compiling step uses matrix additions and multiplications which operate on the completely assembled structures.
In contrast, the formerly used module calculates all transformations during a symbolic assembly phase in advance and is therefore able to assembly only one system matrix during the actual assembly phase (cf. Newton adjustment). So the matrix additions and multiplications are performed immediately while an entry is added. As analyzed, these transformations do not perform a multiplication in the strict mathematical form, but are already adapted for the requirements described above. This behavior should be demonstrated on a simple mathematical example.
For the demonstration of the matrix transformation, consider a simple
matrix multiplied by
from the left:
![]() |
(4.31) |
![]() |
(4.32) |
![]() |
(4.33) |
The second transformation matrix and the multiplication result are:
The third transformation matrix and the multiplication result are:
![]() |
(4.35) |
As discussed above, the formerly used module takes such situations into account while calculating all contributions of a matrix entry. However, the new assembly module requires a correction algorithm before the mathematically correct matrix multiplication is processed during the compiling process. For the following reasons, the development of a correction algorithm is a crucial part for the success of the new modules:
For these reasons, it was decided to develop a correction algorithm which is presented here. Based on the third example in the last section, the problem is described verbally once again: equation three is transformed to equation two, that is transformed itself to equation zero: thus, a transformation source is also a transformation target. A correction to replace the (three to two to zero) problem by a straightforward (three to zero) transformation is required.
The basic correction algorithm can use all information provided by the
transposed MCSR data structure. In
, the column indices
represent the targets of the transformations.
![]() |
(4.36) |
![]() |
![]() |
(4.37) |
![]() |
(4.38) |
![]() |
(4.39) |
![]() |
(4.40) |
![]() |
(4.41) |
![]() |
(4.42) |
After the correction is completed,
has to be transposed back
resulting in the same transformation matrix as used in (4.34):
![]() |
(4.43) |
The basic algorithm explained above could not be used for more complicated structures, for example the ones which contain grid points calculated by four control functions.
In addition, duplicate entries in the resulting MCSR structure (as they could occur using the basic algorithm) should be avoided. In contrast to the full format, a sparse format stores only entries which are intended to be non-zero. Besides the actual value, also the row and column number have to be stored. Thus, it is possible to store one matrix entry more than one time, which is a duplicate entry of the same position. Most of the mathematical operations defined for MCSR take those implicitly into account, since they simply process all entries in the structure. However, due to the fact that all multiple entries should be actually summed up to one entry, numerical inaccuracies may occur. So duplicate entries are best avoided at all.
The main objective of the advanced algorithm should provide a
generally applicable correction of the transformation matrix while
avoiding duplicate entries.
A new example should demonstrate the actual problem. In a transposed
transformation matrix
the entries (row:34, col:3) and (47, 34)
are set to one. The basic algorithm corrects the latter entry to
(47, 3). Since there is only one entry, this correction is successful
(case one).
To extend the example, an additional entry in (78, 34) is supposed to
be one. That means, that equation 34 is not only transferred to
equation 3, but also to equation 78. Note that in
the column
index stands for the target of a transformation. In that case, the
basic algorithm fails, because there is not enough space to add new
entries (case two). Both cases are graphically represented in
Figure 4.7.
The first case is shown in Figure 4.7a and Figure 4.7b. In Figure 4.7a, two arrows represent two transformations, the blue/dashed arrow has to be redirected to the position the black/solid arrow points to. In Figure 4.7b, the green/dashed arrow represents the redirection. After the correction the number of arrows stays the same.
The second case is shown in Figure 4.7c and Figure 4.7d. Since
the center position is transferred to multiple (here two, generally ) right
positions, there are also
arrows needed to point from the left position to
all right positions. The number of arrows increases by
. In
Figure 4.7d, the red/dotted arrow has to be created additionally. In the
existing MCSR structure, there is no space for this entry. Hence, no
thorough correction of the second case could be made.
If equation 47 of
contains the non-zero column entries 49, 51, and 55,
the following misorderings are the result of the omitted correction:
For that reason new entries have to be added in order to completely correct the transformation matrix. There are two solutions for this problem:
By pursuing the second approach, an algorithm was developed which benefits from already existing and applied implementations. The system can now take all possible situations into account since it does not limit the number of commonly used grid points (independent of the number of spatial dimensions) any more. Table 4.4 summarizes the initial situation and the correction result for both the transposed and untransposed transformation matrix.
Regarding the Newton adjustment it is important to note, that the
advanced algorithm is fully employable due to the following
considerations. After a successful first Newton adjustment level,
no flexible sparse structure exists which could be used to add
additional entries. However, the already existing
matrix does
already contain all required entries. This assumption holds since all
deterministic algorithms always yield the same result for the same
inputs. Therefore, no Newton adjustment errors will occur.