Tools Control


TCAD tools share many common functionalities. They all need a shell that will accept user commands, parsing facilities that will allow them to process and understand those commands, and often such utility functions such as graphing and visualization aids.

The traditional model is to build into each application all the functionalities that it needs. This is the model that a lot of TCAD tools, such as SUPREM and SPEEDIE, subscribes to.

There are problems with this model. We have code in each application that provide similar functionalites in slightly different manner. Adding functionality, say a new type of plot in the graphing subsystem, requires changing the code of all applications involved and recompiling, making it hard to maintain and upgrade, especially when there are so many different tools dealing with different aspects of TCAD that need to be taken care of.

The idea of tools control is to relegate each aspect of TCAD to a specialized tool. That way, supreme would only have to worry about simulating the physical processes in fabrication and not how to graph and visualize the simulation results. There would be a separate visualization/graphing module that will take care of that. New types of plots can be easily implemented by addition to the graphing module, and users can immediately apply the new functionality to the simulation results of all the other TCAD tools: SPEEDIE, SUPREM, PISCES, etc, through the mediation of a tools control shell that hands out commands to the appropriate to request services on behalf of the user. A GUI (or a myriad of other)interface can be implemented for the tools control shell, and the user will immediately be able to take advantage of it, all without any tweaking or rewriting of the actual tools calculation code.

Tcl/Tk is a combination scripting language/C library routines created by John Ousterhout when he was at UC Berkeley with the goal of facilitating the creation of small tools that work with each other. It provides a universal scripting syntax that is simple but powerful, as well as a C library that allows one to write applications that implements Tcl features. The Tk module is an extension to Tcl that allows amazingly simple prototyping and creation of a GUI interface.

It is chosen as the language for our implementation of tools control.

The fact that SUPREM and many other TCAD tools exist as monolithic tools, and often developed independent of each other presents certain problems. Most of the TCAD tools implement their own command syntax, and their own interfaces to their internal routines. Often that command syntax is not necessarily compatible with the one that is natural with Tcl. This requires either the tool controls shell to have either have intimate knowledge of all the syntaxes concerned, or the ability to extract that information from the tools themselves. Further, we decided a complete rewrite of the TCAD tools would take too much time and resources, and instead opted to use the old code as much as possible, even though they are not written with tools control. This presents problems in interfacing the old code with the new, and will probably prevent an "clean" implementation, at least in our first version.

Nevertheless, it is our belief that, even with these compromises, the tools control idea can offer us many benefits in terms of easier maintainability, and greater ease of use.