自定义列公式我想在我的表中添加一个新列“Vth”,并进行以下计算:-
首先,我需要找到“IDS”列的索引 i,其中“IDS”最接近 1e-9(或 Log10[IDS] = -9);然后 Vth = VGS(i)。 它还应按站点、测量、SWP、晶圆列进行分组。 也就是说,场地、测量、SWP、晶圆的每一种独特组合都将具有一个 Vth 值。
如果 IDS 不完全是 1e-9。 请以这种方式进行插值。 那是; Log10[IDS] 与 VGS。
精确 VTH = 插值( Log10( 1e-9 ), [Log10[IDS](i)) Log10[IDS](i-1)] , [VGS (i) VGS (i-1) ] );
请注意,SWP 列是 VGS 向前 (0) 和反向 (1) 方向的扫描;因此,需要以适当的方式处理插值方向。
数据混合和清理回复:自定义列公式我在下面的电子邮件中犯了一些拼写错误。 下面应该是正确的
找到VGS,logIDS,就在-9之上..--称之为VGS_u,log(IDS)_u
找到VGS,logIDS,它就在-9下面..--称之为VGS_i,log(IDS)_i
计算斜率,m = abs(log(IDS)_u-log(IDS)_i)./abs( abs(VGS_u-VGS_i))
精确的 VTH = VGS_i + 1/m*(9-abs(log(IDS)_i)))
回复:自定义列公式嗨,凯文!
我想你可以采取这种方法。
找到VGS,logIDS,就在-9之上..--称之为VGS_u,log(IDS)_u
找到VGS,logIDS,略低于-9..--称之为VGS_i,log(IDS)_i
计算斜率,m = abs(log(IDS)_u-log(IDS)_i)./abs( log(IDS)_u- log(IDS)_i)
精确 VTH = m*(abs(VGS_u-VGS_i)) + min(abs( log(IDS)_u), abs( log(IDS)_i) )
我真的想要为其定制公式,即使它可以通过多列中的公式来完成。
问候,
潘卡伊
回复:自定义列公式如果可以将其作为列公式,那将非常困难。对于您来说,最好的选择可能是表格脚本或常规脚本。以下似乎效果很好。
dt = Current Data Table();
summarized table = dt << Summary( Group( :Site, :Measurement, :SWP, :Device, :Wafer ) );
lookup = [=> ];
For Each Row(
summarized table,
If( !(lookup << Contains( :Site, Empty() )),
lookup[:Site] = [=> ]
);
If( !(lookup[:Site] << Contains( :Measurement, Empty() )),
lookup[:Site][:Measurement] = [=> ]
);
If( !(lookup[:Site][:Measurement] << Contains( :SWP, Empty() )),
lookup[:Site][:Measurement][:SWP] = [=> ]
);
If( !(lookup[:Site][:Measurement][:SWP] << Contains( :Device, Empty() )),
lookup[:Site][:Measurement][:SWP][:Device] = [=> ]
);
If( !(lookup[:Site][:Measurement][:SWP][:Device] << Contains( :Wafer, Empty() )),
lookup[:Site][:Measurement][:SWP][:Device][:Wafer] = [=> ]
);
summarized table << Clear Select;
summarized table << Select Rows( Row() );
rows = dt << Get Selected Rows;
vals = Column( dt, "Log10[IDS]" )[rows];
test = {};
For( i = 1, i <= N Items( rows ), i++,
test[i] = Eval List( {Abs( 9 + vals[i] ), rows[i]} )
);
Sort List Into( test );
lookup[:Site][:Measurement][:SWP][:Device][:Wafer] = Column( dt, "VGS" )[test[1][2]];
);
Close( summarized table, No Save );
Eval( Eval Expr(
dt << New Column( "LOOKUP_RESULT", "Numeric", Formula( lookup = Expr( lookup ); lookup[:site][:measurement][:swp][:device][:wafer] ) )
) )回复:自定义列公式你好,pankajsync!
是的,我能够看到它。
查找与最接近 1e-9 的 IDS 值相关的 VGS 值非常简单。设置一个损失函数列,该列取 log10(IDS)+9 的绝对值,然后通过以下方式确定该值的 Col 最小值场地、测量、SWP、器件、晶圆。与这些损失值最小值相对应的 VGS 将是您的不精确 Vth。
但是没有一个 IDS 值完全是 1e-9,并且一些“最接近”的 IDS 值与 1e-9 相差很远,因此请更详细地解释当您使用“插值”一词时您打算发生什么过程和结果”。您的意思是如果 IDS 恰好为 1e-9 则预测 Vth 吗?使用线性模型?是否每个独特的站点、测量、SWP、器件、晶圆组合都需要此过程,无论 IDS 值与 1e-9 相差多远?
也许,除了回答这些问题之外,您还可以分享一下您已经尝试过哪些失败的方法?就我个人而言,我会考虑编写一个 JSL 脚本来执行此操作,因为您的应用程序似乎可能会受益于一些错误检查和验证初始数据边界条件,但此讨论站点的一些居民是绝地方程式,他们的技能给我留下了深刻的印象,如果你必须有一个公式,他们可能有一个解决方案。如果我正确地预测了你的答案,我想我不会这么做。
干杯,
凯文
回复:自定义列公式你好,
我已经走了多远:我可以通过 Wafer、Site、Measurement、Device 和 Wafer 找到最接近 1e-9 的 IDS ID,然后返回相应的 VGS,否则返回 0。 然而,正如我之前提到的,插值更具挑战性。
If(
Abs( :Name( "Log10[IDS]" ) + 9 ) == Col Minimum(
Abs( :Name( "Log10[IDS]" ) + 9 ),
:Site,
:Measurement,
:Device,
:Wafer
),
:VGS,
0
);
最好的,
TS
回复:自定义列公式你好,
事实证明,让列公式满足您的要求比预期更具挑战性。
我希望其他人能比我到目前为止拥有更多的运气。
最好的,
TS回复:自定义列公式有人能看一下吗?回复:自定义列公式请使用此 JMP 文件。 忽略上面的Excel。
更新说明如下:-
我想在我的表中添加一个新列“Vth”,并进行以下计算:-
首先,我需要找到“IDS”列的索引 i,其中“IDS”最接近 1e-9(或 Log10[IDS] = -9);然后 Vth = VGS(i)。 它还应按站点、测量、SWP、设备、晶圆列进行分组。 也就是说,站点、测量、SWP、晶圆、器件的每一种独特组合都将具有一个 Vth 值。
如果 IDS 不完全是 1e-9。 请以这种方式进行插值。 那是; Log10[IDS] 与 VGS。
精确 VTH = 插值( Log10( 1e-9 ), [Log10[IDS](i)) Log10[IDS](i-1)] , [VGS (i) VGS (i-1) ] );
请注意,SWP 列是 VGS 向前 (0) 和反向 (1) 方向的扫描;因此,需要以适当的方式处理插值方向。