Embedded EE Array Grows a BISTy Core
Embedded EE Array Grows a BISTy Core
By Clifford R. Warren, Integrated System Design
March 1, 2002 (12:29 p.m. EST)
URL: http://www.eetimes.com/story/OEG20020227S0053
MI Semiconductor has developed for its smaller-geometry processes several types of nonvolatile memory macrocells, including a nonvolatile latch for situations that require a very small amount of nonvolatile memory; a serial array; and a full EE array with cells organized in rows and columns, much like a typical SRAM. A special "no-added-fab-steps" technique allows this to be done in a low-cost manner. Electrically erasable memory technology holds several advantages over flash memory when embedded in an ASIC. While flash memory has a higher density, the added processing step and lowered reliability limit its use in ASIC designs. Typical SRAM and DRAM designs can have millions of bits, and the algorithms used to test them are commonly called "March tests." However, the long programming times of an EE array severely limit the use of these tests. These nonvolatile memory devices require high voltages (around 20 V) and long programming times to write data t o the core. This can be on the order of 10 milliseconds. If we assume that the typical write time to an SRAM is on the order of 10 nanoseconds, then the program times for the array are 1 million times longer. The length of this programming time requires a new approach to test. As the EE array is embedded into a highly customized chip, test becomes an issue that must be dealt with. When an embedded macrocell is used, the inputs and outputs of the cell are likely to be buried deeply within the chip. In cases like these, built-in self-test is used to test these structures, much as BIST is the technology of choice to test embedded SRAM and DRAM. This article presents a "distributed-test" approach that tests several portions of the array separately. For example, we will test the row address decoders, column address decoders and control circuitry without using programming steps. When writing to the core, we will make use of several programming modes that allow us to program large portions of the array in ju st one programming step. As in most good approaches to test, the capability to test begins with the design of the device to be tested. Design built in The array allows for independent testing of the data latches (scratchpad RAM) separately from the core. In the BIST, the data latches are completely verified before processing to the more lengthy tests of the core. One page at a time But in addition to the 256 rows and 256 columns, this design includes an extra four rows (two on the top, two on the bottom) and four columns (two on each side) of ROM (see Fig. 1). This ROM is used to test the row and column addressing. By carefully selecting the data that is stored in these ROMs, and using the existing row and column address decoding to select this data, we can determine the correctness of the row and column circuitry. Of course, since this is a ROM, this test is now performed without the need for lengthy program cycles. The ROM can be tested with the BIST method, by using typical ROM BIST techniques. The 8Kx8 array makes use of a 32 x 8 s cratchpad RAM. This 256-bit RAM can be written to at high speed, like a normal SRAM. In normal operation, the user would write data to this RAM, then use a lengthy programming step to write a page (a 256-bit row) to the array. The next step in our strategy is to verify this small RAM. We accomplish this with our BIST approach by writing a pattern and reading it by using normal RAM BIST techniques. Note that the mode selection of the array macro allows this-that is, it allows one to read from the latch-based RAM directly. Thus, we write and read checkerboard and inverse-checkerboard patterns from the RAM. Now, with addressing tests complete and the latch-based RAM tests complete, we turn our attention to the array core. Again, the following special modes to aid in testing are built into the EE array: With the help of these modes, we can proceed with a test of the core. The following is an example of a test sequence: Now, we have an indication that the basic core cells are functioni ng as intended. We should do a test of the coupling between cells. This could be accomplished, to some degree, by some sort of checkerboard test on the core. Such a test must be limited in relation to a true March test because of the long programming times previously mentioned. But we can take advantage of the even/odd page write mode to quickly create a checkerboard pattern in the array: As one can see, the key to an efficient BIST test of an EE array is in the design of the array, and in working toward a distributed test. By making use of special test ROM, and also special programming mod es that allow a lot of testing to take place, we can minimize the number of time-consuming programming steps. It is then possible to use typical RAM and ROM BIST techniques to create a BIST approach that does a fairly extensive test while minimizing the number of time-consuming programming steps. As an example, implementing the steps described here would require only eight programming steps. BIST EE array Five basic signals are important in the implementation of the EE array BIST: test mode, bist_clk, done, good and sig_out. If "test mode" is high, then the array is in BIST mode and is controlled by the BIST cont roller. The "good" output is an indicator of the status of the test, throughout the test and at the end, for everything except the ROM checking, which must be done by signature analysis. The "sig_out" signal is the result of reading the test ROM and doing data compression (signature analysis), and must be checked by the automated test equipment at the end of the test. The "done" output goes high when the BIST test is complete. In some cases it may make sense to do the ROM signature checking within the BIST test and eliminate the "sig_out" signal. This can be done by checking the result of the signature to a known constant, and combining that result with the "good" signal output. If the user is confident that the ROM code will not change, this is a safe course to take. The "bist_clk" input is a free-running clock. The speed of this clock must be set precisely, to enable adequate programming times. That is, during programming steps, which are on the order of 10 ms, the BIST goes through a counter w hile waiting for the program to occur. Of course, the time that this step takes is dependent on the speed of bist_clk. For the 8k x 8 array in the 0.5-micron process, at 5 V, the frequency needed for bist_clk is 6.5 MHz. The array makes use of an on-chip VPP generator (a charge pump) to generate the ~20 volts needed for programming. Without the BIST approach, this VPP generator is not completely necessary (the 20 V could come from off-chip), but with BIST it is needed. The VPP generator allows for the generation of the 20 V by way of a logic-level signal. As it is necessary for the BIST to control all of the inputs to the device under test, the inclusion of the VPP generator is required when the BIST is used. --- http://www.isd mag.com
The EE array has a 4-bit mode selector. These modes are summarized in Table 1. Several of the modes have been created specifically to aid in the testing of the array. For example, modes 6 and 7, "Read Test ROM Rows" and "Read Test ROM Columns," are provided to enable quick testing of the address circuitry, large portions of the control circuitry and of the sense amps. The "even/odd page write and erase" and "block write and erase" functions will also be used to aid testing. These special functions are critical to achieving an efficient test.
The AMIS 8Kx8 EE array is arranged into 256 rows and 256 columns. Each row is referred to as a "page," and in normal use the array is written to one page at a time. The array macro includes a 32 x 8 scratch RAM (256 bits) that can be written to like a typical SRAM, and this data can then be programmed into one page of the array.
As mentioned already, these test techniques provide for the ability to create a built-in self-test around the array (see Fig. 2). The BIST test consists of a BIST controller, which supplies the test vectors and evaluates the output, and a mux that switches the array inputs between regular mode and BIST mode.
Clifford R. Warren, a design-for-test engineer at AMI Semiconductor (Pocatello, Idaho), graduated from Utah University in 1990 with a BSEE. His currentresponsibilities include memory BIST and design-for-testability strategies.
Copyright © 2002 CMP Media LLC
3/1/02, Issue # 14153, page 25.
Related Articles
New Articles
- Quantum Readiness Considerations for Suppliers and Manufacturers
- A Rad Hard ASIC Design Approach: Triple Modular Redundancy (TMR)
- Early Interactive Short Isolation for Faster SoC Verification
- The Ideal Crypto Coprocessor with Root of Trust to Support Customer Complete Full Chip Evaluation: PUFcc gained SESIP and PSA Certified™ Level 3 RoT Component Certification
- Advanced Packaging and Chiplets Can Be for Everyone
Most Popular
- System Verilog Assertions Simplified
- System Verilog Macro: A Powerful Feature for Design Verification Projects
- UPF Constraint coding for SoC - A Case Study
- Dynamic Memory Allocation and Fragmentation in C and C++
- Enhancing VLSI Design Efficiency: Tackling Congestion and Shorts with Practical Approaches and PnR Tool (ICC2)
E-mail This Article | Printer-Friendly Page |