Patent Publication Number: US-9412467-B2

Title: Semiconductor device having a test controller and method of operation

Description:
BACKGROUND 
     1. Field 
     This disclosure relates generally to integrated circuits, and more specifically, to semiconductor device having a test controller. 
     2. Related Art 
     Register-based testing of system-on-a-chip (SoC) allows for register-configured testing which may include, for example, the use of self tests to test and trim analog circuits. Currently, register-based testing may be performed using either a slave test port or a master mode test. With a slave test port, the SoC includes a slave test port in which an external tester is the master and has access to read and write registers of peripherals of the SoC, in which these accesses by the external tester are synchronous with the SoC. For example, the slave test port may provide access to the system bus of the SoC. However, in the case of a slave test port, the test data has to be serially transferred to the external tester for any determination to be made on the test data, such the pass/fail status or best trim values. This increases test time. With a master mode test, the processor of the SoC executes code from a random access memory (RAM) of the SoC. The code allows for the processor to perform processor functions but is not synchronized to an external tester. This requires the external tester to be more aware of the SoC testing and also reduces testing visibility. Therefore, a need exists for improved SoC testing. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention is illustrated by way of example and is not limited by the accompanying figures, in which like references indicate similar elements. Elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. 
         FIG. 1  illustrates a system in accordance with an embodiment of the present invention. 
         FIGS. 2-4  illustrate a methods of operating the system of  FIG. 1  in accordance with an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     In an SoC, a test controller monitors a test port which is configured to receive commands from an external tester. In response to a command, the test controller generates one or more processor instructions and provides them to a processor of the SoC. The processor executes the processor instructions, accessing test RAM and peripherals of the SoC as needed. The test commands provided to the test port may include commands such as, for example, read/write register commands, copy commands, trim commands, and math commands. The test port operates synchronously with the external tester. The test controller, in performing the test commands, is capable of leveraging portions of the SoC, such as the processor. This may allow, for example, for the test controller to perform on-chip calculations for trims and analog limits. 
       FIG. 1  illustrates a system  10  in accordance with one embodiment of the present invention. System  10  includes an SoC  14  and an external tester  12  coupled to SoC  14 . SoC  14  includes a test port  16 , peripherals  24 , a measurement unit  26 , a processor  22 , a test command controller  18 , and a test random access memory (RAM)  20 . Test portion  16  includes a register read/write (R/W) unit  30  and test control registers  28 , and is bidirectionally coupled to test command controller  18  and peripherals  24 . Test command controller  18  is bidirectionally coupled to peripherals  24 , processor  22 , test RAM  20 , and measurement unit  26 . Processor  22  is bidirectionally coupled to peripherals  24 , test RAM  20 , and measurement unit  26 . Measurement unit  26  is bidirectionally coupled to peripherals  24 . Alternatively, test RAM  20  may be any type of test memory. For example, it may be a bank of registers. Note that only a portion of SoC  14  is illustrated and may include other modules. For example, although not illustrated, SoC  14  may include one or more additional processors. In one embodiment, processor  22  operates as a test processor which only operates during test mode. In alternate embodiments, any processor of SoC  14  may also operate as the test processor. Peripherals  24  may include any type of module and includes one or more testable (e.g. measureable) voltage nodes, one or more testable (e.g. measureable) frequency nodes, and/or one or more testable (e.g. measureable) current nodes. Peripherals  24  may include one or more of a non-volatile memory (NVM), an on-chip clock source, a band-gap reference voltage generator, a voltage divider, a charge pump, a sense amplifier, or a digital to analog converter. 
     After manufacture of SoC  14 , register-configured testing may be performed on SoC  14  in order, for example, to test and trim analog circuits of SoC  14 . For example, these analog circuits may be included within peripherals  24 . Measurement unit  16  may include circuitry which measures values at more or more testable (e.g. measureable) nodes of circuitry within peripherals  24 , such as, for example, voltages, frequencies, or currents of testable nodes within peripherals  24 . These measureable values may also be referred to as test parameters. For example, peripherals  24  may include a non-volatile memory (NVM) having a charge pump to provide a voltage to the NVM. Measurement unit  26  may be used to measure the output voltage provided by the charge pump. 
     In one embodiment, measurement unit  26  operates under the direction of processor  22 . That is, processor  22  may provide command to measurement unit  26  to direct measurement unit  26  to make measurements at various circuit nodes (i.e. test points) within circuitry of peripherals  24 . External tester  12  provides commands to test port  16  to perform testing of SoC  14 . The commands provided by external tester  12  are stored within test control registers  28  and may include arguments or parameters associated with the commands. Test command controller  18  monitors test control register  28  and, in response to detecting a command received by test port  16  and stored within test control registers  28 , interprets the command and generates processor instructions which are provided to processor  22 . That is, test command controller  18  may translate each test command to one or more processor instructions for execution by processor  22 . These processor instructions may include instructions, which, when executed by processor  22 , allow processor  22  to direct measurement unit  26  to make a measurement at a particular test point within peripherals  24 , to store measured values from measurement unit  26  to test RAM  20 , to perform calculations on values stored within test RAM  20 , or to use any other resources available within SoC  14  that are needed for implementing a test command detected by test command controller  18 . The processor instructions may also include instructions, which, when executed by processor  22 , allow processor  22  to direct or instruct a peripheral within peripherals  24  to output a test parameter, such as voltage, current, or frequency, at a test point as needed to implement a test command. In this case, processor  22  may format instructions received from test controller  18  to a specified bus protocol of processor  22  to generate a bus transaction, and then send the bus transaction to the peripheral. Alternatively, other processor instructions may be provided to processor  22  by test command controller  18  as needed to implement a test command. 
     Example test commands which may be provided by external tester  12  to test port  16  includes a read/write command, a copy command, a math command, a trim command, and a search command. In one embodiment, a read/write command allows test command controller to read/write registers within peripherals  24 . For example, a value can be written to a register within peripherals  24  to configure a peripheral as needed for a particular test. These values can be provided with the test command by external tester  12  to test port  16  and may be stored with the test command in test control registers  28 . Similarly, a value can be read from a register within peripherals  24 . Therefore, a read/write command allows access to the peripheral bus (which may be located within peripherals  24  and provides communication with the peripherals within peripherals  24 ). In one embodiment, a copy command can be used to copy data from the peripheral bus into test RAM  20 . For example, data from a register within peripherals  24  can be written to test RAM  20 . In one embodiment, a math command provides match functions which may operate on values stored within test RAM  20 . For example, these math functions may include a function to compare two numbers stored within test RAM  20 , to compare a number stored within test RAM  20  to a value provided by external tester  12  with the test command, and functions to perform other mathematical functions, such as add, subtract, equals, greater than, or less than. The math functions may, for example, include any function that is capable of being implemented by processor  22 . The desired function can be indicated by external tester  12  as part of the math command. In one embodiment, a trim command returns the value closes to a given target from an on-chip collection of data values. For example, a target value may be provided with the trim command by external tester  12  to test port  16 . Test commander  18  can provide this value to processor  22  which may determine which value stored within test RAM  20  is closes to the target value. This value can be provided to test commander  18  and provided back to external tester  12  by test port  16 . In one embodiment, a trim/search command allows processor  22  to perform a binary search on values measured from a test node and determine the trim value that is closest to a specified measurement value. 
     Therefore, test command controller  18 , in response to a test command, is configured to issue one or more instructions to test circuitry within peripherals  24 . Note that various different circuitry within peripherals  24  may be tested. Also, test command controller  18 , in response to a test command, is configured to issue one or more instructions to process information stored in test RAM  20  which resulted from testing the circuitry within peripherals  24 . 
     In one embodiment, test port  16  may directly read and/or write registers within peripherals  24  and/or measurement unit  26 . For example, register read/write unit  30  may directly perform read/writes to/from registers in peripherals  24  and/or measurement unit  26  based on information received and stored into test control registers  28 . For example, test port  16 , may directly write to registers within measurement unit  26  to direct measurement unit  26  to make a measurement at a particular test point within peripherals  24 . 
     In one embodiment, the test commands are independent of the processor architecture of processor  22 . A test command controller, such as test command controller  18 , can be designed, as needed, to interpret test commands and translate them to appropriate processor instructions in accordance with the architecture of the processor, such as processor  22 . In this manner, a same set of test commands and interface can be used across SoCs. Furthermore, in an alternate embodiment, note that test command controller  18  and processor  22  can be implemented as a state machine which provides appropriate instructions to processor  22  and/or peripherals  24 , in response to the test commands. 
       FIG. 2  illustrates a method  40  of operating system  10  of  FIG. 1  in accordance with one embodiment of the present invention. Method  40  begins with block  42  in which an NVM, which may be one of peripherals  24 , is configured to output a test voltage at a test point. For example,  FIG. 3  illustrates block  42  in further detail in accordance with one embodiment of the present invention. First, in block  60 , test port  16  may receive a first test command from external tester  12  for configuring a test point, such as a charge pump output voltage of the NVM. Next, in block  62 , test command controller  18 , in response to the first test command, interprets the first test command and provides processor instruction to processor  22 . These instructions, when executed by processor  22 , writes configuration information to a configuration register for the particular test point, as illustrated in block  64 . The writing of the configuration information to the configuration registers within the NVM or control circuitry which controls the NVM results in the NVM outputting the test voltage. The values to be written to the configuration register may be provided with the first test command from tester  12  and may be stored along with the first test command in test control registers  28 . (Note that in an alternate embodiment, in response to the first test command from tester  12 , register read/write unit  30  may directly write to the one or more configuration registers to result in the NVM outputting the test voltage.) 
     Referring back to  FIG. 2 , method  40  proceeds to block  44  in which the NVM output voltage at the test point is measured. For example, tester  12  may provide a test command to test port  16 , and in response to that command, test command controller  18  may provide processor instructions to processor  22  which, when executed by processor  22 , causes measurement unit  26  to measure the output voltage at the test point. 
     Method  40  proceeds to block  46  in which the measured voltage is stored to test RAM  20 . For example,  FIG. 4  illustrates block  46  in further detail in accordance with one embodiment of the present invention. First, in block  66 , test port  16  may receive a second test command from external tester  12  for storing a voltage measured at the test point to test RAM  20 . Next, in block  68 , test command controller  18 , in response to the second test command, interprets the second test command provides processor instruction to processor  22 . These instructions, when executed by processor  22 , obtains the measured voltage from measurement unit  26  and stores the measured voltage to rest RAM  20 , as illustrated in block  70 . 
     Referring back to  FIG. 2 , method  40  then proceeds to block  48  in which the measured voltage is compared to acceptable limits to determine if it is acceptable. For example, tester  12  may provide a test command to test port  16 , and in response to that command, test command controller  18  may provide processor instructions to processor  22  which, when executed by processor  22 , results in the comparison. Note that the acceptable limits may be limits stored within SoC  14 , such as within test RAM  20  or elsewhere within SoC  14 , or may be provided as part of the test command from tester  12 . In the latter case, the acceptable limits may be stored in test control registers  28  along with the test command. The instructions executed by processor  22  may use comparators available to processor  22  to perform the comparisons. Processor  22  may also provide the result of the comparison back to test command controller  18 , and the result may then be communicated back to external tester  12  by way of test port  16 . 
     Therefore, in this manner, it can be seen how test commands provided by tester  12  to test port  16  may be interpreted by test command controller  18  and translated into processor instructions provided to processor  22 . Processor  22  may therefore implement the necessary functions to perform the test commands. 
     By now it should be understood how a test command controller may receive test commands from an external tester and generate one or more processor instructions for execution by a processor of the SoC. In this manner, external tester may perform various test operations on SoC  14  such as, for example, performing read and write of registers with SoC  14 , performing trim and search operations, perform mathematical functions and other operations on test data within the test RAM, etc. Note that the external tester provides test commands to the test command controller and is capable of receiving results from the test command controller in response to the test commands. The test port and test command controller therefore operate synchronously with the external tester. Furthermore, by translating test commands to processor instructions, test command controller  18  is capable of leveraging portions of the SoC, as needed, to perform the test commands. 
     As used herein, the term “bus” is used to refer to a plurality of signals or conductors which may be used to transfer one or more various types of information, such as data, addresses, control, or status. The conductors as discussed herein may be illustrated or described in reference to being a single conductor, a plurality of conductors, unidirectional conductors, or bidirectional conductors. However, different embodiments may vary the implementation of the conductors. For example, separate unidirectional conductors may be used rather than bidirectional conductors and vice versa. Also, plurality of conductors may be replaced with a single conductor that transfers multiple signals serially or in a time multiplexed manner. Likewise, single conductors carrying multiple signals may be separated out into various different conductors carrying subsets of these signals. Therefore, many options exist for transferring signals. 
     The terms “assert” or “set” and “negate” (or “deassert” or “clear”) are used herein when referring to the rendering of a signal, status bit, or similar apparatus into its logically true or logically false state, respectively. If the logically true state is a logic level one, the logically false state is a logic level zero. And if the logically true state is a logic level zero, the logically false state is a logic level one. Each signal described herein may be designed as positive or negative logic, where negative logic can be indicated by a bar over the signal name or an asterix (*) following the name. In the case of a negative logic signal, the signal is active low where the logically true state corresponds to a logic level zero. In the case of a positive logic signal, the signal is active high where the logically true state corresponds to a logic level one. Note that any of the signals described herein can be designed as either negative or positive logic signals. Therefore, in alternate embodiments, those signals described as positive logic signals may be implemented as negative logic signals, and those signals described as negative logic signals may be implemented as positive logic signals. 
     Because the apparatus implementing the present invention is, for the most part, composed of electronic components and circuits known to those skilled in the art, circuit details will not be explained in any greater extent than that considered necessary as illustrated above, for the understanding and appreciation of the underlying concepts of the present invention and in order not to obfuscate or distract from the teachings of the present invention. 
     Some of the above embodiments, as applicable, may be implemented using a variety of different information processing systems. For example, although  FIG. 1  and the discussion thereof describe an exemplary information processing architecture, this exemplary architecture is presented merely to provide a useful reference in discussing various aspects of the invention. Of course, the description of the architecture has been simplified for purposes of discussion, and it is just one of many different types of appropriate architectures that may be used in accordance with the invention. Those skilled in the art will recognize that the boundaries between logic blocks are merely illustrative and that alternative embodiments may merge logic blocks or circuit elements or impose an alternate decomposition of functionality upon various logic blocks or circuit elements. 
     Thus, it is to be understood that the architectures depicted herein are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In an abstract, but still definite sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality. 
     Those skilled in the art will recognize that boundaries between the functionality of the above described operations merely illustrative. The functionality of multiple operations may be combined into a single operation, and/or the functionality of a single operation may be distributed in additional operations. Moreover, alternative embodiments may include multiple instances of a particular operation, and the order of operations may be altered in various other embodiments. 
     Although the invention is described herein with reference to specific embodiments, various modifications and changes can be made without departing from the scope of the present invention as set forth in the claims below. For example, test command controller and processor  22  may be implemented together as a state machine which can leverage portions of SoC  14  to perform the test commands. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present invention. Any benefits, advantages, or solutions to problems that are described herein with regard to specific embodiments are not intended to be construed as a critical, required, or essential feature or element of any or all the claims. 
     The term “coupled,” as used herein, is not intended to be limited to a direct coupling or a mechanical coupling. 
     Furthermore, the terms “a” or “an,” as used herein, are defined as one or more than one. Also, the use of introductory phrases such as “at least one” and “one or more” in the claims should not be construed to imply that the introduction of another claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an.” The same holds true for the use of definite articles. 
     Unless stated otherwise, terms such as “first” and “second” are used to arbitrarily distinguish between the elements such terms describe. Thus, these terms are not necessarily intended to indicate temporal or other prioritization of such elements. 
     The following are various embodiments of the present invention. 
     In one embodiment, a semiconductor device includes a test port configured to communicate with a test system; a test command controller coupled to communicate with the test port; a peripheral module configured to communicate with the test command controller; a processor; a test memory configured to communicate with the test command controller and the processor; wherein the test command controller is configured to issue a first set of one or more instructions to test the peripheral module and to issue a second set of one or more instructions to the processor to process information in the test memory resulting from the test of the peripheral module. In one aspect of the above embodiment, the test port further includes a set of test control registers to store test commands from the test system, wherein the test command controller translates the test commands to the first and second sets of one or more instructions. In another aspect, the test port further includes a register read/write unit configured to directly access the peripheral module. In another aspect, the test port further includes a measurement unit coupled to communicate with the peripheral module and the processor, wherein the measurement unit is operable to provide measurements of at least one of frequencies and voltages on the semiconductor device. In another aspect, the test memory is one of a group consisting of a random access memory (RAM) and a bank of registers. In a further aspect, the test commands are independent of the processor and include at least one of a group consisting of: a read command to read information from the peripheral module; a write command to write information to the peripheral module; a copy command to copy information from the peripheral module to the test memory; a math function, wherein the math function is performed by the processor using the information in the test memory; a trim command that returns a trim value closest to a specified measurement value from a set of trim values; and a search command to determine the trim value closest to the specified measurement. In another aspect, the peripheral module is one of a group consisting of: a module on the semiconductor device that has a measurable voltage or frequency node, a non-volatile memory, an on-chip clock source, a band-gap reference voltage generator, a voltage divider, a charge pump, a sense amplifier, and a digital to analog converter. 
     In another embodiment, a method of testing a semiconductor device includes receiving via a test port a test command from a test system external to the semiconductor device; providing instructions based on the test command to a peripheral module on the semiconductor device to output a test parameter at a test point; measuring the test parameter using a measurement unit on the semiconductor device; storing the measured test parameter in a test memory on the semiconductor device; comparing the measured test parameter to a predetermined value, wherein the comparing is performed by a processor on the semiconductor device. In one aspect of the another embodiment, the method further includes providing a result of the comparing the measured test parameter to the predetermined value to the external test system via the test port. In another aspect, the providing the instructions based on the test command to the peripheral module includes interpreting the test command in a test controller on the semiconductor device to generate the instructions based on the test command: providing the instructions from the test controller to the peripheral module. In another aspect, the providing the instructions based on the test command to the peripheral module includes interpreting the test command in a test controller on the semiconductor device to generate the instructions based on the test command; providing the instructions from the test controller to the processor on the semiconductor device; formatting the instructions according to a specified bus protocol in the processor to generate a bus transaction; and sending the bus transaction from the processor to the peripheral module. In a further aspect, the method further includes receiving the measured test parameter from a measurement unit in the processor; the storing the measured test parameter in the test memory is performed by the processor. In another aspect of the another embodiment, the method further includes receiving via the test port a second test command from the test system; interpreting the second command in a test command controller to generate a second set of instructions; providing the second set of instructions to a processor, wherein the second set of instructions include the measuring the test parameter, obtaining the measured test parameter, and the storing the measured test parameter in the test memory. In another further aspect, the method further includes reading information from the peripheral module in response to the test command being a read command; writing information to the peripheral module in response to the test command being a write command; copying information from the peripheral module to the test memory in response to the test command being a copy command; returning a trim value closest to a specified measurement value from a set of trim values in response to the test command being at least one trim command; performing a math operation in the processor in response to the test command being a math command. In another further aspect, the peripheral module is one of a group consisting of: a non-volatile memory, an on-chip clock source, a band-gap reference voltage generator, a voltage divider, a charge pump, a sense amplifier, and a digital to analog converter. 
     In another embodiment, a semiconductor device includes a test port configured to receive test commands from a test system external to the semiconductor device; a test command controller coupled to the test port to receive the test commands, the test command controller is configured to interpret the test commands, translate the test commands to one or more instructions, and provide the instructions to at least one of a peripheral module and a processor, the peripheral module and the processor are on the semiconductor device; the peripheral module performs the one or more instructions; the processor is configured to process test data resulting from performing the one or more instructions. In one aspect of the above embodiment, the test command controller provides the instructions to the processor and the processor provides the instructions to the peripheral module. In another aspect, the semiconductor device further includes a measurement unit coupled to measure test data from the peripheral module. In another aspect, the semiconductor device further includes a test memory coupled to the processor and the test command controller, the test memory is configured to store the test data and the processed test data. In yet a further aspect, the test command is at least one of a group consisting of: a command to copy the test data from the measurement unit to the test memory, a command to read information from the peripheral module, a command to write information to the peripheral module, a command to return a trim value closest to a specified measurement value from a set of trim values, and a command to perform a math operation in the processor.