通过将 WaferID 与 By Statement 匹配来编辑分发标题你好,
我想编辑我的分布图的标题,使其更具描述性,并且更容易与我创建的另一个图相匹配。 我希望每个图表的标题是“Wafer = XYZ ..., 批次 ID = ABC...”

我在下面创建的代码允许我编辑标题,但是,它毫不奇怪地列出了我之前创建的关联数组中列出的所有 batchid。 (此数组仅列出我拥有的表的一列中的所有批次 ID)。 我想做的是将 Wafer 与 BatchID 匹配,并使用 By 语句将其显示在每个图表的标题中。有没有办法做到这一点? 谢谢!
//DISTRIBUTION PLOT
batchids = Associative Array( BatchIDs:BatchID );
RawData << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :col1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :FailDie ), Where( :FailDie == 0 ) ) ),
By( :Wafer ),
SendToReport(
Dispatch(
{},
"Distributions Wafer=XYZ",
OutlineBox,
{Set Title(
"Distributions Wafer=XYZ, Batch ID = " || Char( batchids << Get Keys )
)}
)
)
);图形脚本编写回复:通过将 WaferID 与 By Statement 匹配来编辑分发标题我会在初始代码之外重置标题以生成分布,并在生成分布报告后更改标题

这是基于您的脚本的示例,但已修改为示例数据
Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lots="
|| Char( batchids << get keys )
)
);
注意:我手动关闭了输出的过程能力部分以获得更好的画面
回复:通过将 WaferID 与 By Statement 匹配来编辑分发标题你好,
再次感谢您的快速回复。 这越来越接近我想要的,除了每个 Wafer 只应显示 1 个 BatchID,而不是全部。 也许查看示例表会更有意义。
我希望我的分布图的标题是“Distribution Wafer = A,BatchID = X”和“Distribution Wafer = B,BatchID = X”等。但是,我不太明白我可以确定的方式将 Wafer 与正确的 BatchID 匹配。 (或者如何完全匹配它们)
注意:我有一个表,它确实将每个 Wafer 与其 BatchID 匹配。
我遇到的另一个问题是:对于您刚刚发送的代码,它似乎更新了我图表的所有标题,除了我在 By 语句中的第一个标题。 您知道发生这种情况的常见原因吗? 我不止一次看到过这种情况。
回复:通过将 WaferID 与 By Statement 匹配来编辑分发标题从分布的 Outline Box() 中剥离晶圆值是一件简单的事情,然后从查找数据表中进行查找并获取 BatchID,或者在我的示例中,获取 Lot_id,然后将其添加到 Outline Box() 的标题中。

Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
dtlookup =New Table( "Lookup",
Add Rows( 24 ),
New Column(
["en" => "wafer", "ja" => "ウエハー", "x-id" => "S_wafer_Col", "zh-CN" => "晶片"],
Numeric( 1 ),
"Nominal",
Set Values(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24]
),
Lock( 1 )
),
New Column( "lot_id",
Character,
"Nominal",
Set Values(
{"lot01", "lot02", "lot03", "lot04", "lot05", "lot06", "lot07", "lot08",
"lot09", "lot10", "lot11", "lot12", "lot13", "lot01", "lot02", "lot03",
"lot04", "lot05", "lot06", "lot07", "lot08", "lot09", "lot10", "lot11"}
)
)
);
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
theWafer = num(word(-1,Report( dis[i] )[Outline Box( 1 )] << get title,"="));
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lot="
|| Char(thelot)
)
);回复:通过将 WaferID 与 By Statement 匹配来编辑分发标题嗨,特克斯尼尔森! 再次感谢您的快速响应和出色的解决方案。
我的查找表仍然有问题。 似乎正确找到了“theWafer”,但是当我在调试器中运行它时,“theLot”没有填充。 你有什么问题吗? 附上我的确切代码。 我的标题看起来像“Distributions Wafer = ABC123, BatchID = ”。
BatchIDs = 查找表供参考
| 批号 | 晶圆 |
| QQ1234 | ABC-123 |
| YYY1234 | QWE-456 |
For( i = 1, i <= N Items( VthNew ), i++,
theWafer = char(word(-1,Report( VthNew[i] )[Outline Box( 1 )] << get title,"="));
theLot = BatchIDs:BatchID[(BatchIDs << get rows where(:Wafer == theWafer))[1]];
Report( VthNew[i] )[Outline Box( 1 )] <<
Set title(
Report( VthNew[i] )[Outline Box( 1 )] << get title || " BatchID =" || Char(theLot)
)
);
谢谢您的帮助!
回复:通过将 WaferID 与 By Statement 匹配来编辑分发标题我在上次回复中提供的示例对您有用吗? 这需要成为起点。