web page logo for WMBatch

Splitting a Wafer Map File into Four Sections

In this app note we show how to use WMBatch to split a very large map file for a 300 mm wafer into four smaller map files. This particular requirement occurs when trying to process 300 mm wafers on 200 mm equipment. In some cases one has to physically slice the 300 mm wafer into 4 pieces; in other cases the wafer fits on a large chuck but the equipment's ability to move across the full 300 mm wafer is limited to only 200 mm. In either event, in order to process the entire wafer one needs to create 4 separate map files representing the 4 quadrants of the wafer.



Our input map file is in IBIS format and it looks like this when the entire wafer is viewed:

Wafer diameter = 300 mm
Device Size = 0.5mm x 0.51 mm
Columns = 599
Rows = 588
Good Devices = 254,227
Origin (0,0) = Upper Left

View of a 300 mm wafer with 0.5 mm x 0.5 mm devices

We want to slice the wafer map into quadrants as shown here:

New Sections = 150 x 150 mm sq.
Device Size = 0.5mm x 0.51 mm
Columns = 300/299
Rows = 294

300 mm wafer sliced into quadrants


WMBatch Directives Used

In addition to the standard directives such as open and save, we are going to utilitize a couple of special directives:

a) wafer fill outside

this directive fills all device locations with a user specified bin code outside the specified region. The regions are specified by the corner array coordinates.

so if we write:

wafer fill outside 0,0,298,293

then everything outside that region (the UL quadrant) will be filled with NULL bin codes.

everything outside the UL quadrant is filled with NULL bincodes
coordinates for each of the four wafer fill directives


b) wafer delete

this directive removes empty (i.e. only containing null bincodes) rows and empty columns

so if we write:

wafer delete rows
wafer delete columns

Then the map file is trimmed to just the contents of the UL quadrant. We can save this as a new wafer map.

after wafer delete (rows and columns) only the map for the UL quadrant is left

By combining these two directives and specifying the correct regions, we can create 4 separate wafer maps; each which fit on 200 mm equipment.



The WMBatch Command File

split_one_into_four.txt

# Example command file: split_one_into_four.txt
# Input is a large IBIS map;
# sliced into quarters - UL,UR,LL,LR - output 4 separate map files
# Input Map has 588 rows 599 columns
# Steve DiBartolomeo, Artwork Conversion Software Inc.
# December 18, 2021; revised May 13, 2022

# first step is always to define input_dir and output_dir

input_dir "E:\cad_data[2]\wafer_map_evals\EXAMPLES\SPLIT24MAPS\input"
output_dir "E:\cad_data[2]\wafer_map_evals\EXAMPLES\SPLIT24MAPS\output"

# now open our source map file (must indicate what format it is)

open dense_300mm_wafer.map format IBIS

# this map has a lot of un-used bin code defns. We are going to delete them.

bin delete unused

# now we are going to fill everything outside the selected window with null bin codes
# coordinates: left_col top_row right_col bottom_row [bin_code]
# [bin_code] is optional; if not present defaults to the NULL bin code

wafer fill outside 0 0 298 293

# now we are going to trim away all the empty rows and columns that result from the fill operation

wafer delete rows
wafer delete cols

# next we save output to the same format also naming the quadrant

save dense_300mm_wafer_UL.map

# in order to do the next quadrant we have to reload the wafer data since
# our first operation "modified" all the device bin codes except for those
# in the first quadrant; the wafer reload command does this
# remember our count starts at 0,0 so mid point of 588 is 588/2 - 1 = 293
wafer reload
bin delete unused
wafer fill outside 299 0 598 293
wafer delete rows
wafer delete cols
save dense_300mm_wafer_UR.map

wafer reload
bin delete unused
wafer fill outside 0 294 298 587
wafer delete rows
wafer delete cols
save dense_300mm_wafer_LL.map

wafer reload
bin delete unused
wafer fill outside 299 294 598 587
wafer delete rows
wafer delete cols
save dense_300mm_wafer_LR.map