Abstract:
A testing apparatus and method are for testing a plurality of logic blocks within an integrated circuit. The integrated circuit includes a test data input bus, a test data output bus coupled to the output of each logic block, and test enable means which includes selection means coupled between the plurality of logic blocks and the test data input bus. The test enable means selects a first logic block from the plurality of logic blocks, and the selection means selectively inputs to each logic block either normal operating input or the test data. The test results are received from the first logic block through the test data output bus.

Description:
BACKGROUND 
     The present invention concerns the testing of integrated circuits and pertains particularly to the versatile testing of function systems blocks within a complex device. 
     Function system blocks implement a sub-function within the larger function of a complex device. The functionality of a function system block is difficult to test when contained within a larger body of logic. 
     Typically, the function system blocks are tested using a special test mode that externalizes the internal function system block to be tested by a method that maps the internal input/output connection of the function system block to the input/output pins of the larger device. This is accomplished, for example, by multiplexing each internal block connection to an external pin. Alternatively, the internal input/output connection of the function system block may be mapped to the input/output pins of the larger device by using serial boundary scan techniques that allow access to the internal connections through a few external pins. However, these methods often increase the die area of the device, degrade signal timing, increase internal interconnection complexity and/or increase the test program time. 
     SUMMARY OF THE INVENTION 
     In accordance with the preferred embodiment of the present invention logic blocks within an integrated circuit are tested. A test data input bus is connected to input of each of the logic blocks. Likewise, a test data output bus is connected to an output of each of the logic blocks. During testing, a first logic block is selected to receive test data held in a test data input register and to generate test results for placement onto the test data output bus. The test data is transferred to the first logic block through the test data input bus. 
     In the preferred embodiment, the selection of the first logic block to receive test data is done using a multiplexer which selects for input to the logic block either normal operating input or test data held in the test data input register and placed on the test data input bus. Also, the selection of the first logic block to generate test results for placement onto the test data output bus is done using a tri-state gate. In the preferred embodiment, a control bit from a test mode register is to control both the multiplexer and the tri-state gate. 
     For example, the test results are received from the test data output bus by a test data output register. Data may be accessed from the test data output register, the test data input register and the test mode register via any standard access means available on the integrated circuit. In the preferred embodiment, this is done using an internal data bus. 
     The present invention allows access to test logic blocks without any additional burden on external pins. Further, the use of a test data input bus and a test data output bus allow a large number of logic blocks to be tested using only a very few registers. This reduces circuitry required for testing and in addition simplifies the testing by allowing centralization and sharing of test circuitry within the integrated circuit. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a simplified block diagram of a test system which uses a single set of internal test registers to test multiple function system blocks in accordance with the preferred embodiment of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 shows a logic block 51, a logic block 52, a logic block 53 and a logic block 54 which are all part of a complex device residing within a single integrated circuit. Each of logic block 51, logic block 52, logic block 53 and logic block 54 are a function system block. There are typically more function system blocks within a complex device, however, the four logic blocks shown in FIG. 1 are sufficient to illustrate the features of the present invention. 
     Under normal operation, logic block 51 receives input on lines 31. Likewise under normal operation, logic block 52 receives input on lines 32, logic block 53 receives input on lines 33 and logic block 54 receives input on lines 34. Logic block 51 places values on lines 61, which are utilized as outputs under normal operating conditions. Logic block 52 places values on lines 62, which are utilized as outputs under normal operating conditions. Logic block 53 places values on lines 63, which are utilized as outputs under normal operating conditions. Logic block 54 places values on lines 64, which are utilized as outputs under normal operating conditions. 
     The complex device shown in FIG. 1 additionally includes a test mode register 11, a test data input register 12 and a test data output register 18. Test mode register 11, test data input register 12 and test data output register 18 may be accessed through any register access mechanism that already exists on the complex device. For example, FIG. 1 shows test mode register 11, test data input register 12 and test data output register 18 connected to an internal data bus 13 of the complex device. 
     Test data input register 12 provides an alternate set of inputs to the logic blocks of the complex device. In the embodiment shown in FIG. 1, the information stored by test data input register 12 is placed on a test data input bus 10. 
     Test data output register 18 can receive outputs from the logic blocks of the complex device. In the embodiment shown in FIG. 1, the information stored by test data output register 18 is received via a test data output bus 17. 
     Using test mode register 11, test data input register 12 and test data output register 18, access to the logic blocks of the complex device is possible without any additional burden on the external pins of the complex device. 
     Values in test mode register 11 control testing of the logic blocks of the complex device. For example, test mode register 11 exists in configuration space, which is not normally accessed by operating systems or application software. For each of logic blocks 51 through 54, test mode register 11 includes a test control bit. Each bit is cleared to the disable state at system reset. This allows for normal operation of the complex device. In order to test a logic block, a test control bit for the logic block is asserted for the logic block and a write cycle is performed. 
     For example, in preparation for a test of logic block 51, internal data bus 13 and a test mode write strobe 14 are used to load a test configuration value for logic block 51 into test mode register 11. The test configuration value for logic block 51 asserts the bit corresponding to a test mode line 21. This causes a multiplexer 41 to select test data input bus 10 as inputs to logic block 51, rather than normal inputs on lines 31. The assertion of the bit corresponding to a test mode line 21 within the test configuration placed in test mode register 11 also results in tri-state gate 71 being turned &#34;on&#34; connecting the outputs of logic block 51 to test data output bus 17. 
     A test data write strobe 15 is used to load a test value from internal data bus 13 into test data input register 12. This test value, through test data input bus 10, is received as inputs by logic block 51. Logic block 51 produces the corresponding outputs which are received, through test data output bus 17, at the inputs of test data output register 18. In response to assertion of a test data read enable strobe on line 16, the results are captured by data output register 18. These results may be then accessed using internal data bus 13. 
     In preparation for a test of logic block 52, internal data bus 13 and test mode write strobe 14 are used to load a test configuration value for logic block 52 into test mode register 11. The test configuration value for logic block 52 asserts the bit corresponding to a test mode test mode line 22. This causes a multiplexer 42 to select test data input bus 10 as inputs to logic block 52, rather than normal inputs on lines 32. The assertion of the bit corresponding to a test mode test mode line 22 within the test configuration placed in test mode register 11 also results in tri-state gate 72 being turned &#34;on&#34; connecting the outputs of logic block 52 to test data output bus 17. 
     Test data write strobe 15 is used to load a test value from internal data bus 13 into test data input register 12. This test value, through test data input bus 10, is received as inputs by logic block 52. Logic block 52 produces the corresponding outputs which are received, through test data output bus 17, at the inputs of test data output register 18. In response to assertion of test data read enable strobe on line 16, the results are captured by data output register 18. These results may be then accessed using internal data bus 13. 
     In preparation for a test of logic block 53, internal data bus 13 and test mode write strobe 14 are used to load a test configuration value for logic block 53 into test mode register 11. The test configuration value for logic block 53 asserts the bit corresponding to a test mode line 23. This causes a multiplexer 43 to select test data input bus 10 as inputs to logic block 53, rather than normal input on lines 33. The assertion of the bit corresponding to a test mode line 23 within the test configuration placed in test mode register 11 also results in tri-state gate 73 being turned &#34;on&#34; connecting the outputs of logic block 53 to test data output bus 17. 
     Test data write strobe 15 is used to load a test value from internal data bus 13 into test data input register 12. This test value, through test data input bus 10, is received as inputs by logic block 53. Logic block 53 produces the corresponding outputs which are received, through test data output bus 17, at the inputs of test data output register 18. In response to assertion of test data read enable strobe on line 16, the results are captured by data output register 18. These results may be then accessed using internal data bus 13. 
     In preparation for a test of logic block 54, internal data bus 13 and test mode write strobe 14 are used to load a test configuration value for logic block 54 into test mode register 11. The test configuration value for logic block 54 asserts the bit corresponding to a test mode line 24. This causes a multiplexer 44 to select test data input bus 10 as inputs to logic block 54, rather than normal inputs on lines 34. The assertion of the bit corresponding to a test mode line 24 within the test configuration placed in test mode register 11 also results in tri-state gate 74 being turned &#34;on&#34; connecting the output of logic block 54 to test data output bus 17. 
     Test data write strobe 15 is used to load a test value from internal data bus 13 into test data input register 12. This test value, through test data input bus 10, is received as inputs by logic block 54. Logic block 54 produces the corresponding outputs which are received, through test data output bus 17, at the input of test data output register 18. In response to assertion of test data read enable strobe on line 16, the results are captured by data output register 18. These results may be then accessed using internal data bus 13. 
     When not testing the logic blocks within complex device the special test modes appear to be non-existent. In normal operating mode, the test value in test mode register 11 is cleared so that test mode access to each of logic blocks 51 through 54 is disabled. 
     In the preferred embodiment of the present invention, test mode register 11, test data input register 12 and test data output register 18 are all placed in the same configuration address space of the complex device. In alternate preferred embodiments of the present invention, test data input register 12 and/or test data output register 18 may be placed in an operating range of the complex device and may even be utilized as ordinary registers. 
     Also, logic blocks may be tested together provided the output bits used by each logic block on test data output bus 17 do not overlap. For example, test data output bus 17 is a sixteen bit bus. Output from logic block 51 is placed on the five lowest order bits of test data output bus 17. Output from logic block 52 is placed on the 11 highest order bits of test data output bus 17. Thus logic block 51 and logic block 52 may be tested together because there is no overlap of output bits on test data output bus 17. However, in order for this to work, inputs to logic block 51 and logic block 52 can be shared as needed. This is workable, for example, when it is acceptable that any bits of test data input bus 10, shared by logic block 51 and logic block 52, have the same value for the test. 
     A test mode line 25, a test mode line 26, a test mode line 27, a test mode line 28 and a test mode line 29 are used, for example, to select additional logic blocks (not shown) for testing. Each test mode line additionally may control tests for more than one logic block. A test mode line 20 is used, for example, to enable a counter test mode. 
     Table 1 below summarizes an example configuration of test mode register 11 when test mode register 16 has sixteen bits. In Table 1 below, logic block (1) is equivalent to logic block 51, logic block (2) is equivalent to logic block 52, logic block (3) is equivalent to logic block 53, and logic block (4) is equivalent to logic block 54. Logic blocks (5-10) are additional logic blocks not shown in FIG. 1. 
     
                       TABLE 1______________________________________Bit Number     Logic Block Number                   Test Mode______________________________________15        Reserved      Always 014        Reserved      Always 013        Reserved      Always 012        Reserved      Always 011        Reserved      Always 010        Reserved      Always 09         (10)          0 = disabled, 1 = enabled8         (8)           0 = disabled, 1 = enabled7         (7)           0 = disabled, 1 = enabled6         (6)           0 = disabled, 1 = enabled5         (5)           0 = disabled, 1 = enabled4         (4)           0 = disabled, 1 = enabled3         (3)           0 = disabled, 1 = enabled2         (2)           0 = disabled, 1 = enabled1         (1) and (9)   0 = disabled, 1 = enabled0         Counter Test Mode                   0 = disabled, 1 = enabled______________________________________ 
    
     Likewise, in an example configuration, test data input register 12 has twenty-four bits, twenty-two of which are connected to test data input bus 10. Logic block 51 utilizes the eleven lowest order bits of test data input bus 10 as test input. Logic block 52 utilizes the twenty lowest order bits of test data input bus as test input. Logic block 53 utilizes all the bits of test data input bus 10 as test input. Logic block 54 utilizes the nineteen lowest order bits of test data input bus 10 as test input. 
     Also, in an example configuration, test data output register 18 has sixteen bits, all of which are connected to test data output bus 17. Logic block 51 places output on the five lowest order bits of test data output bus 17 during lock 52 places output on the eleven highest order bits of test data output bus 17 during testing. Logic block 53 places output on the fourteen lowest order bits of test data output bus 17 during testing. Logic block 51 places output on all bits of test data output bus 17 during testing. 
     In an alternative embodiment, test data input register 12 and test data output register 18 may be implemented using a single test register. In this case, using the example configuration set out above, the test register has twenty-four bits. The lowest order sixteen bits have read write access and are used both as test input and test output. The next six bits of test data input register 12 are write-only and are used to receive test data to be forwarded to test data input bus 10. 
     The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.