| 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
| |||||