Abstract:
A graphical user interface for configuring a programmable integrated circuit is disclosed. More specifically, the graphical user interface may comprise a displayed graphical representation of the programmable integrated circuit, where the graphical representation includes one or more selectable portions which may represent actual circuitry or components of the programmable integrated circuit. A user-selectable list box may be displayed which comprises one or more selectable items for configuring a selected portion of the graphical representation of the programmable integrated circuit. The user-selectable list box may be displayed in response to a selection of a selectable portion of the programmable integrated circuit for configuration. Additionally, the user-selectable list box may disappear or no longer be displayed in response to a user interaction outside the user-selectable list box, in response to a selection of an item from the user-selectable list box, etc.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to the field of graphical user interfaces (GUI). Specifically, embodiments relate to a graphical user interface that may be used in one implementation to facilitate the configuration of parameters associated with design elements in a highly complex programmable logical device such as a microcontroller software design tool. 
     2. Related Art 
     Application-specific integrated circuits (ASICs), have been supplanted more and more by integrated circuits (ICs) that can be programmed to fulfill multiple functions. There are now many various programmable logic architectures, including, for example, programmable logic devices (“PLDs”), programmable logic arrays (“PLAs”), complex programmable logic devices (“CPLDs”), etc. Although there are differences between these various architectures, each of the architectures typically includes a set of input conductors coupled as inputs to an array of logic gates (e.g., a product term array made up of logical AND gates), the outputs of which, in turn, act as inputs to another portion of the logic device. Complex Programmable Logic Devices (“CPLDs”) are large scale PLDs that, like many programmable architectures, are configured to the specific requirements of an application by programming. 
     Each of these architectures, originally programmed once for a specific function which would be a device&#39;s only function for its lifetime, has begun to be implemented in a reprogrammable form. A programmable logic device can now be re-programmed while in operation and can fulfill the functions of many different devices. One of the most complex of the reprogrammable logic devices is the programmable system-on-a-chip, or PSOC, which can be implemented as any of a limitless number of devices, anywhere from simple logic gates to those as complex as microcontrollers. 
     The complexity of a programmable device, particularly a PSOC, requires complex programming of each of its configurations which can be stored. In many instances, each stored configuration reprogramming can be accomplished “on the fly” by applying the stored configuration to the device. 
     Initial programming of a highly complex device, though, can be extremely tedious and time consuming. Numerous tools have been developed to aid the programmer in forming each configuration necessary for each device. However, even with current configuration tools, a programmer is required to manually track innumerable lines of programming and device characteristics in order to properly establish a complex device configuration. Most particularly, the configuration of a device&#39;s input/output pins that have different characteristics with every different device configuration requires meticulous attention to detail. Moreover, these pin characteristics, crucial for proper device operation, must relate properly to the device configuration and to external circuitry. 
     Currently, the programming tool sophistication requires a very burdensome level of expertise on the part of the programmer, which can limit the market of users of these complex programmable devices. Various graphical user interfaces are being developed to provide a more user-friendly method of configuring electronic devices. 
     One tool that exists for aiding the programmer utilizing graphical user interfaces is a dialogue box that may be selected from a menu or other selection icon. The dialogue box then pops up on the screen and typically occupies the center of the screen from which one is working. It contains instructions or a list of items under which are buttons for choosing parameters from the box or for canceling the operation. The dialogue box typically has one or more user interface elements which may or may not contain the complete list of choices needed for the operation being performed, due to limitations in the layout of the dialogue box. The box might require a second level of choices to complete the required operation. 
     Additionally, a dialogue box obscures a large amount of the display screen that contains the information the user is referencing when selecting items from the dialogue box. The dialogue box then remains on the screen, once an item is chosen, until the user activates a button to perform the operation or to cancel it. 
     Importantly, the user is not allowed to click on the remaining screen area while the dialogue box is open. Therefore, any other functions that the user may want to select or perform are blocked while the dialogue box is open. Moreover, if the user does not want to make any selections from the dialogue box, the cancel button must be selected by the user before any other function of the software can be performed. Thus, the dialogue box is cumbersome as a tool, and requires excess time for selecting choices and performing operations for which it is designed and it blocks the application of other functions and procedures while it is open. 
     A need exists, therefore, for a user-friendly method or mechanism for selecting operations via a graphical user interface. Particularly for a graphical user interface used for programming highly complex programmable devices, such as PSOCs, and particularly for configuring I/O pins different for each programmed device configuration. Furthermore, such a method should be much more user-friendly than currently available, enabling a user of normal skills to configure enormously complex programmable devices with multiple configurations. 
     SUMMARY OF THE INVENTION 
     Disclosed herein are a user-friendly method and mechanism for selecting operations via a user-selectable list-box in a computer controlled graphical user interface. Particularly for a graphical user interface used for programming highly complex programmable devices, such as PSOCs, and particularly for configuring I/O pins different for each programmed device configuration. Furthermore, this mechanism and method are much more user-friendly than currently available, enabling a user of normal skills to more easily configure enormously complex programmable devices with multiple configurations, using fewer mouse clicks and key strokes. 
     Embodiments of the present invention relate to a method and mechanism that may be used, in one implementation, for configuring input/output connections in a programmable logical device, which comprise utilizing a user-selectable list-box, presented in a graphical user interface, enabled to aid in configuring the programmable logical device. The pins or other items to be configured can be selected from either a graphical representation or a parameter table. Once a selection is made by activating the cursor on the display screen at the location of the device or item to be configured, a user-selectable list-box is displayed on the screen near the location occupied by the cursor. 
     Importantly, the user-selectable list-box contains a list of configuration parameters for the device or item selected and the list-box is sized to accommodate the associated list. By being sized to accommodate only necessary information, a minimum amount of the display screen is obscured, thereby allowing the user to still view a large portion of the screen. A user selects a parameter from the list-box by moving the cursor to the parameter of choice. The parameter is then highlighted and when the user double clicks the mouse, presses the return key on the keyboard or otherwise makes a selection, the parameter becomes selected and the device is configured accordingly. The list box then automatically disappears from the screen and the next item can be selected for configuration. Moreover, in accordance with the present invention, if the user does not wish to configure the selected item after the list-box appears, the user needs only to click the mouse button with the cursor outside the list-box and the list-bow will disappear from the screen. Thus, there is no need for “select” and “cancel” buttons or for extra spaces to accommodate longest possible lists, as is the case with dialogue boxes. By automatically removing the list-box upon a user selection (inside or outside the box), the number of user mouse clicks or key strokes required to perform programming tasks is reduced. 
     More specifically, an embodiment of the present invention comprises a user interface comprising: a plurality of on-screen elements displayed on a display screen of a computer system; and a user selectable list-box displayed adjacent to, and in response to, a selected on-screen element, wherein the user selectable list-box comprises a plurality of items relevant to the selected on-screen element and the user selectable list-box automatically disappears in response to the user making an on-screen selection outside the list-box. Embodiments include the above and wherein the list-box is sized to only accommodate the plurality of items. 
     Embodiments include the above and wherein the selected on-screen element is selected via a cursor control device or via a keyboard device. Embodiments include the above and the plurality of on-screen elements comprise a graphical representation of a device or comprise information displayed in a tabular format. 
     Embodiments include the above and wherein a selected item of the plurality of items becomes associated with the selected on-screen element and wherein the user selectable list-box automatically disappears in response to a user selecting the selected item. 
     The present invention provides these advantages and others not specifically mentioned above but described in the sections to follow. Other features and advantages of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention: 
         FIG. 1  is a block diagram of an exemplary computer system upon which embodiments of the present invention may be practiced. 
         FIG. 2  is an exemplary screen shot of a display window of a graphical user interface illustrating a user-selectable list-box for configuring I/O pins in a programmable logical device, according to an embodiment of the present invention. 
         FIG. 3  is an exemplary screen shot of a display window of a graphical user interface illustrating a user-selectable list-box for selecting pin connections for a programmable logical device, according to an embodiment of the present invention. 
         FIG. 4  is a computer implemented flow diagram illustrating steps performed by the graphical user interface list-box in accordance with an embodiment of the present invention. 
         FIG. 5  is a flow diagram of a process for employing a user-selectable list-box for configuring I/O pins in a programmable logical device, according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be recognized by one skilled in the art that the present invention may be practiced without these specific details or with equivalents thereof. In other instances, well-known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention. 
     Notation and Nomenclature 
     Some portions of the detailed descriptions, which follow, are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits that can be performed on computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer executed step, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing the following terms refer to the actions and processes of a computer system or similar electronic computing device. These devices manipulate and transform data that is represented as physical (electronic) quantities within the computer system&#39;s registers and memories or other such information storage, transmission or display devices. The aforementioned terms include, but are not limited to, “selecting” or “initiating” or “clicking” or “double-clicking” or “identifying” or “comparing” or “sorting” or “establishing” or “displaying” or the like. 
     The configuration of programmable devices has been difficult from the inception of such devices. Multifunction input/output (I/O) pins, especially, have been very difficult to configure in the past. I/O pins are the connection of a device to its environment, the outside electronic world. Typically, I/O pins had multiple registers that needed to be programmed to configure the pin type as well as drive characteristics for each I/O pin. These registers are often tedious to manually program and debug. Laborious and tedious hours or weeks wasted is common in programming and debugging the I/O pin configuration for a single design using a conventional system. 
     The particular embodiment of the present invention discussed here employs a portion of a graphical user interface (GUI) to facilitate the configuration of I/O pins in a microcontroller software design tool. Note that a microcontroller is one of many different possible configurations for a PSOC. Other configurations of PSOCs and, indeed, other types of programmable devices could be equally benefited by use of the concepts employed in this embodiment. It should also be noted that the GUI employed in one implementation is one developed for configuring PSOCs but other GUIs could also incorporate this embodiment of the present invention. 
     The GUI referred to in this discussion of this embodiment of the present invention presents a number of window frames that contain various design tools. One of these tools of specific interest to this discussion of this embodiment of the present invention is the I/O pin configuration tool. While actual programming of the device and the I/O pins takes place elsewhere, the GUI provides the user-friendliness and detail management necessary to an efficient programming operation. 
     Exemplary Computer System 
     It is envisioned that the embodiment of the present invention discussed herein will be implemented in a general purpose computer similar to the generic computer illustrated in  FIG. 1 .  FIG. 1  illustrates, in block diagram, a configuration typical to a computer system. In general, computer system  190  comprises bus  100  for communicating information, processor  101  coupled with bus  100  for processing information and instructions, random access (volatile) memory (RAM)  102  coupled with bus  100  for storing information and instructions for processor  101 , read-only (non-volatile) memory (ROM)  103  coupled with bus  100  for storing static information and instructions for processor  101 , data storage device  104  such as a magnetic or optical disk and disk drive coupled with bus  100  for storing information and instructions, an optional user output device such as display device  105  coupled to bus  100  for displaying information to the computer user, an optional user input device such as alphanumeric input device  106  including alphanumeric and function keys coupled to bus  100  for communicating information and command selections to processor  101 , and an optional user input device such as cursor control device  107  coupled to bus  100  for communicating user input information and command selections to processor  101 . 
     With reference still to  FIG. 1 , display device  105  utilized with computer system  190  may be a liquid crystal device, cathode ray tube, or other display device suitable for creating graphic images and alphanumeric characters recognizable to the user. Cursor control device  107  allows the computer user to dynamically signal the two-dimensional movement of a visible symbol (pointer) on a display screen of display device  105 . Many implementations of the cursor control device are known in the art including a trackball, mouse, joystick or special keys on alphanumeric input device  106  capable of signaling movement of a given direction or manner of displacement. It is to be appreciated that the cursor control  107  also may be directed and/or activated via input from the keyboard using special keys and key sequence commands. Alternatively, the cursor may be directed and/or activated via input from a number of specially adapted cursor directing devices. 
     Computer system  190  also includes an input/output device  108 , which is coupled to bus  100  for providing a physical communication link between computer system  190  and a network  170 . As such, input/output device  108  enables central processor unit  101  to communicate with other electronic systems coupled to the network  170 . It should be appreciated that within the present embodiment, input/output device  108  provides the functionality to transmit and receive information over a wired as well as a wireless communication interface (such as an IEEE 802.11b interface). It should be further appreciated that the present embodiment of input/output device  108  is well suited to be implemented in a wide variety of ways. For example, input/output device  108  could be implemented as a modem or network card. 
     The embodiment of the present invention discussed herein features the use of a graphical information window in a graphical user interface (GUI) presented in a graphic display. The term “graphical information,” as used in this discussion, may include both icons and text. While the particular portion of the graphic display envisioned as the pin configuration window is, in this embodiment, a particular area in the overall graphic display, other embodiments could use a different area of the display. 
     An important enablement of a GUI is the ability to accept commands related to graphic information in the display. Such commands are generally input by “mouse-click” or by some equivalent keyboard action. A mouse-click refers to any selection method that involves deliberate action on the part of the user specifically related to the position of a cursor in the GUI display, usually involving the user depressing a button on a cursor control mouse. A mouse click can also be implemented by any other means related to cursor control including cursor control by keyboard buttons. 
     One possible implementation of a GUI as referred to in this discussion of one embodiment of the present invention is illustrated as a screen shot of a display window  200  in  FIG. 2 . There, the GUI is configured for a specific operating system or OS. While such an existing operating system is quite common, this discussion in no way should be taken as to imply that use of the above operating system is integral to the concepts presented herein. Any other operating system capable of presenting a graphical user interface is equally capable of implementing similar embodiments. 
     The display window  200  shown in  FIG. 2  comprises a number of sub-windows or frames within the graphical information area. The portions of the display  200  of  FIG. 2  that are specific to this embodiment of the present invention are the pop-up user-selectable list-box  250 , Pin Parameter table  230 , pin-out graphical representation  220 , pin  240 , and legend  260 . These and similar sub-windows are likely to be associated with this embodiment or others that employ a user-selectable list box to aid the configuration of any programmable logic device. 
     It must be noted here that the names associated with the indicated tables, windows, icons and displays are given as an indicator of the associated functions. The names are not intended to limit the functionality of any portion of any of the presented illustrations nor are any of the various elements of a GUI expected to be limited to or by any particular naming. Furthermore, the illustrated arrangement of windows in the GUI and of elements in each window are not intended to limit possible display design, arrangements, colors, shapes, patterns or any other graphic constituent to any particular item. It is the concepts presented in this embodiment of the present invention that are intended to be discussed and described here. 
     Referring still to  FIG. 2 , according to one embodiment of the present invention, the pop-up user-selectable list-box  250  appears within the display window  200  from which a pin image, such as pin image  240 , is selected for configuration. The pin image  240  is selected by placing the cursor at its location within the display window  200  and clicking the mouse button or other keyboard action. Pin image  240  could be selected either from the Pin Parameter Table  230  or from the graphical representation  220 , as shown. The pop-up list-box  250  then automatically appears immediately within display window  200  near the selected pin. If the selection were from the Pin Parameter Table  230 , the pop-up list-box  250  would appear on or near the listed parameter in Table  230 . 
     According to one embodiment of the present invention, pop-up list-box  250  in  FIG. 2  includes configuration parameters that are configurable for the selected pin  240  or other selected component. The pop-up list-box  250  is of a size to accommodate the applicable list of configuration parameters and, thus occupies a minimum amount of space within the display window  200 . If the pop-up list-box  250  is displayed but not needed, the user can remove it from the screen by clicking the mouse with the cursor placed anywhere outside of the list-box  250 . The list-box  250  then automatically disappears. 
     Referring still to  FIG. 2 , to select a parameter from the list within list-box  250 , according to one embodiment, the user moves the cursor to the location within list-box  250  of the desired parameter and the parameter is highlighted, e.g., “StdCPU”. To apply the parameter to the selected pin  240 , the user double-clicks the mouse or presses “enter” on the keyboard. The selected pin  240  is then configured accordingly and the graphical representation of pin  240  may assume a color or other visual attribute defined for the configuration parameter according to legend  260 . In this example, the pin selection type is defined. The pin&#39;s drive type may similarly be selected using a pop-up list-box mechanism in accordance with the present invention. 
     Referring now to  FIG. 3 , an exemplary screen shot of a display window  300  for configuring pin connections, according to one embodiment of the present invention, is presented.  FIG. 3  illustrates user-selectable list-box  250  for configuring a pin input  310  to be connected to a programmable logical device. User selectable list-box  250  contains a list of ports to which the pin input  310  could be connected. The list-box  250  occupies the room necessary to display the list and is shown in the location where it appears within display  300  when pin input  310  is selected by the user. The highlighted entry, “port — 0 — 4,” is selected by double clicking or depresseng the keyboard key. 
     Referring now to  FIG. 4 , a computer implemented flow diagram illustrating steps performed by the graphical user interface list-box, in accordance with one embodiment of the present invention, is presented. According to step  410 , a user selects an on-screen configuration or a parameter for entering or updating. The selection is made by a click of a mouse button, a keystroke on a keyboard or some other means. Once the selection is made, a list-box automatically appears on the screen near the location of the selected configuration or parameter, as shown by step  420 , with an appropriate list of allowable selections for the selected configuration or parameter. 
     Still referring to  FIG. 4 , as shown in step  430 , the user can select an item from the list by an operation of a mouse or keyboard with the cursor placed on the desirable selection in the list. Once a selection is made, the configuration or parameter may be accepted per step  460  and the list-box automatically disappears from the screen as shown in step  470 . Alternatively, the user may place the cursor outside the list-box and click or press a keyboard key, as shown in step  450 , in which case the list-box automatically disappears from the screen as in step  470 . 
       FIG. 5  is a flow diagram of a computer-implemented process for employing a user-selectable list-box for configuring I/O pins in a programmable logical device, according to one embodiment of the present invention. As shown in step  510 , a pin-out view (such as illustrated in  FIG. 2 ) is selected from the device editor of a graphical user interface. A pin image is then selected by placing the cursor on the graphical representation of the pin and single-clicking the mouse button, as shown in step  520 . In another embodiment, the pin could be selected by single-clicking the mouse button on the pin in the Pin Parameter Table of the display. 
     As soon as the pin is selected, according to the present embodiment, a list box appears in the display, as shown in step  530  of  FIG. 5 . The list box appears (pops up) at a location near the selected pin, thus requiring a minimum amount of mouse movement to access the list-box. The list-box contains a list of applicable configuration parameters for the pin to be configured. The list box is sized according to the area required for the list of applicable parameters. 
     Still referring to  FIG. 5 , according to the present embodiment, the user can click outside the list-box, as shown in step  535 , and the list-box automatically disappears per step  540 . Alternatively, a parameter can now be selected by moving the cursor onto the desired parameter in the list and double clicking the mouse button as illustrated in step  545 . Once a parameter is chosen, the list box disappears from the screen per step  550 , and the pin is configured according to the selected parameter. As shown in step  560 , the graphical representation of the pin may assume a predefined color that is associated with the selected parameter according to a legend that is displayed on the display screen. The pin configuration process can be repeated until all pins are configured according to design. 
     The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.