|Publication number||US7047467 B1|
|Application number||US 10/121,064|
|Publication date||May 16, 2006|
|Filing date||Apr 11, 2002|
|Priority date||Jan 9, 2002|
|Also published as||US6925583|
|Publication number||10121064, 121064, US 7047467 B1, US 7047467B1, US-B1-7047467, US7047467 B1, US7047467B1|
|Inventors||Arthur H. Khu, Farshid Shokouhi, Conrad A. Theron|
|Original Assignee||Xilinx, Inc.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (5), Non-Patent Citations (1), Referenced by (25), Classifications (9), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This patent application claims priority to U.S. patent application Ser. No. 10/043,637 entitled “Structure and Method for Writing from a JTAG Device with Microcontroller to a Non-JTAG Device” filed Jan. 9, 2002.
The present invention relates to configuration of integrated circuits, particularly using a device with JTAG test circuitry to configure another non-JTAG device.
The IEEE 1149.1 Joint Test Action Group (JTAG) standard defines a serial test methodology that uses serial test circuitry in integrated circuit chips to access test data registers and to control and observe signals between devices on a printed circuit board. As shown in
This test methodology allows 1149.1-compliant devices to be serially chained together on a board or across multiple boards. TCK and TMS signals are connected to the TCK and TMS pins of all devices in this chain, while the TDI and TDO pins of each device in this chain are connected in series. Software can access JTAG test data registers on any device in the chain, and can also check or set the state of any pin on any device in this chain by serially shifting in data on the TDI pin of a first device under control of TCK and TMS, and monitoring the serial data output TDO pin of a last device. The standard was originally developed to simplify board interconnect testing by enabling easy access to any pin on a device, especially on the higher-pin count and finer-pitch devices. Connections can be tested by driving known values on one or more pins of one or more JTAG devices, and then confirming that expected values are detected on one or more pins of one or more JTAG devices.
Three flip flops 401, 402, and 403 may be serially connected by multiplexers 411, 412, and 413 into a shift register. These flip flops may also store and provide input and output signals to and from the interior of the chip during JTAG test operations. These flip flops form part of the boundary scan chain and are connected serially by placing a logic 1 onto the Shift/Capture line. These flip flops capture the input and output states of the IOB when a logic 0 is placed on the Shift/Capture line. Update latches 404, 405, 406 accompany flip flops 401, 402, 403 and are used to hold input test data stable during shifting of data through the boundary scan chain. A buffer 421 drives output signals from line 462 onto pin 441 as controlled by a tristate signal on line 464.
The operation of circuitry 400 is controlled by TCK and control signals from the TAP: Shift/Capture, Update, and EXTEST. When shift/capture line 451 is at logic 1, the boundary scan shift register is enabled and data can be shifted into or out of the boundary scan registers. In a typical operation, data bits are applied to the TDI pin and shifted through the boundary scan chain under control of the TAP controller. Proper operation of the shift register can be observed by pulsing high the Update signal to capture the boundary scan data from flip flops 401 to 403 into latches 404 to 406, then asserting high the EXTEST signal to apply the test data in latch 405 to pin 441. For example if a stream of data applied to the TDI pin includes a logic 1 that arrives at flip flop 403 followed by a selected value (1 or 0) that arrives at flip flop 402, a high Update pulse moves this logic 1 and the selected value to latches 406 and 405. A logic 1 EXTEST value causes multiplexers 416 and 415 to apply the values in latches 406 and 405 to buffer 421. The logic 1 in latch 406 turns on buffer 421 so that the value in latch 405 is applied to pin 441 for external observation. The value shifted into register 401 and updated into latch 404 will be sent to the interior of the chip as signal IOBI through multiplexer 414 on line 452.
When the EXTEST line is held at logic 0, normal I/O operation is selected. Multiplexer 414 forwards the signal on pin 441 to the interior of the chip as signal IOBI. Also, an input signal on pin 441 is forwarded by multiplexer 411 to flip flop 401 for capture on the next TCK and UPDATE. The IOBO value on line 461 will go to output buffer 421, and will be driven onto pin 441 if the buffer 421 is turned on by the IOBT value on line 463.
To avoid letting line 453 and pin 441 float when no active signal is on line 453, one of weak transistors 431 and 432 is turned on, to pull line 453 high or low (as controlled by the pull-up/pull-down block).
Prior Uses of Boundary Scan Circuits
In addition to board testing, some integrated circuit manufacturers use this four-wire interface to send programming instructions and data to configure programmable logic devices in-system.
One way to configure programmable logic devices is to incorporate programming registers and control logic into a JTAG 1149.1-compliant programmable chip. Such a chip can be configured by serially loading programming address and/or data into one or more of the programming registers through the TAP interface, and then loading a program instruction through the same interface to instruct the chip to perform the programming operation. A controller in the JTAG 1149.1-compliant chip will generate the necessary control signal sequences to configure its programmable cells with the loaded data.
If a programmable chip does not have JTAG circuitry, then programming data and instructions can be sent to it by connecting the programming data and control lines of the non-JTAG device to a JTAG device.
For example: flash memory chip 200 requires a pulse on its write enable pin WE while its data and address pins are driven with values specifying the data value to write and the memory location to write to. The boundary scan register of the JTAG chip must be serially loaded with values to drive the data pins to the required data value, the address to the specified location, and the write enable line to the inactive state. An EXTEST instruction is then loaded into the JTAG chip 100 to drive these address, data, and (inactive) write enable values to the IO pins connected to the flash chip 200. The boundary scan register is then serially loaded with values to drive the same address and data values, but now the boundary scan cells for the write enable pin must be loaded with the appropriate bits to drive the write enable signal to an active state. Another EXTEST instruction drives these values to the IO pins. During these two operations, the address and data lines will retain the same values, but the write enable pin will now be switched from inactive to active. For a third time, the boundary scan register chain is serially loaded with bits to hold the same address and data values, and the write enable boundary scan cells are loaded with values to set the write enable pin back to the inactive state. Another EXTEST instruction will drive the same address and data values onto the IO pins, and the write enable pin will now be driven back to the inactive state to complete the write operation for this memory location. The time required to perform a write operation will depend on the length of the boundary scan register chain. JTAG chips with more pins will have longer boundary scan chains.
A read operation is performed similarly: the read address is serially loaded and then driven to the IO pins of the JTAG device using EXTEST. A standard JTAG SAMPLE instruction is executed on the JTAG chip to sample the flash chip data lines connected to the IO pins of the JTAG chip by loading them into the input boundary scan cells. These sampled data values are then shifted out through TDO to a JTAG test system for processing.
It is desirable to continue using a JTAG chip for configuring a non-JTAG chip, but to increase the speed with which data can be shifted into position to be transferred to or from the other non-JTAG chip 200 (such as a flash memory chip).
According to the invention, a JTAG-compliant chip is further provided with a controller that receives data provided on the TDI input pin, forms parallel address and data instructions and passes the data through IO pins to the non-JTAG chip without requiring the data to go through the boundary scan register chain. This controller is used to program, erase, and read the non-JTAG chip. For a non-JTAG flash memory device, the controller in the JTAG-compliant chip generates the necessary programming signal sequences, and applies them to the non-JTAG chip without going through the JTAG boundary scan circuitry.
The controller verifies that data loaded and programmed into the non-JTAG chip has been received correctly by reading back the data and comparing it to the original data. If data programmed correctly, the controller notifies external software that it's ready for more data, and the process moves to the next memory address, or to the next job. If programming failed, the controller notifies the external software. In one embodiment, the controller does not increment the address for programming, but again supplies the same data to the same address for another try at correctly programming the data into the non-JTAG chip. In another embodiment, the controller sets a status bit to indicate at least one programming failure occurred, and notifies the external software to send the next data word to be programmed. After attempting to program all the data words, the external software can check this status bit to indicate if any programming failures occurred. In yet another embodiment, the controller does not increment the address for a selected number of re-tries, after which the external software concludes that the non-JTAG device is a failed device.
The JTAG-compliant TAP controller in a Virtex device generates SHIFT and UPDATE signals that are accessible by the Virtex core logic to indicate when TDI data is being shifted into the shift register and when the shift register has been updated with a value ready for processing by the controller.
For this AMD flash memory device 200, shift register 302 is 24 bits long. The length and data format of shift register 302 and state machine 303 are selected to meet requirements of flash memory chip 200. If another type of non-JTAG chip is to be accessed, controller 301 is modified accordingly. In the present embodiment, the two most significant bits CC in shift register 302 are command bits. Two bits can distinguish between four commands, in the present example “read”, “erase chip”, “erase sector” and “program”. The remaining 22 bits are used to represent address or data information depending on the state of state machine 303. The state machine 303 in this embodiment may be clocked by a separate system clock SYSCLK, enabling it to operate at a higher frequency than JTAG TCK. Alternatively, shift register 302 and state machine 303 may be clocked by TCK.
The state machine moves from INIT state 401 to state 402 on the next SYSCLK cycle, which instructs the controller 301 to generate flash chip reset signals. Concurrently, a command and a starting flash operation address are being shifted into the 24-bit register. These operations can be concurrent since TCK and SYSCLK can operate independently in this embodiment. The state machine waits in state 402 until it detects UPDATE=1 at which point it stores the upper 2 bits CC in a two-bit opcode register and the lower 22 bits into a holding register. The controller then moves to state 404 where it decodes the two bit command in the opcode register and copies the 22-bit holding register value into an address counter. If CC=00, the controller goes to state 410 for a read operation. If CC is not=00, the controller goes to state 511 for program, chip or sector erase operations. When programming (state 430) or erasing (state 420), the state machine goes through 2 setup states 511 and 512, which generate outputs for the first two bus cycles of the AMD flash program or erase command sequence. In state 511 the controller drives the flash memory address lines to the 12-bit hex value 555 and the 8 memory data lines to the 8-bit hex value AA. In state 512, the controller drives the flash address lines to hex 2AA and the flash data lines to hex 55.
A READ operation is performed until FLASHOP goes low. Looking at READ state 410 in more detail, in state 501, state machine 303 sends an output enable signal to flash memory 200, and drives the address counter value loaded in state 404 to the I/O pins connected to the flash address lines. The controller waits the required flash memory access time by decrementing a delay counter, then moves to state 502, at which time the 16 bits of addressed data in flash memory 200 are loaded into shift register 302. In one embodiment, the first 5 to 8 bits of the 24-bit shift register 302 are loaded with 0's or other dummy bits, but in another embodiment they can be loaded with status or other information. A high SHIFT signal from the TAP (in response to an external JTAG test system) moves state machine 303 to state 503 where the 24 shift register bits are shifted out to the TDO pin for external observation. Note that the Virtex JTAG device can be part of a multi-chip JTAG chain, in which case the SHIFT signal may be active for more than 24 TCK cycles. The TDO data of the Virtex JTAG device may feed the TDI of another JTAG device and the JTAG test system will have to be in the SHIFT-DR state (see
When beginning the operation in state 512, if an erase command (chip erase or sector erase) is loaded into shift register 302, state machine 303 reads this command and moves to erase state 420. In the example where flash memory 200 is an AMD flash memory device, a chip or sector erase operation requires 6 bus cycles. The first 2 bus cycles are performed in states 511 and 512. The third bus cycle is performed on the next SYSCLK, where the controller moves to state 513 and drives the flash address lines to hex 555 and 8 data lines to hex 80. The next SYSCLK moves the state machine to state 514 which in turn causes the controller to perform the fourth bus cycle. The controller holds the address line values but changes the data values to hex AA. The fifth bus cycle is performed on the next SYSCLK where the controller moves to state 515 and drives the address lines to hex 2AA and data lines to hex 55. The state machine checks the 2-bit command to determine if a chip erase (CC=10) or sector erase (CC=11) is to be performed. The sixth bus cycle for a chip erase command has the controller driving the address lines to hex value 555 and data lines to hex 10 when the state machine moves to state 516. If a sector erase is specified, then the controller moves to state 517 and drives the 22-bit value from the address register loaded in state 404 (which is the flash sector to be erased) to the address pins, and drives the data lines to hex 30. For either operation, the controller waits in state 516 or 517 until the external JTAG test system loads a non-USER instruction. The non-USER instruction causes the FLASHOP signal to go low, which the test system will do after waiting the required amount of time for the AMD flash device to perform a chip or sector erase operation. When FLASHOP=0, the chip or sector erase operation is complete and the state machine moves to the WAIT state 540.
When state machine 303 is in state 512, if state machine 303 detects a PROGRAM command in the opcode register loaded in state 402, PROGRAM state 430 is entered. The AMD flash device has a 4 bus-cycle program sequence for programming a 16-bit word. The first 2 bus cycles were performed in states 511 and 512, similar to the first 2 bus cycles of the erase operation. The memory address to program a 16-bit word was specified in state 402 and loaded into an address counter. The state machine waits in state 512 for the JTAG test system to shift in 24 bits containing the 16-bit word to program into flash device 200. The state machine waits in state 512 until UPDATE=1, and then stores the 16 bits of programming data in the 24-bit shift register into a 16-bit PROGDATA register before moving to state 521. In state 521, the third bus cycle in a program operation causes controller 301 to drive the 12-bit address line to hex value 555 and the 8 data lines to hex value A0 for one SYSCLK cycle. The fourth bus cycle occurs on the next SYSCLK cycle, where the controller stays in state 521, drives the flash memory address stored in state 404, drives the data lines with the PROGDATA register value, and drives the flash write-enable pin WE low. Controller 301 then waits in state 521 for a flash data access length of time (which is dependent on the flash memory), drives the write enable pin high to latch the address and data into the flash (which in the case of an AMD flash memory also starts the internal AMD flash programming state machine inside flash device 200), and may increment the address counter in preparation for the next PROGRAM operation before moving to state 522. In state 522, controller 301 holds the flash address and data lines at the specified values for the flash data access length of time before driving the flash device 200 output enable pin low. The controller then moves to state 523 to check the status of this 16-bit-word programming operation as part of verify state 408. The controller does this by holding the flash output enable pin active low while comparing the data lines to the PROGDATA value (decision box 524). If they are not equal, then the state machine goes to state 526 which drives the flash output enable pin to an inactive high while waiting for a timer to count the flash data access length of time before going back to state 523. The controller continues this loop until one of two conditions occur: the data comparison is successful, or the external JTAG test system starts loading the next 16 bits of data to be programmed into flash device 200. If the data comparison is successful, then the internal AMD flash programming state machine has programmed the 16-bit data into the specified address location. The state machine 303 moves to state 525 where the controller sets internal status registers and waits for SHIFT to go high to indicate the beginning of the next 16-bit programming data shift sequence. If the data comparison was not successful and SHIFT=1, then this indicates that the external JTAG system has begun shifting in the next 16 bits of data to program. This can occur in either state 523 or 524. In either state, controller 301 will set a program-fail bit in an internal status register before going to state 511.
To program a consecutive word location into flash memory 200, the external JTAG system serially shifts in a 24-bit value containing the 16-bit word to program, and the controller goes through the 4-bus-cycle program command sequence again by going to states 511, 512, 521, and 522. The flash memory location in the address counter has already been incremented in the previous transition through state 521, so it is not necessary for the external JTAG test system to load an address.
To program non-consecutive memory locations, in this embodiment, requires that the JTAG test system shift in the address, followed by the word to program, and then a non-USER JTAG instruction to force the controller to go to the WAIT state. The JTAG test system must then reload the USER instruction to reactivate FLASHOP before loading the non-consecutive flash memory address and data word to program. In an alternative embodiment, a JTAG device accepts multiple USER instructions, allowing multiple shift registers to be defined. Programming non-consecutive flash memory locations is then accomplished by creating in the JTAG device separately loadable address and data word shift registers.
Other embodiments of the invention are also contemplated. For example, while the above description is of an embodiment implemented in a JTAG 1149.1-compliant device, another embodiment is implemented in a JTAG 1532-compliant device, but does not use any of the instructions specific to the JTAG 1532 standard.
It is also important to verify that data loaded into the non-JTAG device is correctly programmed. The method of the invention achieves this result.
After step 951 in which a starting address is shifted into shift register 302, and step 952 in which this information is loaded into state machine 303, the shifting and loading of data into shift register 302 begins. First, a few dummy bits are shifted into shift register 302.
When the first word of data bits has been loaded into shift register 302, state machine 303 loads this word into itself and processes the data, as discussed above with reference to
After the specified period of time related to the internal operation of non-JTAG device 200 (see discussion of
Once these status bits have been received (replacing some of the original dummy bits), at step 957, shifting of bits through shift register 302 commences, under control of TCK (see discussion above). Returning to
At step 960, the external software processes this status bit to determine whether communication with non-JTAG device 200 was successful. If so, at step 961, the software, which has been shifting the next set of dummy bits into shift register 302, adds an address-increment bit to the word, followed by the data for the next address, and these are then shifted until they arrive at locations 906–922. At step 962, state machine 303 increments the address by 1, and the process returns to step 954, where state machine 303 loads the next data word into the next address of non-JTAG device 200.
If step 960 determines that the operation was not successful, the process moves to step 966. Several embodiments are envisioned for handling the failed data, and this depends upon the particular non-JTAG device 200 as well as the wishes of the system designer who will be using these devices. In one embodiment, the external software sets the address-increment bit to 0 (don't increment) and shifts the same data again into shift register 302. Thus, and at step 967, the address in non-JTAG device 200 is not incremented. This embodiment usually includes a counting mechanism, so that after a number of tries, the process terminates or moves on. In another embodiment, the software external to JTAG device 300 records the failed attempt, but no attempt is made to again program data into the failed address. Thus at step 966, new data are shifted into shift register 302, and at step 967, the address applied to non-JTAG device 200 is incremented.
It can be seen that placing the status bits at the front of the shift register is important for getting the status information out in time to make a decision on which bits to shift next.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5048021 *||Aug 28, 1989||Sep 10, 1991||At&T Bell Laboratories||Method and apparatus for generating control signals|
|US5497378 *||Nov 2, 1993||Mar 5, 1996||International Business Machines Corporation||System and method for testing a circuit network having elements testable by different boundary scan standards|
|US5706297 *||Aug 24, 1995||Jan 6, 1998||Unisys Corporation||System for adapting maintenance operations to JTAG and non-JTAG modules|
|US5708773 *||Jul 20, 1995||Jan 13, 1998||Unisys Corporation||JTAG interface system for communicating with compliant and non-compliant JTAG devices|
|US6757844 *||Oct 25, 2000||Jun 29, 2004||Cypress Semiconductor Corp.||Architecture and logic to control a device without a JTAG port through a device with a JTAG port|
|1||XAPP017 (v3.0), "Boundary-scan in XC4000, Spartan and XC5200 Series Devices", available from Xilinx, Inc., 2100 Logic Drive, San Jose CA 95124, Nov. 16, 1999, pp 1-17.|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7216275 *||Jan 11, 2005||May 8, 2007||Sunplus Technology Co., Ltd.||Method and apparatus for accessing hidden data in a boundary scan test interface|
|US7234091 *||Jan 11, 2005||Jun 19, 2007||Sunplus Technology Co., Ltd.||Method and apparatus for transferring hidden signals in a boundary scan test interface|
|US7257654 *||Nov 9, 2004||Aug 14, 2007||Advanced Micro Devices, Inc.||PCI bridge device configured for using JTAG scan for writing internal control registers and outputting debug state|
|US7284170 *||Dec 17, 2004||Oct 16, 2007||Texas Instruments Incorporated||JTAG circuit transferring data between devices on TMS terminals|
|US7454556||Feb 2, 2005||Nov 18, 2008||Xilinx, Inc.||Method to program non-JTAG attached devices or memories using a PLD and its associated JTAG interface|
|US7493535 *||Sep 19, 2007||Feb 17, 2009||Texas Instruments Incorporated||JTAG circuit transferring data between devices on TCK terminals|
|US7859275 *||Dec 18, 2009||Dec 28, 2010||Texas Instruments Incorporated||Parallel scan distributors and collectors and process of testing integrated circuits|
|US7870449 *||Oct 12, 2006||Jan 11, 2011||Nxp B.V.||IC testing methods and apparatus|
|US7941717 *||Oct 12, 2006||May 10, 2011||Nxp B.V.||IC testing methods and apparatus|
|US7941719 *||Oct 12, 2006||May 10, 2011||Nxp B.V.||IC testing methods and apparatus|
|US7945834 *||Oct 18, 2006||May 17, 2011||Nxp B.V.||IC testing methods and apparatus|
|US8677196 *||Jun 20, 2011||Mar 18, 2014||Cadence Design Systems, Inc.||Low cost production testing for memory|
|US9164858||Mar 29, 2013||Oct 20, 2015||Testonica Lab Ou||System and method for optimized board test and configuration|
|US20050050408 *||Aug 27, 2003||Mar 3, 2005||Kaginele Sathya P.||Apparatus and methods for testing memory devices|
|US20050160337 *||Dec 17, 2004||Jul 21, 2005||Whetsel Lee D.||JTAG bus communication method and apparatus|
|US20050172190 *||Jan 11, 2005||Aug 4, 2005||Sunplus Technology Co., Ltd.||Method and apparatus for accessing hidden data in a boundary scan test interface|
|US20050172191 *||Jan 11, 2005||Aug 4, 2005||Sunplus Technology Co. Ltd.||Method and apparatus for transferring hidden signals in a boundary scan test interface|
|US20080005633 *||Sep 19, 2007||Jan 3, 2008||Texas Instruments Incorporated||Jtag bus communication method and apparatus|
|US20080255780 *||Oct 12, 2006||Oct 16, 2008||Nxp B.V.||Ic Testing Methods and Apparatus|
|US20080265906 *||Oct 12, 2006||Oct 30, 2008||Nxp B.V.||Ic Testing Methods and Apparatus|
|US20080288842 *||Oct 18, 2006||Nov 20, 2008||Nxp B.V.||Ic Testing Methods and Apparatus|
|US20090319840 *||Dec 24, 2009||Tokumasa Hara||Semiconductor memory device and test method thereof|
|US20100100782 *||Dec 18, 2009||Apr 22, 2010||Texas Instruments Incorporated||Parallel scan distributors and collectors and process of testing integrated circuits|
|US20120131403 *||Mar 3, 2011||May 24, 2012||Inventec Corporation||Multi-chip test system and test method thereof|
|EP2749894A1||Mar 27, 2013||Jul 2, 2014||Testonica Lab OŘ||System and method for optimized board test and configuration|
|U.S. Classification||714/727, 714/729|
|International Classification||G06F11/00, G01R31/28, G01R31/3185|
|Cooperative Classification||G01R31/318544, G01R31/318555|
|European Classification||G01R31/3185S5, G01R31/3185S3|
|Apr 11, 2002||AS||Assignment|
Owner name: XILINX, INC., CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHU, ARTHUR H.;SHOKOUHI, FARSHID;THERON, CONRAD A.;REEL/FRAME:012811/0228
Effective date: 20020411
|Nov 19, 2009||SULP||Surcharge for late payment|
|Nov 19, 2009||FPAY||Fee payment|
Year of fee payment: 4
|Nov 18, 2013||FPAY||Fee payment|
Year of fee payment: 8