Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE) PDF Download

Design for Testability 

Introduction

The embedded system is an information processing system that consists of hardware and software components. Nowadays, the number of embedded computing systems in areas such as telecommunications, automotive electronics, office automation, and military applications are steadily growing. This market expansion arises from greater memory densities as well as improvements in embeddable processor cores, intellectual-property modules, and sensing technologies. At the same time, these improvements have increased the amount of software needed to manage the hardware components, leading to a higher level of system complexity. Designers can no longer develop high-performance systems from scratch but must use sophisticated system modeling tools. 

The increased complexity of embedded systems and the reduced access to internal nodes has made it not only more difficult to diagnose and locate faulty components, but also the functions of embedded components may be difficult to measure. Creating testable designs is key to developing complex hardware and/or software systems that function reliably throughout their operational life. Testability can be defined with respect to a fault. A fault is testable if there exists a well-specified procedure (e.g., test pattern generation, evaluation, and application) to expose it, and the procedure is implementable with a reasonable cost using current technologies. Testability of the fault therefore represents the inverse of the cost in detecting the fault. A circuit is testable with respect to a fault set when each and every fault in this set is testable.  

Design-for-testability techniques improve the controllability and observability of internal nodes, so that embedded functions can be tested. Two basic properties determine the testability of a node: 1) controllability, which is a measure of the difficulty of setting internal circuit nodes to 0 or 1 by assigning values to primary inputs (PIs), and 2) observability, which is a measure of the difficulty of propagating a node’s value to a primary output (PO) [1-3]. A node is said to be testable if it is easily controlled and observed. For sequential circuits, some have added predictability, which represents the ability to obtain known output values in response to given input stimuli. The factors affecting predictability include initializability, races, hazards, oscillations, etc. DFT techniques include analog test busses and scan methods. Testability can also be improved with BIST circuitry, where signal generators and analysis circuitry are implemented on chip [1, 3-4]. Without testability, design flaws may escape detection until a product is in the hands of users; equally, operational failures may prove difficult to detect and diagnose.

Increased embedded system complexity makes thorough assessment of system integrity by testing external black-box behavior almost impossible. System complexity also complicates test equipment and procedures. Design for testability should increase a system’s testability, resulting in improved quality while reducing time to market and test costs. 

Traditionally, hardware designers and test engineers have focused on proving the correct manufacture of a design and on locating and repairing field failures. They have developed several highly structured and effective solutions to this problem, including scan design and self test. Design verification has been a less formal task, based on the designer’s skills. However, designers have found that structured design-for-test features aiding manufacture and repair can significantly simplify design verification. These features reduce verification cycles from weeks to days in some cases.

In contrast, software designers and test engineers have targeted design validation and verification. Unlike hardware, software does not break during field use. Design errors, rather than incorrect replication or wear out, cause operational bugs. Efforts have focused on improving specifications and programming styles rather than on adding explicit test facilities. For example, modular design, structured programming, formal specification, and object orientation have all proven effective in simplifying test. 

Although these different approaches are effective when we can cleanly separate a design’s hardware and software parts, problems arise when boundaries blur. For example, in the early design stages of a complex system, we must define system level test strategies. Yet, we may not have decided which parts to implement in hardware and which in software. In other cases, software running on general-purpose hardware may initially deliver certain functions that we subsequently move to firmware or hardware to improve performance. Designers must ensure a testable, finished design regardless of implementation decisions. Supporting hardware-software codesign’ requires “cotesting” techniques, which draw hardware and software test techniques together into a cohesive whole. 

Design for Testability Techniques 

Design for testability (DFT) refers to those design techniques that make the task of subsequent testing easier. There is definitely no single methodology that solves all embedded system-testing problems. There also is no single DFT technique, which is effective for all kinds of circuits. DFT techniques can largely be divided into two categories, i.e., ad hoc techniques and structured (systematic) techniques.

DFT methods for digital circuits: 

  • Ad-hoc methods  
  • Structured methods:
    • Scan
    • Partial Scan
    • Built-in self-test 
    • Boundary scan

 Ad-hoc DFT methods 

Good design practices learnt through experience are used as guidelines for ad-hoc DFT. Some important guidelines are given below. 

Things to be followed 

  • Large circuits should be partitioned into smaller sub-circuits to reduce test costs. One of the most important steps in designing a testable chip is to first partition the chip in an appropriate way such that for each functional module there is an effective (DFT) technique to test it. Partitioning must be done at every level of the design process, from architecture to circuit, whether testing is considered or not. Partitioning can be functional (according to functional module boundaries) or physical (based on circuit topology). Partitioning can be done by using multiplexers and/or scan chains.
  • Test access points must be inserted to enhance controllability & observability of the circuit. Test points include control points (CPs) and observation points (OPs). The CPs are active test points, while the OPs are passive ones. There are also test points, which are both CPs and OPs. Before exercising test through test points that are not PIs and POs, one should investigate into additional requirements on the test points raised by the use of test equipments.
  • Circuits (flip-flops) must be easily initializable to enhance predictability. A power-on reset mechanism controllable from primary inputs is the most effective and widely used approach.  
  • Test control must be provided for difficult-to-control signals.
  • Automatic Test Equipment (ATE) requirements such as pin limitation, tri-stating, timing resolution, speed, memory depth, driving capability, analog/mixed-signal support, internal/boundary scan support, etc., should be considered during the design process to avoid delay of the project and unnecessary investment on the equipments.
  • Internal oscillators, PLLs and clocks should be disabled during test. To guarantee tester synchronization, internal oscillator and clock generator circuitry should be isolated during the test of the functional circuitry. The internal oscillators and clocks should also be tested separately.
  • Analog and digital circuits should be kept physically separate. Analog circuit testing is very much different from digital circuit testing. Testing for analog circuits refers to real measurement, since analog signals are continuous (as opposed to discrete or logic signals in digital circuits). They require different test equipments and different test methodologies. Therefore they should be tested separately.

Things to be avoided  

  • Asynchronous(unclocked) logic feedback in the circuit must be avoided. A feedback in the combinational logic can give rise to oscillation for certain inputs. Since no clocking is employed, timing is continuous instead of discrete, which makes tester synchronization virtually impossible, and therefore only functional test by application board can be used. 
  • Monostables and self-resetting logic should be avoided. A monostable (one-shot) multivibrator produces a pulse of constant duration in response to the rising or falling transition of the trigger input. Its pulse duration is usually controlled externally by a resistor and a capacitor (with current technology, they also can be integrated on chip). One-shots are used mainly for 1) pulse shaping, 2) switch-on delays, 3) switch-off delays, 4) signal delays. Since it is not controlled by clocks, synchronization and precise duration control are very difficult, which in turn reduces testability by ATE. Counters and dividers are better candidates for delay control. 
  • Redundant gates must be avoided. 
  • High fanin/fanout combinations must be avoided as large fan-in makes the inputs of the gate difficult to observe and makes the gate output difficult to control. 
  • Gated clocks should be avoided. These degrade the controllability of circuit nodes. 

The above guidelines are from experienced practitioners. These are not complete or universal. In fact, there are drawbacks for these methods:

  • There is a lack of experts and tools.
  • Test generation is often manual
  • This method cannot guarantee for high fault coverage.
  • It may increase design iterations.
  • This is not suitable for large circuits  

Scan Design Approaches for DFT 

Objectives of Scan Design 

  • Scan design is implemented to provide controllability and observability of internal state variables for testing a circuit.
  • It is also effective for circuit partitioning.
  • A scan design with full controllability and observability turns the sequential test problem into a combinational one. 

Scan Design Requirements  

  • Circuit is designed using pre-specified design rules.
  • Test structure (hardware) is added to the verified design.
  • One (or more) test control (TC) pin at the primary input is required.
  • Flip-flops are replaced by scan flip-flops (SFF) and are connected so that they behave as a shift register in the test mode. The output of one SFF is connected to the input of next SFF. The input of the first flip-flop in the chain is directly connected to an input pin (denoted as SCANIn), and the output of the last flipflop is directly connected to an output pin (denoted as SCANOUT). In this way, all the flip-flops can be loaded with a known value, and their value can be easily  accessed by shifting out the chain. Figure 39.1 shows a typical circuit after the scan insertion operation. 
  • Input/output of each scan shift register must be available on PI/PO. 
  • Combinational ATPG is used to obtain tests for all testable faults in the combinational logic.
  • Shift register tests are applied and ATPG tests are converted into scan sequences for use in manufacturing test.  

Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE)

Fig. 39.1 Scan structure to a design 

Fig. 39.1 shows a scan structure connected to design. The scan flip-flips (FFs) must be interconnected in a particular way. This approach effectively turns the sequential testing problem into a combinational one and can be fully tested by compact ATPG patterns. Unfortunately, there are two types of overheads associated with this technique that the designers care about very much. These are the hardware overhead (including three extra pins, multiplexers for all FFs, and extra routing area) and performance overhead (including multiplexer delay and FF delay due to extra load). 

Scan Design Rules 

  • Only clocked D-type master-slave flip-flops for all state variables should be used.
  • At least one PI pin must be available for test. It is better if more pins are available.
  • All clock inputs to flip-flops must be controlled from primary inputs (PIs). There will be no gated clock. This is necessary for FFs to function as a scan register.
  • Clocks must not feed data inputs of flip-flops. A violation of this can lead to a race condition in the normal mode.

Scan Overheads  

The use of scan design produces two types of overheads. These are area overhead and performance overhead. The scan hardware requires extra area and slows down the signals.  

  • IO pin overhead: At least one primary pin necessary for test. 
  • Area overhead: Gate overhead = [4 nsff/(ng+10nff)] x 100%, where ng = number of combinational gates; nff = number of flip-flops; nsff = number of scan flip-flops; For full scan number of scan flip-flops is equal to the number of original circuit flip-flops. Example:   ng = 100k gates, nff = 2k flip-flops, overhead = 6.7%. For more accurate estimation scan wiring and layout area must be taken into consideration.
  • Performance overhead: The multiplexer of the scan flip-flop adds two gate-delays in combinational path. Fanouts of the flip-flops also increased by 1, which can increase the clock period. 

Scan Variations  

There have been many variations of scan as listed below, few of these are discussed here. 

  • MUXed Scan  
  • Scan path  
  • Scan-Hold Flip-Flop
  • Serial scan  
  • Level-Sensitive Scan Design (LSSD)  
  • Scan set
  • Random access scan  

MUX Scan 

  • It was invented at Stanford in 1973 by M. Williams & Angell.
  • In this approach a MUX is inserted in front of each FF to be placed in the scan chain.

Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE)

Fig. 39.2 The Shift-Register Modification approach

  • Fig. 39.2 shows that when the test mode pin T=0, the circuit is in normal operation mode and when T=1, it is in test mode (or shift-register mode).  
  • The scan flip-flips (FFs) must be interconnected in a particular way. This approach effectively turns the sequential testing problem into a combinational one and can be fully tested by compact ATPG patterns. 
  • There are two types of overheads associated with this method. The hardware overhead due to three extra pins, multiplexers for all FFs, and extra routing area. The performance overhead includes multiplexer delay and FF delay due to extra load. 

 

The document Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE) is a part of the Computer Science Engineering (CSE) Course Embedded Systems (Web).
All you need of Computer Science Engineering (CSE) at this link: Computer Science Engineering (CSE)
47 videos|69 docs|65 tests

Top Courses for Computer Science Engineering (CSE)

FAQs on Design for Testability - 1 - Embedded Systems (Web) - Computer Science Engineering (CSE)

1. What is the purpose of design for testability in software development?
Ans. Design for testability is a concept in software development that aims to make software designs more easily testable. It involves implementing certain design techniques and principles that enable efficient testing of software components, ensuring higher quality and reliability of the final product.
2. How does design for testability enhance the overall software testing process?
Ans. Design for testability enhances the overall software testing process by allowing testers to more easily and effectively identify and isolate software defects. It ensures that the software components are designed in a way that facilitates thorough testing, making it easier to achieve maximum test coverage and detect potential issues early on.
3. What are some common design techniques used to improve testability in software development?
Ans. Some common design techniques used to improve testability in software development include modularization, encapsulation, and the use of clear and concise interfaces. Additionally, the separation of concerns, dependency injection, and proper error handling are also important design considerations for testability.
4. How does design for testability impact the overall cost and time of software development?
Ans. Design for testability can impact the overall cost and time of software development positively. By implementing testability principles during the design phase, it becomes easier to identify and fix issues early on, reducing the cost and time required for debugging and rework. Additionally, it leads to more maintainable and reusable code, further reducing the overall development efforts in the long run.
5. What are some challenges faced when implementing design for testability in software projects?
Ans. Some challenges faced when implementing design for testability in software projects include striking a balance between testability and other design considerations, such as performance and scalability. It can also be challenging to ensure that all software components are properly testable, especially if there are dependencies on external systems or complex integration scenarios. Additionally, the adoption of design for testability may require additional training and resources for the development team.
47 videos|69 docs|65 tests
Download as PDF
Explore Courses for Computer Science Engineering (CSE) exam

Top Courses for Computer Science Engineering (CSE)

Signup for Free!
Signup to see your scores go up within 7 days! Learn & Practice with 1000+ FREE Notes, Videos & Tests.
10M+ students study on EduRev
Related Searches

Important questions

,

Free

,

shortcuts and tricks

,

ppt

,

Objective type Questions

,

past year papers

,

Previous Year Questions with Solutions

,

Summary

,

Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE)

,

pdf

,

video lectures

,

mock tests for examination

,

Sample Paper

,

study material

,

MCQs

,

Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE)

,

Exam

,

practice quizzes

,

Semester Notes

,

Extra Questions

,

Viva Questions

,

Design for Testability - 1 | Embedded Systems (Web) - Computer Science Engineering (CSE)

;