Erasmus Langer
Siegfried Selberherr
Hajdin Ceric
Johann Cervenka
Siddhartha Dhar
Robert Entner
Wolfgang Gös
Klaus-Tibor Grasser
René Heinzl
Christian Hollauer
Stefan Holzer
Andreas Hössinger
Gerhard Karlowatz
Markus Karner
Hans Kosina
Ling Li
Gregor Meller
Mihail Nedjalkov
Alexandre Nentchev
Vassil Palankovski
Mahdi Pourfath
Philipp Schwaha
Alireza Sheikholeslami
Michael Spevak
Viktor Sverdlov
Oliver Triebl
Enzo Ungersboeck
Martin-Thomas Vasicek
Stanislav Vitanov
Martin Wagner
Wilfried Wessner
Robert Wittmann

Philipp Schwaha
Dipl.-Ing.
schwaha(!at)iue.tuwien.ac.at
Biography:
Philipp Schwaha was born in Vienna, Austria, in 1977. He studied electrical engineering at the Technische Universität Wien where he received the degree Diplomingenieur in 2004. He joined the Institute for Microelectronics in June 2004, where he is currently working on his doctoral degree. His research activities include circuit and device simulation, device modeling, and software development.

Library-Centric Application Design with Modern Programming Paradigms

The rapid evolution of today's semiconductor technology makes it essential to also provide suitable simulation tools. This has to be done not only with regard to the physical models employed by simulators used to calculate the requested information, but also with respect to the implementation of the tools. The importance of basing simulators on clear software architectures utilizing the most suited software development techniques for each of its parts has been gravely underestimated in the past. Most applications used for simulation use different data structures to describe triangles, quadrilaterals, tetrahedra, or cuboids, each not only with different access mechanisms but also with their own means for traversing them or storing data on them. One of the reasons for this high degree of specialization is due to the dramatic effect that even the slightest overhead has on performance when large linear equation systems are being assembled. In such implementations this concern for performance results in huge amounts of code that become increasingly difficult to maintain. Determining the common requirements and then providing a common interface for all operations leads to code that is far easier to maintain. Therefore, one needs a good understanding of the chief requirements of the individual parts of the simulator as well as of the programming paradigms in order to choose an optimal approach for implementation. Several programming paradigms have been developed over the years, with structured, object oriented, generic, and functional programming among them.
The requirements of handling several different dimensions and different topological cell complex types, as well as providing several numerical methods while employing orthogonal modules, can be realized using generic and functional programming. Performance issues are addressed at the same time through the use of meta programming techniques and concurrent programming, when available. The figure shows a possible partition that offers high performance by using the foundation of concurrent programming and ease of specification by providing a high-level interface using functional programming. It thereby becomes possible, on the one hand, to provide high performance for simulation needs, while, on the other hand, ensuring a high degree of modularity and easy extensibility reduces the effort of code maintenance to a minimum. The evolution of simulation tools can keep up with the requirements by keeping ever vigilant of the evolution of the methods of software development and the available programming paradigms. Only when the various programming paradigms are actively used in a harmonious composition can the aforementioned goals be achieved.


Library-based application development with
different modern programming paradigms.


Home | Activities | Staff | Publications | Sponsors |Contact Us