Semiconductor Industry News, Trends, and Technology, and SEMI Standards Updates

Using C# for Development at Cimetrix

Posted by Cimetrix on Apr 12, 2010 4:00:00 PM

by Vladimir Chumakov,
Software Engineer

We started using C# at Cimetrix about 5 years ago when we first started working on CIMPortal™, our Equipment Data Acquisition product. Later on we used C# exclusively for development of our Equipment Client Connection Emulator (ECCE) tool; EDAConnect™, a client-side software library product for implementing the SEMI EDA Standards; and CIMControlFramework™, an equipment automation framework for tool control.

Here is why we chose - and keep using - C# for new project and product development at Cimetrix:

  • The biggest advantage using C# brings is not the programming language itself but the extensive amount of functionality provided by the Microsoft .NET Framework. The development time savings by using the .NET Framework could be measured in years.
    • We used ASP.NET libraries for development of CIMPortal’s Web GUI and implementation of the Interface A SOAP interfaces.
    • WinForms is by far easier to use than MFC library in C++ that we've used before.
    • WCF is used in EDAConnect for implementation of the Interface A SOAP interfaces and as inter-process communications in CIMControlFramework.
    • ADO.NET is the framework used for working with Databases. We use it in CIMStore and CIMControlFramework products.
    • And the best part is that Microsoft continuously keeps improving its .NET Framework. Microsoft released a new 4.0 version of the .NET Framework today on April 12th. It contains many new features. The most exciting is Parallel Computing Platform (http://msdn.microsoft.com/en-us/concurrency/default.aspx) which includes significant advancements for developers writing parallel and concurrent applications, including Parallel LINQ (PLINQ), the Task Parallel Library (TPL), new thread-safe collections, and a variety of new coordination and synchronization data structures.
  • Visual Studio (we currently use 2005 and 2008 versions) is an excellent development environment for both C++ and C# but has many features exclusive to C# that we take advantage of:
    • The Unit Testing Framework helps us with the creation and maintenance of test code.
    • C# Code refactoring (http://msdn.microsoft.com/en-us/library/ms379618%28VS.80%29.aspx). Refactoring is a formal and mechanical process used to modify existing code in such a way that it becomes 'better' while preserving the program's intended functionality. In addition to improving a program's overall design, the refactoring process tends to yield code which is far easier to maintain and extend in the long run.
  • C# Language advantages over C++
    • Automatic memory management allows much easier implementation of memory-leak free code.
    • 64-bit programming. There is no need to maintain two separate versions of source code or to have different builds – the same C# application runs on both 32- and 64-bit versions of Windows and is automatically compiled on the fly into native 32 or 64 bit code.
    • Performance. Contrary to common belief that C# is slower than C++, we've found that when features like immutable objects, lock-free containers and automatic memory management are used together, applications written in C# are faster than similar application written in C++.
  • There are still areas where C++ is better than C#
    • Application startup performance. Because C# applications are compiled at the run time, on the fly, it takes more time for application to start.
    • C++ templates are still powerful than generics in C#

All these advantages, especially in development time savings, is the reason why we use and will keep using C# at Cimetrix.

You might also be interested in:

Topics: Programming Tools, WCF, Microsoft, .NET

WCF and CIMControlFramework

Posted by Cimetrix on Feb 1, 2010 7:08:00 AM

by Derek Lindsey,
Principal Software Engineer

When creating new tools for use in the semiconductor industry, most original equipment manufacturers (OEMs) prefer to concentrate on their area of expertise – the processing of wafers. The bother for them is that they have to conform to material handling standards to get the wafers delivered to the correct process module before they can perform process on the wafers. They also have other overhead that takes time and resources away from what they do best. This overhead includes operator interfaces, recipe management, error handling and the list goes on.

With CIMControlFramework™ we set out to create a flexible equipment automation framework that handles much of the overhead associated with wafer processing. This allows OEMs to spend more time on perfecting their processing while still creating a first class application to drive the tool. The framework includes packages for performing recipe management, alarm management, user management, configuration management, message logging, scheduling, factory automation, user interface and material handling.

Data generated at any point on the tool from any of these packages can be quickly and easily accessed by any other module or external application. This is where Windows Communication Foundation (WCF) enters the picture. To paraphrase Reggie Jackson, WCF is the straw that stirs the drink. It allows access to all of the functionality provided in these packages. Cimetrix chose to use WCF for distributing the functionality contained in each of these packages. WCF is as easy as ABC. In order to use WCF services, we need three pieces of information: an Address, a Binding and a Contract (A, B, C).

Each of the packages listed above provides a service with functionality for clients to access. The functionality provided by the service is the contract. An address is where the service is located. A binding is how the client talks to the service (what protocol is used.) These three pieces of information are called an Endpoint. Once a client application knows the endpoint, it can access the vast array of functionality provided by the CIMControlFramework service packages.

Once an OEM taps into CIMControlFramework, they can focus their resources on process technology and product differentiation.

An excellent blog on WCF can be found here: http://blah.winsmarts.com/2008-4-What_is_WCF.aspx

You might also be interested in:

Topics: CIMControlFramework, Equipment Control-Software Products, Product Information, Equipment Automation Framework, Programming Tools, WCF

Subscribe to Email Updates

Follow Me

Learn More About the
SEMI Standards

SECS/GEM

GEM 300

Interface A/EDA

PV2 (PVECI)