The disclosure relates to automatic test pattern generation and an apparatus, methodology, and means for conditioning the logic inside the integrated circuit and for observing the response to those conditions, and in particular, to using the functional bus to communicate test signals.
Unless otherwise indicated herein, the approaches described in this section are not admitted to be prior art by inclusion in this section.
An integrated circuit device generally includes a package and a die. The die is a wafer of semiconductor material onto which functional circuits are fabricated. A collection of functional circuits that are directed toward a particular function are referred to as a core, a module, or a block. The die often has more than one core. Cores may be analog, digital, or mixed analog/digital. Example cores include a microprocessor core, a Bluetooth™ transceiver core, a digital signal processor core, a power management core, etc. The package provides protection to the die and includes input and output pins for connecting the integrated circuit device to other circuits and devices (e.g., mounted on a circuit card, circuit board, etc.).
A variety of tests may be performed on the integrated circuit device to ensure that it produces the expected outputs for a known set of inputs. These tests may be performed on the wafer (e.g., a wafer test), when the integrated circuit device has been assembled (e.g., a package test), when the integrated circuit device has been mounted on a circuit card (e.g., a mounting test), etc. Part of this testing includes automatic test pattern generation (ATPG), in which a set of defined inputs are provided to a core, and the outputs are compared to a set of reference values. Each core often has its own associated circuitry, referred to as a wrapper, for performing ATPG; when a core is designed, its designers also include in the design the associated wrapper for each core. Thus, increasing the number of cores often also results in increasing the amount of wrapper circuitry. Each wrapper may have its own test interface as well, or with additional circuitry a test interface may be shared among wrappers.
The present disclosure is directed to reducing the amount of circuitry used to perform automatic test pattern generation or for using scan input signals to control remote cores.
In one embodiment, an integrated circuit includes a plurality of cores, a bus, a functional interface, a test interface, and a bus wrapper. The bus connects between the plurality of cores. The bus selectively operates in one of a functional mode and a test mode, according to whether the integrated circuit is operating in one of the functional mode or the test mode, respectively. When the integrated circuit is operating in the functional mode, the functional interface receives a plurality of functional inputs from outside of the integrated circuit, provides the plurality of functional inputs to the bus, receives a plurality of functional outputs from the bus, and provides the plurality of functional outputs to the functional outputs outside of the integrated circuit. When the integrated circuit is operating in the test mode, the test interface receives a plurality of test inputs from outside of the integrated circuit and provides a plurality of test outputs to the outside of the integrated circuit. The bus wrapper connects between the test interface and the bus.
According to a further embodiment, in the test mode, the bus wrapper receives the plurality of test inputs from the test interface and provides the plurality of test inputs to the bus, and the plurality of cores receives the plurality of test inputs from the bus.
According to a further embodiment, in the test mode, the plurality of cores generates the plurality of test outputs from the plurality of test inputs, and provides the plurality of test outputs to the bus. In the test mode, the bus wrapper receives the plurality of test outputs from the bus.
According to a further embodiment, in the test mode, the bus wrapper receives the plurality of test inputs from the test interface and provides the plurality of test inputs to the bus. In the test mode, the plurality of cores receives the plurality of test inputs from the bus, generates the plurality of test outputs from the plurality of test inputs, and provides the plurality of test outputs to the bus. In the test mode, the bus wrapper receives the plurality of test outputs from the bus.
According to a further embodiment, in the test mode, the bus wrapper receives the plurality of test inputs from the test interface and provides the plurality of test inputs to the bus. In the test mode, the plurality of cores receives the plurality of test inputs from the bus, generates the plurality of test outputs from the plurality of test inputs, and provides the plurality of test outputs to the bus. The plurality of cores may perform a transformation on, or otherwise perform processing on, the plurality of test inputs in order to generate the plurality of test outputs. In the test mode, the plurality of cores receives the plurality of test outputs from the bus and generates a second plurality of test outputs from the plurality of test outputs.
According to a further embodiment, in the functional mode, the plurality of cores receives the plurality of functional inputs from the bus, generates the plurality of functional outputs, and provides the plurality of functional outputs to the bus.
According to a further embodiment, in the test mode, the bus is disabled prior to the bus wrapper receiving the plurality of test inputs, and the bus is enabled prior to the bus wrapper providing the plurality of test inputs to the bus.
According to a further embodiment, the bus wrapper comprises a plurality of cells. Each cell comprises a first multiplexer, a register, and a second multiplexer. The first multiplexer receives a recirculating input and a scan input, and outputs a first output corresponding to a selected one of the scan input and the recirculating input. The register receives the first output and outputs a second output corresponding to the first output, where the first multiplexer receives the second output as the recirculating input. The second multiplexer receives the second output and a functional input, and outputs a third output corresponding to a selected one of the second output and the functional input as selected by a test enable signal.
According to a further embodiment, the bus wrapper includes a pipeline. The pipeline includes a plurality of registers connected in series, where an output of one of the plurality of registers is connected to an input of another of the plurality of registers. The pipeline is loadable from the test interface in shift mode, and in capture mode the pipeline advances with each capture clock cycle. The first register in the pipeline can receive the recirculated data from the last register in the pipeline, can receive data from a fixed input state, can toggle arbitrarily between states, or can receive data from various other circuits.
According to a further embodiment, the bus wrapper includes a counter circuit that generates an enable signal and that controls the bus using the enable signal, where the enable signal controls whether the bus is enabled or not enabled.
According to a further embodiment, the bus wrapper includes a counter circuit that generates a bus clock enable signal and that controls the bus using the bus clock enable signal, where the bus clock enable signal controls whether the bus clock is enabled or not enabled.
According to a further embodiment, the integrated circuit further includes a test controller, where the test controller includes the bus wrapper. The test controller includes a data circuit, a write enable circuit, a read enable circuit, and separation logic. The data circuit stores data. The write enable circuit controls outputting the data from the data circuit to the bus. The read enable circuit controls inputting the data from the bus to the data circuit. The separation logic controls the write enable circuit and the read enable circuit.
According to a further embodiment, the bus wrapper includes a data in portion. The data in portion includes a first multiplexer, a latch, a second multiplexer, a third multiplexer, a fourth multiplexer, and a flip-flop. The first multiplexer receives a bus data input signal and an arbitrary input signal and selectively outputs a bus data latch input signal. The latch receives the bus data latch input signal and outputs a bus data latch output signal. The second multiplexer receives the bus data input signal and the bus data latch output signal, and selectively outputs a second bus data input signal. The third multiplexer receives the bus data input signal from the second multiplexer and a bus data output signal, and selectively outputs a bus data signal. The fourth multiplexer receives the bus data signal and a scan input signal, and selectively outputs a flip-flop input signal. The flip-flop receives the flip-flop input signal and outputs the bus data output signal.
According to a further embodiment, the bus wrapper includes a bus enable monitor circuit. The bus monitor circuit includes a logic circuit and a flip-flop. The logic circuit receives a bus read enable signal and a bus data enable signal, and generates an output signal. The flip-flop receives the output signal, where the flip-flop outputs a “bus on” signal that is set when the bus is in use.
According to a further embodiment, the integrated circuit further includes a master controller that controls the integrated circuit to selectively operate in one of the functional mode and the test mode.
According to a further embodiment, the integrated circuit further includes a test controller that controls the integrated circuit to selectively operate in one of a test shift mode and a test capture mode.
According to a further embodiment, the bus wrapper includes an enable portion, and the integrated circuit further comprises a test controller. The test controller is coupled to the test interface and to the bus wrapper. The test controller controls the enable portion to selectively operate in one of an output enable mode and an input enable mode. In the output enable mode, the bus wrapper provides the plurality of test inputs to the bus. In the input enable mode, the bus wrapper receives the plurality of test outputs from the bus.
According to a further embodiment, the bus wrapper includes an address portion, a data out portion, an enable portion, and a data in portion. The integrated circuit further comprises a test controller. The test controller is coupled to the test interface and to the bus wrapper. The test controller serially receives the plurality of test inputs from the test interface, and provides the plurality of test inputs to the address portion and to the data out portion. The test controller controls the enable portion to selectively operate in one of an output enable mode and an input enable mode. In the output enable mode, the address portion and the data out portion provide the plurality of test inputs to the bus, and a selected core of the plurality of cores receives the plurality of test inputs from the bus and provides the plurality of test outputs to the bus. In the input enable mode, the data in portion receives the plurality of test outputs from the bus, and the test controller serially provides the plurality of test outputs from the data in portion to the test interface.
In another embodiment, a method tests an integrated circuit. The method includes providing the integrated circuit, where the integrated circuit has a plurality of cores, a bus, a functional interface, a test interface, and a bus wrapper. The bus connects between the plurality of cores, and the bus wrapper connects between the test interface and the bus.
The method further includes selectively operating the bus in a functional mode and a test mode, according to the integrated circuit operating in one of the functional mode and the test mode.
When the integrated circuit is operating in the functional mode, the method further includes receiving, by the functional interface, a plurality of functional inputs from outside of the integrated circuit, providing, by the functional interface, the plurality of functional inputs to the bus, and receiving, by the functional interface, a plurality of functional outputs from the bus.
When the integrated circuit is operating in the test mode, the method further includes receiving, by the test interface, a plurality of test inputs from outside of the integrated circuit, and providing, by the test interface, a plurality of test outputs to the outside of the integrated circuit.
In another embodiment, an integrated circuit comprises core means for receiving a plurality of inputs, for processing the plurality of inputs, and for generating a plurality of outputs. The integrated circuit further comprises bus means for connecting between the core means, and for selectively operating in a functional mode and a test mode, according to the integrated circuit operating in one of the functional mode and the test mode. The integrated circuit further comprises functional interface means for receiving a plurality of functional inputs from outside of the integrated circuit, for providing the plurality of functional inputs to the bus means, and for receiving a plurality of functional outputs from the bus means, when the integrated circuit is operating in the functional mode. The integrated circuit further comprises test interface means for receiving a plurality of test inputs from outside of the integrated circuit, and for providing a plurality of test outputs to the outside of the integrated circuit, when the integrated circuit is operating in the test mode. The integrated circuit further comprises bus wrapper means for connecting between the test interface and the bus.
The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of the present disclosure.
With respect to the discussion to follow and in particular to the drawings, it is stressed that the particulars shown represent examples for purposes of illustrative discussion, and are presented in the cause of providing a description of principles and conceptual aspects of the present disclosure. In this regard, no attempt is made to show implementation details beyond what is needed for a fundamental understanding of the present disclosure. The discussion to follow, in conjunction with the drawings, make apparent to those of skill in the art how embodiments in accordance with the present disclosure may be practiced. In the accompanying drawings:
In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be evident, however, to one skilled in the art that the present disclosure as expressed in the claims may include some or all of the features in these examples, alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.
The following discussion uses the term automatic test pattern generation (ATPG). In general, ATPG is a type of testing in which a set of defined inputs are provided to the registers of a core, and the outputs are compared to a set of reference values. ATPG may be contrasted with built-in self-test (BIST), in that for ATPG the test inputs originate external to the device and the test outputs are provided external to the device (e.g., using automated test equipment), whereas BIST is performed internally without an external test device. The invention may be useful for BIST operations as well, since the bus wrapper makes the bus synchronous and deterministic for test purposes. These features are useful for BIST operation.
The following discussion relates to the Institute of Electrical and Electronics Engineers (IEEE) 1149.1 standard, also referred to as the Joint Test Action Group (JTAG) standard. In general, the IEEE 1149.1 standard defines test logic that can be included in an integrated circuit to provide standardized approaches to testing the interconnections between integrated circuits once they have been assembled onto a printed circuit board or other substrate; testing the integrated circuit itself; and observing or modifying circuit activity during the component's operation (e.g., the component's normal operation in response to test inputs). The test logic consists of a boundary-scan register and other building blocks and is accessed through a Test Access Port (TAP). JTAG testing may also be referred to as boundary scan testing. However, the disclosure herein, although it may help boundary scan testing under some conditions, is broader than boundary scan testing. ATPG takes advantage of a TAP controller to put the device in a test mode. But whereas boundary scan tests the external pins, ATPG tests the internal signals. The disclosure herein also applies to other standards including IEEE 1500 and IEEE 1687. In IEEE 1149.1, the boundary scan was a scan register used to control an external input, output, or bidirectional. In IEEE 1500 this concept was extended to a wrapper boundary scan cell for purposes of testing and isolating internal blocks or cores.
The following discussion related to the terms wrapper boundary scan or wrapper boundary scan testing. In general, a boundary scan is a method for testing interconnects (wire lines) on printed circuit boards, and a wrapper boundary scan is a method for testing interconnects (wire lines) for sub-blocks inside an integrated circuit. Boundary scan is also widely used as a debugging method to watch integrated circuit pin states, measure voltage, or analyze sub-blocks inside an integrated circuit. The boundary scan architecture provides a means to test interconnects (including clusters of logic, memories, etc.) without using physical test probes; this involves the addition of at least one test cell that is connected to each pin of the device, or sub-block, and that can selectively override the functionality of that pin. Each test cell may be programmed via the JTAG scan chain to drive a signal onto a pin and thus across an individual trace on the board or signal in the integrated circuit; the cell at the destination of the board trace or sub-block signal can then be read, verifying that the board trace or sub-block signal properly connects the two pins. If the trace is shorted to another signal or if the trace is open, the correct signal value does not show up at the destination pin, indicating a defect.
The following discussion uses the term scan chain. In general, a scan chain is a chain of registers within the design that are hooked together serially in shift mode and test the circuits they belong to in capture mode. Stimulus data is first shifted into the serial scan chain. The chain is then switched from shift mode to capture mode. The data in the scan registers are then provided to a circuit as test inputs (“scan chain outputs”), and a set of outputs that are generated by the circuit (“scan chain inputs”) in response to the scan chain outputs. The scan chain is then switched back to shift mode and the result is scanned out. The output from the scan chain is then compared to a reference value in order to identify possible defects in the circuit. The term scan chain may also be used to refer to the registers or other circuit elements that store the scan chain, in which case the input and output bits or values may be referred to as the input and output test patterns. A wrapper is a special type of scan chain that wraps a sub-block. Multiple scan chains may be used during ATPG testing. The scan chain minimizes the number of device pins used for testing, and a single scan input pin and a single scan output pin are implemented for each scan chain, resulting in the scan chains being inputted and outputted serially.
The following discussion uses the term wrapper. In general, a wrapper is a set of registers that interface directly to the inputs to a core and the outputs from the core. The wrapper registers allow test inputs to be provided to the core, and for test outputs to be captured. The wrapper registers are connected sequentially, allowing for the test inputs (the scan chain outputs) to be serially clocked into the wrapper, and for the test outputs (the scan chain inputs) to be serially clocked out of the wrapper.
The following discussion uses the term bus wrapper. In general, the bus wrapper may be differentiated from the wrapper in that the bus wrapper is a set of registers that interface directly to the inputs to a bus and the outputs from the bus. As further described below, the bus is the functional bus of the device.
The following discussion uses the term test interface. In general, a test interface is a set of pins that are dedicated for test purposes. The test interface may be contrasted with the functional interface, in that the functional interface is used for the normal, standard, intended inputs and outputs of the device, whereas the test interface is used for testing. That is, if the test interface is removed, the device retains all its normal, standard, intended use functionality. In some cases, the functional interface can be reused as a test interface. In this case, a controller, state machine, registers, or some combination determine whether the specific pins associated with the interface are test pins or are functional pins.
An example of an implementation of a test interface is a test access port (TAP). The TAP is typically defined by IEEE 1149.1. Thus, the term TAP is used to describe a specific, standardized, implementation of test interface used in the JTAG standard. (When the difference is important, this specific implementation may be referred to as the IEEE 1149.1 TAP or the JTAG TAP.) The JTAG TAP has four pins and an optional fifth pin. The four pins are test data in (TDI), test data out (TDO), test clock (TCK), and test mode select (TMS). The optional fifth pin is test reset (TRST). TDI and TDO are serial input and output respectively.
The following discussion relates to the IEEE 1687 standard. In general, the IEEE 1687 standard describes a methodology for accessing instrumentation embedded within a semiconductor device, without defining the instruments or their features themselves, via the IEEE 1149.1 TAP and/or other signals. The elements of the methodology include a hardware architecture for the on-chip network connecting the instruments to the chip pins, a hardware description language to describe this network, and a software language and protocol for communicating with the instruments via this network.
The cores 110-114 are collections of circuits that are each directed toward a particular function. Examples of the cores 110-114 are a microprocessor core, a Bluetooth™ transceiver core, a digital signal processor core, a power management core, etc. The cores 110-114 may be analog, digital, or mixed analog/digital. The specific cores 110-114 implemented on the integrated circuit 100, and their numbers, may vary depending on the combined functionality desired for the integrated circuit 100. In general, the techniques described below may be used in designs with two or more cores. The cores 110-114 receive inputs from the bus 120, and provide outputs to the bus 120.
The bus 120 connects the cores 110-114 and the other components of the integrated circuit 100. The bus 120 selectively operates in two modes: a functional mode and a test mode. In general, the functional mode corresponds to the integrated circuit 100 operating in its normal, standard manner, and the test mode corresponds to the integrated circuit 100 being tested (e.g., not operating in its normal, standard manner). In functional mode, the inputs to and outputs from the cores 110-114 are functional inputs and outputs. In test mode, the inputs to and outputs from the cores 110-114 are test inputs and outputs. These operational modes are described in more detail below.
The functional interface 130 receives functional inputs from outside of the integrated circuit 100, and provides functional outputs to outside of the integrated circuit 100; these inputs and outputs are collectively referred to as the functional signals 131. When the integrated circuit 100 is operating in the functional mode, the functional interface 130 provides the functional inputs to the cores 110-114 (via the bus 120), and receives the outputs from the cores 110-114 (via the bus 120) as the functional outputs. The functional interface 130 generally includes a number of input and output pins that are directed toward specific functions, such as address input/output, data input/output, clock signals, etc. There may be multiple pins of each particular type, allowing for parallel input or output of data. The functional interface 130 may include components such as registers, buffers, etc.
Alternatively, the functional interface 130 may include one or more of the other components, such as the test interface 140, the bus wrapper 150, and the test controller 160, as an aggregate controller component. The bus wrapper 150 may be considered to be part of the functional interface 130.
The test interface 140 receives test inputs from outside of the integrated circuit 100, and provides test outputs to outside of the integrated circuit 100; these inputs and outputs are collectively referred to as the test signals 141. When the integrated circuit 100 is operating in the test mode, the test interface 140 provides the test inputs to the cores 110-114 (via the test controller 160, the bus wrapper 150 and the bus 120), and receives the outputs from the cores 110-114 (via the bus 120, the bus wrapper 150, and the test controller 160) as the test outputs. The test interface 140 generally includes a number of input and output pins. The test interface 140 may only have a single pin for each particular type, allowing for serial input or output of data. For example, the test interface 140 may be implemented as an IEEE 1149.1 TAP, with five pins TDI, TDO, TCK, TMS and TRST. The test interface 140 may include components such as registers, buffers, etc. In general, the test interface connects to an external test device, such as automated test equipment (ATE). For low pin count devices, the test signals 141 may be a reconfigurable part of the functional signals 131.
The bus wrapper 150 connects between the test interface 140 and the bus 120. Just as the test signals 141 and functional signals 131 may have overlapping signals and reused logic, the connections to the bus 120 also has reused logic. Generally, when area is a concern all of the signals connecting to the bus are reused. This arrangement may be contrasted with other types of wrappers that connect between the test interface and one or more cores without using the functional bus. That is, in many existing systems, each wrapper surrounds a particular core, such that the wrapper communicates with the core without using the functional bus. In contrast, the bus wrapper 150 connects to the cores 110-114 using the bus 120, which is the functional bus. When the integrated circuit 100 is operating in the test mode, the bus wrapper 150 uses the bus 120 to communicate the test signals with the cores 110-114. Further details of the bus wrapper 150 are provided below.
The test controller 160 interfaces between the test interface 140, the bus wrapper 150 and the bus 120. The test controller 160 may be a component of the bus wrapper 150. In general, the controller 702 (see
The operation of the integrated circuit 100 in the test mode is discussed in more detail below, including the operation of the test controller 160, the bus wrapper 150 and the bus 120 in the test mode.
At 202, a bus wrapper is implemented between a test interface and a bus of the integrated circuit. This placement of the bus wrapper (between the test interface and the bus) may be contrasted with other wrapper placements in which each core has its own wrapper that connects to the core, instead of a shared wrapper that uses the functional bus to connect to the cores. This shared wrapper may also be referred to as a bus wrapper. For example, in
At 204, the integrated circuit is operated in a test mode. Once 204 occurs, the bus wrapper operates autonomously on the integrated circuit through the bus until either the test control disables the bus wrapper or takes the integrated circuit out of test mode. Note that much of the test mode operation involves the bus, or is performed by the bus. The test mode includes sub-steps 204a, 204b, 204c, 204d, 204e and 204f. A test controller (e.g., the test controller 160 of
At 204a, the bus wrapper receives test inputs from the test interface. For example, the bus wrapper 150 (see
At 204b, the bus wrapper provides the test inputs to the bus. For example, the bus wrapper 150 (see
At 204c, the cores receive the test inputs from the bus. In general, a particular set of test inputs is directed to a particular core, according to the core select address information. So consider at 204c that the selected core receives the test inputs. For example, the core 110 (or another of the cores 111-114; see
Note that the bus provides a connection between the bus wrapper and the cores, so 204b and 204c may be considered together. That is, at 204b-204c, the selected core receives the test inputs from the bus wrapper via the bus. Typically this happens when a clock signal generated by the bus wrapper at 204b arrives at the core triggered at 204c.
At 204d, the cores provide the test outputs to the bus. As discussed above, consider at 204d that the selected core provides test outputs that correspond to the selected core operating on the test inputs. For example, the core 110 (or another of the cores 111-114; see
At 204e, the bus wrapper receives the test outputs (also referred to as the test results) from the bus. As discussed above, consider at 204e that the bus wrapper receives the test outputs that correspond to the selected core operating on the test inputs. For example, the bus wrapper 150 (see
Note that the bus provides a connection between the bus wrapper and the cores, so 204d and 204e may be considered together. That is, at 204d-204e, the bus wrapper receives the test outputs from the selected core via the bus.
At 204f, the bus wrapper provides the test outputs to the test interface. For example, the bus wrapper 150 (see
The test mode operation of 204 (e.g., 204a-204f) may be repeated as desired for sets of test inputs, resulting in sets of test outputs. For example, multiple sets of test inputs may be sent to each core, and the multiple sets of test outputs may be compared to the expected reference values. Note that 204a and 204f may occur at the same time (simultaneously, contemporaneously, etc.), since as test inputs are shifted in at 204a, test outputs may be shifted out at 204f. Once the testing has been completed, the method 200 proceeds to 206.
At 206, the integrated circuit is operated in a functional mode. Note that the functional mode involves the bus since the bus is the functional bus for communicating functional inputs and outputs to the functional cores. The functional mode includes sub-steps 206a and 206b. A test controller (e.g., the test controller 160 of
At 206a, the cores receive the functional inputs from the bus. Generally, the functional inputs are a set of functional inputs that includes address and data information. The address information includes a portion that selects the core to be operated (the core select address information) and a portion that selects the register of the selected core to be addressed (the core address information). The selected core then operates on the data. For example, the core 110 (or one of the cores 111-114 of
At 206b, the cores provide the functional outputs to the bus. The functional outputs correspond to the selected core operating on the set of functional inputs (e.g., on the data of the data portion, according to the address in the address portion). For example, the core 110 (or one of the cores 111-114 of
The functional mode operation of 206 may be repeated as desired for additional sets of functional inputs. This operation corresponds to the integrated circuit operating according to its normal, standard, intended-use mode of operation. Note that if desired, the integrated circuit may be controlled to re-enter the test mode operation of 204.
Note that the functional mode operation of 206 is often performed quite removed in time and place from the test mode operation of 204. For example, the test mode operation of 204 may be performed before the integrated circuit is provided to a downstream customer or consumer, when the integrated circuit is connected to test equipment. The downstream customer or consumer then operates the integrated circuit in the functional mode of 206 by powering on the integrated circuit and operating it according to its standard, normal, intended use (e.g., when the integrated circuit is unconnected to test equipment).
Alternatively, the functional mode and test mode may be performed alternately or selectively, for example by the downstream customer. The downstream customer may operate the device in functional mode, and then may connect the device to test equipment and operate the device in test mode. Then the downstream customer may return the device to functional mode operation.
Note that various embodiments of the integrated circuit 100 (see
According to another example embodiment, in the test mode, the bus wrapper receives the test inputs from the test interface (204a) and provides the test inputs to the bus (204b), the cores receive the test inputs from the bus (204c), generate the test outputs from the test inputs, and provide the test outputs to the bus (204d), and the cores receive the test outputs from the bus and generate a second set of test outputs from the test outputs. This allows the cores to generate and operate on intermediate outputs. For example, the outputs from one core may be used as the inputs of another core.
According to another example embodiment, in the functional mode, the cores receive the functional inputs from the bus (206a), generate the functional outputs, and provide the functional outputs to the bus (206b). The integrated circuit 100 may then use the bus to route these functional outputs to other cores (e.g., these functional outputs are intermediate results), to the functional interface, etc. as desired.
At 252, the test controller controls the device such that selected cores operate in shift mode. Shift mode may be contrasted with capture mode (see 256 below). In general, shift mode refers to the bus wrapper receiving test inputs (see 254 and 270 below) or receiving test inputs and providing test outputs (see 270 below). Shifting is typically done serially, with the registers hooked together into n chains, with n inputs and n outputs. For example, the test controller 160 (see
At 254, the bus wrapper receives the test inputs and pipelined test conditions, shifted in, from the test interface. For example, the test inputs are “shifted into” the bus wrapper. (The pipeline and the pipelined test conditions are described in subsequent sections.) For example, the bus wrapper 150 (see
At 256, the device operates in capture mode, leaving the shift mode. Capture mode may be contrasted with shift mode (see 252 above or 268 below). In general, capture mode refers to the bus wrapper providing the test inputs to the bus (see 260 below) or receiving the test outputs from the bus (see 276 below). For example, the bus wrapper 150 (see
At 258, if the bus wrapper is in the write state, the method proceeds to 260, a submode of the capture mode 256. If the bus wrapper is not in the write state, the method proceeds to 272. For example, the bus wrapper 150 (see
At 260, the bus remains in the write state, and the bus wrapper provides the test inputs to the bus. For example, the bus wrapper 150 (see
At 262, the selected one or more cores receive the test inputs from the bus. (The selected one or more cores may operate on the test inputs and generate the test outputs, in accordance with their functional operation, prior to 274 below.) For example, one or more of the cores 110-114 (see
At 264, the bus wrapper changes state based on the next state conditions. For example, if the bus wrapper is in the write state (see 258 to 260 to 262) and the next state is the read state, the bus wrapper changes to the read state. If the bus wrapper is in the read state (see 272 to 274 to 276) and the next state is the write state, the bus wrapper changes to the write state. For example, the bus wrapper 150 (see
At 266, if the device is finished with capture mode operation, the method proceeds to 268. If the device is not finished with capture mode operation, the method returns to 258. For example, the test controller 160 (see
At 268, the device operates in shift mode. Shift mode may be contrasted with capture mode (see 256 above). For example, the test controller 160 (see
At 270, the bus wrapper receives the test inputs and pipelined test conditions from the test interface while providing the test outputs to the test interface. For example, the test inputs are “shifted into” the bus wrapper, and the test outputs are “shifted out of” the bus wrapper. The receiving and the providing may occur simultaneously or contemporaneously. Optionally, one or more of the cores may also receive the test inputs from the test interface, and may also provide the test outputs to the test interface. For example, the bus wrapper 150 (see
At 272, if the bus wrapper is in the read state, the method proceeds to 274. If the bus wrapper is not in the read state, the method returns to 256. For example, the bus wrapper 150 (see
At 274, the selected core provides the test outputs to the bus. (The core has generated these test outputs in the time after receiving the test inputs at 262 above.) For example, the core 110 (see
At 276, the bus wrapper receives the test outputs from the bus. For example, the bus wrapper 150 (see
The serial, in other words shift, and parallel, in other words capture, operation of the test mode can be seen in
The integrated circuit 300 includes the bus wrapper 150, the bus 120, and the core 110 (see
The bus 120 includes address lines (for brevity only 4 are shown) and data lines (for brevity only 4 are shown). The address lines communicate address information to the cores, and the data lines communicate data with the cores. The bus 120 may include additional, or fewer, address lines and data lines than the four shown. The address lines may include one or more core select lines. The core select lines select one or more of the cores to receive the address information and the input data from the bus 120, and to select one core to provide the output data to the bus 120. The core select lines are controlled, as part of the address, by the test controller 160 (see
The bus wrapper 150 receives test inputs 320 and outputs test outputs 321. The test inputs 320 and outputs 321 correspond to the test signals 141 (see
The bus wrapper 150 includes an address portion 302, a data out portion 304, an enable portion 306, and a data in portion 308. The address portion 302 stores the address information from the test inputs 320. The data out portion 304 stores the test data inputs from the test inputs 320. The data in portion 308 stores the test data outputs resulting from the core 110 operating on the test data inputs, received via the data lines of the bus 120. The data in and data out storage elements 304 and 308 can be combined into a single data storage element, where the data stored is the most recent of either data in or data out. The enable portion 306 stores one or more enable bits (also referred to as control bits) that are used to control aspects of the bus wrapper 150 and other circuits of the integrated circuit 100. The enable portion 306 controls the data circuits 314 and 348.
The address circuits 312 provide the address information from the address portion 302 to the address lines of the bus 120. The data circuits 314 provide the test data inputs from the data out portion 304 to the data lines of the bus 120. The enable circuit 316 disables the data circuits 348 (also referred to as output drivers 348) when the data circuits 314 are enabled, and enables the data circuits 348 when the data circuits 314 are disabled. The data circuits 318 provide the test data outputs from the data lines of the bus 120 to the data in portion 308.
The core 110 includes all its normal functional circuitry, which may include a multiplexer 330, an address decoder portion 332, a data in portion 334, a data out portion 338, and core circuitry 340. The multiplexer 330 provides the test data inputs from the data lines of the bus 120 to the data in portion 334, as controlled by the address decoder portion 332. The multiplexer 330 may also be used to route data from other locations including, for example, simply routing the data in value from previous cycles so that it is retained for the next cycle. The address decoder portion 332 decodes and optionally stores the address information from the address lines of the bus 120. If the decoded address matches the address designated for core 110, the data in portion 334 receives and optionally stores the test data inputs, from the data lines of the bus 120 via the multiplexer 330. The data out portion 338 provides and optionally stores the test data outputs generated by the core 110 in response to the test data inputs. The core circuitry 340 operates on the address information, the test data inputs, and functional signal inputs to generate the test data outputs. The data circuits 348 control the access to the data bus and all the test data outputs from the data out portion 338 to be provided to the data lines of the bus 120.
The bus wrapper 150 may be configured as scan registers. Scan registers may also exist elsewhere throughout the integrated circuit and may or may not be active with the bus wrapper 150. The bus wrapper 150 may include self-feeding flip-flops that are loaded through the scan path. For example, the test controller 160 (see
A novel technique for handling multiple asynchronous clocks for the integrated circuit 300 (or the integrated circuit 100 of
The operation of the integrated circuit 300 in test mode is generally as follows. First, the write enable operation is performed. In the write enable operation, the bus wrapper 150 drives the address, data and enable bits, and clock signals to the core under test (e.g., the core 110), via the bus 120. More specifically, the address portion 302 drives the address bits to the address decoder portion 332 via the address lines of the bus 120; the data out portion 304 drives the data bits to the data in portion 334 via the data lines of the bus 120; the enable portion 306 drives an enable signal to enable the data circuits 314 (and to disable the data circuits 348). The core circuitry 340 then operates on these test inputs and stores the test outputs in the data out portion 338.
Next, the read enable operation is performed. In the read enable operation, the bus 120 is disabled. The test controller 160 (see
Next, the enable portion 306 enables the data circuits 348 (and disables the data circuits 314), and the bus wrapper 150 receives the test outputs. More specifically, data from the remote core data out portion 338 is driven by the output drivers 348 to the bus wrapper data in portion 308 via the data lines of the bus 120. The sequence of the enabling and disabling of the bus drivers is programmable and can occur in any order and for any number of times. This is controlled by the pipeline 1002 shown in
Finally, the bus 120 is disabled, and the test results are scanned out as the test outputs 321. These results can come from scan registers in either the bus wrapper 150 or any of the cores 110 through 114. The test controller 160 (see
The structure of the integrated circuit 300 or the integrated circuit 100 (see
When the cell 400 implements the address portion 302 (see
The cell 400 may be thought of as a recirculating cell because it could be used anywhere or anytime that a fixed state is required. (For example,
The controller core is made up of the functional interface 130, the test interface 140, the bus wrapper 150, the test controller 160, and any other controlling logic not included in the remote cores 110-114 or bus 120 (see
The recirculating cell 400 may be implemented in one or more of the circuits shown in other of the figures. For example, the address portion 302 (see
One or more (or all) of the recirculating cells discussed in the previous paragraph, or in other figures, may be replaced with an arbitrary length pipeline (such as the pipeline 1002 of
The test equipment 520 communicates with the test controller 160 through the test interface 140 (see
The test setup 500 includes an input multiplexer 504, an output demultiplexer 506, and the test controller 160. The input multiplexer 504 loads stimulus shift data to the bus wrapper 150 through one of the selected scan chains 502 from the test equipment 520. The output demultiplexer 506 unloads response shift data from the bus wrapper 150 through one of the selected scan chains 508 to the test equipment 520. The test equipment 520 controls the multiplexer 504 via the test controller 160 to select one of the n+1 scan chains 502 to provide stimulus to the integrated circuit 510 through the selected input scan chain. The test equipment 520 controls the demultiplexer 506 via the test controller 160 to select one of the n+1 scan chains 508 to provide the response through the selected output scan chain to the output of the integrated circuit 510. The selected scan chains 502 or 508 may or may not correspond to the cores 110-114 operating on the selected input or output scan chain, being one of the n+1 scan chains 502 or 508. The test equipment 520 may then compare the data unloaded from the bus wrapper 150 and the scan chains 502 and 508 to the data expected from the outputs.
The test controller 160, TAP controller, or controller core may control the multiplexer 504 and the demultiplexer 506 from a data register (DR), from an instruction register (IR), or from any other circuit which is isolated from the active scan chains. The test equipment 520 may control the multiplexer 504 and the demultiplexer 506 using mode control pins, using the test controller 160 via test signals 141 (see
The integrated circuit 700 includes a controller portion 702 and a remote block portion 704, connected via a bus 706. The controller portion 702 may be implemented as part of the test controller 160 (see
The controller portion 702 may include an address circuit 708, bus keepers 710, a data circuit 712, bus driver circuits 714, a write enable circuit 716, a separation logic circuit 718, a read enable circuit 720, a first clock circuit 722, and a second clock circuit 724. The controller portion 702 receives a first functional clock signal 726 (functional_clk1), a second functional clock signal 728 (functional_clk2), and a test clock signal 730 (test_clk). The controller portion 702 may receive a control signal that selects functional mode or test mode for the device, for example via an interface pin connected to external test equipment or a board. The address circuit 708 corresponds to the address portion 302 (see
The remote block portion 704 includes an address decoder circuit 740, AND gates 742, flip-flops 744, enable circuits 746, logic circuits 748, and flip-flops 750.
The integrated circuit 700 operates as follows. The address circuit 708 in the controller portion 702 provides the address information via the bus 706 to the address decoder circuit 740 in the remote block portion 704. The separation logic circuit 718 controls the operational mode (read mode, write mode) of the integrated circuit 700, as well as which clock signal (726, 728 or 730) is provided to the flip-flops 744 and 750. The bus driver circuits 714, as controlled by the write enable circuit 716, provide the data from the data circuit 712 via the bus 706 to the bus keepers 710 and to the AND gates 742 in the remote block portion 704. The flip-flops 744 store the data input to the remote block 704. The logic 748 processes the data stored in the flip-flops 744. The flip-flops 750 store the data output from the logic 748. The enable circuits 746, as controlled by the read enable circuit 720, provide the data from the flip-flops 750 in the remote block portion 704 via the bus 706 to the AND gates 742, to the bus keepers 710 in the controller portion 702, and to the data circuit 712. To reduce power the clock signals 722 and 724 may also be gated with AND gates 742 using glitch free clock enable circuitry.
The flip-flop 824 and related circuit elements implement what may be referred to as a bus enable monitor circuit 828. The bus enable monitor circuit 828 monitors the bus enable signals and not the bus directly. The bus on (BUS_ON) signal 826 is set when the bus 120 (see
The recirculating cell 832 includes two multiplexers and a flip-flop. The recirculating cell 832 is similar to the recirculating cell 400 of
The pipeline 1002 is a recirculating pipeline. Alternatively, the pipeline 1002 (or any of the recirculating cells discussed above with reference to
The signals BUS_DATA_INTERNAL may be derived from the functional signals 131 (see
Of particular note are the multiplexers 1004, 1006, 1008 and their related inputs, outputs and connections. The multiplexer 1004 receives an output from the last register of pipeline 1002 and an arbitrary input, and outputs a selected one of the output from the last register and the arbitrary input, according to the scan enable signal scan_en 808. The multiplexer 1006 receives the output from the multiplexer 1004 and a scan input, and outputs to the first register of the pipeline 1002 a selected one of the scan input scan_in3 and the output of the multiplexer 1004, according to the scan enable signal scan_en 808. The multiplexer 1008 receives the output of the multiplexer 1004 and a functional input (BUS_DATA_EN_FUNCTIONAL here), and outputs a selected one of the functional input and the output of the multiplexer 1004, shown here as the bus data enable signal BUS_DATA_EN 822, to the bus control circuitry input, according to the test_enable signal test_enable 802.
The circuit 1100 implements an address cell (similar to the recirculating cell 400 of
The recirculating cell utilized in
Many of the signals in
The figures that show the circuit details (e.g.,
In general, the circuit 1400 generates an enable signal that controls whether the bus 120 (see
The circuit 1400 generates the read enable signal 806 (BUS_READ_EN) and the bus enable counter signal 916 (BUS_EN_CNT) used in
The flip-flops 1402 may be omitted in designs in which it is not desired to include a programmable maximum value for the enable counter. In such a case, the maximum value may be hard-coded and loaded into the flip-flops 1404 when the counter is reset.
The recirculating cell 1410 for the bus read enable signal BUS_READ_EN 806 includes two multiplexers and a flip-flop. (Compare to the recirculating cell 400 of
Although the circuit 1400 is shown generating the read enable signal (BUS_READ_EN 806), similar circuits may be used to control the timing on other of the signals of the bus wrapper 150, including the clock signals. (An example for the bus clock counter is shown in
The circuit 1500 generally implements a latch for the bus data input signal (bus_data_in) 1510. For example, the circuit 1500 may be used to implement the data in portion 308 (see
The circuit 1600 generates the BUS_CLK clock signal 1608. The circuit 1600 operates on a number of signals that appear in other figures, and the same labels are used here (e.g., the scan_en signal 808). The mux 1602 selects between the CLK signal 820 and the scan_clk signal 821 according to the scan_en signal 808 (or, alternatively, test_en 802), for output as the CLK signal 1604 to the internal core (e.g., controller 702, which includes the functional interface 130 and is distinct from the remote cores 110-114 of
The signals scan_in [m] 1752 and scan_in [n] 1754 provide scan inputs to the circuit 1700. For example, m goes from 1 to M, where M is the width of the clock counter. The circuit 1700 provides more detail regarding how the circuit elements generate the bus clock enable signal BUS_CLK_EN 1614 using the output from the flip-flop 1706, the BUS_CNTCL_OUT [m] signal 1716 (see also the BUS_CNTCL_OUT==0 signal 1616 in
The recirculating cell 1720 for the bus count clock start value BUS_CNT_CLK_MAX[m] 1704 includes the flip-flops 1702 and the associated multiplexers 1710 and 1711.
Note that, to avoid clutter in the figures, certain signals are omitted when their presence is clear from the context or other figures. For example, unless otherwise specified, all multiplexers with the scan input signal (e.g., scan_in, scan_in3, scan_in4, etc.) have the scan enable signal (scan_en) 808 as a select line, where scan_in is selected when scan_en 808 is high (logic “1”). See, e.g., numerous multiplexers in
The above description illustrates various embodiments of the present disclosure along with examples of how aspects of the particular embodiments may be implemented. The above examples should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of the particular embodiments as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope of the present disclosure as defined by the claims.
This application claims the benefit of U.S. Provisional App. No. 62/166,670 for “REMOTE BUS WRAPPER FOR TESTING REMOTE CORES USING AUTOMATIC TEST PATTERN GENERATION AND OTHER TECHNIQUES” filed May 26, 2015, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62166670 | May 2015 | US |