Abstract:
Disclosed is testing multi-port array macros where latches and logic are used to control the relationship between the write and read port of the array. This makes allowance for many different configurations of reading and writing the array. This also allows for greater test coverage than the previous method, which simply inverted one of the write address bits to form the read address.

Description:
BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   Our invention relates to testing, including pattern generation and address testing of integrated circuits, and more particularly, microprocessor chips containing multi-port arrays. A further aspect of the invention is the testing relationship between the read and write address ports. 
   2. Description of Background 
   Array macros are used in microprocessors to store information. Hardware errors affect these arrays in array cells, wordlines, bitlines, etc. ABIST (Array Built-In Self Test) engines are used to test for these errors and to help diagnose the root cause of any problem. ABIST engines are described in U.S. Pat. No. 5,954,830, Method And Apparatus For Achieving Higher Performance Data Compression In ABIST Testing By Reducing The Number Of Data Outputs; and U.S. Pat. No. 5,442,641 Fast Data Compression Circuit For Semiconductor Memory Chips Including An Array Built-In Self-Test Structure. 
   One type of an array is the multi-port array. Cells that each contain separate read and write ports as opposed to the standard single port 6-device cell characterize multi-port arrays. With a multi-port array the user is able to read and write data to different cells on the same cycle. However, if the user asks for a read operation and a write operation at the same address, the write is guaranteed, but the read is not. The testing for multi-port array macros is more complex than testing for the standard single port arrays. 
   One problem with ABIST engines as applied to multi-port arrays is that separate address counters are needed for the read and write ports. The result is that the separate address counters for the read and write ports increase the ABIST logic that is needed. This leads to increased ABIST size. One solution is use the same address counter for the read and write addresses, except that one bit is inverted to avoid reading and writing the same address in one cycle. Unfortunately, this artifact does not provide much flexibility in testing. Thus, a clear need exists for a more refined method for controlling the relationship between the read and write addresses would improve testing capability for multi-port arrays. 
   SUMMARY OF THE INVENTION 
   The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method, system, program product, and circuit that provides greater flexibility in controlling the relationship between the read and write addresses when testing a multi-port array macro. Several different methods of cycling through the read/write address counter are now available, instead of only one method possible before. Only extra scan-only latches and logic gates are needed, which is much more cost-effective than adding extra clocked latches. 
   The method, system, and program product tests a multi-port memory array with an ABIST engine that provides test patterns to the array. The ABIST engine includes logic for controlling read and write addresses of the memory array to avoid simultaneously reading from and writing to the same cell. This is accomplished by setting (through the ABIST engine) mode bits for read/write address relationships. In order to accomplish this the ABIST engine multiplexes the mode bits to select bit or word addressing. 
   The ABIST engine allows for logic transform from write addressing to read addressing, with the logic controlling a dynamic relationship between the read and write addresses of the macro to avoid simultaneously reading from and writing to the same cell. 
   The control signals provide an address control configuration that avoids simultaneously reading from and writing to the same cell. The circuitry generates the read addresses from multi-port array address configuration logic. In one example the address configuration logic receives inputs indicating the ABIST engine mode, and if the ABIST engine is in the write mode outputting control bits and XOR the control bits with a write address to produce a read address. 
   The addressing produced by the ABIST can be an inversion of the write addressing, or equal to the write addressing, or inversions of the write addressing in the low or high order bits, or in the middle order bits. 
   Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with advantages and features, refer to the description and to the drawings. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which: 
       FIG. 1  illustrates an older method of testing for multi-port array macros. The write and read addresses were taken from the same address counter with one low order bit inverted to avoid writing and reading the same array cell in the same cycle. 
       FIG. 2  illustrates one example of a logical diagram of the new architecture used to generate the read address from the write address. 
       FIG. 3  illustrates a detailed circuit diagram of the new BIST address generation for multi-port memories. 
       FIG. 4  illustrates, as an example, a table of three (3) control bits used to generate the read address from the write address. 
   

   The detailed description explains the preferred embodiments of the invention, together with advantages and features, by way of example with reference to the drawings. 
   DETAILED DESCRIPTION OF THE INVENTION 
   In standard ABIST designs for single-port array macros, one address counter is exclusively used to stimulate the address port of the array. A multi-port array with a separate read port and write port makes testing more complicated. One solution in the prior art sets up two distinct counters read and write address testing, but expedient increases the overall size of the ABIST engine significantly and also increases the complexity of the internal logic. 
   As shown in  FIG. 1 , a simpler solution used in previous designs has been to hard-wire an inversion ( 4 ) of one bit of the main address port ( 1 ). The write address bits ( 2 ) come from the main address port while the read address bits ( 3 ) contain the low order inversion. This is done in order to make sure that the same address is not undergoing a read and write operation during the same cycle. If this operation, a simultaneous read from and write to the same cell, was to occur, the cell would be written to, but the read operation could not be guaranteed. While a simple inversion solution is acceptable, this does not allow for much flexibility or control of whatever address port is not connected directly to the address counter. A more flexible approach as described herein below increases testability. 
   The method, system, and program product tests a multi-port memory array with an ABIST engine that provides test patterns to the array. The ABIST engine includes logic for controlling read and write addresses of the memory array to avoid simultaneously reading from and writing to the same cell. This is accomplished by setting (through the ABIST engine) mode bits for read/write address relationships. In order to accomplish this the ABIST engine multiplexes the mode bits to select bit or word addressing. 
   The ABIST engine allows for logic transform from write addressing to read addressing, with the logic controlling a dynamic relationship between the read and write addresses of the macro to avoid simultaneously reading from and writing to the same cell. 
   The control signals provide an address control configuration that avoids simultaneously reading from and writing to the same cell. The circuitry generates the read addresses from multi-port array address configuration logic. In one example the address configuration logic receives inputs indicating the ABIST engine mode, and if the ABIST engine is in the write mode outputting control bits and XOR the control bits with a write address to produce a read address. 
   The addressing produced by the ABIST can be an inversion of the write addressing, or equal to the write addressing, or inversions of the write addressing in the low or high order bits, or in the middle order bits. 
     FIG. 2  shows one solution to this problem. The write addresses ( 6 ) are still generated directly from the n-number address generation logic. ( 5 ) However, instead of a simple inversion, the read addresses ( 7 ) is generated from multi-port address reconfiguration logic. ( 8 ) 
     FIG. 3  shows a configuration with m-number latches providing various decoded configurations. Scan-only latches ( 9 ) allow bits to be set that control the relationship between the write and read addresses. These bits are then processed through write control and multiplexing logic. ( 10 ) This logic receives inputs from other circuitry to know when the ABIST engine is in write mode and if the address counter is in bit mode or word mode. The logic block ( 10 ) will output k+2 control bits, which are XORed with n-number write addresses to produce n-number read addresses. ( 11 ) 
   The method, system, and program product of our invention can generate a wide range of addresses.  FIG. 4  shows, as an example, what operations are available using only three scan latches. While eight distinct configurations are available, only four prove to be useful. 
   The first configuration enables the read address to be the total inversion of the write address. ( 12 ) Data is written from the starting address upward while data is read from the final address downward. These operations would cross over at the middle address of the array, and no array cell will be in read and write mode simultaneously. This is perhaps the most useful and important configuration of the four. 
   The second configuration allows for the read address to equal the write address. ( 13 ) Data can never be read from the array, but cells will be written with information. This configuration is used to test if the 2-port array cell can indeed guarantee a write when the read and write addresses are equal. 
   The third configuration provides for a read address that is equivalent to the write address except for the inversion of the low order bit. ( 14 ) This would allow for the reading and writing of 2-port cells that are on the same wordline, which would provide meaningful test results. 
   For the fourth illustrated mode of operation, the high order bit of the write address is inverted for the read address. ( 15 ) The reading of data from the array will begin from the middle of the array and will wrap around to the starting address at the end of the array. The writing of data will proceed from the starting address on upward. The other four configurations would provide combinations of inversions of the middle group of read address bits, which would be redundant and confusing to debug. These four modes of operation are a definite improvement over an inversion of a low or high order bit as in the prior art designs. It is also more cost-effective and efficient than having to add extra stand-alone latches for the read address counter. 
   The flow diagrams depicted herein are illustrative examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention. 
   The invention may be implemented, for example, by having the BIST read address generator as a software application (as an operating system element), a dedicated processor, or a dedicated processor with dedicated code. The code executes a sequence of machine-readable instructions, which can also be referred to as code. These instructions may reside in various types of signal-bearing media. In this respect, one aspect of the present invention concerns a program product, comprising a signal-bearing medium or signal-bearing media tangibly embodying a program of machine-readable instructions executable by a digital processing apparatus to perform a method for BIST read address generator. 
   This signal-bearing medium may comprise, for example, memory in a server. The memory in the server may be non-volatile storage, a data disc, or even memory on a vendor server for downloading to a processor for installation. Alternatively, the instructions may be embodied in a signal-bearing medium such as the optical data storage disc. Alternatively, the instructions may be stored on any of a variety of machine-readable data storage mediums or media, which may include, for example, a “hard drive”, a RAID array, a RAMAC, a magnetic data storage diskette (such as a floppy disk), magnetic tape, digital optical tape, RAM, ROM, EPROM, EEPROM, flash memory, magneto-optical storage, paper punch cards, or any other suitable signal-bearing media including transmission media such as digital and/or analog communications links, which may be electrical, optical, and/or wireless. As an example, the machine-readable instructions may comprise software object code, compiled from a language such as “C++”. 
   Additionally, the program code may, for example, be compressed, encrypted, or both, and may include executable files, script files and wizards for installation, as in Zip files and cab files. As used herein the term machine-readable instructions or code residing in or on signal-bearing media include all of the above means of delivery. 
   While the preferred embodiment to the invention has been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the invention first described.