[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference rusure::math

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

1043.0. "Sampling Algorithm" by AUSTIN::FLATLEY () Mon Mar 20 1989 22:26

   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.RTitleUserPersonal
Name
DateLines
1043.1KOBAL::GILBERTOwnership ObligatesTue Mar 21 1989 09:5446
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.2I'll see your 1 and raise you 1POOL::HALLYBThe Smart Money was on GoliathTue Mar 21 1989 11:5234
    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.3AUSTIN::FLATLEYTue Mar 21 1989 16:5420
   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