Functional BIST with Improved Testability R. Ubar, N.Mazurova, J.Smahtina Computer Engineering Department, Tallinn Technical University Raja 15, Tallinn, Estonia, raiub@pld.ttu.ee Abstract: Binary 1. Introduction Rapid advances in the areas of deep-submicron electron technology and design automation tools are enabling engineers to design larger and more complex circuits and to integrate them into one single chip. System on a Chip (SoC) design methodology is seen as a major new technology and the future direction for semiconductor industry. The most important challenges of SoC testing are linked to test cost and fault coverage. According to the ITRS (International Technology Roadmap for Semiconductors) by 2014 it may cost more to test a transistor than to manufacture it unless techniques like logic Built-in Self-Test BIST are employed [1]. BIST is a technology to move on board the main functionalities previously carried out by Automated Test Equipments (ATE). In traditional BIST architectures, test pattern generation is mostly performed by adhoc circuitry, typically Linear Feedback Shift Registers (LFSR) [2], cellular automata [3] or multifunctional registers like BILBO (Built-in Logic Block Observer) [4]. BIST involves using on-chip hardware to apply pseudorandom test patterns to the Circuit Under Test (CUT) and to analyze its output response. The most widespread approach is test-per-scan BIST scheme [4]. Unfortunately, many circuits contain random-patternresistant faults [5] which limit the fault coverage that can be achieved with this approach. Established BIST solutions use special hardware for pattern generation (TPG) and test response evaluation (TRE) on chip, but this in general introduces significant area overhead and performance degradation. To overcome these problems, recently new so called functional BIST methods have been proposed which exploit specific functional units such as arithmetic units or processor cores for on-chip test pattern generation and test response evaluation [6-10]. In particular, it has been shown that adders can be used as TPGs for pseudo-random, pseudo-exhaustive and deterministic patterns. Investigations are known about properties of test patterns generated by simple adders [8], ones- and twoscomplemented subtractors [11], and more complex multipliers and MAC circuits [12]. All of them may generate pseudo-exhaustive or pseudorandom patterns with a similar quality as LFSRs do, and may reach a comparable fault coverage. The term "functional BIST" (FBIST) describes a test method to control functional modules so that they generate a deterministic test set, which targets structural faults within other parts of the system. It is a promising solution for self-testing complex digital systems at reduced costs in terms of area overhead and performance degradation. In this paper we propose a functional BIST for using in microprogrammed data-paths of digital systems. Differently from the known FBIST approaches the goal is not to generate by FBIST a predetermined deterministic test set. The idea of the proposed approach consists in using for test purposes the functional patterns produced by the microprogram itself. No additional external control for FBIST is needed, which is the advantage of the proposed approach compared to the known FBIST approaches. The generated functional test data play the same role as pseudorandom test patterns in traditional BIST approaches. The disadvantage of the proposed approach is the same as of traditional BIST approaches – low fault coverage because of the random-pattern-resistant faults. One method for improving the fault coverage of BIST schemes is to modify the CUT by either redesigning it to improve the fault coverage [13,14] or by inserting test points [15-16]. Fault coverage of traditional BIST can be improved by using weighted pseudorandom sequences [1719]. The disadvantage of the weighting approach is in the need of storing of the weight sets on chip and also, control logic is required to switch between weights, so the hardware overhead may be large. Another method to improve the fault coverage is to use a “mixed mode” approach where deterministic patterns are used to detect the faults that the pseudorandom patterns miss. In [18] a technique based on reseeding an LFSR was proposed that reduces the storage requirements. In [19] another improved technique was developed that uses a multi-polynomial LFSR for encoding a set of deterministic test cubes. More recently, a technique called bit flipping for generating deterministic test cubes using BIST control logic was proposed in [20]. Further, in [21] a mixed-mode approach was presented in which deterministic test cubes are embedded in the pseudorandom sequence of bits itself. The disadvantage of the mixed-mode approaches is in the need of storing the deterministic data which may need a lot of memory overhead. In this paper we have chosen the test point insertion approach to keep the hardware overhead low and to improve the fault coverage of functiona BIST. The paper is organized as follows. First, in Section 2 a brief overview of the idea of hybrid functional BIST is explained. Section 3 gives an overview of methods of selecting test points for improving testability in CUTs. In Section 4 the proposed test point selection method is described to reach 100% fault coverage in FBIST. In Section 5 we present the experimental results which demonstrate the feasibility and efficiency of our approach, and in Section 6 we draw some conclusions and discuss possible future work. 2. General Scheme of Hybrid Functional BIST Consider a microprogrammed data-path for division of fractional numbers, presented in Fig.1. It consists of a register block for storing the dividend, divisor, intermediate results of division, the quotient, and the counter of cycles. All the microoperations needed in the division procedure are carried out in the Arithmetic and Logic Unit (ALU) which has the role of CUT in this work. The ALU has data inputs and outputs connected via buses to the register block. The control signals from the control unit serve as additional inputs for ALU, and few status signals of the ALU serve as additional output signals connected to the control unit. During N cycles of the microprogram ALU is excercised with N functional patterns, and the responses of ALU will be compressed in the signature analyzer which monitors the whole division process. N cycles Fault simulator K*N Register block Functional test ALU K*N >> K Fault coverage Test patterns are produced on-line during the working mode of the system Signature analyser K Data Fig.1. Functional BIST in the microprogrammed divisor Instead of using only two operands A and B involved in the division process as the single test pattern for the divisor, and the quotient C = A/B as the single response to the stimuli A and B, in the FBIST scheme we will use all the data produced on the inputs of ALU during the N cycles of the division as input test patterns, and all the data produced on the outputs of ALU during the N cycles as responses to test patterns. In such a way, we have got a multiplication effect of N times in the number of test patterns when moving the test access from the instruction level to the microinstruction level. Denote by L the number of bits in the data operands (dividend and divisor), and by l the number of bits on the inputs of ALU. Then the reduction in the test data volume through the compression of test data in the described FBIST scheme is equal to R Nl . 2L For example (for the system used in the experiments), in the case of 32 bit words for the divisor with 105 inputs and 120 cycles the reduction in the volume of test data is 120*105/64 = 197. In this scheme the functional patterns produced directly on the inputs of ALU have the similar role as pseudorandom test patterns in classical BIST schemes. Similarly to the pseudorandom test, the functional test patterns are not able to cover random-pattern-resistant faults, which limits the fault coverage that can be achieved with the pure functional BIST approach. To achieve the desired fault coverage we have to improve the testability of ALU for the given test sequence by inserting proper test points. 3. Overview of the Test Point Insertion Methods for Improving Testability Test point insertion (TPI) is a well-known design-for-testability (DFT) technique that inserts additional logic into a circuit to increase the circuit’s testability. TPI aims particularly at improving the observability and/or controllability of hard-to-test signal lines in the circuit. Various TPI methods have been proposed since the 1970s, and nowadays TPI is supported by commercial EDA tools and commonly applied in industry [22]. The testability improvement offered by TPI results in higher fault coverage, smaller test data volume, and shorter test application time. Unfortunately, TPI also has some well-known disadvantages: test points cost additional silicon area, they affect the circuit’s timing, and resolving timing violations due to TPI complicates the design flow. Since test points add both area and performance overhead, it is important to try to minimize the number of test points that are to be inserted to achieve the desired fault coverage. Optimal test point placement for digital circuits has been shown to be NP-complete [23]. In [24] the first time a systematic method was proposed for test point insertion to increase pseudo-random pattern testability. In this paper simulation statistics is used to identify correlation between signals. Thereafter test points are inserted to break the correlation. In [25,26] the controllability/observability probabilistic (COP) testability measures [27] are used to guide the placement of test points. Using COP measures the sectors of hard-to-test faults are identified, and test points are inserted at the origin of the sectors. In [28] a cost function based on COP testability measures is developed. The gradients of the cost function are computed in linear time for each potential test point. The gradients are then used to estimate the global testability impact from inserting a particular test point. Based on this impact, a test point is inserted, and the COP testability measures are recomputed. The process iterates until the testability is satisfactory. In [29] the described approach is improved by considering the performance impact of inserting a particular test point. It was showen that by avoiding control point insertion on critical timing paths, high fault coverage can be achieved with zero performance degradation. All the described approaches are based on statistical analysis to improve the testability of circuits in general independent of that which test sequences actually will be used. In [30] the approach based on COP testability measures developed so far for Boolean circuits only was extended for three-state circuits. Recently TPI methods have been introduced to reduce the number of ATPG patterns for scan-based external testing [31,32]. Reducing the number of patterns leads to less test data volume and shorter test application time. The similar target for test point insertion is used [33]. Most TPI methods are used with Logic Built-In Self-Test (LBIST) [15,28,29,34,35] or with different advancements of LBIST like combining TPI with bit-flipping deterministic LBIST [20]. In these cases pseudorandom test patterns are used and the target of TPI is to improve the testability of the circuit independent of the test sequence used. In our FBIST approach we take as the basis the predetermined functional test sequence produced by the system itself. The task is to improve the testability of the circuit for the given particular test sequence. In [36] a similar task was formulated, and a test point selection method was proposed for a given test sequence. In [36] fault simulation is used to identify faults that are not detected by a specific set of test patterns. For each undetected fault, a path tracing procedure is used to identify the set of test points that will enable the fault to be detected, i.e. the set of test point solutions for the fault. Given the set of solutions for each undetected fault, a minimal set of test points to achieve the desired fault coverage is selected using a set covering procedure. Differently from [36], we don’t need in our approach costly critical path analysis to determine the whole set of possible test point solutions for each undetected fault. Instead of that we find a group of faults which can be activated (provoked [36]) by a single control point. In that way the complexity of the problem (the number of considered test point solutions) can be considerably reduced. Differently from [36] we don’t handle all the undetected faults in similar way mixing the controllability and observability solutions. We first, find the test point solutions for the faults that definitely need fault activation, and only thereafter solve the problem of observing the faults that remain still not tested. We also use a different approach to solve the problems of implementing control and observation points, compared to [36]. 4. Overview of the test point insertion method The problem of interest is given a set of test patterns that will be applied to the Circuit Under Test (CUT), insert as few test points as necessary to enable all the faults in the circuit to be detected. An overview of the test point insertion procedure is as follows. 1. Perform fault simulation to identify undetected faults. Fault simulation is performed for the set of test patterns generated by the functional BIST method for the given CUT to determine which faults are detected and which ones require improvement either in controllability or observability. 2. Find the set of faults that cannot be detected without improving their controllability. Some of the undetected faults cannot be activated (provoked) by the given test set. We call this subset of undetected faults as the controllability subset. For each fault from the controllability subset possible test point solutions are found by comparing the needed activation condition with the given set of test patterns. 3. Select a minimal set of test points needed for improving the controllability of the circuit Given the set of control point solutions at different test patterns for each fault of the controllability subset, a set covering procedure is used to find minimal set of control points that allow to activate all the faults of controllability subset. 4. Synthesize logic to activate the control points An additional circuitry is designed to improve the controllability of the circuit for activating the selected subset of controlled undetected faults. 5. Perform fault simulation to identify remaining undetected faults. The testability has been improved by the described procedures only for the faults of the controllability subset. Some of these faults may still not be detectable because of the poor observability. For these faults and for the other undetected faults not yet handled observation test points are determined. 6. Synthesize the output logic for improving the observability of the circuit An additional circuitry is designed to improve the observability of the circuit for reaching 100% fault coverage. 5. Finding test point solutions for the faults that need controlling Denote by T = {t1, t2,..., tn} the set of test patterns generated by the functional BIST circuitry. We assume that the test coverage of T is below 100% fault coverage. First, fault simulation is performed for T to determine which faults are detected and which ones require improvement either in controllability or observability. Denote by R = {r1, r2,..., rm} the set of faults not detected by T. Next, the subset RC R of the undetected faults which cannot be activated (provoked) by the given test set T will be defined. Let us call this subset of faults controllability subset. Consider, for example, an AND gate with inputs x1, x2, and, x3. We say that the stuck-at fault (SAF) x1 1 cannot be activated by T if there exists no test pattern ti T which produces a pattern x1 x2 x3 = 011 on the inputs of the AND gate. Similar conditions can be easily formulated for other types of gates and faults. For each fault rj RC from the controllability subset possible test point solutions are found by comparing the needed activation condition with the given set of test patterns. For example, assume that the test patterns t1, t2 produce, correspondingly, the patterns 111 and 010 on the inputs of the AND gate under discussion. Then the test point solutions for making the fault controllable will be: x1 = 0 for the test pattern t1, and x3 = 1 for the test pattern t2, In the next step a minimal set of control points is selected that allow to activate all the faults of the controllability subset. The main idea of the test point selection is in the following. The faults of the controllability subset RC will be partially ordered RC = (r1, r2,..., ri, rj,…, rp) in such a way that for each ri, rj there will be signal path in the circuit connecting the line of ri with the line of rj, or there will be no connection between these lines. We start with the first fault r1 of the ordered set RC, introduce the needed control signal on the line l1 related to r1, simulate the updated test pattern, and check if some other faults in RC have got activated by the updated test pattern. Denote this set of activated faults RC(r1,l1,1) RC. It may happen that RC(r1,l1,1) = . Then find the closest fanout line l1,2 that feeds l1,1, and repeat the procedure: introduce the needed control signal on the line l1,2 to activate r1, simulate the new updated test pattern, and check if some other faults in RC have got activated by the updated test pattern. Denote this set of activated faults RC(r1,l1,2) RC. Repeat this procedure until an input line lk,1 is achieved. The same is repeated for all the faults in RC. Then a matrix M = mi,j is built where i = 1,2,...,p, and j = l1,1, l1,2,..., l1,k1, l2,1, l2,2,..., l2,k2,..., lp,1, lp,2,..., lp,kp. In the matrix M, a set covering procedure is used to find minimal set of control points that allow to activate all the faults of controllability subset. Input l3 RC(r1,l1,3) Fault r1 RC(r1,l1,1) Line l1 Line l2 RC(r1,l1,2) Fig.2. The main idea of the method is illustrated in Fig.2. If the line l1 related to the fault r1 will be controlled, then a cone denoted by RC(r1,l1,1) illustrates the subset of possible faults controlled from the line l1. If now the line l2 will be controlled, then a bigger cone denoted by RC(r1,l1,2) illustrates the new subset of possible faults controlled from the line l2. We may expect that RC(r1,l1,1) RC(r1,l1,2), since the second cone is larger than the first one. However, it may be also opposite. The reason is that controlling the line l2 may cancel activation of faults activated by controlling the line l1. In fact not all fault in should be analyzed by the described procedure. If for two faults ri and rj there will be signal path in the circuit feeding the line of rj from the line rj, then the fault rj should not be analyzed, the test point solution of ri will be also the test point solution for rj. Differently from the proposed approach, in [36] for all the faults all the possible sensitized paths for provoking the fault should be generated and based on these paths all the possible test point solutions should nbe generated. As an example for the circuit in Fig.3 for the test sequence represented in Table 1, a matrix M is represneted in Table 2. Table 2 node fault 13 14 15 18 19 20 23 26 29 33 35 47 48 I43>a/0 I43>b/0 I29>a/1 I15>a/1 I15>b/1 I11>a/0 I53>b/1 I51>a/1 I10>b/0 I21>a/1 I3>a/0 I14>a/0 I14>b/0 X1 X2 X3 X4 X5 X6 X7 X8 1 1 1 X10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X9 1 1 1 1 1 1 In Table 2, the rows corresponds to the faults and the columns corresponds to the input nodes. The entry 1 means that the faults can be activated by controlling the input. All the one’s in a column xi show which faults can be activated from the input xi. By solving the set coverage task, the set of inputs X = {x2, x5, x9} is chosen, meaning that by controlling only the inputs x2, x5 and x9 all the faults in Table 2 can be activated. Table 3 input X2 X5 X9 node: fault 18: I15>a/1 19: I15>b/1 47: I14>a/0 48: I14>b/0 33: I21>a/1 35: I3>a/0 13: I43>a/0 14: I43>b/0 15: I29>a/1 20: I11>a/0 23: I53>b/1 26: I51>a/1 29: I10>b/0 val: T1 1 val: T2 1 val: T3 val: T4 0 0 val: T5 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 In Table 3 the test patterns are shown when it is possible to activate a given fault from the given input. The entry 0 (1) means that the controlling value 0 (1) for activating the fault is needed. For synthesizing logic to control the test points the similar methods can be used as proposed in [36]. 6. Synthesizing output logic for improving the observability [1] [2] Abramovici M., Breuer M.A., and Friedman A.D. Digital systems testing and testable design. IEEE Press, New York, 1999, 652 p. P.D.Hortensius, et al. Cellular automata based pseudorandom number generators for BIST. IEEE Trans. CAD, Vol. CAD-8,No8,pp.842-859. [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] M.Abramovici, M.Breuer, A.D.Friedman. Digital System Testing and Testable Design. Computer Science Press, 1990. E.B.Eichelberger, E.Lindbloom. Random pattern coverage enhancement and diagnosis for LSSD logic self-test. IBM J. Res. Develop., Vol. 27, No 3, pp.265-272, May 1983. N.A.Touba, E.J.McCluskey. Test point insertion based on path tracing. Prov. VLSI Test Symp., 1996, pp.2-8. S. Hellebrand, H.-J. Wunderlich and A. Hertwig. Mixed-Mode BIST using Embedded Processors. JETTA 12, 127-138 (1998). R. Dorsch, H-J. Wunderlich: Accumulator Based Deterministic BIST. ITC, 1998,Washington D.C. J. Rajski, J. Tyszer. Arithmetic BIST For Embedded Systems, Prentice-Hall, N J (1998). S. Chiusano, S. Di Carlo, P. Prinetto, H.-J. Wunderlich: On applying the set covering model to reseeding. Proc. DATE, 2001, pp. 156-161. R. Dorsch, H.-J. Wunderlich, “Tailoring ATPG for embedded testing”, Proc. ITC, Baltimore, MD, October 30 – November 1, 2001. A.P.Ströle. BIST pattern generators using addition and subtraction operations. JETTA, Vol.11, Aug., 1977, pp.69-80. J. Rajski, J. Tyszer. Multiplicative window generators of pseudorandom test vectors. Proc. European Design and Test Conf., 1996, pp.42-48. Z.Zhao, B.Pouya, N.A.Touba. BETSY: Synthesizing Circuits for a specified BIST environment. Proc. ITC, Oct. 1998, pp.144-153. F.Brglez, C.Gloster, G.Kedem. Hardware based weighted random pattern generation for boundary scan. Proc. ITC, Oct. 1989, pp.264-274. N.Tamarapalli, J.Rajski. Constructive multi-phase test point insertion for scan-based BIST. Proc. ITC, Oct. 1996, pp.649-658. M.Chatterjee, D.K.Pradhan, W.Kunz. LOT: Logic optimization with testability – New transformations using recursive learning. Proc. Int. Conf. on CAD, Nov. 1995, pp.318-325. M.F. AlShaibi, Ch.Kime. MFBIST: A BIST method for random pattern resistant circuits. Proc. ITC, Oct. 1996, pp.176-185. B.Koenemann. LFSR-coded test patterns for scan designs. Proc. European Test Conf., Mar. 1991, pp.237-242. S.Hellebrand, J.Rajski, S.Tarnick, B.Courtois, S.Venkataraman. Built-in test for circuits with scan based on reseeding of multi-polynomial linear feedback shift registers. IEEE Trans. On Comput. Vol. 44, pp.223-233, Feb. 1995. H.-J. Wunderlich, G.Kiefer. Bit flipping BIST. Proc. ICCAD, Nov. 1996, pp.337-343. N.A. Touba, E.J.McCluskey. Bir-fixing in pseudorandom sequences for scan BIST. IEEE Trans. on CAD of IC and Systems, Vol.20, No.4, Apr.2001. H.Vranken, F.S.Sapei, H.-J.Wunderlich. Impact of Test Point Insertion on Silicon Area and Timing During Layout. Proc. of the Design, Automation and Test in Europe (DATE’04), 2004. B.Krishnamurthy. A Dynamic Programming Approach to the Test Point Insertion Problem. Proc. of the 24 th Design Automation Conference, pp.695-704, 1987. A.J.Briers, K.A.E.Totton. Random Pattern Testability by Fast Fault Simulation. Proc. of. International Test Conference, pp.274-281. Y.Savaria, M.Youssef, B.Kaminska, M.Koudil. Automatic Test Point Insertion for Pseudo Random Testing. Proc. of Int. Symposium on Circuits and Systems, pp.1960-1963, 1991. M.Youssef, Y.Savaria, B.Kaminska. Methodology for Efficiently Inserting and Condensing Test Points. IEE Proceedings-E, Vol. 140, No 3, pp. 154-160, May 1993. F.Brglez. On Testability of Combinational Networks. Proc. of Int. Symposium on Circuits and Systems, pp.221-225, 1984. B.H.Seiss, P.M.Trouborst, M.H.Schulz. Test Point Insertion for Scan-Based BIST. Proc. of European Test Conference, pp.253-262, 1991. K.T.Cheng, C.J.Lin. Timing-Driven Test Point Insertion for Full-Scan and Partial-Scan BIST. Proc. of International Test Conference, pp.506-514, 1995. M.J. Geuzebroek, A.J. van de Goor. TPI for improving PR fault coverage of Boolean and three-state circuits. Proc. of European Test Workshop, 2003. May 25-28, pp. 3-8, 2003. M.J. Geuzebroek, J.Th. van der Linden, A.J. van de Goor. Test Point Insertion for Compact Test Sets. Proc. of IEEE Int. Test Conference, 2000, pp.292-301. M.J. Geuzebroek, J.Th. van der Linden, A.J. van de Goor. Test Point Insertion that Facilitates ATPG in Reducing Test Time and Test Data Volume. Proc. of IEEE Int. Test Conference, 2002, pp.138-147. M.Yoshimura et.al. A Test Point Insertion Method to Reduce the Number of Test patterns. Proc. of the 11 th Asian Test Symposium – ATS’02, 2002, pp.298-304. R.Lisanke et al. Testability-Driven Random Test Pattern Generation. IEEE Trans. On CAD, Vol. 6, Nov, 1987, pp.1082-1087. H.-C.Tsai et al. A Hybrid Algorithm for Test Point Selection for Scan-Based BIST. Proc. ACM/IEEE Design Automation Conference, 1997, pp.478-483. N.A.Touba, E.J.McCluskey. Test Point Insertion Based on Path Tracing. The Proc. of 14th VLSI Test Symposium, pp.2-8,1996. [37] [38] N.A.Touba, E.J.McCluskey. RP-SYN: Synthesis of Random Pattern Testable Circuits with Test Point Insertion. IEEE Trans. On CAD of IC and Systems, Vol.18, No 8, Aug 1999, pp.1202-1213. [39] M.J.;,.;