R package for wafer level statistics and lot analysis. You can install package from github:

devtools::install_github("drmanager/waferscopeR")

This guide is to demonstrate the functions of waferscopeR and document the internal data sets for exploration.

#devtools::load_all()

knitr::opts_chunk$set(
  root.dir = normalizePath('../'),
  fig.width = 6, fig.height = 6
)

options(digits=3)

fig.show = 'asis'

Read Raw Data Files

The function read_kla_f5 reads the raw data file output from KLA-Tencor Spectra Ellipsometry tool directly. The data is saved in a list, which can be accessed by slot number. The dataset "lot1" contain one lot (25 wafers) native oxide measured on Silicon substrate.

library(waferscopeR)
native_oxide <- system.file("extdata", "native_oxide.csv", package="waferscopeR")
lot1 <- read_kla_f5(native_oxide)

Each wafer cab be accessed by index within the list or slot number such as "slot1". The data structure contains layer thickness, good of fit (GOF) and (x,y) coordinates of measurement within a wafer.

#Wafer names in the list
names(lot1)

#Retrieve by wafer index and return as dataframe
head(lot1[[1]])

#Retrieve by slot name and return as dataframe
head(lot1[["slot1"]])

Wafer Statistics

wafer_stat function would take wafer coordinate and thickness data and return list of statistics.

#read slot1 from collection and change the col name of "1st Thickness" to "ThK"
wafer.slot1 <-lot1[["slot1"]]
colnames(wafer.slot1) <- c("ThK","GOF","X","Y")

# Output the statis of wafer 
wafer_stat(wafer = wafer.slot1)

Wafer Map

Contour maps are used to visualize the data distribution across the wafers. Options to control the map output:

wafer.slot1 <-lot1[["slot1"]]
colnames(wafer.slot1) <- c("ThK","GOF","X","Y")

#Visualize mean map with datapoints on
map_wafer(wafer=wafer.slot1,resolution="normal",point="on",maps="mean", wlabel = "slot1")
wafer.slot1 <-lot1[["slot1"]]
colnames(wafer.slot1) <- c("ThK","GOF","X","Y")


#Visualize mean map, radial, residual and radial distribution maps
map_wafer(wafer=wafer.slot1,resolution="normal",point="off",maps="all")
wafer.slot1 <-lot1[["slot1"]]
colnames(wafer.slot1) <- c("ThK","GOF","X","Y")


#decompose into different points
map_decompose(wafer=wafer.slot1,resolution="normal",point="off",maps="decompose")

Explore wafer lot

A quick exploration of wafer maps can be done with KLA raw data files. explore_lot_klaraw(pre,post) takes in pre and post files and output the pre, post and delta thickness and a table with uniformity statistics.

pre <- system.file("extdata", "pre.csv", package="waferscopeR")
post <- system.file("extdata", "post.csv", package="waferscopeR")

explore_lot_klaraw(pre,post)

Explore the data with a single file with explore_klaraw (file, output)

explore_klaraw(pre,output="summary")

Compare wafers

Wafer data can be compared side by side with compare_wafer. The input takes in two wafer data frames. Output options are :

#read wafer collection data from tabulated csv file
wafer_collection <- system.file("extdata", "wafer_collection.csv", package="waferscopeR")
wafer.collection1 <- read.csv(wafer_collection)
#select slot1 from the collection and name z to "ThK"
wafer1 <- wafer.collection1[, 1:3]
wafer2<-wafer.collection1[, c(1,2,4)]
waferscopeR::compare_wafer(wafer1,wafer2, output="delta")
#read wafer collection data from tabulated csv file
wafer.collection1 <- read.csv(wafer_collection)
#select slot1 from the collection and name z to "ThK"
wafer1 <- wafer.collection1[, 1:3]
wafer2<-wafer.collection1[, c(1,2,4)]
waferscopeR::compare_wafer(wafer1,wafer2, output="compare")


DRManager/waferscopeR documentation built on May 6, 2019, 1:18 p.m.