In-situ Approach

Another way to perform optimization tasks is to include the primary optimization loop into or closely to the solving algorithm of the simulator. This is very efficient in terms of computation time [283].

To reduce the time for the lookup of a particular parameter constellation, the optimization can be performed in advance and saved in a database. For each inquiry for different design patterns the database can be consulted instead of many very similar optimization runs (cf. Section 4.3.1).

Within applications where the type of the possible solutions are well known, the optimization can be performed within the iteration loop of the solving algorithm in the simulator by introducing an additional internal optimization loop. However, this is only possible if the source code of the particular software is available and if the source code is well understood to preserve the accuracy and the function of the simulator.

A different approach is to extract the problem description from the simulator and reimplement it together with the internal optimization loop as it has been introduced for a doping profile optimization for a diode [283] which has yielded excellent results in terms of accuracy and computation time. Unfortunately, this implementation is only suitable for a certain class of problems. For more general applications different programs have to be developed in order to treat different problem classes.

However, this type of optimization yields very accurate optima and very fast optimization results because the optimization algorithm has all necessary information for its calculation inside the simulator and the optimization can be obtained within one simulation step. Ordinary optimizers would have to iterate several times and therefore to communicate with other software tools via an external interface which is conveniently an API or the file system. These communication procedures would require additional time and would provide only a limited bandwidth to transfer data while the in-situ optimizer does not need to transfer data because everything is pre-calculated by the simulator and the optimizer can access that data because the optimizer is part of the simulator.

Stefan Holzer 2007-11-19