Advanced Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.4, Non-Restoring and Signed Division Chapter 15 Variation in Dividers.

Slides:



Advertisements
Similar presentations
Fixed Point Numbers The binary integer arithmetic you are used to is known by the more general term of Fixed Point arithmetic. Fixed Point means that we.
Advertisements

ECE 645 – Computer Arithmetic Lecture 11: Advanced Topics and Final Review ECE 645—Computer Arithmetic 4/22/08.
Prof. John Nestor ECE Department Lafayette College Easton, Pennsylvania ECE Computer Organization Lecture 8 - Multiplication.
Division Circuits Jan 2013 Shmuel Wimer Bar Ilan University, Engineering Faculty Technion, EE Faculty 1.
Integer division Pencil and paper binary division (dividend)(divisor) 1000.
Lecture Objectives: 1)Perform binary division of two numbers. 2)Define dividend, divisor, quotient, and remainder. 3)Explain how division is accomplished.
UNIVERSITY OF MASSACHUSETTS Dept
EE 382 Processor DesignWinter 98/99Michael Flynn 1 AT Arithmetic Most concern has gone into creating fast implementation of (especially) FP Arith. Under.
Copyright 2008 Koren ECE666/Koren Part.9b.1 Israel Koren Spring 2008 UNIVERSITY OF MASSACHUSETTS Dept. of Electrical & Computer Engineering Digital Computer.
Computer Organization Multiplication and Division Feb 2005 Reading: Portions of these slides are derived from: Textbook figures © 1998 Morgan Kaufmann.
May 2007Computer Arithmetic, DivisionSlide 1 Part IV Division.
UNIVERSITY OF MASSACHUSETTS Dept
UNIVERSITY OF MASSACHUSETTS Dept
May 2012Computer Arithmetic, DivisionSlide 1 Part IV Division 28. Reconfigurable Arithmetic Appendix: Past, Present, and Future.
CSE 246: Computer Arithmetic Algorithms and Hardware Design Instructor: Prof. Chung-Kuan Cheng Fall 2006 Lecture 8: Division.
COE 308: Computer Architecture (T041) Dr. Marwan Abu-Amara Integer & Floating-Point Arithmetic (Appendix A, Computer Architecture: A Quantitative Approach,
CSE 246: Computer Arithmetic Algorithms and Hardware Design Instructor: Prof. Chung-Kuan Cheng Winter 2004 Lecture 7.
DIGITAL SYSTEMS TCE1111 Representation and Arithmetic Operations with Signed Numbers Week 6 and 7 (Lecture 1 of 2)
Computer Arithmetic Integers: signed / unsigned (can overflow) Fixed point (can overflow) Floating point (can overflow, underflow) (Boolean / Character)
Ch. 21. Square-rootingSlide 1 VI Function Evaluation Topics in This Part Chapter 21 Square-Rooting Methods Chapter 22 The CORDIC Algorithms Chapter 23.
ECE 645 – Computer Arithmetic Lecture 10: Fast Dividers ECE 645—Computer Arithmetic 4/15/08.
Lecture 10 Fast Dividers.
ECE 645 – Computer Arithmetic Lecture 9: Basic Dividers ECE 645—Computer Arithmetic 4/1/08.
Chapter 6-2 Multiplier Multiplier Next Lecture Divider
Computer Arithmetic. Instruction Formats Layout of bits in an instruction Includes opcode Includes (implicit or explicit) operand(s) Usually more than.
Chapter # 5: Arithmetic Circuits
Follow-up Courses. ECE Department MS in Electrical Engineering MS EE MS in Computer Engineering MS CpE COMMUNICATIONS & NETWORKING SIGNAL PROCESSING CONTROL.
Multiplication of signed-operands
Digital Kommunikationselektronik TNE027 Lecture 2 1 FA x n –1 c n c n1- y n1– s n1– FA x 1 c 2 y 1 s 1 c 1 x 0 y 0 s 0 c 0 MSB positionLSB position Ripple-Carry.
July 2005Computer Architecture, The Arithmetic/Logic UnitSlide 1 Part III The Arithmetic/Logic Unit.
Computer Arithmetic and the Arithmetic Unit Lesson 2 - Ioan Despi.
ECE 8053 Introduction to Computer Arithmetic (Website: Course & Text Content: Part 1: Number Representation.
June 2007 Computer Arithmetic, Function EvaluationSlide 1 VI Function Evaluation Topics in This Part Chapter 21 Square-Rooting Methods Chapter 22 The CORDIC.
1/30 Division by Convergence 授課老師:王立洋老師 製作學生: M 蔡鐘葳.
Lecture 12: Integer Arithmetic and Floating Point CS 2011 Fall 2014, Dr. Rozier.
Division Harder Than Multiplication Because Quotient Digit Selection/Estimation Can Have Overflow Condition – Divide by Small Number OR even Worse – Divide.
1 Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers.
1 Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers.
Princess Sumaya Univ. Computer Engineering Dept. Chapter 3:
Computer Architecture Lecture 32 Fasih ur Rehman.
Basic Dividers Lecture 10. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers.
FAMU-FSU College of Engineering 1 Part III The Arithmetic/Logic Unit.
Lecture 11 Advanced Dividers.
Copyright 2008 Koren ECE666/Koren Part.7b.1 Israel Koren Spring 2008 UNIVERSITY OF MASSACHUSETTS Dept. of Electrical & Computer Engineering Digital Computer.
1 Basic Dividers Lecture 9. Required Reading Chapter 13, Basic Division Schemes 13.1, Shift/Subtract Division Algorithms 13.3, Restoring Hardware Dividers.
CSE 246: Computer Arithmetic Algorithms and Hardware Design Instructor: Prof. Chung-Kuan Cheng Fall 2006 Lecture 7 Division.
Ch. 4 Computer Arithmetic
Chapter 8 Computer Arithmetic. 8.1 Unsigned Notation Non-negative notation  It treats every number as either zero or a positive value  Range: 0 to 2.
Arithmetic for Computers Chapter 3 1. Arithmetic for Computers  Operations on integers  Addition and subtraction  Multiplication and division  Dealing.
William Stallings Computer Organization and Architecture 8th Edition
Part III The Arithmetic/Logic Unit
Integer Multiplication and Division
UNIVERSITY OF MASSACHUSETTS Dept
CSE 575 Computer Arithmetic Spring 2003 Mary Jane Irwin (www. cse. psu
UNIVERSITY OF MASSACHUSETTS Dept
Lecture 9 Basic Dividers.
CSE 575 Computer Arithmetic Spring 2003 Mary Jane Irwin (www. cse. psu
Radix 2 Sequential Multipliers
Computer Arithmetic Multiplication, Floating Point
ECEG-3202 Computer Architecture and Organization
UNIVERSITY OF MASSACHUSETTS Dept
UNIVERSITY OF MASSACHUSETTS Dept
UNIVERSITY OF MASSACHUSETTS Dept
Lecture 9 Basic Dividers.
Presentation transcript:

Advanced Dividers Lecture 10

Required Reading Chapter 13, Basic Division Schemes 13.4, Non-Restoring and Signed Division Chapter 15 Variation in Dividers 15.6, Combined Multiply/Divide Units 15.3, Combinational and Array Dividers Chapter 16, Division by Convergence Behrooz Parhami, Computer Arithmetic: Algorithms and Hardware Design

May 2012Computer Arithmetic, DivisionSlide 3 Division versus Multiplication Division is more complex than multiplication: Need for quotient digit selection or estimation Overflow possibility: the high-order k bits of z must be strictly less than d; this overflow check also detects the divide-by-zero condition. Pentium III latencies Instruction Latency Cycles/Issue Load / Store 3 1 Integer Multiply 4 1 Integer Divide Double/Single FP Multiply 5 2 Double/Single FP Add 3 1 Double/Single FP Divide The ratios haven’t changed much in later Pentiums, Atom, or AMD products* *Source: T. Granlund, “Instruction Latencies and Throughput for AMD and Intel x86 Processors,” Feb. 2012

4 Classification of Dividers Sequential Radix-2High-radix Restoring Non-restoring regular SRT using carry save adders SRT using carry save adders Array Dividers by Convergence

Notation and Basic Equations

6 Notation z Dividend z 2k-1 z 2k-2... z 2 z 1 z 0 d Divisor d k-1 d k-2... d 1 d 0 q Quotient q k-1 q k-2... q 1 q 0 s Remainder s k-1 s k-2... s 1 s 0 (s = z - dq)

7 Basic Equations of Division z = d q + s sign(s) = sign(z) | s | < | d | z > 0 0  s < | d | z < 0 - | d | < s  0

8 Sequential Integer Division Basic Equations s (0) = z s (j) = 2 s (j-1) - q k-j (2 k d) for j=1..k s (k) = 2 k s

Restoring Unsigned Integer Division

10 Restoring Unsigned Integer Division s (0) = z for j = 1 to k if 2 s (j-1) - 2 k d > 0 q k-j = 1 s (j) = 2 s (j-1) - 2 k d else q k-j = 0 s (j) = 2 s (j-1)

11 Example of restoring unsigned division

12 Shift/subtract sequential restoring divider

Non-Restoring Unsigned Integer Division

s (1) = 2 z - 2 k d for j = 2 to k if s (j-1)  0 q k-(j-1) = 1 s (j) = 2 s (j-1) - 2 k d else q k-(j-1) = 0 s (j) = 2 s (j-1) + 2 k d end for if s (k)  0 q 0 = 1 else q 0 = 0 Correction step

15 Non-Restoring Unsigned Integer Division Correction step z = q d + s z = (q-1) d + (s+d) z = q’ d + s’ z, q, d ≥ 0 s<0 s = 2 -k · s (k)

16 Example of nonrestoring unsigned division

17 Partial remainder variations for restoring and nonrestoring division

18 s (j) = 2 s (j-1) s (j+1) = 2 s (j) - 2 k d = = 4 s (j-1) - 2 k d s (j) = 2 s (j-1) - 2 k d s (j+1) = 2 s (j) + 2 k d = = 2 (2 s (j-1) - 2 k d) + 2 k d = = 4 s (j-1) - 2 k d Restoring division Non-Restoring division Non-Restoring Unsigned Integer Division Justification s (j-1) ≥ 0 2 s (j-1) - 2 k d < 0 2 (2 s (j-1) ) - 2 k d ≥ 0

May 2012Computer Arithmetic, DivisionSlide 19 Convergence of the Partial Quotient to q In restoring division, the partial quotient converges to q from below Example ( ) two / ( ) two (117) ten /(10) ten = (11) ten = (1011) two In nonrestoring division, the partial quotient may overshoot q, but converges to it after some oscillations

Non-Restoring Signed Integer Division

21 Non-Restoring Signed Integer Division s (0) = z for j = 1 to k if sign(s (j-1) ) == sign(d) q k-j = 1 s (j) = 2 s (j-1) - 2 k d = 2 s (j-1) - q k-j (2 k d) else q k-j = -1 s (j) = 2 s (j-1) + 2 k d = 2 s (j-1) - q k-j (2 k d) q = BSD_2’s_comp_conversion(q) Correction_step

22 Non-Restoring Signed Integer Division Correction step z = q d + s z = (q-1) d + (s+d) z = q’ d + s’ z = (q+1) d + (s-d) z = q” d + s” s = 2 -k · s (k) sign(s) = sign(z)

23 Example of nonrestoring signed division ======================== z d –2 4 d ======================== s (0) s (0) sign(s (0) )  sign(d), +2 4 d so set q 3 =  1 and add –––––––––––––––––––––––– s (1) s (1) sign(s (1) ) = sign(d), +(–2 4 d) so set q 2 = 1 and subtract –––––––––––––––––––––––– s (2) s (2) sign(s (2) )  sign(d), +2 4 d so set q 1 =  1 and add –––––––––––––––––––––––– s (3) s (3) sign(s (3) ) = sign(d), +(–2 4 d) so set q 0 = 1 and subtract –––––––––––––––––––––––– s (4) sign(s (4) )  sign(z), +(–2 4 d) so perform corrective subtraction –––––––––––––––––––––––– s (4) s q  1 1  1 1 ======================== p = Shift, compl MSB Add 1 to correct Check: 33/(  7) =  4

24 BSD  2’s Complement Conversion q = (q k-1 q k-2... q 1 q 0 ) BSD = = (p k-1 p k-2... p 1 p 0 1) 2’s complement where pipi qiqi Example: q BSD p q 2’scomp = no overflow if p k-2 = p k-1 (q k-1  q k-2 )

May 2012Computer Arithmetic, DivisionSlide 25 Nonrestoring Hardware Divider

26 Multiply/Divide Unit

27 The control unit proceeds through necessary steps for multiplication or division (including using the appropriate shift direction) Fig Sequential radix-2 multiply/divide unit. The slight speed penalty owing to a more complex control unit is insignificant Multiply-Divide Unit

Fractional Division

29 Unsigned Fractional Division z frac Dividend.z -1 z z -(2k-1) z -2k d frac Divisor.d -1 d d -(k-1) d -k q frac Quotient.q -1 q q -(k-1) q -k s frac Remainder.000…0s -(k+1)... s -(2k-1) s -2k k bits

30 Integer vs. Fractional Division For Integers: z = q d + s  2 -2k z 2 -2k = (q 2 -k ) (d 2 -k ) + s (2 -2k ) z frac = q frac d frac + s frac For Fractions: where z frac = z 2 -2k d frac = d 2 -k q frac = q 2 -k s frac = s 2 -2k

31 Unsigned Fractional Division Overflow Condition for no overflow: z frac < d frac

32 Sequential Fractional Division Basic Equations s (0) = z frac s (j) = 2 s (j-1) - q -j d frac for j=1..k 2 k · s frac = s (k) s frac = 2 -k · s (k)

33 Fig Examples of sequential division with integer and fractional operands.

34 Array Dividers

35 Sequential Fractional Division Basic Equations s frac (0) = z frac s (j) = 2 s (j-1) - q -j d frac s (k) frac = 2 k s frac

36 Restoring Unsigned Fractional Division s (0) = z for j = 1 to k if 2 s (j-1) - d > 0 q -j = 1 s (j) = 2 s (j-1) - d else q -j = 0 s (j) = 2 s (j-1)

May 2012Computer Arithmetic, DivisionSlide 37 Restoring Array Divider

38 Non-Restoring Unsigned Fractional Division s (-1) = z-d for j = 0 to k-1 if s (j-1) > 0 q -j = 1 s (j) = 2 s (j-1) - d else q -j = 0 s (j) = 2 s (j-1) + d end for if s (k-1) > 0 q -k = 1 else q -k = 0

May 2012Computer Arithmetic, DivisionSlide 39 Nonrestoring Array Divider Similarity to array multiplier is deceiving Critical path

40 Division by Convergence

May 2012Computer Arithmetic, DivisionSlide 41 Division by Convergence Chapter Goals Show how by using multiplication as the basic operation in each division step, the number of iterations can be reduced Chapter Highlights Digit-recurrence as convergence method Convergence by Newton-Raphson iteration Computing the reciprocal of a number Hardware implementation and fine tuning

May 2012Computer Arithmetic, DivisionSlide General Convergence Methods Sequential digit-at-a-time (binary or high-radix) division can be viewed as a convergence scheme As each new digit of q = z / d is determined, the quotient value is refined, until it reaches the final correct value Digit q 0 1 Meanwhile, the remainder s = z – q  d approaches 0; the scaled remainder is kept in a certain range, such as [– d, d) Convergence is from below in restoring division and oscillating in nonrestoring division

May 2012Computer Arithmetic, DivisionSlide 43 Elaboration on Scaled Remainder in Division Quotient digit selection keeps the scaled remainder bounded (say, in the range –d to d) to ensure the convergence of the true remainder to 0 The partial remainder s (j) in division recurrence isn’t the true remainder but a version scaled by 2 j Division with left shifts s (j) = 2s (j–1) – q k–j (2 k d)with s (0) = z and | – shift – |s (k) = 2 k s |––– subtract –––| Digit q 0 1

May 2012Computer Arithmetic, DivisionSlide 44 Recurrence Formulas for Convergence Methods u (i+1) = f(u (i), v (i), w (i) ) v (i+1) = g(u (i), v (i), w (i) ) w (i+1) = h(u (i), v (i), w (i) ) u (i+1) = f(u (i), v (i) ) v (i+1) = g(u (i), v (i) ) The complexity of this method depends on two factors: a. Ease of evaluating f and g (and h) b. Rate of convergence (number of iterations needed) Constant Desired function Guide the iteration such that one of the values converges to a constant (usually 0 or 1) The other value then converges to the desired function

May 2012Computer Arithmetic, DivisionSlide Division by Repeated Multiplications Remainder often not needed, but can be obtained by another multiplication if desired: s = z – qd Motivation: Suppose add takes 1 clock and multiply 3 clocks 64-bit divide takes 64 clocks in radix 2, 32 in radix 4  Divide faster via multiplications faster if 10 or fewer needed Idea: Force to 1 Converges to q To turn the identity into a division algorithm, we face three questions: 1. How to select the multipliers x (i) ? 2. How many iterations (pairs of multiplications)? 3. How to implement in hardware?

May 2012Computer Arithmetic, DivisionSlide 46 Formulation as a Convergence Computation Idea: Force to 1 Converges to q d (i+1) = d (i) x (i) Set d (0) = d; make d (m) converge to 1 z (i+1) = z (i) x (i) Set z (0) = z; obtain z/d = q  z (m) Question 1: How to select the multipliers x (i) ? x (i) = 2 – d (i) This choice transforms the recurrence equations into: d (i+1) = d (i) (2  d (i) )Set d (0) = d; iterate until d (m)  1 z (i+1) = z (i) (2  d (i) ) Set z (0) = z; obtain z/d = q  z (m) u (i+1) = f(u (i), v (i) ) v (i+1) = g(u (i), v (i) ) Fits the general form

May 2012Computer Arithmetic, DivisionSlide 47 Determining the Rate of Convergence d (i+1) = d (i) x (i) Set d (0) = d; make d (m) converge to 1 z (i+1) = z (i) x (i) Set z (0) = z; obtain z/d = q  z (m) Question 2: How quickly does d (i) converge to 1? We can relate the error in step i + 1 to the error in step i: d (i+1) = d (i) (2  d (i) ) = 1 – (1 – d (i) ) 2 1 – d (i+1) = (1 – d (i) ) 2 For 1 – d (i)  , we get 1 – d (i+1)   2 : Quadratic convergence In general, for k-bit operands, we need 2m – 1 multiplications and m 2’s complementations where m =  log 2 k 

May 2012Computer Arithmetic, DivisionSlide 48 Quadratic Convergence Table 16.1 Quadratic convergence in computing z/d by repeated multiplications, where 1/2  d = 1 – y < 1 ––––––––––––––––––––––––––––––––––––––––––––––––––––––– i d (i) = d (i–1) x (i–1), with d (0) = d x (i) = 2 – d (i) ––––––––––––––––––––––––––––––––––––––––––––––––––––––– 0 1 – y= (.1xxx xxxx xxxx xxxx) two  1/2 1 + y 11 – y 2 = (.11xx xxxx xxxx xxxx) two  3/4 1 + y 2 21 – y 4 = (.1111 xxxx xxxx xxxx) two  15/ y 4 31 – y 8 = ( xxxx xxxx) two  255/ y 8 41 – y 16 = ( ) two = 1 – ulp ––––––––––––––––––––––––––––––––––––––––––––––––––––––– Each iteration doubles the number of guaranteed leading 1s (convergence to 1 is from below) Beginning with a single 1 (d  ½), after log 2 k iterations we get as close to 1 as is possible in a fractional representation

May 2012Computer Arithmetic, DivisionSlide 49 Graphical Depiction of Convergence to q Fig Graphical representation of convergence in division by repeated multiplications.

May 2012Computer Arithmetic, DivisionSlide Hardware Implementation Repeated multiplications: Each pair of ops involves the same multiplier d (i+1) = d (i) (2  d (i) )Set d (0) = d; iterate until d (m)  1 z (i+1) = z (i) (2  d (i) ) Set z (0) = z; obtain z/d = q  z (m) Fig Two multiplications fully overlapped in a 2-stage pipelined multiplier.

May 2012Computer Arithmetic, DivisionSlide Division by Reciprocation Fig Convergence to a root of f(x) = 0 in the Newton-Raphson method. The Newton-Raphson method can be used for finding a root of f (x) = 0 Start with an initial estimate x (0) for the root Iteratively refine the estimate via the recurrence x (i+1) = x (i) – f (x (i) ) / f (x (i) ) Justification: tan  (i) = f (x (i) ) = f (x (i) ) / (x (i) – x (i+1) )

May 2012Computer Arithmetic, DivisionSlide 52 Computing 1/d by Convergence 1/d is the root of f (x) = 1/x – d f (x) = –1/x 2 Substitute in the Newton-Raphson recurrence x (i+1) = x (i) – f (x (i) ) / f (x (i) ) to get: x (i+1) = x (i) (2  x (i) d) One iteration = Two multiplications + One 2’s complementation Error analysis: Let  (i) = 1/d – x(i) be the error at the ith iteration  (i+1) = 1/d – x (i+1) = 1/d – x (i) (2 – x (i) d) = d (1/d – x (i) ) 2 = d (  (i) ) 2 Because d < 1, we have  (i+1) < (  (i) ) 2  d 1/d x f(x)f(x)

May 2012Computer Arithmetic, DivisionSlide 53 Choosing the Initial Approximation to 1/d With x (0) in the range 0 < x (0) < 2/d, convergence is guaranteed Justification:|  (0) | = | x (0) – 1/d | < 1/d  (1) = | x (1) – 1/d | = d (  (0) ) 2 = (d  (0) )  (0) <  (0) 1 x 1/x For d in [1/2, 1): Simple choice x (0) = 1.5 Max error = 0.5 < 1/d Better approx. x (0) = 4(  3 – 1) – 2d = – 2d Max error  0.1

May 2012Computer Arithmetic, DivisionSlide Speedup of Convergence Division Division can be performed via 2  log 2 k  – 1 multiplications This is not yet very impressive 64-bit numbers, 3-ns multiplier  33-ns division Three types of speedup are possible: Fewer multiplications (reduce m) Narrower multiplications (reduce the width of some x (i) s) Faster multiplications Compute y = 1/d Do the multiplication yz

May 2012Computer Arithmetic, DivisionSlide 55 Initial Approximation via Table Lookup Convergence is slow in the beginning: it takes 6 multiplications to get 8 bits of convergence and another 5 to go from 8 bits to 64 bits d x (0) x (1) x (2) = ( ) two Approx to 1/d Better approx Read this value, x (0+), directly from a table, thereby reducing 6 multiplications to 2 A 2 w  w lookup table is necessary and sufficient for w bits of convergence after 2 multiplications Example with 4-bit lookup: d = xxxx... (11/16  d < 12/16) Inverses of the two extremes are 16/11  and 16/12  So, is a good estimate for 1/d  = (11/8)  (11/16) = 121/128 =  = (11/8)  (3/4) = 33/32 =

May 2012Computer Arithmetic, DivisionSlide 56 Visualizing the Convergence with Table Lookup Fig Convergence in division by repeated multiplications with initial table lookup.

May 2012Computer Arithmetic, DivisionSlide 57 Convergence Does Not Have to Be from Below Fig Convergence in division by repeated multiplications with initial table lookup and the use of truncated multiplicative factors.

58 Sequential Dividers with Carry-Save Adders

59 Block diagram of a radix-2 SRT divider with partial remainder in stored-carry form

60 Pentium bug (1) October 1994 Thomas Nicely, Lynchburg Collage, Virginia finds an error in his computer calculations, and traces it back to the Pentium processor Tim Coe, Vitesse Semiconductor presents an example with the worst-case error c = / Pentium = Correct result = November 7, 1994 Late 1994 First press announcement, Electronic Engineering Times

61 Pentium bug (2) Intel admits “subtle flaw” Intel’s white paper about the bug and its possible consequences Intel - average spreadsheet user affected once in 27,000 years IBM - average spreadsheet user affected once every 24 days Replacements based on customer needs Announcement of no-question-asked replacements November 30, 1994 December 20, 1994

62 Pentium bug (3) Error traced back to the look-up table used by the radix-4 SRT division algorithm 2048 cells, 1066 non-zero values {-2, -1, 1, 2} 5 non-zero values not downloaded correctly to the lookup table due to an error in the C script

63

64 Follow-up Courses

DIGITAL SYSTEMS DESIGN 1.ECE 681 VLSI Design for ASICs (Fall semesters) H. Homayoun, project/lab, front-end and back-end ASIC design with Synopsys tools 2. ECE 699 Digital Signal Processing Hardware Architectures (Fall semesters) A. Cohen, project, FPGA design for DSP 3.ECE 682 VLSI Test Concepts (Spring semesters) T. Storey, homework

NETWORK AND SYSTEM SECURITY 1.ECE 646 Cryptography and Computer Network Security (Fall semesters) K.Gaj, hardware, software, or analytical project 2. ECE 746 Advanced Applied Cryptography (Spring semesters) J.-P. Kaps, hardware, software, or analytical project 3.ECE 899 Cryptographic Engineering (Spring semesters) J.-P. Kaps, research-oriented project