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'
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_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)
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")
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")
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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.