A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to processing systems, and more particularly, to designing a processing system using a graphical user interface (GUI).
Semiconductor processing systems having processing devices are widely used in modem products, such as automobiles, cell phones, kitchen appliances, and video gaming devices, etc. to perform a variety of complex functions. For instance, programmable devices, such as microcontrollers, field programmable gate array (FPGA), and programmable logic devices (PLDs), are commonly used to provide this variety in an economical manner.
Conventionally, designing a processing system using a general-purpose processing device typically involves a programmer familiar with both the application or product in which the processing system is to be used, and the capacity and limitations of the processing system. In general, the design sequence involves determining the requirements of the application, programming a solution using the processing device based upon what is known of the system's requirements, and adding to, deleting from, or completely re-writing processing device code (also referred to as embedded firmware) for the processing device as the system requirements change. Thus, many typical implementations, which begin simply with an ‘if-then-else’ code statement, or a case structure, generally grow organically to an unwieldy, hard-to-understand, hard-to-verify, and unmaintainable implementation.
For example, one commonly used technique for defining or mapping output behavior for a processing system uses truth tables. However, there are many possible firmware implementations of a truth table, depending upon a programmer's skills in framing the system problem as well as technical coding skills.
Yet another problem in designing or configuring processing systems arises from the need to convert variable and continuous input signals to a number of discrete values, each having one or more setpoints or threshold values and select hysteresis associated therewith. In a typical sensing and control system, input devices usually produce a continuous range of values, but the system has to act discretely, or operate in one of a discrete set of states. Furthermore, the required hysteresis has to be explicitly specified and treated as additional thresholds. According to one conventional approach to convert an input from continuous to discrete, a user first selects the actual threshold values and hysteresis required for a particular continuous input (such as writing down or capturing the continuous input). Then the user writes embedded firmware to choose an input and to compare the chosen input to one or more thresholds, applying hysteresis as defined.
Moreover, to change the values of the thresholds, the user has to update elements of the embedded firmware (e.g., constants, variables). Alternatively, a communication interface and/or protocol with more firmware is employed to interpret commands and modify thresholds.
The present invention will be understood more fully from the detailed description that follows and from the accompanying drawings, which however, should not be taken to limit the appended claims to the specific embodiments shown, but are for explanation and understanding only.
In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure the understanding of this description.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification do not necessarily all refer to the same embodiment. The term “coupled” as used herein may mean either directly coupled or indirectly coupled through one or more intervening components.
In one embodiment, a user is allowed to define a transfer function via a graphical user interface (GUI). Then the transfer function may be submitted to a processing device maker associated with a processing device. Based on the transfer function submitted, the processing device maker may generate processing device code without intervention by the user. The processing device code, when executed by the processing device, is configured to cause the processing device to perform the transfer function.
The processing device may include one or more general-purpose processing devices, such as a microprocessor or central processing unit, a network processor, a microcontroller, an embedded programmable logic device (PLD), or the like. Alternatively, the processing device may include one or more special-purpose processing devices, such as a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or the like. The processing device may also include any combination of a general-purpose processing device and a special-purpose processing device.
In one embodiment, the processing device maker 120 includes an application and a framework of services that enables or services the X maker application 100, such as a fan controller maker. The X maker application 100 in turn allows the users 101 to create a processing device-based application without directly interfacing with the processing device designer engine 130 or writing any processing device code. During operation, the GUI 110 may call the processing device maker 120. In response to the call, the processing device maker 120 may call the processing device designer engine 130 via a command interface. In one embodiment, the processing device maker 120 takes the user's selections from the GUI 110 to define a transfer function, generates processing device code to implement the transfer function defined, inputs the processing device code into the processing device designer engine 130 to generate a ROM image 140. The processing device maker 120 may further support simulation of the user's selections and the transfer function to allow intuitive application design and validation to a large degree without a hardware platform.
In one embodiment, the processing device maker 120 is designed on a standard Windows/Personal Computer (PC) platform using web-based technologies (e.g., HTML, JavaScript, etc.). Alternatively, other platforms may be used, for example, UNIX-based platform, Mac-based platform, etc. In general, the X maker application 100 development may be platform specific, as long as the functionality developed does not preclude ultimate transfer to a web-based technology platform.
In one embodiment, the resulting processing device code supports a standard Inter-Integrated Circuits (I2C) register/command interface. The processing device code may further enable the users 101 to shape the details of the I2C register/command interface. The processing device code may also protect its control portion from improper and/or inadvertent actions by the users 101 without restricting the users 101 unduly.
Initially, processing logic for process 200 allows a user to define a transfer function via a GUI (processing block 211). The GUI may be generated in a variety of ways, such as using HTML, JavaScript, etc. The GUI may include various user interface control (e.g., buttons, input fields, drop-down menus, etc.) to allow the user to input values of parameters, to modify values of the parameters, and/or to select one or more object from a predetermined group of objects. Processing logic for process 200 may allow the user to select a type of transfer function from a variety of transfer function types. In one embodiment, the transfer function types include a truth table transfer function for mapping specific output actions and/or output states to permutations of discrete inputs. In another embodiment, the transfer function types include a setpoint transfer function to convert a continuous input signal to a number of discrete values, each with selectable hysteresis. Then processing logic for process 200 may allow the user to provide a number of inputs to the transfer function and to assign an output state to each combination of the inputs. After the transfer function is defined, processing logic for process 200 may validate the transfer function (processing block 213). If the transfer function is determined to be invalid, processing logic may output an error message to the user.
In some embodiments, processing logic for process 200 submits the transfer function to a processing device maker 120 associated with the processing device to generate processing device code (processing block 215). In some embodiments, processing logic for process 200 simulates the transfer function without running the processing device (processing block 217). Such simulation makes it easier for the user to test the transfer function defined and provides faster turn-around because the processing device is not run in simulation. Then processing logic for process 200 inputs the processing device code to a processing device designer engine to generate a read-only memory (ROM) image (processing block 219). The ROM image is generated based on the processing device code, which includes instructions to the processing device. Finally, processing logic for process 200 may load the ROM image into the processing device to enable the processing device to perform the transfer function (processing block 220). In some embodiments, the ROM image is loaded into the processing device using a programmer with the processing device mounted on the targeted hardware of the processing system. Once the ROM image is loaded into the processing device. The processing device may read the ROM image in whole or in parts to retrieve the instructions. In response to the instructions, the processing device may perform the transfer function defined by the user.
Processing logic for process 225 generates a GUI (processing block 230). The GUI may include various user interface control (e.g., buttons, input fields, drop-down menus, etc.). The user interface control allows a user to input parameters, to modify values of the parameters, and/or to select one or more objects from a group of predetermined objects. Processing logic for process 225 allows the user to modify a transfer function via the GUI (processing block 233). The transfer function may have been defined earlier by some embodiments of the process discussed above with reference to
In one embodiment, the user drags a permutation tile to the desired output state column to select which combination of input values set the output to which state. For instance, the permutation tile R0327 is dragged to the column OFF(1) 329 in
After defining the transfer function in the truth table 330, the transfer function may be input to a processing device designer engine to generate processing device code (also referred to as embedded firmware). As the transfer function defined is put into a predetermined pattern (e.g., a truth table), processing device code may be generated in a predetermined way based on the predetermined pattern. For example, processing device code using a lookup table may be used to implement a truth table transfer function. The processing device code may be loaded into the processing device. In response to the processing device code, the processing device may perform the truth table transfer function by evaluating the inputs to determine the permutation of the inputs and executing a table lookup to find the corresponding output state. In some embodiments, the processing device executes the processing device code to take the discrete inputs, call the truth table transfer function, take the result of the transfer function call, and set the output to the new state.
In one embodiment, the behavior of the number of specific output actions for permutations of possible values of the number of discrete inputs are verified prior to generating processing device code. Furthermore, one or more of the number of specific output states, the discrete inputs, and/or the defined transfer function may be edited by the user via some embodiments of the GUI described above. For example, to change the mapping of permutations or output states, the user may return to the dialog boxes 321 and 323 in
In one embodiment, a processing device designer engine generates processing device code (also know as embedded firmware) for the setpoint transfer function. The processing device designer engine may generate a ROM image based upon the processing device code. The ROM image may be loaded into the processing device. When executed, the processing device code is configured to cause the processing device to take the sampled continuous input, call the setpoint function, take the result of the setpoint function call, and take a discrete action based upon the result.
In some embodiments, the behavior of the set point transfer function is verified prior to generating the processing device code. For instance, the continuous input signal may be simulated for a number of predetermined input signal values. Furthermore, one or more of the thresholds, an amount of hysteresis applied thereto, or the setpoint transfer function may be edited via various embodiments of the GUI described above. For example, to add more thresholds, the user may return to the dialog box 360 in
The technique to design processing systems using a GUI as described above provides numerous advantages over many conventional approaches. For example, the technique described above may eliminate the need for users to write processing device code or embedded firmware for processing devices. Furthermore, the above technique provides a clearer presentation of the transfer function, input values, output states, thresholds, hysteresis, etc. Such clearer presentation makes it easier for users to define and/or modify the transfer function, input values, output states, thresholds, hysteresis, etc. Moreover, the technique described above raises design verification to the system-level, which is more flexible and efficient, unlike some conventional approach that uses firmware or machine-code-level verification. The above technique also provides consistent processing device code with deterministic results, and hence, the processing device code become independent of the skills of and/or approaches used by individual firmware engineers. As a result, maintenance and modification of the processing device code may be simplified.
System 400 further comprises a random access memory (RAM), or other dynamic storage device 404 (referred to as main memory) coupled to bus 411 for storing information and instructions to be executed by processing device 412. Main memory 404 also may be used for storing temporary variables or other intermediate information during execution of instructions by processing device 412.
Computer system 400 also comprises a read only memory (ROM) 408 and/or other static storage device 406 coupled to bus 411 for storing static information and instructions for processing device 412, and a data storage device 407, such as a magnetic disk or optical disk and its corresponding disk drive. Mass storage device 407 is coupled to bus 411 for storing information and instructions.
Computer system 400 may further be coupled to a display device 421, such as a cathode ray tube (CRT) or liquid crystal display (LCD), coupled to bus 411 for displaying information to a computer user. An alphanumeric input device 422, including alphanumeric and other keys, may also be coupled to bus 411 for communicating information and command selections to processing device 412. An additional user input device is cursor control 423, such as a mouse, trackball, track pad, stylus, or cursor direction keys, coupled to bus 411 for communicating direction information and command selections to processing device 412, and for controlling cursor movement on display 421.
Another device that may be coupled to bus 411 is hard copy device 424, which may be used for printing instructions, data, or other information on a medium such as paper, film, or similar types of media. Furthermore, a sound recording and playback device, such as a speaker and/or microphone may optionally be coupled to bus 411 for audio interfacing with computer system 400. Another device that may be coupled to bus 411 is a wired/wireless communication capability 425 to communication to a phone or handheld palm device.
In one embodiment, a user is allowed to define a transfer function via a GUI presented using display device 421. The user may select a transfer function type and provide values of inputs, outputs, thresholds, hysteresis, etc. using keyboard 422 and cursor control device 423. The processing device 412 may generate processing device code based on the defined transfer function. The processing device code, when executed by a second processing device, is configured to cause the second processing device to perform the transfer function defined by the user. In some embodiments, the processing device 412 may generate a ROM image based on the processing device code. Computer system 400 may further include a programmer 420 coupled to the bus 411. Programmer 420 may be used to load the ROM image into the second processing device. Alternatively, in-circuit programming may be used to load the ROM image into the targeted processing device.
Note that any or all of the components of system 400 and associated hardware may be used in various embodiments of the present invention. However, it can be appreciated that other configurations of the computer system usable with some embodiments of the present invention may include some or all of the devices.
Some portions of the preceding detailed description have been presented in terms of symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the tools used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. The operations are those using 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. 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 kept 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 above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to an apparatus for performing the operations described herein. This apparatus may be specially constructed for the purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a machine-readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus (e.g., a link device) to perform the operations described. The structures for a variety of these systems have been discussed in the description above. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
For purposes of clarity, many of the details of processing devices and processing systems in general and computer programs for designing, implementing, and programming the same, that are widely known and are not relevant to the present invention have been omitted from the above description.
The foregoing discussion merely describes some exemplary embodiments of the present invention. One skilled in the art will readily recognize from such discussion, the accompanying drawings, and the claims that various modifications can be made without departing from the spirit and scope of the appended claims. The description is thus to be regarded as illustrative instead of limiting.
This application claims the benefit of U.S. Provisional Application No. 60/601,303, filed on Aug. 13, 2004.
Number | Name | Date | Kind |
---|---|---|---|
4061987 | Nagahama | Dec 1977 | A |
4134073 | MacGregor | Jan 1979 | A |
4138671 | Comer et al. | Feb 1979 | A |
4272760 | Prazak et al. | Jun 1981 | A |
4344067 | Lee | Aug 1982 | A |
4689740 | Moelands et al. | Aug 1987 | A |
4692718 | Roza et al. | Sep 1987 | A |
4827401 | Hrustich et al. | May 1989 | A |
4868525 | Dias | Sep 1989 | A |
4947169 | Smith et al. | Aug 1990 | A |
5050168 | Paterson | Sep 1991 | A |
5140197 | Grider | Aug 1992 | A |
5150079 | Williams et al. | Sep 1992 | A |
5155836 | Jordan et al. | Oct 1992 | A |
5175884 | Suarez | Dec 1992 | A |
5200751 | Smith | Apr 1993 | A |
5202687 | Distinti | Apr 1993 | A |
5258760 | Moody et al. | Nov 1993 | A |
5304955 | Atriss et al. | Apr 1994 | A |
5319370 | Signore et al. | Jun 1994 | A |
5331571 | Aronoff et al. | Jul 1994 | A |
5345195 | Cordoba et al. | Sep 1994 | A |
5371860 | Mura et al. | Dec 1994 | A |
5399922 | Kiani et al. | Mar 1995 | A |
5414308 | Lee et al. | May 1995 | A |
5426378 | Ong | Jun 1995 | A |
5428319 | Marvin et al. | Jun 1995 | A |
5430687 | Hung et al. | Jul 1995 | A |
5438672 | Dey | Aug 1995 | A |
5440305 | Signore et al. | Aug 1995 | A |
5479643 | Bhaskar et al. | Dec 1995 | A |
5546433 | Tran et al. | Aug 1996 | A |
5552748 | O'Shaughnessy | Sep 1996 | A |
5557762 | Okuaki et al. | Sep 1996 | A |
5559502 | Schutte | Sep 1996 | A |
5563526 | Hastings et al. | Oct 1996 | A |
5574892 | Christensen | Nov 1996 | A |
5590354 | Klapproth et al. | Dec 1996 | A |
5594734 | Worsley et al. | Jan 1997 | A |
5600262 | Kolze | Feb 1997 | A |
5604466 | Dreps et al. | Feb 1997 | A |
5614861 | Harada | Mar 1997 | A |
5630102 | Johnson et al. | May 1997 | A |
5633766 | Hase et al. | May 1997 | A |
5670915 | Cooper et al. | Sep 1997 | A |
5680070 | Anderson et al. | Oct 1997 | A |
5684434 | Mann et al. | Nov 1997 | A |
5689196 | Schutte | Nov 1997 | A |
5699024 | Manlove et al. | Dec 1997 | A |
5703871 | Pope et al. | Dec 1997 | A |
5710906 | Ghosh et al. | Jan 1998 | A |
5745011 | Scott | Apr 1998 | A |
5760611 | Gould | Jun 1998 | A |
5781747 | Smith et al. | Jul 1998 | A |
5828693 | Mays et al. | Oct 1998 | A |
5870004 | Lu | Feb 1999 | A |
5870345 | Stecker | Feb 1999 | A |
5872464 | Gradinariu | Feb 1999 | A |
5880598 | Duong | Mar 1999 | A |
5889936 | Chan | Mar 1999 | A |
5898345 | Namura et al. | Apr 1999 | A |
5903718 | Marik | May 1999 | A |
5939949 | Olgaard et al. | Aug 1999 | A |
5968135 | Teramoto et al. | Oct 1999 | A |
5982229 | Wong et al. | Nov 1999 | A |
6018559 | Azegami et al. | Jan 2000 | A |
6107769 | Saylor et al. | Aug 2000 | A |
6140853 | Lo | Oct 2000 | A |
6144327 | Distinti et al. | Nov 2000 | A |
6157270 | Tso | Dec 2000 | A |
6166367 | Cho | Dec 2000 | A |
6188975 | Gay | Feb 2001 | B1 |
6191660 | Mar et al. | Feb 2001 | B1 |
6202044 | Tzori | Mar 2001 | B1 |
6211741 | Dalmia | Apr 2001 | B1 |
6225866 | Kubota et al. | May 2001 | B1 |
6249167 | Oguchi et al. | Jun 2001 | B1 |
6263302 | Hellestrand et al. | Jul 2001 | B1 |
6272646 | Rangasayee | Aug 2001 | B1 |
6294962 | Mar | Sep 2001 | B1 |
6304101 | Nishihara | Oct 2001 | B1 |
6314530 | Mann | Nov 2001 | B1 |
6321369 | Heile et al. | Nov 2001 | B1 |
6332201 | Chin et al. | Dec 2001 | B1 |
6338109 | Snyder et al. | Jan 2002 | B1 |
6356862 | Bailey | Mar 2002 | B2 |
6369660 | Wei | Apr 2002 | B1 |
6377646 | Sha | Apr 2002 | B1 |
6377908 | Ostrowski et al. | Apr 2002 | B1 |
6434187 | Beard | Aug 2002 | B1 |
6445211 | Saripella | Sep 2002 | B1 |
6460172 | Insenser Farre et al. | Oct 2002 | B1 |
6507214 | Snyder | Jan 2003 | B1 |
6525593 | Mar | Feb 2003 | B1 |
6535946 | Bryant et al. | Mar 2003 | B1 |
6542025 | Kutz et al. | Apr 2003 | B1 |
6553057 | Sha | Apr 2003 | B1 |
6560306 | Duffy | May 2003 | B1 |
6563391 | Mar | May 2003 | B1 |
6567426 | van Hook et al. | May 2003 | B1 |
6575373 | Nakano | Jun 2003 | B1 |
6598178 | Yee et al. | Jul 2003 | B1 |
6601236 | Curtis | Jul 2003 | B1 |
6603330 | Snyder | Aug 2003 | B1 |
6604179 | Volk et al. | Aug 2003 | B2 |
6608472 | Kutz et al. | Aug 2003 | B1 |
6611220 | Snyder | Aug 2003 | B1 |
6611276 | Muratori et al. | Aug 2003 | B1 |
6614320 | Sullam et al. | Sep 2003 | B1 |
6637015 | Ogami et al. | Oct 2003 | B1 |
6664978 | Kekic et al. | Dec 2003 | B1 |
6667642 | Moyal | Dec 2003 | B1 |
6681280 | Miyake et al. | Jan 2004 | B1 |
6691301 | Bowen | Feb 2004 | B2 |
6701487 | Ogami et al. | Mar 2004 | B1 |
6701508 | Bartz et al. | Mar 2004 | B1 |
6718533 | Schneider et al. | Apr 2004 | B1 |
6765407 | Snyder | Jul 2004 | B1 |
6771552 | Fujisawa | Aug 2004 | B2 |
6784821 | Lee | Aug 2004 | B1 |
6785881 | Bartz et al. | Aug 2004 | B1 |
6798299 | Mar et al. | Sep 2004 | B1 |
6823282 | Snyder | Nov 2004 | B1 |
6823497 | Schubert et al. | Nov 2004 | B2 |
6825689 | Snyder | Nov 2004 | B1 |
6854067 | Kutz et al. | Feb 2005 | B1 |
6859884 | Sullam | Feb 2005 | B1 |
6865429 | Schneider et al. | Mar 2005 | B1 |
6868500 | Kutz et al. | Mar 2005 | B1 |
6892310 | Kutz et al. | May 2005 | B1 |
6892322 | Snyder | May 2005 | B1 |
6898703 | Ogami et al. | May 2005 | B1 |
6901563 | Ogami et al. | May 2005 | B1 |
6910126 | Mar et al. | Jun 2005 | B1 |
6950954 | Sullam et al. | Sep 2005 | B1 |
6952778 | Snyder | Oct 2005 | B1 |
6957242 | Snyder | Oct 2005 | B1 |
6967511 | Sullam | Nov 2005 | B1 |
6981090 | Kutz et al. | Dec 2005 | B1 |
6996799 | Cismas et al. | Feb 2006 | B1 |
7005933 | Shutt | Feb 2006 | B1 |
7023257 | Sullam | Apr 2006 | B1 |
7024636 | Weed | Apr 2006 | B2 |
7055035 | Allison et al. | May 2006 | B2 |
7058921 | Hwang et al. | Jun 2006 | B1 |
7073158 | McCubbrey | Jul 2006 | B2 |
7086014 | Bartz et al. | Aug 2006 | B1 |
7092980 | Mar et al. | Aug 2006 | B1 |
7103108 | Beard | Sep 2006 | B1 |
7127630 | Snyder | Oct 2006 | B1 |
7149316 | Kutz et al. | Dec 2006 | B1 |
7150002 | Anderson et al. | Dec 2006 | B1 |
7180342 | Shutt et al. | Feb 2007 | B1 |
7185162 | Snyder | Feb 2007 | B1 |
7185321 | Roe et al. | Feb 2007 | B1 |
7221187 | Snyder et al. | May 2007 | B1 |
7283151 | Nihei et al. | Oct 2007 | B2 |
7386740 | Kutz et al. | Jun 2008 | B2 |
7406674 | Ogami et al. | Jul 2008 | B1 |
20020121679 | Bazarjani et al. | Sep 2002 | A1 |
20020156998 | Casselman | Oct 2002 | A1 |
20030028772 | Allison et al. | Feb 2003 | A1 |
20040054821 | Warren et al. | Mar 2004 | A1 |
20040060032 | McCubbrey et al. | Mar 2004 | A1 |
20040098689 | Weed | May 2004 | A1 |
20040221238 | Cifra et al. | Nov 2004 | A1 |
Number | Date | Country |
---|---|---|
PCTUS9617305 | Jun 1996 | AL |
0308583A2 | Mar 1989 | EP |
368398 | May 1990 | EP |
0450863A2 | Oct 1991 | EP |
0499383A2 | Aug 1992 | EP |
0639816A2 | Feb 1995 | EP |
1170671A1 | Jan 2002 | EP |
1205848 | May 2002 | EP |
1191423A2 | Feb 2003 | EP |
404083405 | Mar 1992 | JP |
405055842 | Mar 1993 | JP |
06021732 | Jan 1994 | JP |
404095408 | Mar 2002 | JP |
9532478 | Nov 1995 | WO |
PCTUS9834376 | Aug 1998 | WO |
PCTUS9909712 | Feb 1999 | WO |
Number | Date | Country | |
---|---|---|---|
20060036973 A1 | Feb 2006 | US |
Number | Date | Country | |
---|---|---|---|
60601303 | Aug 2004 | US |