A Novel Dynamic Method to Generate PRBS Pattern

Similar documents
LFSRs as Functional Blocks in Wireless Applications Author: Stephen Lim and Andy Miller

Design of Fault Coverage Test Pattern Generator Using LFSR

Optimization of Multi-Channel BCH Error Decoding for Common Cases. Russell Dill Master's Thesis Defense April 20, 2015

VLSI System Testing. BIST Motivation

Analyzing Modulated Signals with the V93000 Signal Analyzer Tool. Joe Kelly, Verigy, Inc.

Individual Project Report

Enable input provides synchronized operation with other components

Design for Test. Design for test (DFT) refers to those design techniques that make test generation and test application cost-effective.

Testing Digital Systems II

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

ECE 715 System on Chip Design and Test. Lecture 22

MATHEMATICAL APPROACH FOR RECOVERING ENCRYPTION KEY OF STREAM CIPHER SYSTEM

International Journal of Scientific & Engineering Research, Volume 5, Issue 9, September ISSN

A Pseudorandom Binary Generator Based on Chaotic Linear Feedback Shift Register

Synthesis Techniques for Pseudo-Random Built-In Self-Test Based on the LFSR

CSE 352 Laboratory Assignment 3

Department of Electrical and Computer Engineering University of Wisconsin Madison. Fall Final Examination CLOSED BOOK

Design and Implementation of Encoder for (15, k) Binary BCH Code Using VHDL

Design of Test Circuits for Maximum Fault Coverage by Using Different Techniques

TV Character Generator

21.1. Unit 21. Hardware Acceleration

An Improved Hardware Implementation of the Grain-128a Stream Cipher

Department of Information Technology and Electrical Engineering. VLSI III: Test and Fabrication of VLSI Circuits L.

Instructions. Final Exam CPSC/ELEN 680 December 12, Name: UIN:

VLSI Test Technology and Reliability (ET4076)

DESIGN OF TEST PATTERN OF MULTIPLE SIC VECTORS FROM LOW POWER LFSR THEORY AND APPLICATIONS IN BIST SCHEMES

Overview: Logic BIST

Final Exam CPSC/ECEN 680 May 2, Name: UIN:

[Krishna*, 4.(12): December, 2015] ISSN: (I2OR), Publication Impact Factor: 3.785

Scan. This is a sample of the first 15 pages of the Scan chapter.

SIC Vector Generation Using Test per Clock and Test per Scan

Guidance For Scrambling Data Signals For EMC Compliance

SignalTap Plus System Analyzer

6.S084 Tutorial Problems L05 Sequential Circuits

ASNT8140. ASNT8140-KMC DC-23Gbps PRBS Generator with the (x 7 + x + 1) Polynomial. vee. vcc qp. vcc. vcc qn. qxorp. qxorn. vee. vcc rstn_p.

DESIGN and IMPLETATION of KEYSTREAM GENERATOR with IMPROVED SECURITY

FPGA IMPLEMENTATION AN ALGORITHM TO ESTIMATE THE PROXIMITY OF A MOVING TARGET

Segmented Leap-Ahead LFSR Architecture for Uniform Random Number Generator

A New Proposed Design of a Stream Cipher Algorithm: Modified Grain - 128

Cryptography CS 555. Topic 5: Pseudorandomness and Stream Ciphers. CS555 Spring 2012/Topic 5 1

hochschule fu r angewandte wissenschaften hamburg Prof. Dr. B. Schwarz FB Elektrotechnik/Informatik

Logic and Computer Design Fundamentals. Chapter 7. Registers and Counters

Implementation of BIST Test Generation Scheme based on Single and Programmable Twisted Ring Counters

Stream Ciphers. Debdeep Mukhopadhyay

Analog input and output

Installation of a DAQ System in Hall C

Design and Implementation OF Logic-BIST Architecture for I2C Slave VLSI ASIC Design Using Verilog

Low Cost Fault Detector Guided by Permanent Faults at the End of FPGAs Life Cycle Victor Manuel Gonçalves Martins

Available online at ScienceDirect. Procedia Technology 24 (2016 )

Logic Analysis Basics

Logic Analysis Basics

ECT 224: Digital Computer Fundamentals Digital Circuit Simulation & Timing Analysis

Jin-Fu Li Advanced Reliable Systems (ARES) Laboratory. National Central University

Lecture 18 Design For Test (DFT)

Modulation and Demodulation

Available online at ScienceDirect. Procedia Computer Science 46 (2015 ) Aida S Tharakan a *, Binu K Mathew b

LFSR Counter Implementation in CMOS VLSI

A Modified Design of Test Pattern Generator for Built-In-Self- Test Applications

A New Approach to Design Fault Coverage Circuit with Efficient Hardware Utilization for Testing Applications

3. Configuration and Testing

55:131 Introduction to VLSI Design Project #1 -- Fall 2009 Counter built from NAND gates, timing Due Date: Friday October 9, 2009.

Comparative Analysis of Stein s. and Euclid s Algorithm with BIST for GCD Computations. 1. Introduction

Data Pattern Generator DG2020A Data Sheet

Pattern Creator/Converter Software User Manual

EBU INTERFACES FOR 625 LINE DIGITAL VIDEO SIGNALS AT THE 4:2:2 LEVEL OF CCIR RECOMMENDATION 601 CONTENTS

Digital Systems Laboratory 1 IE5 / WS 2001

DMC550 Technical Reference

LFSR Based Watermark and Address Generator for Digital Image Watermarking SRAM

SMPTE-259M/DVB-ASI Scrambler/Controller

Using minterms, m-notation / decimal notation Sum = Cout = Using maxterms, M-notation Sum = Cout =

VLSI Technology used in Auto-Scan Delay Testing Design For Bench Mark Circuits

Lab #12: 4-Bit Arithmetic Logic Unit (ALU)

Power Optimization of Linear Feedback Shift Register (LFSR) using Power Gating

AI-1204Z-PCI. Features. 10MSPS, 12-bit Analog Input Board for PCI AI-1204Z-PCI 1. Ver.1.04

ISSN:

THE MAJORITY of the time spent by automatic test

Understanding Cryptography A Textbook for Students and Practitioners by Christof Paar and Jan Pelzl. Chapter 2 Stream Ciphers ver.

WaveMaker III Gartech Enterprises Inc. 12/17/2012

Viterbi Decoder User Guide

Chapter 3. Boolean Algebra and Digital Logic

Testing of UART Protocol using BIST

True Random Number Generation with Logic Gates Only

Understanding Cryptography A Textbook for Students and Practitioners by Christof Paar and Jan Pelzl. Chapter 2 Stream Ciphers ver.

University of Pennsylvania Department of Electrical and Systems Engineering. Digital Design Laboratory. Lab8 Calculator

Design of BIST Enabled UART with MISR

The Measurement Tools and What They Do

California State University, Bakersfield Computer & Electrical Engineering & Computer Science ECE 3220: Digital Design with VHDL Laboratory 7

I. INTRODUCTION. S Ramkumar. D Punitha

Enhanced JTAG to test interconnects in a SoC

Finite State Machine Design

A Transaction-Oriented UVM-based Library for Verification of Analog Behavior

IP-DDC4i. Four Independent Channels Digital Down Conversion Core for FPGA FEATURES. Description APPLICATIONS HARDWARE SUPPORT DELIVERABLES

CS150 Fall 2012 Solutions to Homework 4

Transmission scheme for GEPOF

Evaluation of Fibonacci Test Pattern Generator for Cost Effective IC Testing

Altera s Max+plus II Tutorial

Testing of Cryptographic Hardware

EECS150 - Digital Design Lecture 15 Finite State Machines. Announcements

De-correlating 100GBASE-KR4/CR4 training sequences between lanes

FPGA Implementation of DA Algritm for Fir Filter

Transcription:

A Novel Dynamic Method to Generate PRBS Pattern Wei-Min ZHANG ADC Shanghai, Verigy wei-min.zhang@verigy.com Abstract PRBS patterns have been widely used in high speed device testing. To set up PRBS patterns in V93000 SmarTest program development, the engineer would traditionally create a PRBS pattern in ASCII format and then do ASCII to binary conversion process to generate the final loaded pattern. In this paper, a novel dynamic method will be introduced to simplify this whole process and can generate PRBS patterns directly and dynamically based on VECTOR_LABEL_EDIT APIs. It not only shortens development time but also provides an advantage in flexibility and extended capability. Key Words - High Speed, PRBS, Pattern Generation, VECTOR_LABEL_EDIT 1. Introduction PRBS (Pseudorandom binary sequence) patterns [1] have been widely used in high speed device testing. To set up a PRBS pattern in V93000 SmarTest program development, it is a common task to generate a loaded PRBS pattern. There are several ways to generate a PRBS pattern. For example, use the hardware PRBS generator if applicable, but in most cases we still need normal PRBS patterns to be stored in vector memory. Traditionally, the engineer will need to create a PRBS pattern in ASCII format. For example: AVC format file and timing mapping file in SmarTest, then use the ASCII interface tool aiv to do ASCII to Binary pattern conversion and generate the final loaded pattern. The whole process is complex and time consuming. Actually, with SmarTest version 6.3.2 and above, a very useful new API: VEC_LABEL_EDIT [2] is built in. It provides the capability to dynamically modify label vectors at runtime. In this paper, a novel dynamic method will be introduced to generate PRBS patterns based on VECTOR_LABEL_EDIT. It not only shortens development time but also provides advantages in flexibility and extended capability. 2. Key Elements for PRBS pattern Generation For PRBS pattern generation, several key elements need to be considered. PRBS data stream generation Timing waveform definition - the waveform index order PRBS vector data download Page 1 of 6

PRBS data stream Generation Timing waveform definition waveform index order PRBS Data Vector Dynamic Download In the following sections, each topic will be discussed and practical ways to address these challenges will be provided. 2.1. PRBS Data Stream Generation PRBS patterns are typically described by the shorthand notation 2 X -1. The power, X, indicates the length of the shift registers used to create the pattern and every possible combination of the X number of bits (minus one). The X value also indicates the longest series of 0 s and 1 s present in one pattern. PRBS pattern Primitive Polynomial Pattern bits 2 7-1 1+X 6 +X 7 127 2 15-1 1+X 14 +X 15 32,767 2 23-1 1+X 18 +X 23 8,388,607 2 31-1 1+X 28 +X 31 2,147,483,647 Table 1. Typical PRBS primitive polynomial The PRBS data stream is usually generated by a linear feedback shift register (LFSR) [3]. There are basically two possible realizations of LFSR Fibonacci (many-to-one) and Galois (oneto-many). An LFSR represented by a primitive polynomial will produce a maximal length sequence. Figure 1. Fibonacci (many-to-one) LFSR with two taps Many PRBS generators simulate the Fibonacci LFSR process by algorithm to generate the PRBS data stream. 2.1.1. PRBS generator polynomial selection The first step is to select the PRBS generator polynomial, The following function only need specify the power of polynomial, then according to primitive polynomial to setup tap variables. Page 2 of 6

static unsigned long PRBS_POLYNOMIAL_1ST ; static unsigned long PRBS_POLYNOMIAL_2ND ; static void set_polynomial ( int order ) switch ( order ) case 7 : //1+X 6 +X 7 PRBS_POLYNOMIAL_1ST = 0x00000040UL ; //0x40 = b01000000 PRBS_POLYNOMIAL_2ND = 0x00000020UL ; //0x20 = b00100000 break ; case 15 : //1+X 14 +X 15 PRBS_POLYNOMIAL_1ST = 0x00004000UL ; PRBS_POLYNOMIAL_2ND = 0x00002000UL ; break ; case 23 : //1+X 18 +X 23 PRBS_POLYNOMIAL_1ST = 0x00400000UL ; PRBS_POLYNOMIAL_2ND = 0x00020000UL ; break ; 2.1.2. PRBS data bit generation by LFSR algorithm To simulate the LFSR process, the algorithm uses the following prbs_data() function. static unsigned long prbs_shift_reg ; static int prbs_databit(void) /* return 0 or 1 */ bool first_tap, second_tap, newbit ; first_tap = (prbs_shift_reg & PRBS_POLYNOMIAL_1ST)>0 ; second_tap = (prbs_shift_reg & PRBS_POLYNOMIAL_2ND)>0 ; newbit = first_tap ^ second_tap; //XOR prbs_shift_reg [ index ] <<= 1 ; prbs_shift_reg [ index ] &= 0xfffffffeUL ; prbs_shift_reg [ index ] = (unsigned long)newbit ; return ( ( int ) newbit ) ; Use repeat to call this prbs_data() function, then the PRBS data stream can be generated. 2.1.3. put PRBS setting together The PRBS_SETTING() function will integrate the polynomial setup and also seed the initialize setup. void PRBS_SETTING(int polynomial, int seed) set_polynomial(polynomial) ; prbs_shift_reg = seed ; /* set initial seed for prbs generation */ Page 3 of 6

2.2. V93000 timing waveform definition The second step is defining PRBS waveform when the data stream is ready. Generally in high speed waveform definition, Xmodes will be used to utilize the advantage of multiple driver edges and compare edges in V93000, and also to archive the maximum data rate. In SmarTest, waveforms can be defined in STD mode or PS3600-FAST mode. No matter which mode is used, the key thing is the waveform index should be the same as the defined waveform sharp, so it provides the most simplified waveform mapping algorithm. It will used in the following pattern generation. STD mode: PINS RX_P@diff 0 "d1:0 d2:0 d3:0 d4:0 d5:0 d6:0 d7:0 d8:0" 00000000 1 "d1:0 d2:0 d3:0 d4:0 d5:0 d6:0 d7:0 d8:1" 00000001 fe "d1:1 d2:1 d3:1 d4:1 d5:1 d6:1 d7:1 d8:0" 11111110 ff "d1:1 d2:1 d3:1 d4:1 d5:1 d6:1 d7:1 d8:1" 11111111 brk "10101010" PINS TX_P@diff 0 "d1:fnz r1:l r2:l r3:l r4:l r5:l r6:l r7:l r8:l" LLLLLLLL 1 "d1:fnz r1:l r2:l r3:l r4:l r5:l r6:l r7:l r8:h" LLLLLLLH fe "d1:fnz r1:h r2:h r3:h r4:h r5:h r6:h r7:h r8:l" HHHHHHHL ff "d1:fnz r1:h r2:h r3:h r4:h r5:h r6:h r7:h r8:h" HHHHHHHH FAST mode: PINS RX_P@diff 0 "[01][01][01][01][01][01][01][01]" brk "10101010" PINS TX_P@diff 0 "[LH][LH][LH][LH][LH][LH][LH][LH]" 2.3. Novel way to PRBS Data Vector Dynamic Download The third step is the VEC_LABEL_EDIT APIs will be used for vector dynamic download, since Xmodes will be used in waveform definition, attention needs to be paid to handle Xmodes correctly. The following code will be based on Xmodes and shift single bits to data and prepare each vector for the physical waveform index. Finally the index data stored in VECTOR_DATA will be downloaedd directly to vector memory. void PATTERN_GEN(string label, int pattern_start, int XMODE,int totaldatabits, string pinlist) map<string, VECTOR_DATA *> map_vector; map<string, VEC_LABEL_EDIT *> map_label; int data; STRING_VECTOR pins = PinUtility.getDigitalPinNamesFromPinList (pinlist,tm::i_pin TM::O_PIN TM::IO_PIN,false,false,PIN_UTILITY::DEFINITION_ORDER); for(unsigned int i=0;i<pins.size();i++) map_vector[pins[i]] = new VECTOR_DATA[totalDataBits]; map_label[pins[i]] = new VEC_LABEL_EDIT(label,pins[i]); Page 4 of 6

for(int i=0; i<totaldatabits; i++) //process Xmode data data = 0; for(int j=0;j<xmode;j++) data <<= 1; data = prbs_databit(); From serial PRBS data stream to Xmode vector index //continue call prbs_databit get next bit //store data prepare for modification for(unsigned int pin=0;pin<pins.size();pin++) map_vector[pins[pin]][i].vectornum = pattern_start+i; map_vector[pins[pin]][i].phywvfindex = data; //download vector for(unsigned int pin=0;pin<pins.size();pin++) map_label[pins[pin]]->downloaduservectors(map_vector[pins[pin]], totaldatabits); //release memory for(unsigned int i=0;i<pins.size();i++) delete [] map_vector[pins[i]]; delete map_label[pins[i]]; 2.4. PRBS pattern generation by test method Putting all of the above code into a single C++ header file, for example, file name can be called PATTERN_GEN.h, then it is easier to re-use this function in the test method code. The following test method code provides the sample to generate a PRBS7 pattern. But keep in mind before executing that test method code, two empty pattern labels need to be prepared that will be modified in the code. And the key thing for empty pattern labels is the need to insert the correct number of vector lines. For example, for the PRBS7 pattern, 127 vector lines need to be inserted. #include PATTERN_GEN.h virtual void run() int XMODE = 6; int totaldatabits = 127; PRBS_SETTING(7,1); //PRBS7, seed = 1 PATTERN_GEN("PRBS_pRX",totalDataBits, XMODE, "RX_P,RX_N ); PRBS_SETTING(7,1); //PRBS7, seed = 1; PATTERN_GEN("PRBS_pTX",totalDataBits, XMODE, "TX_P,TX_N ); return; Page 5 of 6

Figure 2. Example Empty pattern label Figure 3. Example Pattern after modification Figure 4. Example PRBS7 Pattern timing diagram 3. Summary In this paper, the PRBS generation theory and a practical way to generate a PRBS pattern dynamically by SmarTest VEC_LABEL_EDIT APIs have been introduced. The process is shown that also provides re-useable functionality, and flexibility on customization and extended capability. It can fit different timing waveform definition by only specifying different Xmode parameter. Furthermore, when PRBS patterns combine with the 8B10B coding process, it can be easier to add on to the current algorithm and generate the target data stream if needed. For high speed PRBS pattern synchronization, since the whole PRBS pattern can generated by a test method dynamically, it also improves debug efficiency since it can very easily adjust the settings based on online debug result. 4. References [1] http://en.wikipedia.org/wiki/pseudorandom_binary_sequence [2] https://www.verigy.com/help/topic/com.verigy.itee.help.smartest.ui.7.1.0/95305.htm [3] http://en.wikipedia.org/wiki/linear_feedback_shift_register Page 6 of 6