WaferProber: Difference between revisions

From SweepMe! Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(16 intermediate revisions by one other user not shown)
Line 1: Line 1:
A wafer prober is an instrument to automatically contact a silicon wafer with needles. A wafer is typically organized in rectangular 'dies' that often have identical structures. These dies can contain different test structures that are addressed by subsites (or subdies).
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 ==
== 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 implementation of the device class. The user can then select dies or subsites to be used in a table. The combination of all selected dies and selected subsites is measured (assuming the standard sweep values are used).  
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 ==
== User interface ==


* The button "Get probe plan" is used to retrieve the probe plan.
* Use the selection box "Sweep value wafer" to choose which source is used to vary wafers.
* The button "Go to next die" can be used during the measurement to go to the die that would be the next in the sequence.
* The button "Go to next subsite" can be used during the measurement to go to the subsite that would be the next in the sequence.
* Use the selection box "Sweep value die" to choose which source is used to vary dies.
* 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.
* Use the selection box "Sweep value subsite" to choose which source is used to vary subsite.
* Use the right-click menu of the die table or the current table to easily change the selection.
* 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 ==
== Sweep values ==


The standard sweep values are "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 die" and "Current subsite" which means that either the die table or the subsite table is not used. Instead the wafer prober contacts the current die or current subsite.
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 actual sweep value of the module is defined to be a string of the format 'Die<die>_Sub<subsite>' where <die> and <subsite> are an index or any string that indicates a position to go. This sweep value is handed over to the device class and the device class has to make sure during 'apply' that all the die and subsite to go is extracted correctly. Furthermore the sweep value is used for the file name if the module 'WaferProber' is a child of 'MakeFile'
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 ==


== Device Class programming ==
=== Module specific concepts ===


=== Module specific concepts ===
* The modules 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 containes 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.


* the next sweep value is given by "Die<die>_Sub<subsite>" where <die> is the next value for the die and <subsite> is the next value for the subsite. These values are created based on the return values of the function 'get_ProbePlan'
* 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'.
* If the user selected "Current die" or "Current subsite" as sweep mode, the sweep value is asked for using 'get_CurrentDieAndSubsite'. This function should return the same format of string as used by 'get_ProbePlan'.
* It is the duty of the device class to extract the correct value for die and subsite in the function 'apply' from the sweepvalue.


=== Module specific functions ===
=== Module specific functions ===
There are function that are only called by the WaferProber module. We recommend to use the device class 'WaferProber-Cascade_Nucleus' as a template.
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.


==== get_ProbePlan ====
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.
use this function to return a list of dies and a list of subsites. The variable 'self.port' can be used if the port_manager is used.
Each list should contain strings that are then will be added to the corresponding table.


==== get_ProbePlanFileName ====
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.
use this function to return the name of the probe plan file. The variable 'self.port' can be used if the port_manager is used. If not applicabale return an empty string or a short message like "Probe plan updated" as a message for the user.
Before the start of a every run, "get_probeplan" will be called to renew the tables for wafer, dies, subsites.


==== get_ActualDieText ====
==== get_current_wafer ====
use this function to return a string of the current die index that is used to refresh the user interface
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_ActualSubsiteText ====
use this function to return a string of the current subsite index that is used to refresh the user interface


==== get_ActualCoordinateX ====
==== get_current_die ====
use this function to return the x coordinate as string
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_ActualCoordinateY ====
==== get_current_wafer ====
use this function to return the y coordinate as string
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.


==== get_CurrentDieAndSubsite ====
[[Category:Modules]]
use this function to return information about the current die and current subsite as two strings. The variable 'self.port' can be used if the port_manager is used. The returned strings should be in agreement with the strings that are returned by the function 'get_ProbePlan'.
[[Category:Device Modules]]

Latest revision as of 14:53, 2 May 2024

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 modules 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 containes 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'.

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

  1. list of dies and list of subsites
  2. list of wafer, list of dies, and list of subsites
  3. list of wafer, list of dies, and list of subsites
  4. 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.