LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Create coordinate map using 2D array of clusters

Hi guys,

 

I need to create a coordinate map in the following format (I'll try to describe as best as possible):

1. The system needs to be X rows by Y columns (decided when I start my test) for this example lets just assume a 4x4 setup

2. Each square needs to contain 24 'squares' where squares are strings which describe the pass/fail of that device. 

 

The XxY system (for example 4x4) is straightforward to put together using a 2D array. However the additional information per 'square' is what's giving me fits. I've been trying to do it by using a 2D array where each element of the array is actually a cluster of named strings. In the attached vi's it's only 8 however as I mentioned it will need to be 24 later but I don't think the number really matters at this point.

 

As you can see in my example vi's attached, I can run the init vi to form the 2D array of clusters and then the idea would be to run updatebinmap vi after this to update. But if you run the code a few times you will see it doesnt work because each time it updates the global 'Dies' and then when I switch squares or reticles the old value is still there. So I know that's the flaw in this code...what I don't know is how to make it work. 

 

The idea would then be to print this 2D array into an excel or csv file in the format below where each 3x8 piece of data is what I am calling a square. I think this is a problem when using an array of clusters as well so I am open to any new ideas. Thanks for your help!

 

00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 03 00 00
03 03 03 03 03 03 03 03 01 00 00 00 03 00 00 03 00 03 00 00 00 03 03 00
03 03 03 01 03 03 03 03 00 00 00 01 00 00 00 00 03 03 00 00 01 04 00 00
03 03 03 03 03 03 03 03 03 03 00 03 00 00 04 00 00 00 00 03 03 00 03 03
03 03 03 03 03 03 01 01 03 03 03 03 03 03 03 03 03 03 03 01 00 01 01 03 01 01 00 01 03 03 01 03
01 01 03 03 03 03 01 01 03 00 00 00 03 00 01 03 01 03 01 03 01 03 03 03 03 00 01 00 01 01 03 00
01 03 03 03 03 03 03 03 01 00 00 00 03 03 03 03 00 00 00 01 01 01 03 00 01 01 03 03 03 03 03 01
00 01 00 00 00 00 00 00 01 03 03 03 03 03 03 00 03 01 01 03 03 03 03 03 03 03 01 01 03 03 03 03
00 00 00 00 00 00 00 00 03 00 00 01 01 01 00 01 03 03 01 01 01 01 01 01 01 03 03 00 03 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 03 03 01 00 01 01 03 01 00 03 03 03 00 01 03

 

Download All
0 Kudos
Message 1 of 14
(3,988 Views)

Sometimes "Complex" is simpler...  

 

A few Questions:

  • Is there a reason "Dies" must be of type "string"  (I'm an English Speaker so I do not know what that means-- Sorry)
  • Use "Bundle by Name" Trust me it'll help other developers understand what you are triing to do!
  • The Global variable use is questionable I would not throw it out without more information on your project however: Ben's famous Action Engine Nugget is always a good read. http://forums.ni.com/t5/LabVIEW/Community-Nugget-4-08-2007-Action-Engines/m-p/503801

In a nutshell, the points seem to be X-Y pairs, a Complex Float number may make the rest of the code easier to implement.


"Should be" isn't "Is" -Jay
0 Kudos
Message 2 of 14
(3,951 Views)

I think "dies" usually refers to some kind of wafer that's been diced, and each piece is called a die.

 

Perhaps you can upload what you want the excel file to look like and we can recommend a good way to store the data?

0 Kudos
Message 3 of 14
(3,917 Views)

It looks like "Die" is what you call your "Array of 24 thingys" where a "thingy" is a string describing Pass/Fail of your device.  I created a Die Typedef as a Cluster containing an Array of Strings, then used it to create an array with a specified number of Rows and Columns (such as 4 by 4, selectable at run time) and then filled each of the 16 Die with a random set of Pass/Fail results (90% Pass, 10% Fail).

Die Typedef.pngDie VI.png

Is this what you are after?

 

Bob Schor

0 Kudos
Message 4 of 14
(3,905 Views)

Thanks for your replies!

 

Correct, basically what this is will be post processing wafer die binning that will be sent over to the wafer cut house who will cut the die and package. What happens during my test is the die is tested for 10 or so RF and DC characteristics, is tested against limits ie. is gain > 20, and then assigned a bin code 0-4 depending on the results of those tests.

 

The reason die, reticle, etc are in strings to start is because I read those off of the probe bench. I dont know if you guys are familiar with wafers so I put 'squares' in the initial post but in reality those are reticles of a wafer and each reticle contains 24 die. So for example, a reticle could be (0,5) [row,column] and on reticle 0_5 there are die 1-24. Each die is tested against the limits as it's tested which is why I am trying to update one at a time. However currently I save the results in a csv file with 3 columns, reticle num, die num, bin code. I'm starting to think it may be easier to just parse through this list rather than save one by one.


I'll upload a quick excel file of how the formatting should look when I get to my desk but if you look at my original post near the end, that's the goal. Basically have the data look like an actual wafer where the data is arranged by reticle in the position on the wafer.

0 Kudos
Message 5 of 14
(3,892 Views)

Attached is an excel preview of what I need it to look like. I put 3 blank reticles on the top just for reference. I can set this 0,0 point to be wherever I want it but I put it top left so there are no negatives.

The blank reticles can either be left blank or have some sort of filler like an underscore. Let me know if this helps.

0 Kudos
Message 6 of 14
(3,880 Views)

So this is basically a 3-D array (row, column, and "Die number") that you are squeezing into a 2-D (Excel) format.  How are you planning to save the Die (24 entries) information -- as a long string, or as 24 columns, with "super-columns" to denote the set of (say) 4 "columns" at the upper level?  Or some other way (multiple sheets?) ...

 

Bob Schor

0 Kudos
Message 7 of 14
(3,870 Views)

Are the values you have entered in each cell the "bins" which you end up with after testing? Is this format what the other department requested that you'll be handing the wafers off to? I think the "picture" idea is cool, but if I were doing this I would just put the dies down the left side 1-24, the reticle position across the top, and the bin of each die at the intersection in a large rectangular table.

0 Kudos
Message 8 of 14
(3,865 Views)

Correct. I explored looking into using a LV 3D array but that doesn't work. 

 

Right now, I'm exploring 2 options to save the Die info.

1. Use a 2D array where each entry is a cluster of the 24 die bin numbers

-------this seemed simple at first however updating one entry at a time has been tricky

-------I'm thinking this method may still work however I would have to gather all the data first and then format

 

2. I just started to look into this option but here I would just make the entire thing a 2D array where each entry is the bin code for that die

------this would require a case structure for example reticle (0,5) would be entry row 0, column 40 (8x5)

------I think this may be the easier way

0 Kudos
Message 9 of 14
(3,853 Views)

I agree gregory, attached is what I initially provided them. They claim this 'picture' format is the only way they can enter it into their machine. Otherwise this would be very straightforward!

0 Kudos
Message 10 of 14
(3,844 Views)