
光电探测器是光纤通信、激光雷达、医疗传感等系统的核心器件它的灵敏度直接决定了整个系统的性能下限。而在流片之前用TCAD仿真先跑通结构和性能曲线已经是器件工程师的标配路径。Silvaco TCAD在这类硅基光电器件仿真里应用很广通过Atlas模块可以同时完成光学与电学耦合仿真不需要额外写复杂的自洽方程求解程序。这篇文章记录我用Silvaco TCAD从PN结光电二极管逐步演进到PIN光电探测器的完整过程。我会讲清楚为什么PIN比PN更适合做光电探测如何用Atlas搭建两种器件结构怎么设置光照条件提取响应度和量子效率以及在仿真中我踩过的一些坑。如果你正准备做光电探测器的器件仿真或者刚接触Silvaco想找个练手项目这篇内容应该能帮你省不少时间。1. 项目脉络为什么从PN结走向PIN1.1 PN结光电二极管的核心瓶颈PN结二极管在光伏、光电探测领域应用广泛但作为光电探测器有几个硬伤。耗尽区宽度有限长波长的光子在耗尽区外被吸收后产生的电子-空穴对只能靠扩散运动到达结区这个过程比较慢而且容易在缺陷处复合表现为量子效率不高、响应速度慢、暗电流偏大。从器件物理角度理解PN结的耗尽层宽度主要由两侧掺杂浓度决定。当掺杂浓度在1e16 cm^-3量级时零偏压下耗尽层宽度通常只有零点几微米到一微米。而硅基探测器常用的850nm波长光吸收深度大约在15到20微米大部分光子在耗尽区之外被吸收导致光生载流子需要依靠扩散才能被收集。扩散运动的特性是慢且随机载流子寿命又有限所以一部分载流子在到达结区前就复合消失了。即便进入耗尽区的载流子穿越耗尽区的时间也受到电场强度限制。这个矛盾的本质是耗尽区窄、吸收区宽、收集效率低。这就引出设计改进的关键思路能不能把吸收区整体变成耗尽区答案是改用PIN结构。1.2 PIN结构的改进逻辑PIN结构在P区和N区之间插入一层低掺杂的本征层I层近似本征。由于I层掺杂浓度极低在反向偏置下几乎整个I层都被耗尽耗尽区宽度可以做到几十微米。入射光在I层内被吸收后光生电子-空穴对立即处于强电场中漂移收集快速且高效。这从物理上解决了两件事一是扩大了有效吸收体积使入射光子尽可能在耗尽区内被吸收提升量子效率二是收集过程由扩散主导变为漂移主导加快响应速度。对PIN探测器而言量子效率和速度这两个指标同时得到改善。从仿真角度看PIN结构只需调整网格和掺杂参数就能在Silvaco里完整实现并直接对比两种结构的输出电流、量子效率、光谱响应等特性。这是整个项目的核心价值用最小的仿真成本看清器件结构对性能的决定性影响。1.3 仿真工具选型的思考为什么选Silvaco TCAD而不是其它仿真方式Silvaco Atlas是成熟的半导体器件数值仿真工具求解泊松方程、载流子连续性方程和输运方程能够同时处理光照条件下的光生载流子产生、复合、输运全过程。相比用等效电路模型估算器件响应TCAD仿真直接基于物理结构能给出空间分辨的电场分布、载流子浓度分布和复合率分布。这对看清器件内部到底发生了什么非常有帮助。同时Silvaco DeckBuild的语法相对直观一条语句定义一个区域一条语句设置掺杂学习曲线不算陡。如果你还没有Silvaco环境常见的获取途径是学校或公司的正版LicenseSilvaco官方也提供教学版。仿真本身不复杂关键是要理解每一条语句在做什么。2. 器件结构与物理模型搭建2.1 网格定义精度与开销的平衡Silvaco网格定义是最容易影响结果的地方。网格太疏耗尽区边界和结深附近的分辨率不够提取的电场、电流曲线会失真。网格太密仿真时间呈指数增长尤其在光照瞬态扫描时非常煎熬。我的做法是分区域设置网格。在P区、N区以及PN结边界附近用细网格比如0.02微米或0.01微米保证结区电场和载流子浓度的分辨率。在衬底和远离结区的区域用较粗的网格比如0.5到1微米减少节点数量。对PIN结构I层内部网格间距取0.1微米就足够精确因为I层内部电场本身比较均匀。go atlas mesh space.mult1.0 # X方向网格 x.mesh location0.0 spacing0.05 x.mesh location1.0 spacing0.05 x.mesh location10.0 spacing0.5 # Y方向网格 y.mesh location0.0 spacing0.01 y.mesh location0.2 spacing0.01 y.mesh location0.5 spacing0.05 y.mesh location2.0 spacing0.2 y.mesh location5.0 spacing0.5 y.mesh location10.0 spacing1.0这里的spacing数值要根据器件尺寸来定。如果器件纵向是10微米网格点数量控制在一两千个以内仿真速度比较理想。如果还想更快可以先跑一个粗网格版本验证逻辑再加密网格跑正式结果。2.2 区域、电极与掺杂的实现在Silvaco里通过region语句定义材料区域通过electrode语句定义电极接触。PN结和PIN结构的主要区别在于中间层的厚度和掺杂浓度。PN结构造region num1 silicon x.min0 x.max10 y.min0 y.max5 electrode nameanode x.min0 x.max10 y.min0 y.max0 electrode namecathode x.min0 x.max10 y.min4.8 y.max5注意电极并不是凭空加进去的它需要落在区域边界上。阳极在器件顶部阴极在器件底部电极宽度和位置会直接影响电流收集路径。如果定义电极时y.min和y.max没有贴住区域边界Silvaco会报错或者电流收集异常。然后进行掺杂。PN结的做法是在顶部注入P型掺杂底部注入N型掺杂doping uniform concentration1e17 p.type region1 y.min0 y.max0.2 doping uniform concentration1e16 n.type region1 y.min0.3 y.max5如果希望更贴近实际工艺可以用doping gaussian语句但uniform掺杂更容易控制结位置适合做初始验证。PIN结构则是在P区和N区中间夹一层I层doping uniform concentration1e19 p.type region1 y.min0 y.max0.1 doping uniform concentration1e14 n.type region1 y.min0.2 y.max4.0 doping uniform concentration1e16 n.type region1 y.min4.1 y.max5.0I层的实际掺杂浓度要尽量低通常1e12到1e15 cm^-3。掺杂越低耗尽越容易扩展到整个I层。不过也要注意Silvaco对极低掺杂的数值处理有时会产生振荡如果I层浓度低于1e12建议适当抬高到1e13或1e14避免数值问题。2.3 物理模型选择与收敛性考量Silvaco Atlas的models语句决定仿真中启用的物理模型。针对硅基光电探测器一般需要这几类模型迁移率模型低场迁移率、电场依赖迁移率fldmob复合模型SRH复合srh、Auger复合auger禁带窄化模型重掺杂区需要开启bgn有助于模拟真实器件载流子统计模型高掺杂时选择费米统计或玻尔兹曼统计常用语句models srh auger fldmob bgn print对于最基础的电流-电压曲线这些模型已经足够。开启太多模型会导致收敛困难如果初始仿真不收敛先关闭auger和bgn只保留srh和fldmob再试。光照仿真还需要开启光学模型。Silvaco Atlas提供beam光束语句描述入射光的方向、波长、强度以及光吸收模型。光电探测仿真中常用raytrace或complex index光学模型。对硅材料默认折射率和消光系数可以满足常用波段后续可以按需覆盖。2.4 材料参数的确认与调整Silvaco自带材料库里的硅参数经过校准但在特定波长下折射率和吸收系数必须与实验值吻合否则光吸收计算结果会偏移。比如850nm波长硅的折射率约3.67消光系数在0.005附近吸收系数约600到800 cm^-1范围。如果你仿真的是可见光波段注意短波长如400nm吸收系数很大光子在表面就被吸收量子效率受表面复合影响显著而长波长如1050nm吸收系数很小需要足够厚的吸收区。这个波长与吸收深度的匹配关系是选择探测器结构和厚度的最基本依据。Silvaco里可以用material语句覆盖默认的光学参数material region1 index.real3.67 index.imag0.005index.real和index.imag对应复折射率的实部与虚部光学吸收系数由4πk/λ计算得到。如果你从文献里查到的吸收系数和Silvaco默认值差异很大建议以文献曲线为准用material覆盖后再对比仿真结果。3. 光电仿真核心环节实操3.1 光照条件的设置与物理含义光电探测器的核心仿真场景是“光照反向偏置”目标是在不同偏压和不同光功率下提取输出电流。光照用beam语句设置beam num1 wavelength0.85 x.origin5.0 y.origin-0.1 angle90.0 power0.001重点是angle参数。angle90表示光从器件顶部垂直入射。如果光从侧面入射angle要改配合x.origin、y.origin定义光束原点。对于常见的面入射型光电探测器垂直入射最简单直接。power参数的单位是W/cm^2。基于设定的光功率密度Silvaco会结合吸收模型计算出光生载流子产生率。需要明确的是这里设定的功率是入射光功率密度而不是总功率。如果器件面积为100×100 μm^2则总光功率约等于power乘以面积。仿真时要注意光功率过大时高载流子注入效应会让器件进入高注入模式I-V特性会发生变化。仿真时可以用多个功率点扫描观察光电流是否随光功率线性增加判断器件是否处于正常探测模式。对于850nm硅器件从0.1到10 mW/cm^2之间做扫描比较合理。3.2 求解流程从零偏到反向偏置光照仿真不能一上来就加几十伏反向电压。一个好的习惯是分阶段求解先求解零偏、无光照状态让器件自洽收敛到一个稳态解。逐步提高反向偏压让电场分布适应偏压变化。到达目标偏压后再打开光束提取光生电流。Silvaco使用solve语句执行这个过程solve init solve vcathode0 solve vcathode-1 solve vcathode-2 solve vcathode-5注意这里vcathode是阴极电压阳极默认接地。反向偏置意味着阴极相对阳极为负电压。Silvaco里电位的符号和物理直觉容易搞混建议先跑一个小偏压测试确认电流方向正确再做全扫描。在偏压扫描过程中使用log语句把电流记录到日志文件log outfpin_reverse.log master solve vcathode0 solve vcathode-1 solve vcathode-2 solve vcathode-5 log off把偏压步长设置得小一点例如每步0.5V或0.2V更容易收敛。尤其在接近击穿电压时步长过大会导致完全不收敛。3.3 光电流与暗电流的提取为了分别得到暗电流和光电流需要跑两遍一遍不加beam暗条件一遍加beam光照条件。对应log文件名分别保存后期用TonyPlot画在一起。有两种提取光电流的方式直接读取光照条件下的总电流再减去同偏压下的暗电流利用Silvaco的输出文件直接查看光生电流分量实际操作中更常用第一种。因为暗电流受温度和复合模型影响仿真中暗电流往往比实验值偏小但量级差异不大做结构对比时足够参考。用TonyPlot提取曲线后可以通过菜单里的测量工具直接读取数值也可以在DeckBuild里使用extract语句提取关键点extract namephoto_current y.val from curve(vcathode, i.cathode) x.val5extract语句可以帮助批量提取不同结构、不同波长下的响应度是参数扫描中非常实用的功能。3.4 稳态响应指标响应度与量子效率评估PIN探测器性能最常用的两个指标是响应度和量子效率。它们的本质都是衡量“光转电”的效率但计算角度不同。响应度R 光电流 / 入射光功率单位A/W。量子效率η 产生的电子-空穴对数 / 入射光子数。二者换算关系近似η R × (hc / (qλ)) R × 1240 / λ(nm)比如在850nm波长如果响应度是0.5 A/W对应量子效率约73%。在Silvaco里提取到光电流后可以直接用这个公式手算也可以让extract自动完成。看光谱响应时可以循环扫描多个波长得到每个波长下的响应度绘制光谱响应曲线。这个曲线能直观看出器件对哪个波段最灵敏、哪些波段响应滚降对设计指导意义很大。3.5 瞬态响应仿真与响应速度稳态响应只说明“能产生多少光电流”不说明“光电流变化多快”。实际系统中探测器带宽至关重要。Silvaco可以仿真激光脉冲或阶跃光信号下的瞬态电流从中提取上升时间、下降时间估算3dB带宽。方式是在完成稳态偏置后用beam语句打开一个随时间变化的光源beam num1 wavelength0.85 x.origin5.0 y.origin-0.1 angle90.0 power.steady0.0 power.time0.001 solve tstep0.001 tstop0.01这里power.steady是稳态光功率power.time是脉冲幅度。如果希望光功率脉冲上升沿足够陡tstep要设置得比器件响应时间小一个量级。瞬态仿真的时间步长选择直接决定能否捕捉到载流子渡越效应。比如I层厚度5微米饱和漂移速度1e7 cm/s渡越时间约50皮秒。如果时间步长超过500皮秒渡越效应就会被平均掉带宽结果不准。3.6 光谱响应扫描的批量实现在实际项目里通常不会只仿真一个波长。要做光谱响应扫描可以用循环控制语句建立批量输入set wavelength0.4 while $wavelength 1.1 beam num1 wavelength$wavelength solve ... extract ... set wavelength$wavelength0.05 endDeckBuild支持简单的变量和循环这个特性在做参数扫描时非常省力。我做光谱扫描时习惯把结果汇总到同一个日志里然后一次性提取所有数据点再导入Python画图比逐个看波形高效得多。4. PN结与PIN结构性能对比与分析4.1 暗电流特性对比暗电流是决定探测器探测极限的核心参数。在无光照条件下PN结的暗电流主要由耗尽区产生复合电流和扩散电流构成。PIN结构因为I层体积大热产生复合率也相应升高暗电流并没有比PN结低。不过在实际应用中PIN探测器更看重光电流的提升幅度。如果光电流从几十纳安提升到几百纳安暗电流虽然也从几皮安涨到几十皮安信噪比依然大幅改善。所以在方案对比时要同时看光电流和暗电流不能只听一个指标。从仿真结果看PN结的暗电流密度通常在nA/cm^2量级而PIN因为I层体积增大暗电流密度会高一些但这丝毫不影响它在光电探测中的优势因为光电流的提升幅度往往超过一个数量级。4.2 光电流与量子效率对比在同样光照条件、同样反偏电压下PIN的光电流通常显著高于PN结。原因就是耗尽区变宽光子吸收效率提升。我仿真了相同光照功率密度下两个结构的电流-电压曲线。在-5V偏压、850nm波长、1 mW/cm^2光功率密度下PN结光电流密度约0.15到0.2 mA/cm^2而I层10微米的PIN结构光电流密度约0.35到0.45 mA/cm^2。具体数值和吸收层厚度、掺杂浓度、表面复合速度都有关系但趋势非常明显。量子效率方面PN结因为耗尽区窄量子效率通常只有20%到30%而PIN结构可以做到50%到60%。这个差距在长波长波段更为明显。因为长波长光子穿透深PN结的耗尽区根本吸收不到多少光子。4.3 响应速度对比PIN结构的响应速度优势在瞬态仿真中更直观。我设置了一个阶跃光信号从0时刻开始照射观察光电流从10%上升到90%的时间。PN结的上升时间约为几百皮秒到几纳秒原因在于耗尽区外产生的载流子通过扩散运动进入结区扩散过程慢且拖尾效应明显。PIN结构上升时间通常可以做到几十皮秒量级因为I层内产生的载流子全部在电场中做漂移运动收集速度显著加快。值得说明的是实际器件响应速度还受RC时间常数限制TCAD仿真里如果没有加入外部寄生电容得到的只是本征响应速度。工程上用的时候需要把探测器的结电容、负载电阻这些一起折算进去。4.4 电场分布与耗尽区扩展的可视化Silvaco TonyPlot可以输出二维电场和载流子浓度分布。PIN结构在反偏状态下I层内电场基本均匀呈梯形分布PN结的耗尽区狭窄电场峰值在结附近向两侧快速衰减。这个电场分布图特别有助于理解两种结构差异的本质。当你看到PN结器件里大量光生载流子在电场弱的区域靠扩散缓慢移动时你自然能明白为什么PIN更适合高速光电探测。用TonyPlot的cutline工具可以沿着器件纵向切一条线把电场、载流子浓度、产生率画在同一张图里对比更直观。性能指标PN结光电二极管PIN光电探测器I层10μm耗尽区宽度0.3~1μm随偏压变化基本覆盖整个I层可达10μm以上850nm量子效率20%~30%50%~60%850nm响应度0.15~0.2 A/W0.35~0.45 A/W上升时间本征数百皮秒~纳秒量级几十皮秒量级暗电流密度较低略高但光电流增益更明显主要载流子收集方式扩散漂移漂移为主4.5 仿真结果对实际设计的启示做完这组对比仿真最直接的结论是如果你要做高速、高灵敏度的光电探测器PIN结构是绕不开的路线。但PIN结构也不是越厚越好。I层加厚确实提升量子效率但载流子渡越时间增加响应速度下降这是典型的工程折中。仿真中可以通过扫描不同I层厚度找到量子效率和带宽的平衡点。我实际扫描了5微米、10微米、20微米三种I层厚度。结果非常清晰5微米厚度响应速度快但量子效率不到40%20微米厚度量子效率能到70%以上但上升时间明显变长10微米是折中。这类快速扫描在实验上需要多次流片在TCAD里改一个参数就行这是仿真最大的价值。5. 常见问题与排查技巧实录5.1 不收敛的几种可能Silvaco仿真不收敛是非常常见的问题。最常见的几个原因网格太粗糙高掺杂区域浓度梯度大网格分辨率不够物理模型开得太多模型之间耦合导致迭代不稳定初始猜测不好直接加很大的偏压导致牛顿迭代发散数值方法的参数设置不合理排查建议先关掉auger、bgn这些非关键模型只保留srh和fldmob。把偏压步长改小比如每次只加0.1V而不是1V。如果还不收敛加密结区附近的网格。Silvaco还允许调整求解器参数比如迭代次数method itlimit30 maxtrap20itlimit是最大迭代次数maxtrap是最大步长缩减次数。调试时打开输出观察迭代历史output band.parameters val.band con.band flow solve ...5.2 网格与计算速度的平衡策略我在实际仿真中总结出一条经验在光照仿真中光吸收深度决定有效的网格细化区域。比如850nm光吸收深度约15到20微米那么至少要在表面以下20微米范围内保持合理网格密度太粗的网格会丢失光生载流子分布细节。网格优化还有一个技巧先跑一个粗糙网格的仿真快速确认结构有没有低级错误再加密网格做正式仿真。如果你一开始就用最细网格一次仿真可能要几个小时调试效率极低。5.3 光功率单位与abs参数Silvaco beam语句的power参数在不同版本中的单位可能略有差异。如果不确定可以用abs参数指定光功率的绝对单位beam num1 wavelength0.85 x.origin5.0 y.origin-0.1 angle90.0 power0.001 abs1abs1表示power值是W/cm^2的绝对光功率密度。如果你用的是相对功率而没设置abs计算出的电流可能和期望值差几个数量级这是新手经常踩的坑。还有一个容易忽略的点wavelet的单位是微米还是纳米。Silvaco里wavelength默认单位是微米所以写0.85代表850nm。如果写成850光就会变成毫米波仿真结果完全偏离预期。5.4 材料参数对结果的影响Silvaco默认的硅光学参数在可见光和近红外波段表现良好但在某些特定波长下会遇到参数缺失或不准的情况。此时用material语句覆盖即可。一个简单的自查方式是在没有外加偏压、没有暗电流的情况下用一个已知功率的光束照射器件看光电流是否符合量子效率的理论上限。如果超过理论上限就要检查是否出现了数值伪影或单位错误。5.5 常见问题速查表现象可能原因解决方法初始化就不收敛网格太粗、模型冲突加密网格只保留srh和fldmob大偏压下发散步长太大、初始猜测差减小偏压步长逐级求解光电流量级不对power单位错误、abs未设置检查abs参数确认功率密度单位光谱响应异常材料光学参数不准用material覆盖折射率/消光系数瞬态结果波形毛刺时间步长太大缩小tstep保证小于器件响应时间电极电流收集异常电极未贴住区域边界检查electrode定义确保落在边界上5.6 后处理技巧与报告输出TonyPlot保存图片后建议同时导出CSV格式的原始数据方便用Python或Origin重新绘制。Silvaco的extract语句可以提取关键电学参数但图表的美化还是交给专业绘图工具更顺手。我自己习惯在TonyPlot里先把曲线样式设置好线宽、颜色、坐标轴标题、图例然后导出PNG加CSV。报告里需要的参数表直接用extract的输出整理。到这里从PN结到PIN光电探测器的Silvaco TCAD仿真实践主要流程就梳理完了。我在实际做这个项目时的体会是TCAD仿真最大的价值不是算出某个绝对精确的数字而是帮你快速建立器件结构、物理机制、性能参数三者之间的直觉。你改一个掺杂浓度、加一层本征区马上能看到耗尽区怎么扩展、光电流怎么变化这种反馈速度是实验流片完全无法比拟的。最后再分享一个小技巧仿真前先花十分钟把要对比的器件结构和光照条件写清楚列出至少两个指标做对比我通常选量子效率和上升时间再动手写deck。当你有了明确的对比矩阵仿真就变成一次有目的的实验而不是盲目调参数。这套方法同样适用于其他半导体器件仿真项目。