150 likes | 277 Views
A New ATPG Algorithm for 21 st Century: The wojoRithm. John Sunwoo sunwojo@auburn.edu Electrical & Computer Engineering Auburn University, AL. Table of Contents. Flow Diagram PI Assignment Mechanism Logic Simulation (How & Why + Demo) Backtrace() Example Results (Developing)
E N D
A New ATPG Algorithm for 21st Century: The wojoRithm John Sunwoo sunwojo@auburn.edu Electrical & Computer Engineering Auburn University, AL
Table of Contents • Flow Diagram • PI Assignment Mechanism • Logic Simulation (How & Why + Demo) • Backtrace() • Example • Results (Developing) • Significance & Suggestions on future work • Q & A
High Level Algorithm 1)Assign PIs fully (Unique) 2)Simulate 3)Fault site activated? If not, then change PIs and goto step 2 4)Fault propagates to PO? (D or D-bar detected?) If not, set an additional objective to make it propagate (change PIs) and goto step 2 5)Save the vector 6)Done • Activate the fault site • propagate the fault • 3) save the vector
Why Start with Fully Assigned PI? • Start with X-state • D, PODEM • FAN, TOPS, SOCRATES • Before let the algorithm to think (ex. Backtrace), why don’t we give it a shot. (FEMT, Free Extra Missile Theory) • Can be lucky
High Level Flow Diagram Start Start Define an objective Define an objective ( ( ex ex . . Z Z - - sa sa 1 1 , , then Objective is Z then Objective is Z = = 0 0 ) ) Assign all PIs to its non Assign all PIs to its non - - controlling controlling values values Apply PIs to the circuit Apply PIs to the circuit Backtrace Backtrace no no Objective Objective ( ( s s ) ) achieved achieved ? ? { { To PI To PI change a bit of change a bit of ? ? { { Objective Objective _ _ Check Check ) ) PI PI } } yes yes Find the conflict Find the conflict make make ? ? yes yes no no Save Vector Save Vector Fault signal Fault signal it as a secondary it as a secondary Exit Done Exit Done propagates through output propagates through output ? ? objective objective
Initial Primary Input Assignment (2) Waste of step! 0 • Why non-controlling values, not Random? • Random = 50% to activate fault site accidentally • Non-controlling values = ? (Add-in Intelligence) • Higher chance to make an effective change on the circuit 1 0 Random 0 0 1 0 0 1 1 N - C 1 0 1 1
Logic Simulator • Reads in circuit.lev • Logic evaluation from lowest level to highest level. • myVector : A linked list to be updated simultaneously. • Demo
Backtrace( ) • Backtrace(label, value) { while (PI has not updated) { 1) check input of gate ‘l’ 2) change one of the input ‘x’ which needs to be change to ‘v’. If none of the input value needs to be change then backtrack. 3) l = l 4) x = v } return new myVector }
Example (c17.bench) myVector = [13, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1$, 0$]
Example Decision Steps (c17.bench) 1 1 0 6 12 1 10 0 1 2 1 10 0 8 1 3 1 1 7 4 0 1 1 0 13 0 11 1 D* D 0 5 sa1 9 1 • Initial objective: set [9] to “0” • Apply vector • Backtrace from [9] & *save the path (learning) • Apply updated vector • D-bar propagates? • Additional objective: set [8] to “1” 7. Backtrace from [8] 8. Apply updated vector 9. D detected at PO [13] 10. Save vector, Done
Data <Demo> wojoRithm 5 01111 10011 10001 11111 11100 01101 11011 11101 10100 • HITEC • 5 • 00011 • 00010 • 00100 • 10001 • 10111 • 11111 • 10000 • 01001 • 10011 • 01100 One vector short! Both got 100% Fault coverage Compact test vector size is possible
Significance & Suggestion • Complete implementation on software • Experiment on bigger bench circuits • Artificial Intelligence (AI) • Random PI VS Static non-controlling PI
Conclusions • Algorithm is not fully implemented • More analysis is needed • The simplest but powerful • All node is in known state = faster % simpler backtracing.