Towards an Automatic Generation of Diagno stic In­ Field SB S T for Processor Components Mario Scholzel, Tobias Koal, Stephanie ROder, Heinrich Theodor Vierhaus Computer Engineering Group Brandenburg University of Technology Cottbus, Germany {mas I tkoal l htv} @informatik.tu-cottbus.de Abstract - This paper deals with a diagnostic software-based self-test program for m u ltiplexer based components in a proces­ sor. These are in particular the read ports of a m u lti-ported register file and the bypass structures of an instruction pip eline. Based on the d etailed analysis of both m u ltiplexer structures, first a manually coded diagnostic test program is presented. This test program can detect all single and m u ltiple stuck-at data- and address faults in a m u ltiplexer structure. But it does not fully cover the control-logic of the bypass. By further refinements a 100% fault coverage for single stuck-at faults, including the control logic, is finally obtained. Based on these results, an ATPG-assisted m ethod for the generation of such a diagnostic test program is described for arbitrary processor components. This m ethod is finally applied to the m u ltiplexer structures for which the manually coded test program is available. The test length and test coverage of the generated test program and of the hand-coded test program are compared. I. INTRODUCTION Beside power, area, and performance constrains, reliability becomes a more and more important issue for the design of embedded systems. Due to a reduced feature size (28 nm and beyond), hardware is exposed to higher stress conditions dur­ ing operations [ 1 8] and deviations of device- and circuit pa­ rameters in the production process [3 , 25] . Due to these facts, permanent faults will occur faster and more frequently during the lifetime of highly integrated devices, which will result in more early-life failures and wear-out effects. Therefore, future reliable processors should be able to cope with permanent faults in the field; e.g. by some kind of self-reconfiguration. Several approaches for such a self-reconfiguration have been published. In [ 1 4] permanent faults are handled by executing a program that does not use the defect components of the proces­ sor. Various versions of the program are computed in advance and stored on-chip. In [ 1 7] various program transformations are proposed, in order to adapt the program in-the-field. In [22] a more regular scheme is presented that allows to adapt the executed program in-the-field to the current fault state of the processor. However, in these approaches a diagnostic test method, which allows for localizing the defect component in the processor, is not included. A hardware-based reconfigura­ tion scheme together with a software-based self-test is present­ ed in [ 1 5 ] . In [9] a hardware based self-test and reconfiguration scheme is presented. In both approaches the granularity of the self-test and self-repair is at the granularity level of functional units. In [23 ] the granularity of a software-based self-repair is lowered down to simple 2: I -multiplexer structures. A software- based self-test for this level of granularity has been presented in [24] . The paper at hand presents a refinement of the manual­ ly developed diagnostic test program in [24] for the read-ports and bypasses. By the refinements, faults in the control logic of the bypass are covered, and the fault coverage for the bypass is improved to 1 00% . The main contribution of the paper is the well-structured ATPG-assisted method for generating the diag­ nostic test program, and a comparison between the manually developed test program and the test program generated with A TPG support. II. RELATED WORK The diagnostic self-test presented in this paper will work in-the-field, but off-line. I.e., the processor is able to detect a permanent fault autonomously, but not during normal opera­ tion. Rather the test is performed during the start-up of the processor or in idle-times . The diagnostic results of such a test can be used by a self-repair routine, which is embedded into the processor for re-configuration purposes. Two maj or strate­ gies exist for such an in-field off-line-test. First, a scan-based built-in self-test (BIST) may be employed. This type of test uses the scan-test infrastructure in the processor [2 1 ] . Test responses are compacted on-chip for reducing the memory consumption, e.g. by MISR structures. But fault localization for diagnostic purposes is usually done off-chip, because diag­ nostic BIST is used for the post-production analysis of defects. I.e., determining the scan chain and the scan cell containing the faulty test response is usually done off-chip. Potentially a de­ vice with BIST can execute a self-test in the field. Unfortunate­ ly, the localization of a fault, based on a single MISR signature, is a problem due to the strong compaction of the test responses. Therefore BIST-approaches that produce more than a single signature have been developed [8] . Moreover, in [26] the local­ ization of the scan chain containing the faulty test response is done on-chip by repeating the test several times . In [ 1 0, 12] also multiple signatures are generated, and faulty signatures can be saved on-chip. This supports an off-chip diagnosis that determines faults in the net list based on faulty signatures. Thus, all of these techniques still rely on powerful off-chip analysis techniques. Moreover, typically scan-test and diagno­ sis works on flat gate level net lists that do not know processor components at functional level. Mapping a fault in the net list on processor components is not in the scope of these works . A second maj or strategy for detecting permanent faults in­ the-field is a software-based self-test (SB ST). This is basically 978-1-4799-0597-3/13/$31.00 ©2013 IEEE a functional approach, because the inputs of processor compo­ nents are stimulated by executing a test program, and the cor­ rect functional behavior is observed at their outputs [20, 27] . According to [20] , the methods to generate this kind of func­ tional test can be divided into functional and structural ones. Functional generation methods can be purely random or feed­ back based. A pure random based method is described in [ 1 9] . There the test program i s generated by a kernel on-chip. The kernel produces executable test programs. In [ 1 1 ] a method called "IlGP" is presented, which uses feedback information from fault simulation to reduce the test program size of the randomly generated instructions in order to improve the effi­ ciency of the SBST. Structural methods for generating test programs rely on the knowledge of gate-level or RTL descrip­ tions. The benefit of all those methods is the availability of a structural-fault coverage and the possibility to shift the process of pattern generation for complex logic functions into an A TPG tool to receive deterministic test pattern that can be mapped to a specific instruction sequence [4] . A module-based test program generation is presented in [7] . Extensions of a SBST to a diagnostic SBST are presented in [ 1 , 2, 6] . The diagnostic capability has been developed for production test. The test programs generate a signature that is analyzed off­ chip, for example with dictionary based-methods. Thus, for in­ field diagnosis, these approaches suffer from the same problem as diagnostic scan-based approaches. In [ 1 3 ] a SBST for single stuck-at faults in multiplexer structures of a processor has been proposed. And in [ 1 6] minimal test sets for single stuck at faults in multiplexer structures have been proposed. The meth­ od in the paper at hand is for detection of multiple faults in multiplexer structures. Obviously a SBST is very well suited for an in-field-test. However, very often this type of test is used as a low-cost post-production test for improving the fault cov­ erage. Therefore, the goal in almost all publications about SBST is to achieve high fault coverage with short test pro­ grams. This results in a low diagnostic resolution, because as much faults as possible should be covered by applying a single test pattern. In turn, this means that various faults can be the reason for a failing test pattern, and a location of the fault is not uniquely possible. This paper moves away from this paradigm, because the diagnostic software-based self-test is explicitly developed for in-field-diagnosis. The diagnostic capability requires distinguishing between various fault situations. At least this is achieved by an increased number of test patterns. III. contains 1 6 -bit registers, then the read port is composed of 1 6 identical instances o f a multiplexer tree (mux-tree). Thereby data input k of mux-tree i is connected to bit i of register k. Each mux-tree receives the same control signal r. Therefore all mux-trees select their data input from the same register r. From a functional point of view, the read-port in the given example has 64 1 6-bit data inputs rO, . . . ,r63, a 6-bit select signal r, and a single 1 6-bit data output. A software-based self-test of the read port is done by initializing the registers rO, . . . ,r63 with appro­ priate values, applying a value to r and capturing the response at the data output. M u ltiplexer Tree D Figure 1 Read -Port Structure. B. Multiplexer Structures in the Bypass The bypass of a processor core has a very similar structure to the read port. It is used for forwarding values in pipe lined processors. For example, suppose a superscalar processor ar­ chitecture with a 4-stage instruction pipeline (fetch, decode, execute, write-back) and four execution units. I.e., four results are computed simultaneously in the execution stage, and four results are present at the same time in the write-back stage. These eight values are stored in pipeline registers. We will name these registers as exO, . . . ,ex3 and wbO, . . . ,wb3. The by­ pass is now a multiplexer structure as it is shown in figure 2. read­ port exO ex1 ex2 ex3 wbO wb1 wb2 wb3 THE DIAGNOSTIC TEST The diagnostic test in this paper is a refinement of the soft­ ware-based self-test programs presented in [24] . The test is used in [24] for diagnostic purposes of a VLIW processor with 4 issue slots. The register file is built up from standard cells, so the read-ports are multiplxer-based. The test programs apply test patterns at the inputs of the read-ports of the mUlti-ported register file and at the inputs of the bypasses. The next section briefly describes these components. A. Multiplexer Structures in the Read-Ports The structure of a multiplexer-based read port of a multi­ ported register file with 64 registers is shown in figure 1 . The read port is used to read the value of a selected register. The register is selected by the control signal r. If the register file L...-�-r- Ds,-wbO L...-�- Ds'-wb3 Figure 2 Bypass Structure. It has 9 1 6 -bit data inputs, a single data output, and a 4-bit control signal. This control signal is used to select either the input from the read port (no forwarding) or from one of the pipeline registers (forwarding). The control signal is generated by an encoder, and the input signals for the encoder are gener­ ated by compare-components (cmp). Each cmp compares the number of a destination register from the write-back- or exe­ cute-stage with the used source register number in the decode C. RPO, . . . ,RP63 : The FRC RPx represents all faults that will have the effect that register x is not read properly through the read port. • BPF : This FRC represents all faults that will have the effect that a required forwarding in a bypass does not work properly. I.e., one of the inputs Dst_exO, . . . , Dst_wb3 in figure 2 has the same value as Src_de, but the forwarding of the corresponding value is not done correctly. • BPNF : This FRC represents all faults that will have the effect that forwarding takes place in a bypass although a forward is not needed. I.e., none of the inputs Dst_exO, . . . , Dst_wb3 in figure 2 has the same value as Src_de, but nevertheless one of the data inputs exO, . . . ,wb3 is selected by the bypass. Please note that the classification of faults into FRCs does not change the faults covered by the test. But it changes the granularity of the diagnosis, because all faults belonging to a single FRC are mapped to the same functional misbehavior. • IV. THE MANUALLY GENERATED TEST PROGRAM The test programs for the read-port- and bypass-structures in figure 1 and figure 2 have been developed manually with respect to the FRCs given above. Based on the functional mis­ behavior specified by the FRC, the faults belonging to a certain FRC are determined by a manual analysis of the gate list of the considered component. Then the test patterns are derived for exercising the faults. In existing approaches for software-based diagnosis [ 1 , 6] this is done the other way around. First, the test patterns are determined, and then the faults that cannot be sepa­ rated by these test patterns are grouped together. Table I shows all test patterns that are used for a read port test. A single test pattern defmes all inputs of the read-port. r No. of Test Pattern rO 0 1 2 3 4 ... 64 65 66 67 ClassifYing Faults/or Diagnsotic Purposes The quality of a functional diagnostic test depends on two issues. First, it should achieve high fault coverage. In order to evaluate fault coverage, a fault model is needed, that deter­ mines all possible faults within a component. Second, detected faults must be distinguished according to the functional misbe­ havior they produce. The link between the fault model and the produced functional misbehavior is made by fault-repair­ classes (FRCs). The set of FRCs is defined from a functional point of view and depends strongly on the capabilities of the self-repair approach. I.e., a FRC represents a functional misbe­ havior that can be handled by a certain self-repair mechanism. Therefore it is important to group together all detectable faults that can produce this misbehavior. A FRC contains all faults (according to the fault model) that will produce the correspond­ ing functional misbehavior. The following FRCs were defmed for the read port and bypass structures shown in figure 1 and figure 2. Thereby we have taken into account the features of the software-based self-repair routine from [23 ] : TEST PATTERNS FOR THE READ PORT TABLE I. stage. The valid-flag of each pipeline register is neglected in the figure. Encoder and cmp-components can be considered as the control logic of the bypass. The bypass is tested by apply­ ing appropriate test patterns at the inputs exO, . . . ,ex3, wbO, . . . , wb3, read-port, Src_dex, Dst_exO, . . . ,Dst_wb3. This is done by filling up the pipeline with appropriate instructions. 0 0 0 0 1 2 3 0 0 0 0 r2 1 2 0 0 -I 0 0 0 0 -I 62 63 0 0 0 0 0 0 0 r62 r63 ... 0 0 0 0 0 -I 0 0 63 127 128 rl 0 0 0 0 ... ... 0 0 0 0 ... 0 0 0 0 0 0 0 0 ... ... ... -1 ... ... 0 -I 0 From the table it follows that the full test o f a single read port requires 128 test patterns. Test patterns 1 to 64 are used for a stuck-at 1 test. All data inputs are 0 (rO, . . . ,r63) and each register is selected once by r. If there is a SA 1 that propagates to the output of the read-port, then it will be detected. Test patterns 65 to 128 are used for testing for address and stuck-at­ o faults. Each test pattern applies a - 1 at this data input that is selected by r. If this - 1 is not observed at the data output, then there is either an address fault or a SAO fault in the data path. A detailed motivation for these test patterns can be found in [24]. Applying the specified 128 test patterns to the read port re­ quires a test program with 640 instructions. The organization of the bypass test is very similar to the or­ ganization of the read-port test. In [24] the inputs of the bypass are set to the test patterns shown in table II by an appropriate instruction sequence. A "-" in colurrms Dst_exO, . . . ,Dst_wb3 means that the value of the corresponding pipeline register is not valid. Test patterns 1 to 1 6 check for stuck-at- l faults. The test patterns are applied in two phases. The fust phase ( 1 -8) uses register 0 as source register in the decode stage (src_de 0). The second phase (9- 1 6) uses register 63 as source register in the decode stage. Thereby each test pattern sets all data in­ puts of the bypass to 0, and all inputs of a single cmp­ component either to 0 or 1 . By this it is checked that the for­ warding works and no stuck-at- l fault occurs in the data-path of the multiplexer. The stuck-at-O test is done in two phases again ( 1 7-32). But each test pattern holds exactly the selected data input of the bypass at -1 while all other data inputs are O . = TABLE Il. TEST PATTERNS FOR THE BYPASS Dst data inputs N o read ex( exl ex2 ex3 !wbO wb l wb2 wb3�x( exl ex2 ex3 wb( wb l wb wb3 src_de • port 1 0 0 0 0 0 0 0 0 0 0 - - - - - - 0 0 � 0 0 0 0 0 0 0 0 0 - 0 - - - - - - 0 fi 0 ]( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - - 63 - - 63 - H 0 1 0 H 0 0 -I 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -I 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 �� �5 �(' �2 -1 - - - - - - - - - - - 0 63 - 0 - 63 - - - - - -1 - - - - - - 0 -1 - - - 0 - 63 0 - 63 ... 0 63 63 ... 63 0 0 ... 0 63 63 ... 63 From table II it follows that 32 test patterns are needed for the bypass test. The assembler implementation of the test rou­ tine takes 88 instructions (the assembler code can be found in [24]). In order to determine the fault coverage results shown in table III, we have used the gate list of a pipelined VLIW pro­ cessor. Using this gate list, the test programs were simulated on the processor in multiple runs. The read ports and the bypass were built up from simple gates and 2: I -multiplexers in the used gate list. Using the stuck-at fault model, we could there­ fore define all possible faults at gate level. The read port has 566 faults, and the bypass has 140 1 faults. The faults were related manually to the FRCs. In a fust test cycle a fault simu­ lation was done for each possible single-stuck-at fault in the bypass and read port. In each test run of the cycle a single fault was inj ected in the gate list and then the test program was sim­ ulated on the processor model containing the fault. For the read port a fault coverage of 1 00% was obtained using the test pat­ terns shown in table I. For the bypass a fault-coverage of 9 1 . 0% was obtained. A maj or limitation of the bypass test as it is presented in [24] is that it only checks for correct forward­ ing. Therefore all detected faults will belong to the FRC BPF (see row BPF in table III). A manually analysis of the missed faults in the gate list of the bypass showed up that these faults are located in the control logic of the bypass. These were exact­ ly the faults that will cause a false-forwarding, thus, belonging to the FRC BPNF. From a further analysis we could find out that these faults could be stimulated by reading a register with number r in the decode stage and writing at the same time a register in the pipeline with the number r ', where r and r ' differ in exactly one bit position. This could be checked with six different register combinations (register number is coded into six bits). All of these six register combinations must be used for each of the eight pipeline registers exO, . . . ,wb3, from which a forwarding is possible. This results fmally in 48 additional test patterns. The fault coverage for the FRC BPNF is 5 5 . 0% . Because this test covers all faults that were missed with the FRC BPF, the fault coverage for the whole bypass could be improved to 1 00% . TABLE III. Component FAULT COVERAGE OF THE MANUAL APPROACH FRC Read Port RPO URP I U . . . URP63 BPF Bypass BPNF Fault Coverage test patterns 1 00% 9 1 .0% 55.0% 128 32 48 In a second test cycle an exhaustive fault simulation was done for all possible double stuck-at faults in the read port and in the bypass. All of these faults could be detected successfully. V. ATPG ASSISTED TEST PRORAM GENERATION The presented manual test routine provides excellent test coverage combined with diagnostic features. However, if im­ plementation details of the multiplexer structure change, then some of the presented test pattern may no longer be effective. Then a manual classification of the faults into FRCs is needed again for the new multiplexer structures. Furthermore, the fault simulation for determining the fault coverage is a time­ consuming task. For this reason we will present in this section an ATPG assisted approach for diagnostic test program genera­ tion. The ATPG tool is used for generating test patterns for the defined FRCs. Figure 3 shows the proposed method. For each processor component (e.g. the bypass), a set of FRCs is de­ fined. This is done from a functional point of view. Then the processor component under test is synthesized. As in the man­ ual approach, each FRC represents certain misbehavior of the corresponding component. In order to force the A TGP tool to generate only test patterns that will test for the specified mis­ behavior, some constraints on the test patterns must be speci­ fied. For example, if the forwarding of the bypass should be tested, then the test patterns must fulfill the property that some destination registers in the write-back or execution stage must have the same number as the source register in the decode­ stage of the pipeline. This constraint is used by the ATPG toll for the generation of the test patterns for the FRC BPF. Please note that structural information about the component is not taken into account for the definition of the constraints. The ATPG tool only generates test patterns that fulfill the given constraint(s) . Thus, if the test patterns will be applied by a test program, then the behavior is tested under the specified con­ straints. The application of the test patterns is done by mapping the test patterns into pre-defmed test program-templates, as it is described for example in [5] . The definition of the templates must be done manually. Figure 3 Flow of ATPG-supported test program generation. Please note that test pattern generation is done for each FRC separately. This ensures that each of the test programs checks for the behavior of its corresponding FRC . Therefore, the fault coverage, which is reported by the ATPG tool for the test patterns obtained for a single FRC is sometimes low. Moreover, some faults in the component may be tested multi­ ple times by test patterns from different FRCs. This is always the case for a fault that will produce misbehavior in various FRCs. The final fault coverage of the whole component is obtained by checking the fault coverage of the test patterns generated for all FRCs of that component. The presented flow in figure 3 must be repeated for each component of the proces­ sor, for which a diagnostic test is needed. We have applied this method to the Fault-Repair-Classes BPF, BPNF, and RPO, . . . ,RP63 . The constraint for the FRC BPNF specifies that the source register number in the decode stage is different from all destination register numbers in the execute- and write-back stage of the pipeline. For each FRC RPx the constraint specifies that the register number at the control input of the multiplexer must be x. Given these con­ straints, test patterns were generated for the FRCs shown in the fust four rows of table IV. The last two rows summarize the results for the whole bypass and read port. PROPERTIES OF THE ATPG-GENERATED TEST PROGRAM TABLE TV. No. of Constraints Number of TP fault coverage FRC RPx (min) RPx (max) BPF only BPNF only I 1 4224 1 664 10 18 94 66 28.6% 29.0% 94.3% 58 .2% Read Port Bypass 64 5888 904 1 60 1 00% 99.3% Because there are 64 FRCs for the read port, only the min­ imum and maximum of the results obtained for these FRCs are shown. The number of generated test patterns (TP) ranges between l O and 1 8 for each FRC RPx. No more than 29% of the faults can be tested with these test patterns for each FRC separately. However, in total each fault in the read port is cov­ ered. The bypass is tested by two FRCs. Both of them together yield a fault-coverage of 99 . 3% . l OO% fault coverage were not obtained, because 6 faults in the synthesized gate list of the bypass were classified as untestable by the ATPG tool (even without using constraints). It can be noticed that the number of constraints, which are needed to specify the properties of both FRCs, is very high. This is due to some technical limitations of the used ATPG tool. But the needed constraints have a very regular structure. So they were generated by scripts. The results in table IV were obtained for a non-optimized synthesis of the read-port and bypass. The proposed method from figure 3 has been also applied to a different implementa­ tion of the bypass and read port structure. For this purpose the behavioral VHDL descriptions have been synthesized under timing constraints, which results in a different gate list. The synthesis results for the optimized and non-optimized multi­ plexer structures are shown in table V. SYNTHESIS RESULTS. TABLE V. l I Component No. of Gates Read Port Bypass Read Port Bypass I I I I Area 28 1 4 748 Delay in ps I C ollapsed Faults I 4 1 62 865 I I I I 4088 1 151 I 793 1 62 I Non-Optimized 998 909 227 1 1 72 I I I Timing Optimized 558 7472 589 1 695 I I I The method shown in figure 3 has been also applied to the timing optimized gate list of the bypass and read port. The results are shown in table VI. The obtained fault coverage is almost the same, but with other test patterns. This demonstrates that the method in figure 3 can be applied to arbitrary compo­ nents, as long as FRCs are specified. TABLE VI. PROPERTIES OF THE TEST PROGRAM GENERATED WITH ATPG-As SISTANCE (TrMING OPTIMIZED) VI. CONSTRAINT-BASED TEST PATTERN REDUCTION In tables IV and VI it can be noticed that the number of test patterns is large, compared to the manual approach. For this reason we will describe in this section an iterative method that can be used to reduce the number of test patterns without changing the fault coverage nor the diagnostic capability. Fig­ ure 4 extends the flow in figure 3 . Figure 4 For each test set, which has been generated for a certain FRC according to the method in figure 3 , the covered faults are determined. After this, the A TPG constraints for the test pat­ terns can be modified. Modifying the constraints is done manu­ ally. The test patterns are generated again with the modified constraints. If the same faults are covered with the new test set, then the new test set can be used, if it contains fewer test pat­ terns. This iteration can be repeated until a satisfying result is obtained. There are two reasons, why the iterative improve­ ment can be helpful. First, the number of test vectors may be reduced, which will also reduce the length of the test program generated for this test set. Second, the test patterns become more homogeneous by the constraints, which will also simplify the test program. For example, the test patterns generated with the method in figure 3 define very irregular data for the data inputs of the mUltiplexer. This will force the test program to load many different constants as initialization code. With the iterative improvement from figure 4 it was possible to reduce the number of test vectors and to obtain more homogenous test data. By this, the ATPG-produced test patterns became very similar to the test patterns of the manually developed test pro­ gram. Thereby, our strategy during the iterative improvement was to obtain more homogeneous test patterns. But this strate­ gy may be not successful in any case. Table VII shows three different additional constraints that have been used for an im­ provement of the initial constraints of the FRCs BPF and BPNF. TABLE VIT. No. of Constraints RPx (min) RPx (max) BPF only BPNF only I 1 4224 1 664 10 17 1 00 52 3 1 .0% 3 1 .2% 94.6% 49. 1 % Read Port Bypass 64 5888 837 1 52 1 00% 99.5% RESULTS FOR IMPROVEMENT BPF AND BPNF No. of Constraint Additional Constraint Description BPF BPNF Initial 1 2 Number of TP fault coverage FRC Iterative Test Pattern Improvement. 3 1 00 121 All data inputs are either 0 or - 1 All data inputs are 0 (or 1) and at 1 3 6 most one data input is - 1 (or 0) All data inputs are 0 (- 1 ) and only 90 the sleeted data input is - 1 (or 0) 52 67 70 59 Constraint i has been used in iteration i of the improvement process. The table also contains the corresponding number of produced test patterns. The method was applied to the timing­ optimized gate list of the bypass. It can be seen that for the FRC BPF the number of test patterns could be reduced. For the FRC BPNF this was not the case. Table VIII summarizes the results of the improvement method applied to the timing opti­ mized gate list of the read port. RESULTS FOR IMPROVEMENT RPx TABLE VIII. No. of Additional Constraint Descrip- RPx RPx Constraint tion (min) (max) 10 5 2 17 8 2 Initial 1 2 Each data input is either 0 or - I All not selected register inputs must have the same value With the improvement method the number of test patterns could be reduced to 2 for each FRC RPx. This is as good as in the manual approach. Finally table IX compares the results for the manually developed test program with the results for the test program generated with A TPG assistance. TABLE IX. COMPARISON OF MANUAL AND ATPG APPROACH Property Manually Fault coverage read port Test patterns read port Test program length read port Fault Coverage bypass Test patterns bypass Test program length bypass ATPG 1 00% 1 00% 128 128 640 640 99.5% 1 00% 32+48 = 80 �0+52= 1 42 376 568 The comparison shows that the ATPG generated test pro­ gram for the bypass does not reach the efficiency of the manu­ ally developed test program. It has an overhead of about 50%. However, the ATPG-assisted approach can be applied to arbi­ trary components of a processor without a detailed analysis of structural information, and the ATPG tool determines all faults that belong to a certain FRC based on the given constraints. VII. CONCLUSION This paper presented two versions of a diagnostic software­ based self-test program for multiplexer-based read-ports and bypasses of a processor. It turned out that the manually devel­ oped version provided excellent fault coverage combined with diagnostic capabilities. The test program that was generated with ATPG-support has a slightly lower fault coverage and it is longer. The advantage of the ATPG-based approach is that it can be applied to components without knowing their internal structure. VIII. REFERENCES [ I ] P. Bernardi, E. Sanchez, M. Schillaci, et. al. : An effective techniqueJor minimizing the cost oJprocessor soJtware-based diagnosis in SoCs. Proceedings of the Conference on Design, Automation and Test in Eu­ rope (DATE'06), pp. 4 1 2-4 1 7, 2006. [2] P. Bernardi, E. Sanchez, M. Schillaci et. al. : An Effective TechniqueJor the Automatic Generation oj Diagnosis-Oriented ProgramsJor Proces­ sor Cores. IEEE Transactions on Computer Aided Design of Tntegrated Circuits and Systems, pp. 570 - 574, 2008. [3] M. A. Breuer, S . K. Gupta and I. M. Mak: Deject and Error Tolerance in the Presence oj Massive Numbers oj Dejects. IEEE Design & Test of Computers, 2 1 (3), pp. 2 1 6-227, 2004. [4] C. -H. Chen, C. -K. Wei, I. -H. Lu and H. -W. Gao : SoJtware-based Self­ testing with multiple-level abstractionsJor soft processor cores. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 1 5(5), pp. 505 - 5 1 7, 2007. [5] L. Chen and S . Dey: DEFUSE: A Deterministic Functional Self-Test Methodology Jor improved Localization and Extraction ojAccurate De­ Ject Behaviour. Proc. of the 1 8th IEEE VLSI Test Symposium, pp. 255 - 262, 2000. [6] L. Chen and S . Dey: SoJtware-Based DiagnosisJor Processors. Proc. of the 3 9th annual Design Automation Conference (DAC02), pp. 259262, 2002. [7] L. Chen, S . Ravi, A. Raghunathan and S . Dey: A Scalable SoJtware­ Based Self-Test Methodology Jor Programmable Processors. Proc. of the 40th annual Design Automation Conference (DAC03), pp. 548 553, 2003 . [8] W. - I. Chen, M. Sharma, I. Rinderknecht, et. al. : Signature based diagnosisJor logic BIST. Proc. of the International Test Conference (lTC06), pp. 1 -9, 2006. [9] Y. -Y. Chen, H. Shi -Jinn and L. Hung -Chuan: An integrated Fault­ Tolerant Design FrameworkJor VLlW Processors. 1 8th IEEE Interna­ tional Symposium on Defect and Fault Tolerance in VLSI Systems (DFT'03), pp. 555 -562, 2003 . [ 1 0] A. Cook, M. Elm, H. -J. Wunderlich and U. Abelein: Structural in-Field DiagnosisJor Random Logic Circuits. Proc. of the 1 6th European Test Symposium (ETS' l l ), pp. 1 1 1 - 1 1 6, 20 1 1 . [ I I ] F . Corno, E . Sanchez, M . S . Reorda and G. Squillero: Automatic Test Program Generation: A Case Study. IEEE Design & Test of Comput­ ers, 2 1 (2), pp. 1 02 - 1 09, 2004. [ 1 2] M. Elm and H. -J. Wunderlich: BISD: Scan-based buil-in self-diagnosis. Proc. of Design, Automation, and Test in Europe (DATE' I 0), pp. 3 82 3 86, 2010. [13] D. Gizopoulos, M. Psarakis, M. Hatzimihail et. al. : Systematic Soft­ ware-based Self-TestJor Pipe lined Processors. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, pp. 1 - 1 3 , 2008. [ 1 4] R. Karri, K. Kim and M. Potkonjak: Computer A ided Design ojFault­ Tolerant Application Specific Programmable Processors. IEEE Trans­ actions on Computers, 49( 1 1), pp. 1 272- 1 284, 2000. [ 1 5] I. Koal and H. T. Vierhaus: A soJtware-based self-test and hardware reconjiguration solutionJor VLlWprocessors. Proc. of the 1 3th Inter­ national Symposium on Design and Diagnostics of Electronic Circuits and Systems, pp. 40 -43, 2010. [ 1 6] S . R. Makar and E. J. McCluskey: O n the Testing ojMultiplexers. Proc. of the International Test Conference (ITC8 8), pp. 669 -679, 1988. [ 1 7] A. Meixner and D. J. Sorin: Detouring: Translating SoJtware t o Cir­ cumvent Hard Faults in Simple Cores. Proc.of the International Con­ ference on Dependable Systems and Networks (DSN), pp. 80 - 89, 2008 . [ 1 8] S. P. Park and K. K. K. Roy: Reliability implications oJBias­ Temperature instability in Digital iCs. IEEE Design & Test of Com­ puters, 26(6), pp. 8 - 17, 2009. [ 1 9] P. Parvathala, K. Maneparambil and W. Lindsay: FRITS - a micropro­ cessor Junctional BiST method. Proc.of the International Test Confer­ ence (ITC), pp. 590-598, 2002. [20] M. Psarakis, D. Gizopoulos, E. Sanchez and M. S . Reorda: Micropro­ cessor SoJtware-based Self-Testing. IEEE Design & Test of Computers, 27(3), pp. 4 - 1 8, 2010. [2 1 ] J. Rajski and J. Tyszer: Arithmetic Built-In Self-TestJor Embedded Systems. Prentice Hall PTR, 1 997. [22] M. Scholzel: SoJtware-Based Self-Repair ojStatically Scheduled Su­ perscalar Data Paths. Proc. of the 13th IEEE International Symposium on Design & Diagnostics of Electronic Circuits & Systems (DDECS' I 0), pp. 66 -7 1 , 2010. [23] M. Scholzel: Fine-Grained SoJtware-Based Self-Repair oj VLlW Pro­ cessors. 26th IEEE International Symposium on Defect and Fault Tol­ erance in VLSI and Nanotechnology Systems, pp. 4 1 -49, 20 1 1 . [24] M . Scholzel, I . Koal and H . I . Vierhaus : An Apaptive Self-Test Routine Jor In-Field Diagnosis ojPermanent Faults in Simple RISC Cores. Proc. of the Int. Symposium on Design and Diagnostic of Electronic Circuits and Systems (DDECS ' 1 2), pp. 3 1 2-3 1 7, 2012. [25] S . Sirisantana, B . C. Paul and K. Roy: Enhancing Yield a t the End oj the Technology Roadmap . IEEE Design & Test of Computers, 2 1 (6), pp. 563 - 57 1 , 2004. [26] R. C. Tekumalla: On Reducing Aliasing Effects and improving Diagno­ sis ojLogic BIST Failures. Proc. of the International Test Conference (lTC03), pp. 737 -744, 2003 . [27] S. M. Thatte and J. A. Abraham: Test GenerationJor Microprocessors. IEEE Transactions on Computers, 29(6), pp. 429-44 1 , 1980.