--- 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會開一個讀取檔案的暫存檔,改掉裡面的變數之後執行這份暫存檔 :::