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 Define an objective ( ex . Z - sa 1 , then Objective is Z = ) Objective s achieved ? { _ Check Backtrace To PI change a bit of PI } no Assign all PIs to its non controlling values Apply PIs to the circuit Fault signal propagates through output Find the conflict make it as a secondary objective yes Save Vector Exit Done
Initial Primary Input Assignment
Initial Primary Input Assignment (2) Waste of step! 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 Random 1 1 1 N - C 1 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) 6 1 12 10 1 2 1 10 1 8 3 1 1 7 4 1 1 13 11 1 D* D 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.
Questions?