Scientific applications are built with great care and attention to the core simulation algorithms, often with some input/output added as an afterthought. Instead, you can create a much more powerful tool with little extra effort by replacing the usual "main" program with an embedded scripting language. A scripting language makes a tool "programmable" for a wide variety of applications, letting you use the tool like a Swiss Army Knife. The scripting language orchestrates the actions of high-level building blocks, which are all coded efficiently in a system-level programming language, such as C, C++, or Fortran. When integrated correctly, therefore, the scripting language adds flexibility without impacting overall performance. Scripting languages also foster library development and code reuse, since the building blocks are coded once, and then scripted in a variety of ways to perform various tasks. The Matlab environment is an excellent example of a successful scripting architecture.
In this talk, I'll show examples of tools that go beyond Matlab in their scope--tools that have a more specialized function, that have been turbocharged with an embedded scripting language called Tcl. One such tool, an interconnect capacitance simulator, can be "reprogrammed" via Tcl scripts to perform different analyses ranging from simple calculations, to sweeps, to optimization runs.
I'll also describe several packages that I've created to amplify the power of Tcl adding support for object-oriented programming, mega-widget development, data visualization, and more.
Finally, I'll show how Tcl can be used to turbocharge Web site development. Tcl code can be embedded within a Web page, and executed as each page is served up to build the page contents dynamically. Together with a relational database and a server farm, this provides the infrastructure needed to authenticate users, manage their sessions, and submit jobs for on-demand computing.
When combined, all of these capabilities create a framework in which tools can be prototyped, developed, and delivered in short order with production-quality results, greatly accelerating the process of scientific discovery.
Michael McLennan received a Ph.D. in 1990 from Purdue University for his dissertation on dissipative quantum mechanical electron transport in semiconductor heterostructure devices. He became a Tcl enthusiast when he joined Bell Labs in 1992 to work on tools for semiconductor device and process simulation. He is co-author of "Effective Tcl/Tk Programming" (published by Addison-Wesley) and "Tcl/Tk Tools" (published by O'Reilly and Associates). He also developed [incr Tcl], an object-oriented extension of Tcl, which is now used by thousands of developers worldwide, on projects ranging from the TiVo digital video recorder to the Mars Pathfinder. Michael is currently an Architect at Cadence Design Systems, where he develops tools for HDL and System-level design.
Cite this work
Researchers should cite this work as follows:
EE 317, Purdue University
- programming techniques
- research seminar