Title: | Mathematics at DEC |
Moderator: | RUSURE::EDP |
Created: | Mon Feb 03 1986 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 2083 |
Total number of notes: | 14613 |
I'm on loan to the consortium Sematech. Sematech is working to develop manufacturing techniques for semiconductors. One of the challenges is to define standards so that engineers are not continually re-inventing the wheel. I need to develop a sample plan for collecting test data of circuits on a silicon wafer. Below is an example of a wafer where "X" represents the circuits where additional data is to be collected. The idea is to develop a computer algorithm that will pick the sights. This algorithm needs to be keyed off of the digits of the wafer serial number and needs to be repeatable so that the same pattern can repeatedly be re-generated for that wafer. X=56 TC=209 09 OOOXOOOXOOOXOO 08 OXOOOXOOXOOOXOOOXOOOXO r 07 XOOOXOOOXOOXOOOXOOOXOOOX o 06 OOXOOOXOOOXOOXOOOXOOOXOOOXOO0X w 05 XOOOXOOOXOOOXOOXOOOXOOOXOOOXOO s 04 OOXOOOXOOOXOOXOOOXOOOXOOOXOOXO 03 OOXOOOXOOXOOOXOOOXOOOXOO 02 OOXOOOXOOXOOOXOOOXOOOX 01 OXOOXOOOXOOOXO flat 00000000011111111112222222222 12345678901234567890123456789 columns Now the hard part, the total number of circuits (TC) will very from product to product (based on the circuit size and the wafer size). Also the sample size need to be selectable from a few percent of the total to a large percentage of the total. Also the "X" circuits should be evenly distributed across the wafer. I'm no mathematician or statistician so bare with me. I was thinking in terms of randomly selecting a single first point then evenly distributing other sights across the wafer like some kind of game of life. So the sum of the distances between the neighbors is at a maximum. With rows and columns raping around as neighbors. Another is shrinking a grid around a randomly selected point of origin until there are 56 points of intersection within circuits. The algorithm should be such so that all circuits are selected about the same number of times across a large population of wafers. Any ideas how to approach this problem? Thanks, Bob Posted in: Algorithms CHEST::ALGORITHMS 2248 Mathematics CLT::MATH 672
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
1043.1 | KOBAL::GILBERT | Ownership Obligates | Tue Mar 21 1989 09:54 | 46 | |
I'd be very tempted to ignore the geometry, and use a technique that independently selects which sites are to be tested. That is, TC := 209; { Total number of sites } X := 56; { Number of sites to test } rand_seed := f(serial_number); { Initialize random number generator } need := X; { Remaining test sites needed } for s := TC downto 1 do { Remaining sites to be considered = s } begin { Assert: need <= s on each iteration } r := rand; { Uniformly distributed 0.0 to 1.0 } if r*s <= need then { True with probability = need/s } begin test_site(s); { Test this site } need := need - 1; { One less test site needed } end; end; If you really want to consider the geometry, consider the following. It randomly 'drops stuff' on the chip, and when the amount at a site reaches a threshhold, the stuff beads up, and includes some of the neighboring stuff. need := X; { Test sites needed } drip := 1; { The amount to drip } threshhold := 7; { Cause beading at this amount } residue := 2; { Not everything beads up } for i := 1 to TC do z[i] := 0; { Initialize to no stuff } while need > 0 do begin r := rand * TC + 1; { Pick a site } z[r] := z[r] + drip; { Drip on it } if z[r] = threshhold then { When we reach the threshhold } begin need := need - 1; { One less site needed } for i in neighbors(r) do { For all neighbors of r } begin m := max(z[i]-residue, 0); { Stuff to move from i to r } if (z[i] >= threshhold) and (z[i]-m < threshhold) then need := need + 1; { It drops below threshhold } z[r] := z[r] + m; { The Rich get richer } z[i] := z[i] - m; { And the poor get poorer } end; end; end; for i := 1 to TC do if z[i] >= threshhold then test_site(i); { Test this spot } | |||||
1043.2 | I'll see your 1 and raise you 1 | POOL::HALLYB | The Smart Money was on Goliath | Tue Mar 21 1989 11:52 | 34 |
One thing you should be more precise about is the distinction between these two possible interpretations of: .0> across the wafer like some kind of game of life. So the sum .0> of the distances between the neighbors is at a maximum. Do you really mean you want the sum of the distances to be THE MAXIMUM, or just that you'd like a "pretty even distribution" over the surface? In the oddball case X=2, THE MAXIMUM distance might be given by: 09 OOOOOOOOOOOOOO 08 OOOOOOOOOOOOOOOOOOOOOO r 07 OOOOOOOOOOOOOOOOOOOOOOOO o 06 OOOOOOOOOOOOOOOOOOOOOOOOOOOO0X w 05 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO s 04 XOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 03 OOOOOOOOOOOOOOOOOOOOOOOO 02 OOOOOOOOOOOOOOOOOOOOOO 01 OOOOOOOOOOOOOO flat 00000000011111111112222222222 12345678901234567890123456789 columns which is probably not the right areas to test but then I'm no chip fabricator. (I'm no Jack Kennedy, either :-) I like Peter's "drip" algorithm in .1, but think you should 1+ it as ff: for any input wafer, generate say 10 "drip test patterns". Then select for use the one that has the greatest calculated total distance between all pairs of points. (No need to extract SQRT when calculating distances). John | |||||
1043.3 | AUSTIN::FLATLEY | Tue Mar 21 1989 16:54 | 20 | ||
I like the "drip" method. I'll have to give that a try to see if I can get it to work. As for .2 I meant to say that the wafer raps around on it self. So the example you show the two test points are actually very close. If the first test point was on the edge the second would be near the center. 09 OOOOOOOOOOOOOO 08 OOOOOOOOOOOOOOOOOOOOOO r 07 OOOOOOOOOOOOOOOOOOOOOOOO o 06 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO w 05 OOOOOOOOOOOOOOOXOOOOOOOOOOOOOO s 04 XOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 03 OOOOOOOOOOOOOOOOOOOOOOOO 02 OOOOOOOOOOOOOOOOOOOOOO 01 OOOOOOOOOOOOOO flat 00000000011111111112222222222 12345678901234567890123456789 columns |