Appearance
Ch4(续):瞬态命令与扫描
4.6 瞬态命令
Transient 命令用于执行瞬态时间模拟。命令必须从已经求解的器件开始。模拟通过迭代增加时间并重新求解器件来继续(参见图 12)。每次迭代时求解器件的命令随 Transient 命令给出。
图片:../../../public/images/sdevice/sdevice_fig12.png
Transient 命令的语法为:
cpp
Transient ( <parameter-list> ) { <solve-command> }表 362(第 1793 页)列出了可能的参数,<solve-command> 是 Coupled 或 Plugin。
执行 10 µs 瞬态模拟的示例:
cpp
Transient( InitialTime = 0.0 FinalTime=1.0e-5){
Coupled { Poisson Electron Hole }
}Transient 命令允许覆盖时间步长控制参数,这些参数具有默认值或在全球 Math 部分中全局定义。瞬态命令接受的误差控制参数在表 238(第 1674 页)中列出。
TransientError、TransientErrRef 和 TransientDigits 参数控制瞬态积分方法的误差。这与 Coupled 语句的误差控制不同,后者仅控制每个非线性解的误差。与 Coupled 语句的误差参数一样,瞬态误差控制可以是绝对误差和相对误差。绝对值根据方程变量类型进行参数化。
Transient 命令的绘图控制与 Quasistationary 命令相同,只是 t 是真实时间(以秒为单位),不限于 0 到 1 的区间。
Plot 可以作为 Transient 参数给出。例如:
cpp
Transient( InitialTime = 0.0 FinalTime = 1.0e-5
Plot { Range = (0 3.0e-6) Intervals=3 } )
{ Coupled { Poisson Electron Hole } }此示例在 t = 0.0、1.0e–6、2.0e–6 和 3.0e–6 时保存四个绘图文件。
与 Quasistationary 模拟类似,如果在上次保存之后经过特定步长时,也可以使用 Plot 命令中的关键字 MinSpacing 来保存和绘图数据。例如:
cpp
Transient(
InitialTime = 0.0 FinalTime = 1.0e-5
Plot { Range = (0 3.0e-6) MinSpacing= 2.0e-5 }
)
{ Coupled { Poisson Electron Hole } }或者,Plot 可以放入 Transient 求解命令中(参见 何时绘图):
cpp
Transient( InitialTime = 0.0 FinalTime = 1.0e-5 )
{ Coupled{ Poisson Electron Hole }
Plot ( Time=( 1.0e-6; 2.0e-6; 3.0e-6 ) NoOverwrite )
}4.6.1 瞬态分析的数值控制
您可以使用 Math 部分中的一组关键字和 Solve 部分中 Transient 语句的选项来控制瞬态模拟。Sentaurus Device 使用非平稳方程的隐式离散化,并支持两种离散化方案:梯形规则/后向差分公式(TRBDF)(这是默认方案)和更简单的后向欧拉(BE)方法。
要选择特定的瞬态方法,请指定 Transient=<string>,其中 <string> 可以是 TRBDF 或 BE。
在瞬态模拟中,除了非线性方程的数值误差外,还会产生由于有限时间步长而导致的离散化误差(参见 瞬态模拟)。默认情况下,Sentaurus Device 不控制时间步长来限制此离散化误差(即时间步长仅取决于牛顿迭代的收敛)。
要激活时间步长控制,必须指定 CheckTransientError。对于时间步长控制,Sentaurus Device 使用一组单独的标准,但与牛顿迭代一样,对相对误差和绝对误差都执行控制。
相对瞬态误差 εR,tr 的定义类似于第 212 页方程式 33 中的 εR:
εR,tr = 10^(–TransientDigits) (14)类似地,对于 xref,tr 和 εA,tr,以下公式成立:
xref,tr = (εA,tr / εR,tr) * x* (15)必须使用关键字 TransientDigits 在瞬态模拟中指定相对误差 εR,tr。可以通过关键字 TransientError (εA,tr) 或 TransientErrRef (xref,tr) 指定时间步长控制中的绝对误差,它们的值可以独立于每个方程变量定义。使用与牛顿迭代控制相同的标志 RelErrControl 来切换到未缩放的 (TransientErrRef) 绝对误差规范。
对于具有浮栅的模拟,Sentaurus Device 还可以监控浮栅电荷中的误差。有关详细信息,请参见 浮栅。
注意:
Math部分中的所有瞬态参数(Transient除外)都可以在Solve部分的Transient命令中被覆盖(参见 瞬态命令)。Transient命令使用随时间变化的边界条件(参见 指定电学边界条件)并相应地更新掺杂井中的准费米势。这可能与Quasistationary命令中先前扫描的准费米势发生干扰(参见 掺杂井中准费米势的扫描)。这对于仅泊松方程的解至关重要。要避免此问题,请在Math部分中使用-UpdateQFPinTransientPoisson。
4.6.2 时间步进
瞬态模拟计算系统或器件作为有限时间范围内的时间函数的状态,指定 InitialTime 和 FinalTime,通过从给定时间的系统状态推进到较晚时间点的状态。时间步长是动态选择的。时间步长分别从下方和上方受到 MinStep 和 MaxStep 的限制;而 InitialStep 指定开始时的第一个时间步长。
如果给定时间步长的系统状态计算失败,时间步长会迭代减小,直到系统状态可以成功计算或达到最小时间步长。在后一种情况下,Transient 终止并报错。可以使用 Decrement 关键字设置步长减小的因子。
在系统状态成功计算之后,时间步长通常会增加,这取决于实际时间步长的计算工作。步长增加的最大因子可以用 Increment 关键字控制。
有效时间步长可能小于推进时间步长,例如,如果指定了绘图时间点,则必须计算系统状态。然而,这些有效时间步长不会减少推进时间步长,即后续有效时间步长可能与推进时间步长一样大。您可以通过在 Transient 中指定称为转折点的参数来限制(在某些条件下从上方)推进时间步长。
这些条件可以是任意时间点或时间范围的列表(参见表 362,第 1793 页)。例如:
cpp
Transient ( ...
TurningPoints (
(Condition (Time( 1.e-7 ; 2.e-7 ; 3.e-7 ) ) Value= 1.1e-9 )
(Condition (Time( Range= (1.e-7 2.e-7 ) ) ) Value= 2.1e-9 )
(Condition (Time( 1.23e-7 ; 1.45e-7 ; 1.67.e-7 ) ) Value= 1.0e-10 )
)
)推进时间步长受相应条件的指定 Value(以秒为单位)限制。在此示例中,第一个条件限制一系列时间点的值。第二个条件限制整个范围的步长。如果在您指定了最大时间步长的范围内(如本例中的第二个条件)并且您想在该范围内在特定时间点输出结果,只需在另一个 Condition 语句中指定这些(示例中的第三个语句),确保设置的 Value 小于范围内设置的值。
请注意,对于时间点,瞬态的计算被触发;而对于范围,则不会。Time 采用与 Solve 中 Plot 的 Time 关键字相同的选项。
注意: 有关光学模拟相关的转折点(使用光学生成计算的统一接口指定;参见第 21 章,第 683 页),请参见 光学转折点。
在器件的关断状态下,如果时间步长太小,位移电流可能无法被数值精度解析,从而导致电流尖峰。在这种情况下,您可以定义:
cpp
TurningPoints ( Condition=(...) Value=<float> Factor=<int> )参数 Factor 控制标准 max_current×Value < Factor×eps,其中 eps 表示使用的精度数值限制,max_current 是该器件的最大端电流。
Sentaurus Device 检测 Value 是否太小而无法解析结果。如果是这样,它会打印警告消息并将时间步长重置为更合理的值。默认 Factor=0。要解决尖峰电流,请将 Factor 设置为正值,例如 Factor=10。
4.6.3 物理参数值的扫描
Transient 命令允许从 Sentaurus Device 的参数文件中线性扫描参数。
Bias 语句(类似于 Quasistationary 命令中的 Goal 子部分;参见 物理参数值的扫描)的形式为:
cpp
Bias {
[ Device = <device> ]
[ Material = <material> | MaterialInterface = <interface> |
Region = <region> | RegionInterface = <interface> ]
Model = <model> Parameter = <parameter> Value = <value_list>
}指定设备和位置(材料、材料界面、区域或区域界面)是可选的。但是,必须始终指定模型名称和参数名称。例如:
cpp
Transient (
InitialTime = 0 FinalTime = 1
Bias(
Material = "Silicon"
Model = "Stress"
Parameter = "StressXX"
Value = (1e4 at 0.1, 1e5 at 0.2, 1e6 at 0.5)
)
Bias(
Region = "Channel"
Model = "Stress"
Parameter = "StressXX"
Value = (1e7 at 0.6, 1e8 at 0.8, 1e9 at 0.9)
)
) { Coupled { Poisson Electron Hole } }有关可以在 Transient 命令中扫描的参数列表,请参见 物理参数值的扫描。
4.6.4 外推
Transient 命令可以使用从先前步长的解中外推来预测下一个解。外推可以关闭(默认)或在 Math 部分全局开启:
cpp
Math { Extrapolate }或者,仅针对特定的 Transient 命令关闭或开启:
cpp
Transient (
Goal { ... }
-Extrapolate
) { Coupled { Poisson Electron Hole } }Sentaurus Device 可以在以下情况下使用外推:在 Transient 命令内部和 Transient 命令之间。
在 Transient 命令内部
给定步长的初始猜测是从先前步长的解中外推获得的(如果存在)。
在 Quasistationary 命令之间
外推信息在 Transient 命令之间保留,也由 Save 和 Load 命令自动保存和加载。
如果满足以下条件,Transient 命令可以使用两个 Transient 命令之间的外推信息:
- 先前和当前的
Transient命令是连续的,即先前Transient的结束时间等于当前Transient的开始时间。 - 解决方案变量的值在两个
Transient命令之间没有变化,例如通过Load命令。
如果可以成功使用先前 Transient 命令的外推信息,日志文件中会出现以下消息:
Reusing extrapolation from a previous transient表 21(第 143 页)描述的控制外推信息处理的选项也可用于 Transient。参见 外推语句的参数。
4.7 瞬态扫描
或者,Sentaurus Device 提供了与 Quasistationary 命令非常相似的 Transient 命令语法。此 Transient 命令简化了从准静态模拟切换到慢速瞬态模拟的过程,用户工作最少。将准静态模拟替换为慢速瞬态对于模拟宽带隙半导体器件、具有陷阱态的器件、击穿模拟特别有用,并且通常在切换到瞬态时可以改善收敛。
瞬态扫描由类似 Quasistationary 的命令激活,其中 Quasistationary 关键字替换为 Transient,两个可选参数 InitialTime 和 FinalTime 可用于控制扫描速率:
cpp
Solve { ...
Transient (
InitialTime = 0
FinalTime = 1
InitialStep = 0.01
MaxStep = 0.1
MinStep = 0.001
Goal {name="gate" Voltage=5.0}
Goal {name="drain" Current=1e-8}
) { Coupled {...} }
}InitialTime 的默认值是 0 或先前瞬态扫描模拟的最终模拟时间。FinalTime 默认值是 InitialTime + 1 秒。
如果在两个瞬态扫描之间插入了准静态扫描,并且之后未指定 InitialTime,则瞬态扫描之后的时间将重置为零。
如果激活了动态非局部路径带间隧穿模型,则可以包含 NonlocalPath 部分(参见 处理导数)。
大信号循环分析
在以下示例中,最后一个瞬态将阳极从 t = 0 时的 3 V 偏置到 t = 2 s 时的 0 V:
cpp
Solve { ...
Transient (
FinalTime = 2
InitialStep = 0.01
MaxStep = 0.1
MinStep = 0.001
Goal {name="anode" Voltage=2.0}
) { Coupled {...} }
Quasistationary(
InitialStep = 0.01
MaxStep = 0.1
MinStep = 0.001
Goal {name="anode" Voltage=3.0}
) { Coupled {...} }
Transient (
FinalTime = 2
InitialStep = 0.01
MaxStep = 0.1
MinStep = 0.001
Goal {name="anode" Voltage=0.0}
) { Coupled {...} }
}电极偏置时间依赖性在内部计算,用于 Goal 部分中指定的电极,因此这些接触点不允许在 Electrode 部分中指定随时间变化的偏置。InitialStep、MaxStep 和 MinStep 与 Quasistationary 情况下的相同,以 0 到 1 的比例表示。Sentaurus Device 在内部将它们从 InitialTime 到 FinalTime 的比例转换。
注意:
- 此功能支持电压、电流或电荷扫描。因此,在
Goal部分中仅允许电压、电流和电荷接触点。表 353(第 1786 页)列出了所有可用命令。- 要扫描其他参数或在混合模式、材料特定或区域特定的模拟中指定器件的参数更改等,请使用
Bias语句(参见 物理参数值的扫描)。
4.7.1 大信号循环分析
对于高速和高频操作,器件通常通过循环偏置进行评估。一段时间后,器件变量周期性地变化。这种循环偏置稳态 [3] 是模拟系统的所有参数在施加一个周期偏置后返回到初始值时发生的条件。
实际上,这种循环稳态是通过使用标准瞬态模拟实现的。但是,如果系统中的某些过程与信号周期相比具有非常长的特征时间,则这并不总是有效的。
例如,深陷阱通常具有相对较长的特征时间。一种建议的方法 [4] 允许显着加速达到循环稳态解的过程。该方法基于在瞬态模拟每个周期开始时使用先前的初始猜测对初始猜测进行迭代校正,目标是达到循环稳态。Sentaurus Device 中实现了此方法。另一种频域方法是谐波平衡(参见 谐波平衡)。
方法描述
原文方法 [4] 总结如下。瞬态模拟从某个初始猜测开始。执行几个周期的瞬态模拟,并且在每个周期之后,估算模拟系统的每个独立变量在周期内的变化(即每个器件所有顶点的电势、电子和空穴浓度、载流子温度以及如果选择了流体动力学或热力学模型则还有晶格温度、每个陷阱类型和占据水平的陷阱占据概率,以及混合模式模拟情况下的电路节点电势)。
如果用 xn^I 表示第 n 个周期开始时任何变量的值,xn^F 表示该周期结束时的相同值,则当达到循环稳态时:
Δxn = xn^F - xn^I (16)等于零。
考虑到线性外推且目标是实现 Δxn+1 = 0,下一个初始猜测可以估算为:
xn+1^I = xn^I - γ * ((xn^I - xn-1^I) / (Δxn - Δxn-1)) * Δxn (17)其中 γ 是用户定义的松弛因子以稳定收敛。
由于方程式 17 包含不确定性(如 0/0),特别是当 Δx 接近零时(当解接近稳态时),需要特殊预防措施以提供算法的鲁棒性。
从另一个角度考虑方程式 17 的推导——接近循环稳态时。如果这样的稳态存在,初始猜测 y = x 预期随时间表现为 y = a·exp(-αt) + b,其中 α > 0。可以很容易地表明方程式 17 给出 x = b,即理想的循环稳态解。
由此,比率 r 可以估算为:
r = -((xn^I - xn-1^I) / (Δxn - Δxn-1)) (18)可以估算为 r ≈ 1 / (1 - exp(-αt))。由此可知,因为 α 为正,条件 r ≥ 1 必须成立。此外,如果某些内部特征时间(如陷阱特征时间)比周期长得多,r 可能非常大。
使用从方程式 18 定义的 r,方程式 17 可以重写为:
xn+1^I = xn^I + γrΔxn (19)虽然方程式 18 和方程式 19 与方程式 17 等价,但在 Sentaurus Device 内部使用方程式 18 和方程式 19 更方便。由于上述原因,Sentaurus Device 不允许 r 小于 1。
为了提供收敛和鲁棒性,限制 r 不变得非常大也是合理的。在 Sentaurus Device 中,r 不能超过用户指定的参数 rmax。您可以为温度、电势和电路节点电压分别指定不同的 rmax 值。默认情况下,每个方程使用 rmax。您还可以指定参数 rmin 的值。
对模拟系统每个对象的所有变量(在所有器件的每个网格顶点)在每个周期执行外推过程(方程式 18 和方程式 19 描述)。外推过程应用于适当的准费米势,而不是可能在整个器件上变化数个数量级的密度。
对于陷阱方程,外推可以应用于陷阱占据概率 fT(默认),或者可选地应用于"陷阱准费米能级" ΦT = -ln((1-fT)/fT)。如果满足以下条件,则认为已达到循环稳态:
Δx / (x + xref) < εcyc (20)xref 的值与 Math 部分的 ErrRef 值相同。对于模拟系统(每个器件的每个变量)的每个对象 o,估计比率 r 的平均值 ravo,并且可以可选地打印。
对 ravo 的估计仅在对象的那些顶点执行,其中满足条件:
Δx / (x + xref) < ε1cyc = εcyc / f (21)即�给定的激发频率 ν,它用以下方式描述等效小信号模型:
δI = Y δV (22)其中 δV 和 δI 是所选节点处(复数值)电压和电流激发向量。导纳矩阵可以表示为:
Y = A + i2πνC (23)实值电导矩阵 A(以西门子 Ω⁻¹ 为单位测量)和电容矩阵 C(以法拉 C/V=(Ω·Hz)⁻¹ 为单位测量)。
在 ACCoupled 部分内,必须指定所考虑的频率范围和电路节点。此外,您可能需要从给定的电气系统中排除某些电路实例:
StartFrequency、EndFrequency、NumberOfPoints、Linear和Decade:选择执行交流分析的频率。Frequency:指定执行交流分析的频率列表。ACExtract:指定提取文件名的前缀,用于存储导纳矩阵。如果未指定,则ACCoupled写入全局提取文件(由File中的ACExtract给出,默认为提取文件extraction_ac_des.plt)。提取文件包含频率、节点处的电压以及矩阵 A(用 a 表示)和 C(用 c 表示)的条目。ACPlot:调用包含交流响应函数(解变量和电流密度)的器件绘图。这里您指定文件名前缀,为每个交流节点电压激发和频率生成相应的绘图文件。Exclude:指定应从交流系统中排除的系统实例列表。Node:指定导纳矩阵中考虑的交流节点列表。对于导纳矩阵计算,必须指定非空节点列表。
注意: 如果同时定义了
Frequency和StartFrequency、EndFrequency或NumberOfPoints之一,则使用Frequency中定义的值。
Exclude 列表用于从交流分析中移除一组电路或物理器件。通常,电源被移除以免短路交流分析,但该列表也可用于将单个器件与整个电路隔离。
注意: 分析的系统由
ACCoupled语句主体中指定的方程组成,不包括由Exclude列表移除的实例。Exclude列表仅指定实例,因此这些实例的所有方程都被移除。
ACCompute 选项控制在准静态或瞬态扫描期间的交流或噪声分析性能。ACCompute 中的参数与 Plot 和 Save 命令中的参数相同(参见表 355,第 1788 页)。
例如:
cpp
Quasistationary (...) {
ACCoupled (...
ACCompute (Time = (0; 0.01; 0.02; 0.03; 0.04; 0.05)
Time = (Range = (0.9 1.0) Intervals = 4)
Time = (Range = (0.1 0.2); Range = (0.7 0.8))
When (Node = in Voltage = 1.5))
{...}
)
}在此示例中,仅对以下时间点执行交流分析:
t = 0, 0.01, 0.02, 0.03, 0.04, 0.05t = 0.9, 0.925, 0.95, 0.975, 1.0- 区间 [0.1, 0.2] 和 [0.7, 0.8] 中的所有时间点。此外,每当节点 in 处的电压达到 1.5 V 阈值时触发交流分析。
如果交流或噪声分析被 ACCompute 选项抑制,则 ACCoupled 语句的行为类似于普通 Coupled 语句。
包含 ACCoupled 的 Quasistationary 或 Transient 扫描也可以包含 CurrentPlot 规范(参见 何时写入电流文件),以选择应发生电流输出的步。
CurrentPlot 和 ACCoupled 语句可能包含的 ACCompute 语句是完全独立的。
示例
此示例说明了一个简单器件的交流分析。1D 电阻器连接到地(通过电阻器 to_ground)和反向偏置为 –3 V 的电压源 drive。在 –3 V 计算初始电压点后,左侧电压以 0.1 V 增量扫描到 1 V。左右节点之间在频率 f = 10³ Hz, 10⁴ Hz, 10⁵ Hz, 10⁶ Hz 下计算交流参数。电路元件 drive 和 to_ground 从交流计算中排除。
通过包括电路,可以执行完整的波特图:
cpp
Device "Res" { ...
Electrode {{Name=anode Voltage=-3 resist=1}
{Name=cathode Voltage= 0 resist=1}
}
File {Grid = "resist.tdr"}
Physics {...}
}
System {
"Res" "1d" (anode="left" cathode="right")
Vsource_pset drive("left" "right"){dc = -3}
Resistor_pset to_ground ("right" 0){resistance=1}
}
Math {
Method=Blocked SubMethod=Super # 1D, 2D 默认求解器(用于 Coupled)
ACMethod=Blocked ACSubMethod=Super # 1D, 2D 默认求解器(用于交流分析)
NoAutomaticCircuitContact
}
Solve { ...
ACCoupled (
StartFrequency=1e3 EndFrequency=1e6 NumberOfPoints=4 Decade
Node("left" "right")
Exclude(drive to_ground)
ACMethod=Blocked ACSubMethod("1d")=ParDiSo
) { Poisson Electron Hole Contact Circuit }
Quasistationary ( ...
Goal{Parameter=drive.dc Value=1}
) {
ACCoupled(
StartFrequency=1e3 EndFrequency=1e6 NumberOfPoints=4 Decade
Node("left" "right")
Exclude(drive to_ground)
ACMethod=Blocked ACSubMethod("1d")=ParDiSo
) { Poisson Electron Hole Circuit Contact }
}
}单器件模式中的交流分析
如前所述,交流分析通常需要混合模式模拟,即必须定义 System 部分。对于单器件模拟,如果在全局 Math 部分中使用 ImplicitACSystem,则会为您构建一个简单的交流系统。
这个隐式交流系统是在内部构建的,对用户基本上是不可见的。隐式交流系统具有以下属性:
- 对于被测器件(DUT)的每个电压控制电极,构造一个电路节点并连接到器件接触点。对于其他接触点类型,不构造节点。
- 每个隐式节点连接到一个描述 stationary 和(可能的)瞬态电压边界条件的系统实例。为器件接触点提供的数据被隐式传输到系统实例。
在生成隐式交流系统的情况下,ACCoupled 提供略有不同的默认行为:
- Node:如果未指定交流节点,则所有隐式系统节点都用作交流节点。指定的器件接触点名称被隐式解释为相应的节点名称。
- Exclude:如果未指定排除实例,则所有附加到交流节点的隐式系统实例都被排除。指定的器件接触点名称被解释为相应的系统实例名称。
附加说明:
Quasistationary中的Goal语句:器件电极电压值的Goal语句被映射到电极对应节点的隐式系统实例。- 隐式交流系统在
Solve部分执行之前被提取。因此,不支持更改接触点类型的求解语句。
示例:
cpp
Math {
ImplicitACSystem * 构建隐式交流系统
}
Electrode { ...
{ Name="c1" Voltage=1 Voltage=(1 at 0. , 2. at 1.e-8) ... }
{ Name="c2" Current=0. } * 没有隐式节点连接的接触点
}
Solve { ...
Quasistat ( ...
Goal { Name= "c1" Voltage=2"} * 接触点目标被映射
* 到实例
) { Coupled {...} }
* 交流分析:使用所有隐式交流节点
ACCoupled (
StartFrequency=1.e6 EndFrequency=1.e9 NumberOfPoints=4 Decade
ACExtract="AC1" ) {...}
* 交流分析:仅使用一个交流节点
ACCoupled (
StartFrequency=1.e6 EndFrequency=1.e9 NumberOfPoints=4 Decade
Node ( "c1" )
ACExtract="AC2" ) {...}
}4.7.2 小信号交流分析
ACCoupled solve section 是 Coupled section 的扩展,增加了允许小信号交流分析的一组额外参数。表 347(第 1778 页)描述了这些参数。通常,ACCoupled 用于混合模式。AC Simulation(第 1243 页)提供了该方法的技术背景信息。
混合模式模拟中的交流分析
交流分析计算指定电气系统电路节点之间与频率相关的导纳矩阵 Y。对于给定的激励频率 ν,它通过以下公式描述等效的小信号模型:
δI = YδV (22)其中 δV 和 δI 分别是选定点上(复数值)电压和电流激励的向量。导纳矩阵可以表示为:
Y = A + i2πνC (23)其中 A 是以西门子(Ω⁻¹)测量的实值电导矩阵,C 是以法拉第(C/V=(Ω·Hz)⁻¹)测量的电容矩阵。
在 ACCoupled section 中,必须指定感兴趣的频率以及导纳矩阵中考虑的电路节点。此外,可能需要从给定的电气系统中排除某些电路实例,以描述正确的交流系统:
- StartFrequency, EndFrequency, NumberOfPoints, Linear, 和 Decade:选择执行交流分析的频率。
- Frequency:指定执行交流分析的频率列表。
- ACExtract:指定提取文件的
ACCoupled特定文件名前缀,用于存储导纳矩阵。如果未指定,ACCoupled写入全局提取文件(由 File 中的ACExtract给出,默认为提取文件extraction_ac_des.plt)。提取文件包含频率、节点电压以及矩阵 A(记为 a)和 C(记为 c)的元素。 - ACPlot:调用包含交流响应函数(解变量和电流密度)的器件绘图。此处指定文件名前缀,为每个交流节点电压激励和频率生成相应的绘图文件。
- Exclude:指定不应属于交流系统的系统实例列表。
- Node:指定导纳矩阵中考虑的交流节点列表。对于导纳矩阵计算,必须指定非空节点列表。
注意: 如果同时定义了
Frequency和StartFrequency、EndFrequency或NumberOfPoints之一,则使用Frequency中定义的值。
Exclude 列表用于从交流分析中移除一组电路或物理器件。通常,移除电源以避免短路交流分析,但该列表也可用于将单个器件从整个电路中隔离出来。
注意: 被分析的系统由
ACCoupled语句体中指定的方程组成,不包括Exclude列表中移除的实例。Exclude列表仅指定实例,因此这些实例的所有方程都被移除。
ACCompute 选项控制在准静态或瞬态扫描中的交流或噪声分析性能。ACCompute 中的参数与 Plot 和 Save 命令中的参数相同(参见表 355,第 1788 页)。
例如:
cpp
Quasistationary (...) {
ACCoupled (...
ACCompute (Time = (0; 0.01; 0.02; 0.03; 0.04; 0.05)
Time = (Range = (0.9 1.0) Intervals = 4)
Time = (Range = (0.1 0.2); Range = (0.7 0.8))
When (Node = in Voltage = 1.5))
{...}
}在此示例中,交流分析仅在以下时间点执行:
- t = 0, 0.01, 0.02, 0.03, 0.04, 0.05
- t = 0.9, 0.925, 0.95, 0.975, 1.0
- 区间 [0.1, 0.2] 和 [0.7, 0.8] 中的所有时间点
此外,无论何时节点 in 的电压达到 1.5 V 阈值,都会触发交流分析。 如果通过 ACCompute 选项抑制了交流或噪声分析,则 ACCoupled 语句的行为类似于普通 Coupled 语句。 包含 ACCoupled 的 Quasistationary 或 Transient 扫描也可以包含 CurrentPlot 规范(参见电流文件写入时间,第 176 页)以选择应发生电流输出的步骤。 CurrentPlot 和 ACCoupled 语句可能包含的 ACCompute 语句是完全独立的。
示例
此示例说明了一个简单器件的交流分析。1D 电阻器通过电阻器 to_ground 连接到地,并连接到反向偏置为 –3 V 的电压源 drive。在 –3 V 计算初始电压点后,左侧电压以 0.1 V 为增量斜坡至 1 V。在频率 f = 10³ Hz、10⁴ Hz、10⁵ Hz 和 10⁶ Hz 下计算节点 left 和 right 之间的交流参数。电路元件 drive 和 to_ground 从交流计算中排除。 通过包含电路,可以执行完整的 Bode 图:
cpp
Device "Res" { ...
Electrode {{Name=anode
Voltage=-3 resist=1}
{Name=cathode Voltage= 0 resist=1}
}
File {Grid = "resist.tdr"}
Physics {...}
}
System {
"Res" "1d" (anode="left" cathode="right")
Vsource_pset drive("left" "right"){dc = -3}
Resistor_pset to_ground ("right" 0){resistance=1}
}
Math {
Method=Blocked SubMethod=Super # 1D, 2D 默认求解器(用于 Coupled)
ACMethod=Blocked ACSubMethod=Super # 1D, 2D 默认求解器(用于交流分析)
NoAutomaticCircuitContact
}
Solve { ...
ACCoupled (
StartFrequency=1e3 EndFrequency=1e6 NumberOfPoints=4 Decade
Node("left" "right")
Exclude(drive to_ground)
ACMethod=Blocked ACSubMethod("1d")=ParDiSo
) { Poisson Electron Hole Contact Circuit }
Quasistationary ( ...
Goal{Parameter=drive.dc Value=1}
) {
ACCoupled(
StartFrequency=1e3 EndFrequency=1e6 NumberOfPoints=4 Decade
Node("left" "right")
Exclude(drive to_ground)
ACMethod=Blocked ACSubMethod("1d")=ParDiSo
) { Poisson Electron Hole Circuit Contact }
}
}单器件模式中的交流分析
如前所述,交流分析通常需要混合模式模拟,即必须定义 System 部分。对于单器件模拟,如果在全局 Math 部分中使用 ImplicitACSystem,则会为您构建一个简单的交流系统。
这个隐式交流系统是在内部构建的,对用户基本上是不可见的。隐式交流系统具有以下属性:
- 对于被测器件(DUT)的每个电压控制电极,构造一个电路节点并连接到器件接触点。对于其他接触点类型,不构造节点。
- 每个隐式节点连接到一个描述 stationary 和(可能的)瞬态电压边界条件的系统实例。为器件接触点提供的数据被隐式传输到系统实例。
在生成隐式交流系统的情况下,ACCoupled 提供略有不同的默认行为:
- Node:如果未指定交流节点,则所有隐式系统节点都用作交流节点。指定的器件接触点名称被隐式解释为相应的节点名称。
- Exclude:如果未指定排除实例,则所有附加到交流节点的隐式系统实例都被排除。指定的器件接触点名称被解释为相应的系统实例名称。
附加说明:
Quasistationary中的Goal语句:器件电极电压值的Goal语句被映射到电极对应节点的隐式系统实例。- 隐式交流系统在
Solve部分执行之前被提取。因此,不支持更改接触点类型的求解语句。
示例:
cpp
Math {
ImplicitACSystem * 构建隐式交流系统
}
Electrode { ...
{ Name="c1" Voltage=1 Voltage=(1 at 0. , 2. at 1.e-8) ... }
{ Name="c2" Current=0. } * 没有隐式节点连接的接触点
}
Solve { ...
Quasistat ( ...
Goal { Name= "c1" Voltage=2"}
) { Coupled {...} }
* 接触点目标被映射
* 到实例
* 交流分析:使用所有隐式交流节点
ACCoupled (
StartFrequency=1.e6 EndFrequency=1.e9 NumberOfPoints=4 Decade
ACExtract="AC1" ) {...}
* 交流分析:仅使用一个交流节点
ACCoupled (
StartFrequency=1.e6 EndFrequency=1.e9 NumberOfPoints=4 Decade
Node ( "c1" )
ACExtract="AC2" ) {...}
}4.7.3 光学交流分析
光学交流分析计算光学信号频率的函数量子效率。此技术基于交流分析技术,提供量子效率的实部和虚部与频率的关系。
要启动光学交流分析,请在 ACCoupled 语句中添加关键字 Optical。例如:
cpp
ACCoupled ( StartFrequency=1.e4 EndFrequency=1.e9
NumberOfPoints=31 Decade Node(a c)
Optical Exclude(v1 v2) )
{ poisson electron hole }有关详细信息,请参见 光学交流分析。