Video-BIST A look into the world of video and self-testing MPEG chips Orijit Dhar and Darryl Prudich
Outline Video, Video, and Video. Compression 101 The MPEG Decoder What is BIST? Our Analysis Implementation Results
Awesome Video • A quick succession of images to produce the ‘illusion’ of movement. • Persistence of vision • Nanosecond impulse > millisecond response • But can we tell a defective image from a good one?
Why Compression? One frame: 24 X 3840 X 2196 = 193 MB @30FPS: = 5.8 Gbps Each pixel takes 24 bits 3840 2196 TIME TO UPGRADE YOUR BROADBAND!!
Colors and Brightness 2 Bit Video - Monochrome http://hyperphysics.phy-astr.gsu.edu 8 Bit Video – 256 colors 7 Million Cones: 64%R-32%G-4%B 120 Million Rods: Brightness
Temporal Redundancy Difference Image Sum—Final Image First frame Compensated Image
BIST at Work Device Under Test Compile Outputs into Signature ‘Fake’ Inputs • BIST—Built In Self Test • Random inputs generated, expected results hard-wired • At runtime, same test is run, compare results
Our Solution Since we’re dealing with numbers (pixel values), let’s just keep accumulating the sum of outputs, and use this as a signature Allows for many small errors Allows for a few big ones
Basic Decoder System Prediction Engine Previous Frame Bit-stream Generator Checker Motion Compensator Bitstream System Controller To Rasterizer Frame Buffer VLD Inverse Quantizer IDCT Difference Engine
What can go wrong? VLD Inverse Quantizer IDCT
Bug in Inverse-Quantizer VLD Inverse Quantizer IDCT
Bug in IDCT VLD Inverse Quantizer IDCT
Fault injection • Into signals in VLD, IQ and IDCT • Across various bit significance • Injection in control logic and datapath
Fault classes • System Failure • Control corruption • DE – MC synchronization failure • Catastrophic • Frequency information corruption • High significance bit failure • Insignificant • Logical masking • Optical masking • Locality • Bit significance
Choosing Thresholds • Diffuse random errors generate low accumulated pixel difference • Local highly deterministic error generate high accumulated errors. Eg. A s-a-1 fault on the 5th bit of the result MAC will always add 32 to the pixel. • To avoid the false negatives from the IDCT, we need individual checkers at each pixel row. • We feel a pixel error rate of 0.2/pixel/cycle is sufficient to catch the errors we want.
Implementation Details Bit-stream Generation—MPEG is confusing! Q: How can I make a legitimate bit-stream and not blow up in area? A: Look for patterns, and get a little help from the decoder itself!
Bitstream Isn’t Random—Look for Patterns Series of ones Series of zeros Series of random bits Split bit-stream generation into many modes… -Allows us to share the LFSR (random number generator) Keep a few internal bits for the current state Make use of system flags to help guide us
Feedback I need a !!! 0 0 Bit-stream Generator X VLD Inverse Quantizer IDCT 0011010011010 1001101001101 0100110100110 0010011010011
Implementation Details Bit-stream Generator VLD Inverse Quantizer IDCT Checker For the checker, keep a running sum of the system outputs, and compare when BIST MODE is over
Experimental Results Normalizing results to area, our system correctly bins an estimated 97.6% of errors Imperfections come from feedback loops
Area Overhead Area overhead for the core—2.9% Checks 71.1% of core area Area overhead compared to whole chip—0.1%
Lessons Learned It helps to start with a stable baseline Be prepared for iterations
Group Dynamic It was AWESOME!! Orijit moral guidance, animated slides, fault analysis Darryl everything else, texty slides, RTL