1. Field of the Invention
The present invention generally relates to application programming interfaces (APIs) and, more particularly, to methods for generating test system API function calls using a graphical user interface (GUI).
2. Description of the Related Art
A user of a test system, when testing a semiconductor device in the test system, needs to provide test data and specify operating instructions to the test system. The user does this by writing a test program that calls API functions provided by the test system software. The API is usually presented to the user in the same programming language as the test system software, e.g., C, C++, or Java. The API also inherits the programming style and data structures of the test system software. Therefore, the API is often quite complex, considering the challenging tasks the test system software needs to handle.
To make test systems more user-friendly, test system vendors typically provide a GUI, with which the user can view and edit test data to run and debug tests interactively. Because of the high-level of abstraction, the GUI is often quicker to learn and easier to use. In particular, design engineers rely heavily on the GUI provided by engineering validation test systems. For first silicon debug or device failure analysis, an easy-to-use interactive environment is helpful for the design engineer to engage in a “what-if” analysis by changing operating conditions and observing the effects in real time. However, as device complexity has increased, the GUI alone may no longer be sufficient. Often, the device response shown in the GUI is transferred into the design simulation environment for interpretation. For such tasks, knowledge of API programming is required.
The Vanguard™ test system, manufactured and sold by Credence Systems Corporation, provides a GUI with which design engineers, who are not proficient in API programming, can select and customize API function calls. Details of the GUI-based API implemented in the Vanguard™ test system is provided in the document authored by Ziyang Lu, entitled “GUI Based Tester API for the Vanguard Tester,” the entire contents of which are incorporated by reference herein.
Embodiments of the present invention improve on the GUI-based API implemented in the Vanguard™ test system, and are applicable to any type of test system or tester platform. The GUI-based API according to embodiments of the present invention provides one or more of the following additional features: dynamic implementation, adjusted context, optional parameters, complete implementation, and multiple languages.
Dynamic implementation. The API information to be presented to the user for selection, e.g., available API functions and available test system resources, is generated at runtime based on the actual test system configuration. This feature is useful in test system architectures that have plug-and-play capabilities, such as the Sapphire® test system manufactured and sold by Credence System Corporation, because the configurations of such test systems can easily change and are often different depending on the device being tested.
Adjusted context. The context of an API function is adjusted as parameter values are selected by the user, so that when the user is selecting values for other parameters of the same API function, the parameter values that are not applicable to the adjusted context are not presented to the user for selection.
Optional parameters. Some API functions include parameters that have a main parameter and optional parameters. For such API functions, input interfaces for specifying the values for the optional parameters are presented to the user.
Complete implementation. Every parameter of an API function is processed, so that when the last parameter is processed, an appropriate end of function signature can be inserted automatically.
Multiple languages. API programming code can be generated in one of several different programming languages, such as Perl, Python, Verilog, VHDL, and Matlab, as selected by the user.
So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
FIGS. 5A-E are sample GUIs that are presented to the user during composition of an API function call;
FIGS. 9A-D are sample GUIs showing how the selection of a particular pin levels setting determines what pins are made available for selection;
FIGS. 10A-C are sample GUIs showing how the selection of a pattern type determines what input fields are activated for inputs;
FIGS. 11A-C are sample GUIs showing input interfaces for a main parameter and optional parameters; and
As shown in
The client C library makes the API available in multiple languages by linking the C library with the target language's executable. Once linked, the API functions can be called in the target language's native format. This approach can be applied to all languages capable of C extensions including the ones shown in Table 1.
The GUI-based API maps certain test system API functions that are part of the API 101 to GUI elements including windows, spreadsheets, and dialogs. Table 2 below shows the mapping of the more commonly used test system API functions.
The GUI-based API employs a code generator, LiteGen [source info], to produce much of the low-level details of the code. For each API function, LiteGen would read its declaration and generate: (i) code to handle client-server messaging; (ii) code to add glue logic for embedding the API in various languages; and (iii) code to interface with the test system software. Using LiteGen frees up time and resources to ensure the quality of the GUI-based API implementation. For example, dynamic type checking may be implemented, such that, at run time every function parameter is verified before the test system software performs the required operation.
The GUI-based API also includes an integrated, interactive API editor, using which the user can generate API function calls. The API editor is implemented as part of the client process 161 and functions like a typical text editor, except that it is connected to the test system 100. While the user is typing, the API editor communicates with the test system 100, in particular the API generator, to fetch relevant API information, e.g., available API functions and/or available test system resources, which in turn is presented to the user in pop-up lists or dialogs. The API generator is implemented as part of the server process 103 to accept queries from the API editor. For each query, the API generator will check the states and/or configuration of the test system 100, and generate responses to the query (e.g., find and transmit available API functions and/or available test system resources).
When the user types in $ims→, the API editor, which is keeping track of the typing, sends a query to the API generator to fetch all the API function names supported by the current test system configuration (Step 311), and pops up a list for the user to choose from (Step 312). A sample list is illustrated in
The user then presses the TAB key. The API editor understands from the TAB key input that the user is about to set a value for the first parameter, so its sends a query to the API generator for the next parameter (Step 314). The API generator knows that the first parameter of the API function set_levels, has a list of possible values associated therewith (Step 315), so it fetches the list of possible values and transmits the list to the API editor, which prompts the user to select from one of the values (Step 316). The list is illustrated in
The GUI-based API processes each and every parameter of the API functions that it supports. Therefore, the GUI-based API is able to determine when the API function call is complete (Step 318), and automatically inserts an end of function signature when all parameters of the function have been defined (Step 319). If the last parameter has not been processed and the user presses the TAB key again, the API editor understands from the TAB key input that the user is about to set a value for the next parameter, so its sends a query to the API generator for the next parameter (return to Step 314). The API generator determines that the next (second) parameter of the API function, set_levels, has to be a DUT pin/group name (Step 315), so it fetches a list of all DUT pin/group names available in the current test system configuration to which the selected first parameter value (VIL) is applicable and transmits the list to the API editor, which prompts the user to select from one of the values (Step 316). The list is illustrated in
The API generator knows that the API function, set_levels, has three parameters and so the process flow continues on to Step 314. When the user presses the TAB key again, the API editor understands from the TAB key input that the user is about to set a value for the next parameter, so its sends a query to the API generator for the next parameter (Step 314). The API generator determines that no information is available for the next (third) parameter (Step 315) and communicates this to the API editor. In response, the API editor pops up a text input window prompting the user to input a value for the next parameter (Step 320). The text input window is illustrated in
Values for all three parameters of the API function, set_levels, have now been defined (Step 318), and so the API editor inserts the end of function signature automatically (for Perl, the character string ‘);’ indicates end of function) to complete the generation of the API function call (Step 319).
The GUI-based API processes each parameter of a selected API function the following way. For parameters with a list of valid choices, it will present the list to the user for selection. For parameters of arbitrary value, it will pop up a text input window for user input. As a consequence, the API editor turns API programming into an interactive process with context sensitive help. This eliminates the need for extensive training. Moreover, the API editor performs API queries automatically without user intervention.
The GUI-based API is also dynamic and so it generates certain API information at runtime based on the actual test system configuration. As a result, API functions that are not supported by the current test system configuration are not presented to the user.
In addition, the GUI-based API checks the test system configuration for available test system resources and communicates a list of supported test system resources back to the user. For example, to connect a device pin to a test system channel on the DIB (Device Interface Board), the user would use the set_fixture function. When this function is accessed, the GUI-based API checks the module locations in the test system, and communicates a list of valid (supported) DIB resources to the user, as shown in
The GUI-based API is also able to dynamically adjust the context of the API function as the parameter values are being set and present a list of valid parameter value choices based on the dynamically adjusted context. FIGS. 9A-D provide two examples. In
FIGS. 10A-C illustrate an input interface for the API function, pattern_generate, and provide another example of dynamically adjusted context. In
Some API functions, such as pattern_generate, include parameters that have a main parameter and optional parameters. The GUI-based API provides input interfaces for specifying the values for both the main parameter and the optional parameters. For example, for the API function, pattern_generate (type, pin, range, subtype), when the user specifies “Seed” as the pattern type, the GUI-based API provides a list of pattern segments to be selected as the value for the main parameter, “range,” as shown in
In an alternative embodiment of the present invention, the API function, set_levels, can also be called using the “Levels” window shown in
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.