WaferProber
A wafer prober is an instrument to automatically electrically contact positions on silicon wafer. A wafer is typically organized in rectangular 'dies' that have identical structures and are also called chips or sites. These dies can contain different test structures that are addressed by subsites (or subdies).
Concept
The module is designed to call a probe plan from an external software (e.g. Nucleus, Velox) or from a probe plan file, depending on the instrument driver. The user can then select wafers, dies, or subsites to be used in tables or simply ask for using the current one. The combination of all selected wafers, selected dies and selected subsites is used for the measurement run.
User interface
- Use the selection box "Sweep value wafer" to choose which source is used to vary wafers.
- Use the selection box "Sweep value die" to choose which source is used to vary dies.
- Use the selection box "Sweep value subsite" to choose which source is used to vary subsite.
- The button "Update" is used to retrieve the probe plan. It connects to the wafer prober and ask for all information about wafers, dies, and subsites. In case information are loaded from a wafer map file, a file dialog opens where the user can select a file.
- Use the right-click menu of the die table or the current table to easily change the selection or to skip a wafer/die/subsite during a run.
- The section "Actual values" displays the current set values for wafer, die, and subsites to see which position will be accessed next.
Probe plan
SweepMe!'s WaferProber modules uses an absolute addressing scheme. Instead of using communication function liks "go to next wafer" or "go to next die", function are used that exactly indicate the index of the next wafer, die, or subsite. Therefore, we need the full information about the wafers in the cassettes or the dies/subsites to be measured beforehand. Using the 'Update' button one can retrieve the probe plan and crosscheck in the tables for wafer, dies, and subsites whether all information are loaded correctly. In case the wafer map is loaded from a file, the name of the file will be displayed next to the 'Update' button. It is also possible to insert a file name in the Probe plan text edit field or to use parameter {...}.
Before each measurement run starts, the probe plan will be retrieved again to make sure it is up to date. The selection of wafer, dies, and subsites will remain unchanged.
Sweep values
The standard sweep values are "Wafer table", "Die table", and "Subsite table" which means that the selections within the tables at the bottom of the module are used. Further sweep values are "Current wafer", "Current die" and "Current subsite" which means that either the corresponding table is not used. Instead the wafer prober remains at the current wafer, current die, or current subsite.
The sweep value of the module is defined to be a string of the format 'Waf[<wafer_identifier>]_Die[<die_identifier>]_Sub[<subsite_identifier>]' where <wafer_identifier>, <die_identifier>, and <subsite_identifier> are an index or any string that indicates a position to go. This sweep value is going into the data file name if the WaferProber module is above the MakeFile module. Further, this sweep value string is handed over to the driver for further processing. In case there is no variation of a wafer, a die, or a subsite the corresponding part in the sweep value is missing. For example, a semi-automatic wafer prober that does not support changing wafers, the sweep value would be just 'Die[<die_identifier>]_Sub[<subsite_identifier>]'
Driver programming
Module-specific concepts
- The module hands over the current sweep value to the driver during the semantic function apply() by defining self.value in the driver. The sweep value is a string given by "Waf[<wafer_identifier>]_Die[<die_identifier>]_Sub[<subsite_identifier>]" where <wafer_identifier> indicates the wafer, <die_identifier> indicates the die, and <subsite_identifier> indicates the subsite. These values are created based on the content of the wafer table, the die table, or the subsite table of the module.
- Further, the module defines the variable "self.sweepvalues" in the driver during the semantic function apply. It is a dictionary that contains the following keys - values:
"Wafer" -> the wafer to be measured "Die" -> the die to be measured "Subsite" -> the subsite to be measured "NextWafer" -> the next wafer "NextDie" -> the next die "NextSubsite" -> the next subsite
Instead of using 'self.value', we recommend to use the latest module version and make use of 'self.sweepvalues' that contains all necessary information. The key "Next wafer" can be used in fully automatic wafer probers that manage to preload the overnext wafer in order to speed up the wafer handling.
- If the user selects "Current wafer", "Current die" or "Current subsite" as sweep mode, the sweep value is asked for using the driver function 'get_current_wafer', 'get_current_die', or 'get_current_subsite'. This function should return the same format of strings as used by 'get_probeplan'.
- The driver should go to separation height during signout. This allows safe combination with devices such as temperature controllers that need the chuck to be in separation height before they can start heating.
- In case the wafer prober remains at a single position (e.g. one specific subsite) while another module higher up in the sequencer does a parameter sweep (e.g. a temperature module), the wafer prober will call 'apply' at every measurement point, meaning it will go in separation height and back to contact again. If this behavior is not desired, the module running the parameter variation should be placed below the wafer prober in the sequencer tree.
Module-specific functions
There are driver functions that are only used and called by the WaferProber module. We recommend to use the driver 'WaferProber-Accretech_UFseries' as a template.
get_probeplan
Use this function to return either one of the options below
- list of dies and list of subsites
- list of wafer, list of dies, and list of subsites
- list of wafer, list of dies, and list of subsites
- list of wafer, list of dies, list of subsites, and a probe plan name.
The variable 'self.port' can be used if the port_manager is used in order to communicate with the wafer prober to retrieve the wafer map information. Each list should contain strings that are then will be added to the corresponding table.
If the function "get_probeplan" has an additional argument, the path tothe wafer map file will be handed over from the module. The module automatically opens a file dialog so that the user can select a file. Before the start of a every run, "get_probeplan" will be called to renew the tables for wafer, dies, subsites.
get_current_wafer
Add this function to return a string of the current wafer. It will be called by the module, if the user select the "Current wafer" as Sweep value. Use of self.port is possible to communicate with the wafer prober.
get_current_die
Add this function to return a string of the current die. It will be called by the module, if the user select the "Current die" as Sweep value. Use of self.port is possible to communicate with the wafer prober.
get_current_wafer
Add this function to return a string of the current subsite. It will be called by the module, if the user select the "Current subsite" as Sweep value. Use of self.port is possible to communicate with the wafer prober.
load_wafer(wafer)
If a WaferProber driver defines this functions, the user can right-click the Table the wafer to load the selected wafer. The selected wafer is handed over as argument to the function 'load_wafer' and the string must be parsed to identify cassette and wafer information. The driver should check whether a wafer is already on the chuck.
unload_wafer
If a WaferProber driver defines this functions, the user can right-click the Table the wafer to unload the current wafer. The driver should check whether a wafer is on the chuck.