The SEMI E142 Wafer Map XML File

November 30, 2016
Steve DiBartolomeo
Artwork Conversion Software, Inc.

The SEMI E-142 map specification is quite powerful and flexible. That enables the format to serve many different purposes, but also makes it quite difficult to write a comprehensive and robust reader. While we read and write most E-142 files, there are a number of possible legal files whose structure we do not support. If you enounter such a file, you can send it to Artwork and we will determine how to best support it.

Sample Code

If you open a SEMI-E142 map file with a text editor, you will see a structure similar to this one.

The Header Information

<?xml version="1.0" encoding="ISO-8859-1"?>
<MapData xmlns="urn:semi-org:xsd.E142-1.V1005.SubstrateMap">
<Layouts>
<Layout LayoutId="WaferMap" DefaultUnits="mm" TopLevel="true">
<Dimension X="1" Y="1" />
<DeviceSize X="200.000000" Y="200.000000" />
<ChildLayouts>
<ChildLayout LayoutId="LAYOUT" />
</ChildLayouts>
</Layout>
<Layout LayoutId="LAYOUT" DefaultUnits="mm">
<Dimension X="320" Y="309" />
<StepSize X="0.630000" Y="0.640000" />
<ProductId> TESTDEVICE_00 </ProductId>
</Layout>
</Layouts>
<Substrates>
<Substrate SubstrateType="Wafer" SubstrateId=" XXX555ABCD ">
<LotId> NNN014506 </LotId>
<GoodDevices>68635</GoodDevices>
</Substrate>
</Substrates>
<SubstrateMaps>
<SubstrateMap
SubstrateType="Wafer" SubstrateId=" XXX555ABCD "
LayoutSpecifier="WaferMap/LAYOUT" Orientation="180"
OriginLocation="UpperRight" AxisDirection="DownLeft">
<Overlay MapName="SortGrade" MapVersion="1"
>
<BinCodeMap BinType="Ascii" NullBin="." MapType="2DArray">
<BinDefinitions>
<BinDefinition BinCode="X" BinDescription="BIN0" BinQuality="Pass" />
<BinDefinition BinCode="R" BinDescription="REF" BinQuality="Reference" />
<BinDefinition BinCode="-" BinDescription="SKIPDIE" BinQuality="Skip" />
<BinDefinition BinCode="E" BinDescription="UGLYDIE" BinQuality="Edge" />
<BinDefinition BinCode="X" BinCount="3609" BinDescription="BIN0" />
<BinDefinition BinCode="P" BinDescription="BIN1" BinQuality="Pass" />
<BinDefinition BinCode="F" BinDescription="FIRST_FAIL" BinQuality="Fail" />
</BinDefinitions>

The header is followed by the map data.

<BinCode>................................................................................EEEEEEEEEEEEE
<BinCode>........................................................................EEEEEEEEEEEEEEEEEEEEE
<BinCode>..................................................................EEEEEEEEEEEEEEEEEEEEEEEEEEE
<BinCode>.............................................................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
<BinCode>........................................................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
<BinCode>....................................................EEEEEEEEEEEEEEEEEEEEEEEEEEEEXXXXXXXXXXXXX
<BinCode>.................................................EEEEEEEEEEEEEEEEEEEEEEEXXXXXXPPPPPPPPPPPPPPP
<BinCode>..............................................EEEEEEEEEEEEEEEEEEEEXXXPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>...........................................EEEEEEEEEEEEEEEEEE-XPPPPPXPPPPPPPPPXPPPPPPPPPPPPPP
<BinCode>........................................EEEEEEEEEEEEEEEEEXXXXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>.....................................EEEEEEEEEEEEEEEEXXXXXXXXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>..................................EEEEEEEEEEEEEEEXXXXXXXXPPPXPPPPPPPPPXPPPPPPPPPPPPPPPPPPPPPP
<BinCode>................................EEEEEEEEEEEEEEXXXXXXXPPPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>..............................EEEEEEEEEEEEEXXXPPPPPPPPPPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>...........................EEEEEEEEEEEEEXXPPPPPPPPPPPPPPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>.........................EEEEEEEEEEEEEXPPPPPPPPPPPPPPPPPPPPPXPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>.......................EEEEEEEEEEEEXPPPPPPPPPPPPPPPPPPPPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<BinCode>.....................EEEEEEEEEEEEPPPPPPPPPPPPPPPPPPPPPPPPPPPXPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP

and at the end of the file all of the sections are closed:

</BinCodeMap>
</Overlay>
</SubstrateMap>
</SubstrateMaps>
</MapData>


Notes on SEMI E142 Syntax


Flat/Notch Orientation

The wafer generally has a flat or notch use to orient it correctly. We've seen some variation in the 0 and 180 interpretation but the one shown below is per the standard:

flat or notch orientation for semi E142

Origin Location and Direction

The wafer map is an array organized as rows and columns. However the so called origin where the row and columns are counted from can vary. Sometimes this origin is determined by the behavior of the wafer prober. Too often, there is no information in the file that clearly indicates the origin. Here is what should be included:

wafer map coordinate origin and increasing X or Y direction

If not specified, E142 indicates that LowerLeft is the default and Axis direction default = UpRight.



Reference Devices

There should always be at least one reference die referenced in the map data. We need to know two things for the reference information to be useful:

  1. where in the array is the reference die located?
  2. how far from the wafer center is the (center of the)reference die located?

If there is more than one reference die then they should each have a unique name or identifier.


Bin Type

Each device is assigned to a bin. There are a number of allowed formats for the bin. These are:


Spacing and Delimiters

1. When BinTytpe=Decimal there must be spaces added between each device and each row of devices should be on a new line:

000 001 001 002 001 002
001 001 002 002 001 000
000 002 001 001 001 001

2. When BinTytpe=ASCII, Hexadecimal or Integer2 there must not be spaces between bins and each row should be on a new line

NullBin

This is a special bin code that represents either non-existent die (since the wafer is round and the array is rectangular) or die that are simply not probed.


Map Type

There are a number of ways to list out the bin ID's. Some are easily "man readable" and some not. If not specified in the file the default (according to the spec) is 2DArray.

2DArray

All the die in a row are represented in a single BinCode entry. The length of each row and the number of rows corresponds with the the row/column dimensions specified earlier in the file. Locations in the layout that do not contain a die (or a die that was probed) should be assigned to the NullBin value.

illustration for wafer map encoding

In the illustration above, any die position not labeled = 0. So the Map output would look like this:

<bincode>0000000</bincode>
<bincode>000UXYX</bincode>
<bincode>00UUUUU</bincode>
<bincode>0UXXYXX</bincode>
<bincode>0UXYXXX</bincode>
<bincode>0XXXXYX</bincode>

Row/Column

This encoding relies on a starting XY array position and a length (number of die) followed by a list of bin values whose length is equal to the number of die. I guess the advantage here is that one does not have to explicitly list the null die locations.

row column data structure

So for the same illustration the encoding would look like this:

003 001 4 U X Y Z 
002 002 5 U U U U
001 003 6 U X X Y X X
001 004 6 U X Y X X X
001 005 6 X X X X Y X

A carriage return/linefeed is not needed between the "rows" using this encoding but it would make the file easier to view manually.

003 001 4 U X Y Z 002 002 5 U U U U 001 003 6 U X X Y X X 001 004 6 U X Y X X X 001 005 6 X X X X Y X

It does not even require that there be any particular order to the column/row data as long as the origin is properly known.


Array Format

This format relies on the reading software knowing the column width and number of rows and then dividing the long string of bin values by row. According to the spec, the array starts at the top left. (Not sure how this interacts with other parameters such as the Array Origin.) illustration for map type = array

The data structure is one long string of bin values.

data structure for array formatted bin map

and the data in the XML file might look like this:

000000000UXYX00UUUU0UXXYXX0UXYXXX0XXXXYX