---
# System prepended metadata

title: TCAD_SEU筆記
tags: [TCAD]

---

---
title: TCAD_SEU筆記
tags: TCAD
---
**SEU: Single Event Setup**
*Atlas manual P.382*
# 主要功能
- <font color=blue>**在指定區域直接產生電子電洞對**</font>
- 跟光源產生相比，不需考慮光波長以及doping狀態
- 生成濃度可以直接控制
# 特性
- 在2D模擬裡面，生成狀態是**固定半徑的圓**，在指定的路徑上移動
- 在**時間軸**內產生，因此需要配合時間參數
# 使用方式
指令範例:
```typescript=
singleeventupset entry="2, 1" exit="8, 6" density=1e4 beam.radius=0.5 t0=5e-12 tc=1e-13 
```
- 開啟功能使用 **singleeventsetup** 指令
- **entry/exit**是起始點跟結束點
    - "x, y" 內部x跟y只能放**數值**，不能放公式 (ex. 1+0.5)
    - 起始/結束點不能用相同數值，但是可以寫低於mesh解析的的差異，即可形成**單點**
        - ex."2, 1" vs "2.0001, 1.0001"
    - 只會在Si裡面產生電子電洞對，但起始/結束點可以設定在Si以外的地方(ex.空氣、oxide等)，模擬能夠收斂
- **Density**預設單位為 /cm<sup>3</sup>，也可以透過其他參數修改單位或生成公式，詳見Atlas文件
- **Beam.radius**是半徑，跟一般的radius參數相比，這個參數會讓半徑內的生成濃度一致
    - 一般的radius會是exponential/gaussian分佈
- **t0/tc**是時間參數，會在時間軸上產生一個Gaussian Pulse
    - t0決定生成的峰值時間點
    - tc決定生成時間的寬度
        - 若tc=0，會產生一個單點脈波跳動，實測無法生成電子電洞對，可能需要其他搭配參數
- 另外，若使用**B.Density + pcunits**參數，可以直接控制整個SEU過程生成的電子電洞對總數(透過總電荷量)
    - 使用方式可參考VictoryDevice官方範例<font color=blue>Photodiode_ex13</font>
# 補充說明
## 時間軸
- **t0=5e-12, tc=1e-13**
![](https://hackmd.io/_uploads/SkFcMrwE3.png)
## 半徑
- **半徑 2um vs 0.05um**
![](https://hackmd.io/_uploads/H1hMQHwE2.png)
## 電子電洞生成
圖為不同時間點的電子濃度，cutline垂直切過發生區域
指定生成濃度(density)為 100/cm<sup>3</sup>
- 左: 生成的時間峰值 (5e-12 s)，跟其他區域相比，電子濃度增加50/cm<sup>3</sup>
- 中: 生成剛結束不久 (5.5e-12 s)，跟其他區域相比，電子濃度增加100/cm<sup>3</sup>
- 右: 生成結束後一段時間，電子均勻擴散在平坦電位區
![](https://hackmd.io/_uploads/S1ZH4SD43.png)
## 生效範圍
- 起始點在空氣中，垂直往下到Si裡面結束。可以看到只在Si裡面生效
- 如果要做類似平行光入射的效果，可以用這種手法，避免起始/結束點的半圓形(例如這個範例的結束點)
![](https://hackmd.io/_uploads/SJ4W1wwE3.png)
# 其他: 區域掃描 (sweep)
[官方範例](https://silvaco.com/examples/tcad/section5/example1/index.html)
- 把位置資訊以變數表示，即可以點狀型態在想觀測的區域做掃描
ex. 在x=y=0, 2, 4, 6, 8, 10的位置模擬發生點 (0~10切6個點，包含頭尾)
- 這是一個獨立的.in檔，專門拿來跑迴圈掃描:
```typescript=
go internal

load infile = SEU_loop.in
sweep parameter=pos type=linear range="0, 10, 6"
quit
```
> SEU_loop.in執行的是在特定位置模擬發生點，pos是我自己定義的位置變數 (x=y=pos)
> 
![](https://hackmd.io/_uploads/SkfyKIvVh.png)
> 也可以把x/y分開設變數，以這個例子來說就會跑**6x6=36次**不同位置的模擬:
```typescript=
go internal

load infile = SEU_loop.in
sweep parameter=posX type=linear range="0, 10, 6" \
parameter=posY type=linear range="0, 10, 6"
quit
```
:::info
sweep會開一個讀取檔案的暫存檔，改掉裡面的變數之後執行這份暫存檔
:::

