The present invention relates in general to data processing systems, and in particular, to data processing systems for managing manufacturing equipment via the web.
Modern manufacturing facilities rely on highly automated tools to implement the manufacturing process. For example, semiconductor fabrication (“fab”) facilities incorporate highly automated tool sets for the processing of semiconductor wafers. Process control and monitoring is mediated through a set of software methods which may be invoked to implement the processes and monitoring to be performed. The control and monitoring software run on a tool server which may be coupled to the tools via a plurality of ports, each of which interfaces the tool server with a particular tool, in point-to-point fashion. Alternatively, the tools in the tool server may reside on a Local Area Network (LAN). To control the manufacturing process, a user must be able to communicate with the tool server, either via a user system resident on the LAN, or otherwise in communication with the tool server. In particular, remote access to the tool server for control and monitoring of the status of a tool, to the extent that it exists at all, requires the development of specialized code implemented on each platform for which remote access is to be provided. Thus, there is a need in the art for methods and apparatus for providing remote tool management capabilities. In particular, there is a need in the art for apparatus and methods for providing remote tool management without the necessity for developing specialized, platform dependent software.
The aforementioned needs are addressed by the present invention. Accordingly, there is provided, in a first form, a method of tool management. The method includes receiving a request over a network. A request type is determined from a predetermined portion of the request. In response to the request and the type of the request, a message is sent to the tool, which message is operable for controlling an operation of the tool.
There is also provided, in a second form, a data processing system. The system includes circuitry operable for receiving a request via a network. The system also includes circuitry operable for determining a type of the request using a predetermined field in a portion of the request, and circuitry operable for sending a message to a tool in response to the first request and the type of the request. The message is operable for controlling an action of the tool.
Additionally, there is provided, in a third form, a program product embodied in a tangible storage medium. The program contains programming for tool management and includes instructions for receiving a request over a network. A request type is determined from a predetermined portion of the request. Also included are instructions for sending a message to the tool in response to the request and the type of the request, which message is operable for controlling an operation of the tool.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
In the following description, numerous specific details are set forth such as specific word or byte lengths, etc. to provide a thorough understanding of the present invention. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In other instances, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail. For the most part, details concerning timing considerations and the like have been omitted in as much as such details are not necessary to obtain a complete understanding of the present invention and are within the skills of persons of ordinary skill in the relevant art.
Refer now to the drawings wherein depicted elements are not necessarily shown to scale and wherein like or similar elements are designated by the same reference numeral through the several views.
The present invention provides a mechanism for managing automated manufacturing tools and processes via an Internet worked data processing system. Remote interactions between a client and a processing tool are provided using standard Internet protocols and facilities. These may include the hypertext transfer protocol (HTTP), the hypertext markup language (HTML), and Extensible Markup Language (XML). The present invention enables users to interact with an automated tool using a standard web browser running on a client data processing system. The user may, for example, query and change the status and configuration of the automated tool, and command it to perform activities, such as in a semi-conductor fabrication environment, for example, to begin processing material. The present invention also allows users to interact with a station controller interfaced to the tool, querying and changing the configuration and status of the station controller, and instructing the controller to perform various activities, for example, performing a logging or reporting function. Additionally, the methods and apparatus of the present invention include web server functionality, obviating the need to configure and administer a separate web server.
Refer now to the drawings, wherein depicted elements are not necessarily shown to scale and wherein like or similar elements are designated by the same reference numeral through the several views.
Clients 112-115 are networked with server 110. Clients 112 and 113 are networked via LAN 122. Clients 114 and 115 are networked via the Internet. Clients 114 and 115 communicate via a facility having a presence on the Internet, here generically referred to as an Internet Service Provider (ISP) 118. Additionally, server 110 interfaces with the Internet via an ISP 118. Note that clients need not rely on a wired connection but may be a wireless device. Wireless clients could, for example, include a conventional personal computer and wireless modem or even a web capable cellular telephone. Each ISP 118 is coupled to Internet backbone 120. Alternatively, a manufacturing facility may itself have a presence on the Internet, and in such an alternative embodiment of the networking environment in
Additionally, server 110 is networked with tools 111 and provides tool management information thereto in response to the user input received via clients 112-115. In the exemplary embodiment of
Preferred implementations of the invention include implementations as a computer system programmed to execute the method or methods described herein, and as a computer program product. According to the computer system implementation, sets of instructions for executing the method or methods are resident in the random access memory 214 of one or more computer systems configured generally as described above. Until required by the computer system, the set of instructions may be stored as a computer program product in another computer memory, for example, in disk drive 220 (which may include a removable memory such as an optical disk or floppy disk for eventual use in the disk drive 220). Further, the computer program product can also be stored at another computer and transmitted when desired to the user's work station by a network or by an external network such as the Internet. One skilled in the art would appreciate that the physical storage of the sets of instructions physically changes the medium upon which it is stored so that the medium carries computer readable information. The change may be electrical, magnetic, chemical, biological, or some other physical change. While it is convenient to describe the invention in terms of instructions, symbols, characters, or the like, the reader should remember that all of these and similar terms should be associated with the appropriate physical elements.
Note that the invention may describe terms such as comparing, validating, selecting, identifying, or other terms that could be associated with a human operator. However, for at least a number of the operations described herein which form part of at least one of the embodiments, no action by a human operator is desirable. The operations described are, in large part, machine operations processing electrical signals to generate other electrical signals.
Refer now to
Upon arrival of an HTTP request, 312, it is then determined if the request is from an authorized user, step 314. A security server process for performing step 314 will be described in detail in conjunction with
If, in step 314, the user is valid, HTTP requests 312 is passed to a page server, step 316. The process by which a page server handles the HTTP request will be described in detail in conjunction with
In an embodiment of the present invention, the url-path of HTTP request 312 is used to determine the page server that will be invoked upon receiving the request, and specify the functions being requested and the object upon which the functions will be performed. A url-path, in accordance with the principles of the present invention may have the form: /dir0/dir1/dir2 . . . .
The “diri” values serve a similar function as directories do in a computer's local file system. The first directory, “dir0”, is used to determine which page server will be invoked in step 316 to service the HT′IP request. In other words, the particular value of “dir0” received in HTTP request 312 specifies the particular page server that will service the request. Page servers register themselves with methodology 300 during initialization. Initialization typically occurs when the program starts, usually a result of a static configuration read from a file or database. However, initialization may also occur, for example, in response to adding a new module to the equipment wherein the corresponding page server is configured and initialized dynamically. On registering, the page server provides the name of the directory the particular page server will “serve”. Additionally, a brief description is also provided that is used to generate a “home page” for the tool corresponding to the particular page server. The “home page” allows users to access the tool management facilities using a conventional web browser. This will be discussed further in conjunction with
The page server invoked in step 316 generates a reply to HTTP request 312. This will also be discussed further in conjunction with
Refer now to
In step 408 is determined if the user is known. If a cookie has been received, and the user name extracted in step 406 compares with one of the names in the list, or if the user name and password received via the login page presented in step 404 compare with an entry in the list maintained by the server, then step 408 proceeds by the yes branch to step 410. In step 410, if a cookie was not received in step 402, that is the user logon via the login page presented in step 404, the user's browser is requested to set a cookie of the same name as the tool in the HTTP request, in which the cookie contains the user's name. Subsequent HTTP request will then contain the cookie in the header, and in servicing that request, methodology 300,
In step 412 it is determined if a check activity option is active. The check activity option automatically logs out a user that has been inactive for a preselected interval of time. If, in step 412, activity checking is enabled, then, in step 414 it is determined if the user has had recent activity. That is, if the user has been active prior to the expiration of the preselected time interval for automatically logging out users. If the user has not been recently active, then access fails, and, in step 320,
If, however, in step 414 the user has generated activity within the preselected time interval, the contact time maintained in the server database is updated, step 416 and the current HTTP request is passed to the page servers, step 316,
Refer now to
In step 502 the HTTP request is inspected to determine the function to be performed. Because it is difficult to maintain accurate information about a client browser's session with an HTTP server, the functions that page server process 500 perform may only depend on the information passed in the HTTP request. The fields available in the HTTP request to store this information are, principally, are the URL, and the search (or query) field. In an embodiment of the present invention in accordance with page server process 500,
As previously described in conjunction with
The next field, “dir1” may contain the “name” or similar designator of the function that is being requested. Thus, the function may be determined, in such an embodiment, in step 502 by inspecting the field “dir1” in the url-path of the url in the HTTP request. Additionally, the field “dir2” may contain the name or other identifier of the object upon which the function will be performed. An object identifier may simply be an assigned number which might, in an embodiment of the present invention start at one, or other predetermined value, and consecutively number the objects. Alternatively, the “fully qualified” object name (analogous to a fully qualified path name) may be used to build a hash table with the key being the hash of the object name and the value a pointer to the object, and the key serves as the object identifier. It would be understood by an artisan of ordinary skill that such alternative embodiments are within the spirit and scope of the present invention. The remaining fields in the url-path portion of the URL in the HTTP request may include additional function-specific information. These will be described further below.
Refer now to
Each service object 568 includes attributes 570, methods 572 and events 574. Attributes, which are defined as a collection of attribute objects 576 that a collection of one or more attribute objects 576. Methods 572 include a plurality of method objects 578. Method objects 578 perform the functionality in the management of the physical tool. Method objects 578 include error objects 580 for error reporting, and, in the typical fashion, inputs 582 and 584, each of which is defined to be a collection of one or more data item objects 586. A data item object 586 may be an actual value of a variable or parameter. Events 574 constitute a collection of one or more event objects 588, each of which includes an output which is a collection of one or more data item objects 586. Examples of attributes, methods and events will be described hereinbelow.
The functions that the page server may perform include an information function, an editing function, an execution function, and an expanding function. (These may be denoted “INFO”, “EDIT”, “EXECUTE” and “EXPAND”.) Each of these will be discussed below.
The INFO function provides detailed information about the current attributes of a selected object. The INFO function is invoked, step 504, in response to a corresponding first predetermined value in field “dir1” representing the designator of the function being invoked. For example, the first predetermined value may be the string “Info” but other values would be used, as would be recognized by an artisan of ordinary skill. In response, INFO pages 506 containing the information about the attributes of the object (identified in field “dir2” of the URL) are returned to the client browser, step 508. Page server methodology then exits, step 510 by returning to step 321 of HTTP server process 300. At step 321, HTTP server process 300 waits for the send to complete, and then returns to step 302, for the next connect request.
This may be understood by referring to
Information about a tool object may be obtained by sending a corresponding HTTP request to HTTP server process 300,
Information about an object is obtained by sending an HTTP request to HTTP server methodology 300,
In response to the information HTTP request, as previously described, page server process 500 generates the corresponding web page containing the detailed information for the selected object.
Refer now to
An edit request may be an HTTP request 312 in which the value of “dir1” has the value “Edit” or other third predetermined value in forming page server process 500 that the EDIT service is to be performed. As previously described, field “dir2” contains an object identifier, in this instance, the identifier of the object whose attribute is to be modified. The value in the “dir3” field of the url-path of HTTP request 312 may identify the attribute field to be modified. In the exemplary attribute of
Because a tool object model that may be used with the present invention may be highly configurable, page server methodology 500 accommodates a variety of models configured for various tools and service combinations. In responding to an information request, as discussed above in conjunction with step 504, the response sent in step 508 passes to the client a few root objects. Other tool objects in the tool object model are accessed by exploring parent-child relationships from the root objects or the descendants thereof. Child information may be provided by page server methodology 500 in response to an HTTP request 312 having a fourth predetermined value for “dir1”. In an embodiment of the present invention, the fourth predetermined value of “dir1” may be the string “Extend” however other predetermined values may be used, as an artisan of ordinary skill would understand. If HTTP request 312 includes the fourth predetermined value for “dir1”, inspection step 502 passes the request to expand step 514 which generates and EXTEND model response 516. EXTEND model response 516 contains only the child object names and the relation to the parent object, identified by the object identifier in field “dir2” in the corresponding HTTP request 312. Additional details about a child object may be obtained by invoking information step 504 through an INFO request as described hereinabove.
Thus, for example, consider
In response, inspect function step 502 passes the corresponding HTTP request 312 to step 514 and EXTEND model page 516 generates display 808 illustrating in
Additionally, execution of tool object methods may be initiated via page server methodology 500. Refer now to
An artisan of ordinary skill would recognize that the principles of the present invention do not rely on the particular detailed information shown in exemplary INFO display 910, and it would be further recognized that alternative tool object models may include additional information in the corresponding display, or omit some of the detailed information included in exemplary display 910.
Additionally, display 910 includes execute method control 916. In the embodiment of
In response to the fourth predetermined value in the “dir1” field in the HTTP request, inspection step 502 passes the request to execute step 518. In step 518, page server process 500 invokes the method 520 corresponding to the objectID received in the EXECUTE request whereby a message is sent to the tool corresponding to the tool object in the HTTP request, such as HTTP request 312. The method implementation itself may be supplied by the tool manufacturer or other third party supplier. The tool object may be specified by an object identifier (ID) value in “dir2” field in the URL-path portion of the HTTP request. In an embodiment of the present invention, page server methodology 500 may identify the tool corresponding to the objectID via a table maintained on the data processing system executing page server methodology 500.
Method execution may be further understood by referring to
Messages may be sent to the tool using a standard communications protocol, for example, the Transmission Control Protocol/Internet Protocol (TCP/IP) via a local area network, such as LAN 124,
In an alternative embodiment, the server implementing page server process 500, such as server 101 in
Although the EXECUTE function has been described in the context of initiating processing, particular tool management protocol, such as the GEM standard, may provide a plurality of control and monitoring methods. An artisan of ordinary skill would recognize that these may also be invoked using an execute request with the corresponding object ID in the “dir2” field of the URL.
Additionally, a method, such as one or more of methods 520,
Furthermore, detailed information about messages (messages are objects) may be obtained by initiating an information HTTP request, as discussed hereinabove in conjunction with
The present invention also allows for user customization of methods associated with the tool objects. Returning to
If override process 1100 is being performed on an initialization, or if an override attribute of an object has been modified by the user, step 1112, the script source is parsed in step 1114. In an embodiment of the present invention, the scripting language may be VBScript (Visual Basic Scripting Edition, a scripting language developed by Microsoft Corporation). However, other scripting languages could be used, and would be within the spirit and scope of the present invention. In step 1116, it is determined if the script contains a method having a matching signature as a default method associated with the object. In an object oriented program paradigm, such as that used in the present invention, each method has a name, a return type (which specifies a type of a value returned by the method), and, optimally, a set of arguments. Taken together, these form the “signature” of the method. If, in step 1116, a matching signature is found, then the Boolean value “TRUE” is stored in the object override registry list opened in step 1110 in an entry corresponding to the overridden method. If, however, in step 1116, no matching signature is found, then the initial Boolean value of “FALSE” remains in the registry list entry, and signals that the default method has not been overridden. Override process 1110 then returns to step 1112 to determine if the override attribute is subsequently modified. Process 1100 loops until the override attribute is modified, or a reinitialization has occurred.
In this way, a user can customize methods that act on the tool objects without recompiling code. Additionally, the script source code does not need to be parsed each time a method is invoked. Returning to
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.
The present application is a continuation of U.S. application Ser. No. 14/091,317, filed Nov. 26, 2013, which is a continuation of U.S. application Ser. No. 11/340,101, filed Jan. 26, 2006, which is a continuation-in-part of U.S. application Ser. No. 09/496,009, filed Feb. 1, 2000, and a continuation-in-part of U.S. application Ser. No. 09/899,833, filed Jul. 5, 2001, and a continuation-in-part of U.S. application Ser. No. 11/107,508, filed Apr. 15, 2005, and claims priority to each of the following thirteen U.S. Provisional Application Ser. Nos. filed on Feb. 2, 2005: 60/649,207, 60/649,754, 60/649,755, 60/649,756, 60/649,757, 60/649,758, 60/649,759, 60/649,763, 60/649,764, 60/649,765, 60/649,768, 60/649,898, 60/650,441, all of the above applications herein incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
6112246 | Horbal | Aug 2000 | A |
6308212 | Besaw et al. | Oct 2001 | B1 |
6385497 | Ogushi | May 2002 | B1 |
6463352 | Tadokoro et al. | Oct 2002 | B1 |
6470227 | Rangachari et al. | Oct 2002 | B1 |
6810294 | Rangachari | Oct 2004 | B2 |
6838686 | Kataoka | Jan 2005 | B2 |
6892109 | Ogushi | May 2005 | B2 |
6944584 | Tenney et al. | Sep 2005 | B1 |
6976033 | Yang | Dec 2005 | B2 |
7079984 | Eryurek | Jul 2006 | B2 |
7085827 | Ishizaki | Aug 2006 | B2 |
7330768 | Scott | Feb 2008 | B2 |
7373501 | Arima | May 2008 | B2 |
7389204 | Eryurek | Jun 2008 | B2 |
7395126 | Decker | Jul 2008 | B2 |
7404207 | Perry | Jul 2008 | B2 |
7451004 | Thiele | Nov 2008 | B2 |
7493310 | Eryurek | Feb 2009 | B2 |
7698149 | Nishikawa | Apr 2010 | B2 |
8028049 | Ellis | Sep 2011 | B1 |
8121716 | Offenmuller | Feb 2012 | B2 |
8527314 | Nishikawa | Sep 2013 | B2 |
20020029086 | Ogushi | Mar 2002 | A1 |
20020097205 | Nakamura | Jul 2002 | A1 |
20030004601 | Baek et al. | Jan 2003 | A1 |
20030055933 | Ishizaki | Mar 2003 | A1 |
20030123943 | Hamada | Jul 2003 | A1 |
20030176940 | Rangachari | Sep 2003 | A1 |
20030195646 | Yang | Oct 2003 | A1 |
20030226010 | Arima | Dec 2003 | A1 |
20030229805 | Perry | Dec 2003 | A1 |
20040002841 | Mayuzumi | Jan 2004 | A1 |
20040071161 | Tahara | Apr 2004 | A1 |
20040111499 | Dobrowski | Jun 2004 | A1 |
20040148513 | Scott | Jul 2004 | A1 |
20040174510 | Kataoka | Sep 2004 | A1 |
20040204775 | Keyes | Oct 2004 | A1 |
20040230328 | Armstrong | Nov 2004 | A1 |
20040260408 | Scott | Dec 2004 | A1 |
20040260597 | Nishikawa | Dec 2004 | A1 |
20050027794 | Decker | Feb 2005 | A1 |
20050044204 | Nishikawa | Feb 2005 | A1 |
20050197803 | Eryurek | Sep 2005 | A1 |
20050197805 | Eryurek | Sep 2005 | A1 |
20050197806 | Eryurek | Sep 2005 | A1 |
20060007418 | Hamatani | Jan 2006 | A1 |
20060052891 | Ikeda | Mar 2006 | A1 |
20060095545 | Dreyer et al. | May 2006 | A1 |
20060285100 | Hamatani | Dec 2006 | A1 |
20070078529 | Thiele | Apr 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20150241862 A1 | Aug 2015 | US |
Number | Date | Country | |
---|---|---|---|
60649207 | Feb 2005 | US | |
60649754 | Feb 2005 | US | |
60649755 | Feb 2005 | US | |
60649756 | Feb 2005 | US | |
60649757 | Feb 2005 | US | |
60649758 | Feb 2005 | US | |
60649759 | Feb 2005 | US | |
60649763 | Feb 2005 | US | |
60649764 | Feb 2005 | US | |
60649765 | Feb 2005 | US | |
60649768 | Feb 2005 | US | |
60649898 | Feb 2005 | US | |
60650441 | Feb 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14091317 | Nov 2013 | US |
Child | 14708022 | US | |
Parent | 11340101 | Jan 2006 | US |
Child | 14091317 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 09496009 | Feb 2000 | US |
Child | 11340101 | US | |
Parent | 09899833 | Jul 2001 | US |
Child | 09496009 | US | |
Parent | 11107508 | Apr 2005 | US |
Child | 09899833 | US |