This application relates to automatic test pattern generation, and more particularly for to the automatic test pattern generation for a reconfigurable instruction cell array.
It is generally desirable to verify any integrated circuit to detect defects that may be incurred during the manufacture process. For example, automatic test pattern generation (ATPG) is a common technique to detect faults such as stuck-at-zero or stuck-at-one faults. In an ATPG process, the device-under-test (DUT) is loaded with an input data stream (test vector) so that a resulting output vector may be analyzed accordingly. Although the use of ATPG is routine, its application to certain types of integrated circuits may be problematic.
One problematic application involves the fault testing of reconfigurable instruction cell arrays. In a reconfigurable instruction cell array (RICA), a plurality of instruction cells is interconnected through a programmable switching fabric. The configuration of the instruction cells (with regard to what sort of logical function or instruction they implement) as well as the switching fabric can be reprogrammed every clock cycle as necessary to implement a given algorithm or function. Note that an instruction cell is different from an field programmable gate array (FPGA) logic block. In particular, an FPGA logic block is “fine-grained” in that it comprises one or more lookup tables that implement the desired logic gates. But an instruction cell is much “coarser-grained” in that it contains dedicated logic gates. For example, an arithmetic logic unit (ALU) instruction cell includes assorted dedicated logic gates. It is the function of the ALU instruction cell that is configurable—its primitive logic gates are dedicated gates and thus are non-configurable. For instance, a conventional CMOS inverter is one type of dedicated logic gate. There is nothing configurable about such an inverter, it needs no configuration bits. But the instantiation of an inverter function in a FPGA programmable logic block is instead performed by a corresponding programming of a LUT's truth table. Thus, as used herein, the term “instruction cell” refers to a configurable logic element that comprises dedicated logic gates.
The instruction cells in a reconfigurable instruction cell array may be arranged by rows and columns. An instruction cell, any associated register, and an associated input and output switching fabric for the instruction cell are denoted herein as a tile. A reconfigurable instruction cell array may thus be denoted as a tile array. Each tile is configurable to route received input channels as corresponding output channels to neighboring tiles in the array. With regards to such routing, there is the possibility that combinatorial loops are created. In a combinatorial loop, the routing through the involved tiles is combinatorial—in other words, there is no registering of an output channel in a given one of the tiles as the output channel is routed to an adjacent tile in the loop. This is problematic in that an automatic test pattern generation will not finish until the combinatorial loop finishes propagating. But a combinatorial loop can continue to cycle indefinitely, which prevents an ATPG analysis from finishing.
Accordingly, there is a need in the art for reconfigurable instruction cell arrays with more robust ATPG capabilities.
An instruction cell array is provided that comprises an array of tiles. Each tile includes a set of input/output (I/O) ports for switching between a plurality of input channels and a plurality of corresponding output channels. In addition, each tile includes an instruction cell comprising a plurality of dedicated logic gates for producing an instruction cell output from selected ones of the tile's input channels. Each I/O port is configured to select from the tile's instruction cell output and from the input channels for the remaining I/O ports for the tile to form the I/O port's output channels. In a normal mode of operation, an input channel may be received in a given one of the tiles and then routed through the tile without any registration. Alternatively, the input channel may be received in the same tile and processed into an instruction cell output that in turn is routed out of the tile as an output channel without any registration. In either case, the resulting output channel is a combinatorial signal.
Although the routing of combinatorial signals as output channels is part of normal instruction cell operation, that same behavior during a testing mode of operation is problematic in that combinatorial loops through various ones of the tiles may result. The instruction cell array disclosed herein is configured in the testing mode such that at least a subset of the I/O ports for each tile prevent any of their output channels from being formed as combinatorial signals. In this fashion, an instruction cell array is provided that obviates the formation of combinatorial loops during a testing mode such as an automatic test pattern generation mode (ATPG) mode of operation.
These and other advantageous features may be better appreciated through the following detailed description.
Embodiments of the disclosed reconfigurable instruction cell arrays and their advantages are best understood by referring to the detailed description that follows. It should be appreciated that like reference numerals are used to identify like elements illustrated in one or more of the figures.
The instruction cells in a reconfigurable instruction cell array may be arranged by rows and columns. An instruction cell, any associated register, and an associated input and output switching fabric for the instruction cell are denoted herein as a tile. An instruction cell array may thus be denoted as a tile array. Turning now to the drawings,
A datapath beginning in an instruction cell in an initial tile 100 routes on an output channel 101 in an east row direction. The routing for the datapath from subsequent tiles is in the appropriate east/west row direction or north/south column direction such that a final tile 105 at some selected row and column position is reached. In this example data path, two instruction cells are configured as arithmetic logic units (ALUs) 110. The instruction cells for the remaining tiles are not shown for illustration clarity. Each tile includes two switch matrices or fabrics: an input switch fabric to select for channel inputs to its instruction cell and also an output switch fabric to select for the channel outputs from the tile.
The switch box routing within a tile may be better understood with reference to an example tile 150 shown in
With regard to the channel input selections for any given channel output, a 3:1 multiplexer is sufficient—for example, a north output channel may be formed by selecting from the three remaining east, west, and south input channels. Similarly, a south output channel may be formed by selecting from the north, east, and west input channels. But in a RICA embodiment such as discussed with regard to tile 150, there is also the need to select for the instruction cell output. Thus, each output conductor in a RICA embodiment for each output channel in a given tile footprint side may be driven by a 4:1 multiplexer that selects from the corresponding input channels in the 3 remaining footprint sides and an instruction cell output signal.
With regard to tile 150, there are 5 channels/side*4 sides (corresponding to the east, west, north, and south directions)*1 byte/channel=20 bytes to select from coming into tile 150. In this embodiment, an instruction cell 505 associated with tile 150 processes 4 bytes simultaneously during each clock cycle (its operands thereby being four 8-bit words). Instruction cell 505 thus receives a 32-bit wide input to produce a 32-bit wide instruction cell output. The selection of this 32-bit wide input is made with regard to channel inputs on all sides of tile 150. For example, tile 150 may include thirty-two 16:1 multiplexers 120 for this selection. An output channel for a given tile side may be formed by selecting from an instruction cell output word 130 or from the corresponding input channels 140 from the three remaining sides for tile 150. One of the corresponding input channels 140 is from the opposite cardinal direction to the given tile side. But the remaining two channel inputs 140 are selected from the orthogonal directions. Thus, the selection for each channel bit output in tile 150 may be accomplished by a 4:1 multiplexer 135. Because each channel output word is a byte wide in this embodiment, each channel output word requires eight 4:1 multiplexers 135.
The number of 4:1 multiplexers 135 depends upon the number of channels, the channel width, and the number of words processed by instruction cell 125. In the example shown in
Another tile array 220 is shown in
With regard to each I/O port, the output channels are selected for by corresponding channel output multiplexers. Each output channel thus has its own corresponding channel output multiplexer at any given I/O port. For illustration clarity, only a single channel output multiplexer 200 is shown for an east output channel for east I/O port 240 in tile 205. This channel will be designated as the ith east output channel in that the particular channel “i” it represents is arbitrary. Additional east output channels would be provided by analogous channel output multiplexers. Similarly, the north, south, and west output channels would also be selected for by their own corresponding channel output multiplexers. The resulting set of I/O ports 225, 230, 235, and 240 (each one comprising a plurality of channel output multiplexers) makes up the output switch fabric for tile 205. With regard to any particular output channel driven out of a given I/O port, the corresponding channel output multiplexer may be configured to select for the same input channel received by the I/O port in the opposite direction. For example, an ‘ith” west output channel may be driven by the ith east input channel, where i is some arbitrary channel number. Similarly, an ith north output channel may be driven by an ith south input channel and so on.
Since channel output multiplexer 200 is driving the ith east output channel, it receives an “in_opp” input channel that corresponds to the west input channel for channel i. The in_opp input may also be referred to as the opposite input. Each channel output multiplexer may also select from input channels received at the I/O ports in the orthogonal directions. In other words, the channel output multiplexer for a west output channel may select from an input channel in the north and south directions. Similarly, the channel output multiplexer for a north output channel may select from the input channels in the east and west directions. In that regard, the orthogonality for such a selection may be denoted as being either clockwise or anti-clockwise with regard to the output direction for a channel output multiplexer. For example, from the perspective of channel output multiplexer 200, it is an anti-clockwise rotation to select from a north input channel. Similarly, it is a clockwise rotation to select from a south input channel for channel output multiplexer 200. Thus each channel output multiplexer in the I/O ports in tile 200 can select from a clockwise (in_cw) input channel and also from an anti-clockwise (in_acw) input channel. In addition, each channel output multiplexer can also select the instruction cell output word (in_co) to drive its output channel.
As will be explained further, only a subset of the channels in each tile may be registered in one embodiment. In alternate embodiments, every output channel may be registered in every tile. The following discussion will address an embodiment in which just a subset of the output channels may be registered without loss of generality. Even if a tile is configured to have the capability to register a given output channel, such a tile will also have the capability to bypass the registration for that output channel. So all output channels may be combinatorial regardless of whether a tile may register a given output channel or not. This ability to form combinatorial paths from one tile to another in the routing of a channel (a data word) through the tile array can be problematic. For example, consider
The improved architecture disclosed herein configures the output multiplexers in an instruction cell array switching fabric so as to eliminate the possibility of combinatorial loops. An example tile 400 is shown in
An output multiplexer 420 for the registered channel is also a 4:1 multiplexer as discussed above. However, output multiplexer 420 drives both a register 415 and a 2:1 multiplexer 410. The 2:1 multiplexer 410 can then select from either the output of 4:1 multiplexer 420 or a registered output from the register 415. In the ATPG test mode, the 2:1 multiplexer 410 is forced to select for the registered output from register 415.
The adaptations to the registered and unregistered channels shown in
To eliminate this danger, each tile in an ATPG test mode as disclosed herein has at least two cut sides. As used herein, a “cut side” refers to an I/O port that is configured in a testing mode to be unable to drive any input channel or an instruction word output out of the I/O port as an output channel. To prevent the formation of combinatorial loops, tiles with four cut sides may be arranged throughout the array in a lattice-like or diamond-shaped configuration. A first lattice configuration 600 for an ATPG test mode of operation is shown in
To allow for the testing of these cells, a variety of other testing patterns may be used such as shown in
For example, consider the north periphery for an array 700 shown in
It will thus be appreciated that for a two-cut northeast configuration as shown for an array 710 in
Note that the four corner tiles in an array may form an “internal” combinatorial loop. For example, a west output channel for the tile in the northwest corner of the array may be routed back into the same tile as a north input channel. To prevent this possible combinatorial loop, the output channels for the four corner tiles that may be routed back to the same corner tile have their combinatorial loops broken through a logic gate such as NOR gates 805 as shown in
As those of some skill in this art will by now appreciate and depending on the particular application at hand, many modifications, substitutions and variations can be made in and to the materials, apparatus, configurations and methods of use of the devices of the present disclosure without departing from the spirit and scope thereof. In light of this, the scope of the present disclosure should not be limited to that of the particular embodiments illustrated and described herein, as they are merely by way of some examples thereof, but rather, should be fully commensurate with that of the claims appended hereafter and their functional equivalents.