1. Technical Field
The present disclosure relates to JTAG TAP controllers and to related circuitry and methods.
2. Background Information
The boundary scan circuitry of each integrated circuit is controlled by a Test Access Port controller (TAP controller). Each of the integrated circuits has its own TAP controller for controlling its own boundary scan circuitry. The TAP controller communicates with an outside JTAG test debugger functionality using standard JTAG signals TMS, TCK, TRST, TDI and TDO. The entire interface involving these signals by which the TAP controller communicates and is controlled is referred to as the Test Access Port (TAP). TDI stand for Test Data In. TDO stands for Test Data Out. TMS stands for Test Mode Select. TCK stands for Test Clock. TRST stands for Test Reset.
TAP controller 7 of integrated circuit 2 receives the TDI signal via terminal 8, receives the TMS signal via terminal 9, receives the TCK signal via terminal 10, receives the TRST signal via terminal 11, and outputs the TDO signal via terminal 12. By proper manipulation of the JTAG signals going into the TAP controller 2, the TAP controller 2 can be made to enter a test mode, to isolate internal core circuitry as described above, to use its boundary scan register to supply test signals to the core logic, to use its boundary scan register to capture test results back from the core logic, and to output the captured test results to the outside JTAG test debugger. In addition, the boundary scan circuitry of one integrated circuit may be made to drive a test signal out of one of its terminals and the boundary scan circuitry of another integrated circuit may be made to capture the signal as received on a terminal of the other integrated circuit so as to test an interconnecting conductor on the printed circuit board. Conductor 13 that extends from terminal 14 of integrated circuit 2 to terminal 15 of integrated circuit 3 is an example of such a conductor that can be tested. A JTAG connector 16 is typically provided on the printed circuit board 6 so that the outside JTAG test debugger can by physically connected to the printed circuit board so it can communicate with the TAP controllers.
As specified in JTAG standard IEEE-1149.1, TAP controllers can be interconnected together in a “Daisy-Chain” as illustrated in
A JTAG daisy-chain is also usable to test blocks of logic within a single integrated circuit. Integrated circuits of today may be very large, and may involve multiple blocks of circuitry that are designed by different groups of people. A block may be designed by one company and the design may then be sold or licensed to another company that then incorporates the block into a larger integrated circuit along with other blocks designed by yet other companies. Due to the different circuitry in the various blocks, each block may have its own specialized test requirements. Accordingly, it is common for a block to be designed to have its own TAP controller and its own associated customized test circuitry. The entire block, including the TAP controller and the specialized test circuitry, is then provided as a single design for use by other companies and entities. When such a block is incorporated into a larger design and is fabricated as part of the larger integrated circuit, the circuitry of the block is to be tested. The TAP controller and the customized test circuitry of the block is used for this purpose. Such a block within a larger integrated circuit can therefore be conceptualized as the rough equivalent of an integrated circuit within a larger printed circuit board in the example of
A self-reconfigurable daisy-chain of TAP controllers includes a main TAP controller and one or more auxiliary TAP controllers. The daisy-chain is dynamically self-reconfigurable in that the main TAP controller can configure and reconfigure the daisy-chain multiple times during the testing of a circuit. In one example, a data register in the main TAP controller is associated with a special “JTAG Daisy-Chain Control Instruction” (JDCCI). The data register has a bit location for each of the auxiliary TAP controllers. If the bit location stores a first digital value, then the corresponding auxiliary TAP controller is enabled and is made a part of a TDI-to-TDO daisy-chain scan path extending from a TDI conductor (for example, TDI integrated circuit pad or package terminal) and a TDO conductor (for example, TDO integrated circuit pad or package terminal). If, on the other hand, the bit location stores a second digital value, then the corresponding auxiliary TAP controller is disabled and is not a part of the TDI-to-TDO daisy-chain scan path. The disabled auxiliary TAP controller and its data registers are not, however, reset. The contents and output signals of the data registers of the disabled auxiliary TAP controller are not shifted, cleared, reset or disturbed at all by the act of disabling the auxiliary TAP controller. The auxiliary TAP controller is said to be frozen. Such a disabled auxiliary TAP controller therefore can continue to supply test signals (in the form of data register output signals) to the circuit under test. Using this mechanism, the amount of test time required to rest an integrated circuit can be reduced by reducing the amount of shifting through slow TAP controllers.
The self-reconfigurable daisy-chain powers up such that all the auxiliary TAP controllers are initially disabled. After power up, the main TAP controller is usable to enable selected ones of the auxiliary TAP controllers and to reconfigure the daisy-chain such that enabled auxiliary TAP controllers are included in a TDI-to-TDO daisy-chain scan path.
In one operational example, a selected auxiliary TAP controller is made a part of the daisy-chain scan path and is set so that its data registers supply test signals to a circuit under test. The selected auxiliary TAP controller is then disabled by causing the main TAP controller to execute the special JDCCI instruction. To disable the selected auxiliary TAP controller, a digital low value is loaded into the bit location corresponding to the auxiliary TAP controller in the data register for the JDCCI instruction. The digital low value is loaded by shifting it into the bit location and then performing an update on the data register. The digital low value in this bit location causes the auxiliary TAP controller to be disabled. Because disabling the selected auxiliary TAP controller in this way does not reset the auxiliary TAP controller or its data registers, the contents and output signals of the data registers (of the selected auxiliary TAP controller) are not disturbed. The data registers continue to supply the test signals to the circuit under test even though the selected auxiliary TAP controller has been disabled and is no longer a part of a TDI-to-TDO daisy-chain scan path.
Next, the remaining TAP controllers that are part of the daisy-chain scan path as reconfigured are used to shift in and shift out instructions and test data so as to test the circuit under test. Where the disabled auxiliary TAP controller can only be clocked at a relatively slow clock rate as compared to the other TAP controllers, the disabling of the auxiliary TAP controller such that it is not a part of the daisy-chain scan path may allow the daisy-chain scan path to be clocked at a higher clock rate as compared to a conventional daisy-chain system where all TAP controllers that are used in a test are part of the TDI-to-TDO scan path. By increasing the rate at which the TAP controllers can be clocked using the self-reconfigurable daisy-chain architecture, the overall time required to test a circuit under test can be reduced. Selected ones of the auxiliary TAP controllers can be enabled and disabled dynamically as testing occurs by setting and clearing individual bit locations in the JDCCI data register of the main TAP controller via the JTAG test access port that is used to control the daisy-chain.
In one example, the dynamically self-reconfigurable daisy-chain architecture involves a main TAP controller, one or more auxiliary TAP controllers, and a block of logic referred to as the Top Level Multiplexing Module (TLMM). The TLMM includes a plurality of multiplexing circuits, an output multiplexing circuit, and an instance of TAP controller freeze logic for each auxiliary TAP controller. The TLMM may be provided as a predesigned block of circuitry that can be ported from one integrated circuit design to another.
In one advantageous aspect, the self-reconfigurable daisy-chain architecture is easily expandable at the time of integrated circuit design to accommodate adding more TAP controllers. To add another TAP controller, another multiplexing circuit is added to the TLMM, the output multiplexing circuit of the TLMM is made to have an additional data input lead, the data register for the JDCCI instruction in the main TAP controller is made to have another bit location to control the additional TAP controller, and another instance of the freeze logic is added to the TLMM. The additional TAP controller is then connected to the expanded TLMM circuit and the overall integrated circuit is fabricated. Which combinations of TAP controllers will be used together during which particular circuit test can be determined later after integrated circuit fabrication because the daisy-chain architecture is dynamically reconfigurable to include any combination of TAP controllers.
In another advantageous aspect, using the main TAP controller to reconfigure the daisy-chain of TAP controller eliminates the need for mode terminals. Eliminating mode terminals from the integrated circuit and its package reduces manufacturing cost and reduces the cost of the overall packaged integrated circuit.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and does not purport to be limiting in any way. Other aspects, inventive features, and advantages of the devices and/or methods described herein, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth herein.
Multiplexing circuits 75-77 in this example are two-to-one digital multiplexers where the digital values ENA, ENB and ENC are supplied onto the select input leads of multiplexers 75-77, respectively. Decoder 79 decodes the ENA, ENB, ENC and END values and generates therefrom the multi-bit digital control value MSEL. MSEL is supplied via conductors 85 onto the select input leads of output multiplexing circuit 78. Accordingly, the digital values ENA, ENB, ENC and END stored in the data register in TAP controller 71 determine how the multiplexing circuits 75-78 configure the daisy-chain of TAP controllers.
In addition to a data register, main TAP controller 71 includes an instruction register and a finite state machine (FSM) as specified by IEEE-1149.1. If the finite state machine is in the Capture-DR state when executing a special “JTAG Daisy-Chain Control Instruction” (JDCCI), then TAP controller 71 asserts the signal digital CAPTURE DR STATE JDCCI onto conductor 98 and this signal is communicated to TAP controller freeze logic 80. Similarly, if the finite state machine is in the Update-DR state when executing the special JDCCI instruction, then TAP controller 71 asserts the signal UPDATE DR STATE JDCCI onto conductor 99 and this signal is communicated to TAP controller freeze logic 80. The three conductors 87 labeled with reference numeral B carry TMS, TCK and TRST signals on three separate conductors to TAP controller 72. These signals, as they enter TAP controller B 72, are designated TMSB, TCKB and TRSTB, respectively. Similarly, the three conductors 88 labeled with reference numeral C carry TMS, TCK and TRST signals on three separate conductors to TAP controller 73. These signals, as they enter TAP controller C 73, are designated TMSC, TCKC and TRSTC, respectively. The three conductors 89 labeled with reference numeral D carry TMS, TCK and TRST signals on three separate conductors to TAP controller 74. These signals, as they enter TAP controller D 74, are designated TMSD, TCKD and TRSTD, respectively.
The TDI port and the TDO port of TAP controller 71 are identified with reference numerals 90 and 91, respectively. The TDI port and the TDO port of TAP controller 72 are identified with reference numerals 92 and 93, respectively. The TDI port and the TDO port of TAP controller 73 are identified with reference numerals 94 and 95, respectively. The TDI port and the TDO port of TAP controller 74 are identified with reference numerals 96 and 97, respectively.
Freezing auxiliary TAP controllers that are configured out of the daisy-chain scan path has an advantage as compared to forcing such TAP controllers to be reset. Consider an example in which all the TAP controllers 71-74 are required to perform a test. One of the TAP controllers B can only be clocked at 1 MHz, whereas the other TAP controllers A, C and D can be clocked at a faster 15 MHz. Using the self-reconfigurable daisy-chain circuit mechanism described above, the daisy-chain is configured so that the daisy-chain scan path only includes main TAP controller A and the slow TAP controller B. An instruction and data is shifted into this slow TAP controller B at the slow rate so that the TAP controller B supplies necessary test signals to circuitry to be tested. Once this TAP controller B has been set up to output the necessary test signals, the self-reconfigurable daisy-chain is reconfigured so that the daisy-chain scan path includes the other TAP controllers A, C and D and does not include the slow TAP controller B. The faster TAP controllers A, C and D can then be loaded with instructions and data using the faster clock without disturbing the slower TAP controller B that was previously set up. Test data captured by the faster TAP controllers can be serially shifted out of the scan path without disturbing the slower TAP controller B. In this example, all TAP controllers are used in the test. Where a lot of exercising of the faster TAP controllers A, C and D is involved in the test to be performed, the overall amount of time required to set up the test, to perform the test, and to read test results out of the circuit may be much reduced as compared to a conventional situation of having to clock all TAP controllers by the clock rate of the slowest TAP controller.
The explanation above of the freezing a selected TAP controller is, however, somewhat of a simplification. There are three conditions in which a disabled TAP controller is clocked so that it can change state.
The first condition is the condition after power up when the auxiliary TAP controllers are in the Test-Logic-Reset state when the main TAP controller has been loaded the JDCCI instruction to reconfigure the daisy-chain. After the loading of the instruction register of the main TAP controller with the JDCCI instruction, and after updating of the instruction register, then the data register of the main TAP controller corresponding to the JDCCI instruction is to be loaded with data. To do this, the main TAP controller transitions to the Select-DR state and then to the Capture-DR state. When the main TAP controller is in the Capture-DR state when the JDCCI instruction has been loaded, the CAPTURE DR STATE JDCCI digital signal as output by the main TAP controller is a digital high. The OR gates in the freeze logic blocks for the auxiliary TAP controllers allow TCK to pass to their respective auxiliary TAP controllers. TMS=0 for all the auxiliary TAP controllers. All the auxiliary TAP controllers therefore transition from the Test-Logic-Reset state to the Run-Test-Idle state so that they can later be enabled if desired.
The second condition is the condition in which there is a disabled TAP controller that is to be enabled. When the FSM of the main TAP controller is in the middle of Update-DR state when a JDCCI instruction has been loaded, all auxiliary TAP controllers (including the auxiliary TAP controller to be enabled) are supplied with a TCK as a result of UPDATE DR STATE JDCCI being a digital logic high for the next cycle. At the rising edge of this next TCK cycle, the disabled TAP controller (the TAP controller to be enabled) is being supplied with TMS=1, so the TAP controller to be enabled transitions from the Run-Test-Idle to Select-DR state along with the main TAP controller. All auxiliary TAP controllers in fact receive the TCK toggle at this time, but only a selected auxiliary TAP controller that is enabled or is to be enabled is supplied with TMS=1, so only such a selected TAP controller will transition state at this time. The other auxiliary TAP controllers whose enable bits (in the JDCCI register of the main TAP controller) are not set are not supplied with TMS=1 and do not transition state.
The third condition is the condition in which a previously enabled TAP controller is being disabled. When the FSM of the main TAP controller is in the Update-DR state when a JDCCI instruction has been loaded (to disable the auxiliary TAP controller), all auxiliary TAP controllers (including the auxiliary TAP controller to be disabled) are supplied with a TCK due to UPDATE DR STATE JDCCI being a digital logic high. At this time disabled TAP controller and an auxiliary TAP controller to be disabled will be supplied with TMS=0. Enabled TAP controllers are supplied with TMS=1. So when UPDATE DR STATE JDCCI is asserted to a digital logic high and all the auxiliary TAP controllers are clocked, only a TAP controller to be disabled (that has TMS=0) will transition from the Update-DR state to the Run-Test-Idle state.
The flowchart of
Next (step 203), the signals on the TMS and TCK terminals are manipulated such that main TAP controller A 71 transitions to the run test idle state. All the other TAP controllers B-D remain in the Test-Logic-Reset state. The ENB, ENC and END signals are still digital zeros at this time, so instructions will not be loaded into the other TAP controllers B-D. The multiplexing circuits 112 in freeze logic 80 for the other TAP controllers 72-74 prevent these other auxiliary TAP controllers from being clocked. Only the main TAP controller A 71 therefore transitions to the Run-Test-Idle state. At this point, the main TAP controller A 71 is ready to load an instruction so the daisy-chain can be reconfigured. The instruction that causes the daisy-chain to be reconfigured is the special JDCCI instruction.
To load the special JDCCI instruction, the main TAP controller A is made to transition to the Select-IR state (step 204) by setting TMS to one for two cycles. Then TMS is set to zero for one cycle to move the main TAP controller A to the Capture-IR state (step 205). The change in the TMS signal on terminal 63 is blocked from reaching the disabled TAP controllers B-D by the freeze logic 80. The TMS signal on terminal 63 is then set to zero for one cycle, to move the main TAP controller A to the Shift-IR state (step 206). TMS is then set to zero in the Shift-IR state, and the main TAP controller A is clocked to shift an instruction into its instruction register. The bits that are shifted in are the bits of the JDCCI instruction. After the shifting in of the JDCCI instruction into the instruction register of the main TAP controller A, TMS is set to one for two cycles. This causes the main TAP controller A to transition to the Update-IR state (step 207). After an update of the instruction register, TMS is set to zero for one clock such that main TAP controller A returns to the Run-Test-Idle state (step 208).
Next the data register associated with the JDCCI instruction is to be loaded. The TMS signal on terminal 63 is set to one for one clock cycle. The change in the TMS signal on terminal 63 is still blocked from reaching the disabled auxiliary TAP controllers B-D by freeze logic 80. The change in TMS to a digital logic one causes the main TAP controller A to move to the Select-DR state (step 209). At this point, the FSM of the main TAP controller A selects for loading its data register associated with the currently loaded instruction. TMS is then set to a digital logic zero for two cycles to transition the main TAP controller A to the Capture-DR state (step 210).
All enabled TAP controllers in a JTAG daisy-chain must be in the same state and must move from state to state together in order for the outside JTAG test debugger to be able to control the daisy-chain scan path properly via the TAP interface. OR gate 114 (see
Next, TMS is set to zero to transition the main TAP controller A to the Shift-DR state (step 211). Data is then shifted into the data register for the JDCCI instruction. The bit location in the data register that corresponds to the auxiliary TAP controller B to be enabled is set to a digital logic one value. Once the data has been shifted into the last bit of the data register for the JDCCI instruction, then TMS is set to one for two cycles. This causes the FSM of the main TAP controller to transition to the Update-DR state (step 212) and to update the data register. The update causes ENA, ENB, ENC and END values that were shifted into corresponding bit locations in the data register to appear on conductors 81-83. The auxiliary TAP controller B is enabled at this time. No additional instruction is required to enable TAP controller B or to patch it into the daisy-chain scan path. In addition, in step 212, the UPDATE DR JDCCI signal output by the main TAP controller A is a digital high so all the auxiliary TAP controllers receive a TCK. The TAP controller B to be enabled is supplied with a TMS of one at this time, so TAP controller B transitions from the Run-Test-Idle state to the Select-DR state. In this example, TAP controllers C and D are not enabled and they do not receive a TMS=1 and then therefore remain in the Run-Test-Idle state. TMS is then set to zero for one cycle. This causes main TAP controller A to return to the Run-Test-Idle state (step 213).
At this point the daisy-chain of TAP controllers is configured so that a TDI-to-TDO daisy-chain scan path extends from TDI terminal 61, to the TDI port 90 of main TAP controller A, through main TAP controller A to the TDO port 91 of the main TAP controller A, to the upper input lead of multiplexing circuit 75, through the multiplexing circuit 75 to the TDI port 92 of auxiliary TAP controller B, through the auxiliary TAP controller B to TDO port 93, through output multiplexing circuit 78, and to TDO terminal 62. Auxiliary TAP controllers C and D remain disabled and are not in the scan path.
The remainder of
Once the update of step 222 occurs, then TAP controller B is disabled. The daisy-chain of TAP controllers is configured so a TDI-to-TDO daisy-chain scan path extends from TDI terminal 61, to the TDI port 90 of main TAP controller A, through main TAP controller A to the TDO port 91 of the main TAP controller A, through output multiplexing circuit 78, and to TDO terminal 62. After step 222, the main TAP controller A is supplied with a TMS value of one. It therefore moves to the Select-DR state, whereas all the auxiliary TAP controllers B-D are disabled, have TMS values of zero, and are in the Run-Test-Idle state. Even though auxiliary TAP controller B is now disabled and is not any longer in the daisy-chain scan path, its data registers still store the values they stored just before auxiliary TAP controller B was disabled. The contents and outputs of the data registers of the disabled TAP controller B are not shifted, cleared, reset or disturbed in any way when TAP controller B is disabled and taken out of the daisy-chain scan path.
Accordingly, a selected one or more of the TAP controllers can be enabled and made part of the daisy-chain scan path by executing the JDCCI instruction and setting the bit in the data register corresponding to the selected TAP controller(s) to a digital logic one. Upon updating of the data register of the JDCCI instruction, the multiplexing circuits 75-78 are controlled so that the selected TAP controller(s) is/are included in the daisy-chain scan path. A selected one or more of the auxiliary TAP controllers can also be disabled so that it/they is/are cut out of the daisy-chain scan path. To disable a selected auxiliary TAP controller in this way, the JDCCI instruction is executed and the bit in the data register corresponding to the selected auxiliary TAP controller is set to a digital logic zero. Upon updating of the data register of the JDCCI instruction, the multiplexing circuits 75-68 are controlled so that the daisy-chain scan path bypasses the disabled TAP controller. The disabled TAP controller is not reset, but rather is frozen so that the content of its data registers remains unchanged.
Note that the dynamically self-reconfigurable daisy-chain of TAP controllers can be self-configured so that the main TAP controller becomes disabled and is not any longer a part of a TDI-to-TDO daisy-chain scan path. At this time the TDI-to-TDO daisy-chain scan path extends through other enabled auxiliary TAP controllers but does not extend through the main TAP controller. Once the dynamically self-reconfigurable daisy-chain of TAP controllers is in this configuration, the main TAP controller is no longer usable to reconfigure the daisy-chain until it is enabled again. There are two ways to re-enable the main TAP controller. First, the integrated circuit can be power cycled. At power on reset, all logic will be reset including the JDCCI data register in the main TAP controller. Second, TRST can be asserted high in an ATPG TEST mode. This will reset all the test logic in the integrated circuit including the JDCCI data register in the main TAP controller (i.e., TRST=1 with the MODE pin in ATPG TEST mode).
In one example, all the necessary logic to allow numerous TAP controllers to be reconfigurably interconnected to form a reconfigurable daisy-chain is provided in a single centrally-located Top Level Multiplexing Module (TLMM) block of circuitry. In the design of the overall integrated circuit, the TAP controllers of the various blocks are simply connected to the TLMM inputs and outputs as illustrated in
Although certain specific embodiments are described above for instructional purposes, the teachings of this patent document have general applicability and are not limited to the specific embodiments described above. Accordingly, various modifications, adaptations, and combinations of the various features of the described specific embodiments can be practiced without departing from the scope of the claims that are set forth below.