반도체 이모저모

반도체 소자 simulator, TCAD

by 멤오리 2024. 12. 23.


이번 글에서는 반도체 소자 simulator인 TCAD에 대해 소개해 드리도록 하겠습니다.
TCAD는 Technology Computer-Aided Design의 약자로, 컴퓨터 시뮬레이션을 통해 반도체 소자와 공정을 최적화하는 것을 의미합니다. 
대표적인 TCAD tool은 Synopsys 사와 Silvaco 사의 TCAD 프로그램이 있는데요, 제가 자주 사용한 tool인 Synopsys 사의 Sentaurus TCAD 프로그램 기준으로 설명드리겠습니다.


먼저 TCAD가 무엇인지 더 자세히 알아보겠습니다.
TCAD는 Si 웨이퍼 등 반도체 소자의 구조를 작은 격자 (mesh) 로 나누어서 Poisson equation, continuity equation 등 편미분 방정식의 해를 구해 소자의 전기적 특성을 알아낼 수 있는 tool입니다.

mesh로 나누어진 소자

 
새로운 반도체 소자나 기술을 개발할 때 실제 제작에는 비용과 시간이 많이 필요하지만, 이러한 과정을 컴퓨터 시뮬레이션을 통해 대체할 수 있다는 것이 바로 TCAD 시뮬레이션의 장점입니다. 또한 실험에서는 측정할 수 없는 carrier density, 소자 내부의 electric field 등의 특성을 수치적, 시각적으로 확인할 수 있다는 장점을 갖습니다.
이 과정에서 물리적 특성을 기반으로 한 physics model을 사용하기 때문에 non-ideal effects들을 충분히 고려하여 정확한 예측을 할 수 있기 때문에 반도체 기업에서도 필수적으로 활용되고 있습니다.
 
TCAD는 크게 두 가지로 나눌 수 있는데요, 바로 공정 시뮬레이션과 소자 시뮬레이션입니다.
공정 시뮬레이션에서는 etching, deposition, ion implantation, thermal annealing, oxidation과 같은 필수적인 반도체 공정들을 physical equation에 대한 해를 구함으로써 시뮬레이션을 진행합니다.
소자 시뮬레이션에서는 트랜지스터와 같은 반도체 소자의 전기적 특성을 가상으로 측정하는 시뮬레이션이라고 생각할 수 있습니다. 위에서 설명한 바와 같이 carrier density, current density 와 같은 physical quantity들을 Poisson, carrier transport 방정식 등을 통해 구해내는 시뮬레이션입니다. 실험에서 측정된 것처럼 시뮬레이션을 통해 I-V 특성 등에 해당하는 결과를 그래프로 확인할 수 있습니다.
 
Sentaurus TCAD 시뮬레이터는 라이센스를 구입해서 사용할 수 있는 프로그램으로, 개인이 쉽게 접할 수는 없겠지만 반도체 기업, 대학 연구실에서 활발하게 사용되고 있습니다.
또한 Sentaurus TCAD는 Linux 환경에서 실행되기 때문에 윈도우에서 사용하기 위해서는 MobaXterm과 같은 원격 접속 프로그램이 필요합니다.
설치 과정은 생략하고 TCAD tool에 대해 더 설명해보도록 하겠습니다.


Sentaurus TCAD는 다양한 세부 tool들을 포함하고 있습니다.
공정 시뮬레이션을 위한 SProcess, 구조 시뮬레이션을 위한 SDE, 소자의 전기적, 열적, 광학적 특성 시뮬레이션을 위한 SDevice 등등···
이 세부 tool들에 대해 설명하도록 하겠습니다.
 
1. SWB (Sentaurus Workbench)
SWB는 Sentaurus 시뮬레이션 프로그램을 사용하는 데 필요한 그래픽 환경을 제공하는 workbench(작업대)입니다. SWB를 통해 시뮬레이션 설계, 구성 및 실행을 하고 시뮬레이션의 결과를 관리할 수 있습니다.
SWB는 다음과 같이 구성되어 있습니다.

왼쪽은 프로젝트 브라우저, 오른쪽은 프로젝트 뷰어로 나누어 볼 수 있습니다.
왼쪽의 프로젝트 브라우저를 통해 원하는 프로젝트를 새로 만들거나 복사/붙여넣기 할 수 있고 이름을 수정하는 등 파일에 대한 관리를 진행할 수 있습니다.
오른쪽의 프로젝트 뷰어를 통해서는 tool들을 사용하여 시뮬레이션을 진행하고 그 흐름과 결과를 확인할 수 있습니다.

예시를 보면 SDE, SDevice, SVisual의 tool을 순서대로 실행하며 각 tool의 command에서 정의한 parameter (변수)에 해당하는 값들을 대입하여 각 노드에 대해 시뮬레이션을 진행합니다.
각 tool은 한 번의 실행(run)으로 시뮬레이션을 수행합니다. 따라서 일반적으로 하나의 tool에는 하나의 노드만 실행 가능합니다. 실행 가능한 노드는 '실제 노드(real nodes)'로 정보를 포함하고 있으며 실행 상태에 따라 색상이 달라집니다. 실행 불가능한 노드는 '가상 노드(virtual nodes)'로 정보를 포함하지 않습니다. 전처리 후에는 연한 파란색으로 표시됩니다.

 
이렇게 virtual node들은 옅은 파란색으로 표시되고 (일반적으로) tool의 가장 오른쪽에 위치한 node들이 real node로 실행 단계에 따라 다른 색으로 표시됩니다.

위의 사진에서 n6, n35, n63은 real nodes에 해당하며 'done' 단계에 있는 것을 알 수 있습니다.

각 단계들은 위와 같은 색으로 표시됩니다.
 
각 노드를 실행하기 이전에는 preprocessing이라는 과정이 진행됩니다. Preprocessing은 시뮬레이션 실행 전에 SWB가 입력 파일에 변수 값을 채우고, 실험 노드별로 적합한 파일을 생성 및 매핑하는 과정입니다. 
 
각 노드를 선택하고 (Ctrl+클릭 으로 여러 노드를 한 번에 선택하는 것도 가능) Ctrl+R 혹은 아래 그림에서 왼쪽 아이콘을 누르면 run (실행)되고 Ctrl+T나 오른쪽 아이콘을 누르면 중단됩니다.

그리고 각각의 tool에서 우클릭>Edit Input>Commands 를 통해 command 창에서 코드를 수정할 수 있습니다.
(코드에 대한 설명은 너무 길기 때문에 생략하겠습니다.)
 
그리고 SWB에서는 시뮬레이션 결과 또한 관리할 수 있습니다.

결과를 보기 원하는 노드를 우클릭>Visualize>Sentaurus Visual을 클릭하면 SVisual을 통해 결과를 확인할 수 있습니다.
아니면 해당 노드를 클릭한 후 아래와 같은 아이콘을 클릭해도 됩니다.

 
각 tool에 parameter를 우클릭하여 그 값을 수정하거나 parameter를 추가할 수 있습니다. 참고로 command 창에서 parameter는 @parameter_name@로 입력할 수 있습니다.
 
2. SProcess (Sentaurus Process)
위에서 설명한 바와 같이 공정 modeling을 진행하는 tool입니다. 8대 공정이라고 불리는 모든 공정 과정을 시뮬레이션을 통해 구현해 낼 수 있습니다.
SProcess의 input 파일을 command file (.cmd)로, 모든 공정 step에 대한 정보가 포함되어 있고 command를 통해 수정할 수 있습니다.
Output 파일은 여러가지가 존재하는데요, SProcess를 명령줄에서 실행하면 .log 파일이 생성되며, SWB에서 실행하면 .out 파일이 생성됩니다.
기타 출력 파일 유형:

  • TDR boundary file (_bnd.tdr)
  • TDR grid and doping file (_fps.tdr)
  • XGRAPH file (.plx)

 
SProcess의 command는 tool command language (TCL)의 확장 형태로 작성됩니다.
명령줄은 다음과 같이 작성할 수 있는데요,
<command> + <options and parameters>를 한 줄로 작성합니다.
예: deposit oxide thickness=0.01 type=anisotropic (oxide를 0.01 um의 thickness로 anisotropic하게 deposition함)
 
SProcess에는 아래와 같이 다양한 command로 구성될 수 있습니다.
• Process command
deposit, etch, implant, diffuse, mask, photo, strip, …
• Structure/Mesh control command
line, region, init, contact, transform, grid, refinebox, …
• Output command
struct, SetPlxList, WritePlx, layers, …
• Operation setting command 
math, pdbSet, … 
 
 
 
3. SDE (Sentaurus Structure Editor)
SDE는 2D, 3D device editor이자 3D 공정 emulator에 해당합니다. 그래픽 사용자 인터페이스(GUI)를 통해 2D 및 3D 장치 모델(도핑 및 메시 포함)을 기하학적으로 생성할 수 있습니다.
• File types
‒Scheme script file ( *.scm, *_dvs.cmd )
‒Journal file( *.jrl )
‒ACIS SAT file ( *.sat )
‒TDR boundary file( *_bnd.tdr )
‒Doping and refinement file( *.cmd, *_msh.cmd )
 
 
 
4. SDevice (Sentaurus Device)
SDevice는 소자의 전기적, 열적, 광학적 특성을 시뮬레이션합니다. 소자의 동작을 분석하고 최적화하는 역할을 합니다.
SDevice의 command는 일반적으로 다음과 같은 6 개의 section을 포함합니다.

  • File
  • Electrode
  • Physics
  • Plot
  • Math
  • Solve

 
먼저 File section에서는 시뮬레이션의 입력 및 출력 파일을 정의합니다. 

File {
* Input Files
Grid = "@tdr@" 
Param = "@parameter@"
* Output Files
Plot = "@tdrdat@"
Current = "@plot@"
Output = "@log@"
}

 
Grid file(TDR 형식)은 소자의 구조, contact이나 mesh definition에 대한 정보를 담거나 주어진 mesh에서의 doping profile과 같은 소자 내부의 field값에 대한 정보를 포함합니다.
"" 안에는 파일의 이름, 예를 들면 "mosfet_msh.tdr"의 형식으로 입력하지만 "@tdr@"으로 입력하면 위에서 설명한 preprocessing 과정을 통해 자동적으로 input 파일에 해당하는 .tdr 파일이 매핑됩니다. 파일 확장자인 .tdr은 파일이 TDR 형식임을 나타내며, 이는 Sentaurus Mesh (SNMesh)에서 생성되는 기본 형식입니다.
또한 파라미터 파일을 지정하여 material의 특성과 physical 모델 파라미터를 정의할 수 있습니다. 파라미터 파일은 .par 확장자를 사용하며 SDevice에서 default로 정의된 material 특성이나 physical model을 사용자 정의의 parameter로 변경할 수 있습니다.
 
SDevice는 아래와 같은 출력 파일들을 생성합니다.
Current file: 전극 이름 및 결과 전압, 전류, 전하, 시간, 온도 등을 포함합니다. (이 파일의 이름은 Current 문에서 정의됩니다.) (_des.plt)
Plot file: Plot 문에서 정의된 공간적으로 분포된 solution variables 및 그 도함수를 포함한 파일 (_des.tdr)로, 소자 내부의 물리량을 시각화할 수 있도록 하고 실제 실험에서 얻을 수 없는 정보들을 제공하는 파일입니다.
Output file: Output 문에서 정의된 이름의 파일로, 시뮬레이션 과정을 분석하는 데 도움이 되는 .log 파일 (_des.log)
 
 
 
위의 내용을 그림으로 정리해보자면 다음과 같습니다.
 

 
 
Electrode section에서는 말그대로 electrode에 해당하는 contact을 정의하고 초기의 boundary condition (bias 조건) 등을 함께 정의하는 section입니다. Electrode 영역에서 지정된 contact만 시뮬레이션에 포함되며, Grid file에 존재하는 contact의 이름과 정확하게 일치해야 합니다. (예를들면 SDE에서 정의한 contact과 SDevice의 Electrode 영역에서 지정하는 contact이 정확하게 일치해야 함을 의미함)
Default 값으로 SDevice는 electrode를 Ohmic contact으로 처리합니다. (charge neutrality와 equilibrium을 가정)

Electrode {
	{ Name="source" Voltage=0.0 }
	{ Name="drain" Voltage=0.0 Resistor=100 }
	{ Name="gate" Voltage=0.0 Barrier=-0.55 }
	{ Name="substrate" Voltage=0.0 }
}

여기서는 electrode들을 지정하고 boundary condition (Voltage= 0.0 V, 저항 값 100 Ω 등)을 정의하였습니다.
 
Physics section에서는 시뮬레이션에 포함할 physical model들을 정의합니다. 특정 material에 모델을 적용하거나, region에 적용할 수 있습니다. Physical model은 소자의 dimension이나 특성에 맞게 매뉴얼을 통해 공부 후에 적합한 model을 사용하면 됩니다.

* physical models can be defined globally
Physics {
	[list of models]
}
    
* or materialwise
physics (Material="[material name]") {
	[list of models]
 }
 
 * or regionwise
 physics (Region="[region name]") {
 	[list of models]
 }

 
Plot section은 Sentaurus Visual에서 시각화를 위해 Plot 파일에 저장할 변수를 지정합니다.

Plot {
	[list of variables]
 }

 
기본적으로 solution variables나 electrostatic potential, hole/electron density, lattice temperature는 저장되며, doping profiles, band structure 등 다양한 변수를 plot command에 포함할 수 있습니다.
 
Math section은 simulator의 수치 계산 default를 설정하는 것입니다. Error rate이나 iteration 횟수를 설정하는 영역이라고 생각하면 쉽습니다.

Math {
 *-- Parallelization on multi-CPU machine --*
 Number_Of_Threads=1
 *-- Numeric/Solver Controls --*
 Extrapolate
 Derivatives
 Iterations=8
 RelErrControl
 Digits=5
 Method=ILS
 NotDamped=100
 Transient=BE 
}

 
Solve section은 simulator가 순차적으로 실행해야하는 시뮬레이션 command로 구성됩니다. 여기서는 시뮬레이션의 순서와 어떤 작업을 수행할지에 대한 command가 포함됩니다. 
 
이 외에도 파일을 저장하고 추출하는 데 다양한 코드가 필요하지만, 필수적인 영역에 대한 설명만 적도록 하겠습니다. ( 직접 해 보는 게 100 번 낫다....)
 
++
Mixed mode
Mixed mode는 연구에서 정말 자주 사용한 기능인데요, SDevice에서 single-device를 넘어서 여러 개의 소자로 구성된 작은 circuit에 대한 mixed-mode 시뮬레이션이 가능합니다. 또한 transient나 AC coupled simulation도 가능합니다. Mixed mode는 single device의 시뮬레이션 방식과 유사하지만 System section이 추가되어 여러 개의 소자를 이어주는 과정이 필요합니다.
(이 또한 직접 해보시면 쉽게 이해하실 수 있을 겁니다...)
 
5. SVisual (Sentaurus Visual)
SVisual은 시뮬레이션을 통해 얻은 결과 데이터를 시각화하고 후처리를 통해 추출하는 역할을 합니다.
TCAD에서 시각화에 가장 많이 사용되는 두 가지 파일은 .tdr 파일과 .plt 파일입니다. 위에서 설명한 것과 같이 .tdr 파일은 소자의 구조나 mesh, 그리고 mesh에 저장된 field들을 나타내는 파일이고, .plt는 I-V curve와 같은 X-Y plot을 생성하는 데 사용됩니다. 
또한 tdr 파일을 통해 energy band 등 소자 특성 분석에 도움이 되는 많은 정보들을 확인할 수 있습니다.
SVisual은 앞부분에 설명한 것과 같이 SWB를 통해 실행할 수 있고 단순 클릭이나 드래그 등을 통해 단면을 생성하거나 물리량을 시각화할 수 있기 때문에 분석에 유용한 tool입니다.
 
간단하게 Synopsys Sentaurus에 대해 설명해보았는데요, 자세한 설명과 사용 방법은 TCAD 매뉴얼을 참고하시는 것을 추천드립니다. 매뉴얼은 SWB에서도 쉽게 접근할 수 있습니다.
또한 IDEC에서 열리는 TCAD강좌를 들어보시는 것도 추천드립니다.
하지만 위에도 언급하였지만 TCAD는 직접 사용해보는 것이 100 배 쉽고 도움이 됩니다. (기회가 있다면..)