「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?次のサンプル スクリプトは、サンプルの半導体機能データ テーブルを使用して、「ロット ID 内のウェーハ ID」ごとの「プロセス パラメーター」の歩留まりを取得します。
Names Default To Here (1);
clear log ();
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp"); // My actual data is similar
col_names = dt << Get Column Group("Processes");
ps = dt << Process Screening (Process Variables( Eval( col_names )),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Control Chart Type ("Indiv and MR"),
Grouping (:Wafer ID in lot ID );
);
cdt_ps = Report(ps)[Outline Box( "Process Screening" )][Table Box( 1 )] << Make Combined Data Table;
Wait(1 );
ps<< SendToReport( Dispatch( {}, "Process Screening", OutlineBox, {Close( 1 )} ) );
Wait (1);
ps << close window;
cdt_ps << New Column( "PassingDie", Numeric, "Continuous", Format( "Best", 12 ), Formula(:Count - :Out of Spec Count));
cdt_ps << New Column( "ParaYield [%]", Numeric, "Continuous", Format( "Best", 12 ), Formula(100*(:PassingDie / :Count)));
cdt_ps:Column << Set Name( "Process Parameter" );ここで、プロセスパラメータを「PP」、プロセスパラメータグループを「PPG」、ロットIDのウェーハIDを「wfrIDinLotID」と呼びます。
次に、PPG が次のように定義されている場合、wfrIDinLotID ごとの PPG 収量を抽出します。
- すべてのPNPを1つのグループに
- すべてのNPNは別のグループにあります
- すべての INM は別のグループに属します。
つまり、以下の行で生成されるすべての PP のうち、末尾の数字がないものすべてが PPG 名になります。
cdt_ps << Summary(Group( :Process Parameter ), Freq( "None" ), Weight( "None" ));
JSL の新しい列に PPG 名を取得する方法がまだわかりません。そのため、ここで助けが必要です。
一部の PPG にはメンバーが 1 人しかいない場合もありますが、問題ありません。
特定の PPG の失敗回数は、そのメンバーのそれぞれの失敗回数の合計であると考えており、後で上記のスクリプトから入手できます。
したがって、特定の wfrIDinLotID の場合、特定の PPG の「仕様外カウント」には単一の数値が入ると予想されます。これは新しい列に入力され、これを OOSC_PPG と呼びます。
特定の wfrIDinLotID の PPG 収率は、100 * (OOSC_PPG = 0 の SITE の数) / テストされた SITE の合計になります。
サンプル データ テーブルでは、wfrIDinLotID ごとにテストされたサイトの合計数は 5 です。
最後に、wfrIDinLotID、PPG、PPG yield の 3 つの列を持つレポートを生成したいと思います。
JSL をどのように進めればよいか、ご指示いただけますか?
自動化とスクリプトウィンドウズRe: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?何を試しましたか?
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?
クールなトリック: プロセス スクリーニング プラットフォームを「悪用」して、ウェハあたりの仕様カウントを取得します。
非常に役立ちます : )
@Neo は次のように書きました:
特定のPPGの失敗回数は、そのメンバーの失敗回数の合計であると私は考えています。
恐れる:いいえ
- 少なくとも、一般的にはそうではありません。
以下は NPN5 と NPN6 の例です。失敗回数を合計すると、青とオレンジのドットが 2 回カウントされます。
グループ化された収量(グループ化された合格/不合格情報経由)を生成するには、生データから開始する必要があります。

Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@jthi 。まず、プロセス パラメータ名の文字と数字を分離して、グループにまとめる必要があります。JSL でテキストと数字を分離する方法がわかりません。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@ほぎ。うーん...
>>>グループ化された収量(グループ化された合格/不合格情報経由)を生成するには、生データから始める必要があります。
そう恐れていた…。
しかし、もう一度考えてみると、以前考えていたこととは逆に、特定のPPG のメンバーのいずれかが仕様外の場合、その特定の PPG に対してテストされたサイトは失敗します。
これは生データに戻らなくても処理できるような気がします。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?
@Neo は次のように書きました:テストされたサイトは特定の PPG では失敗します。
しかし、現在のアプローチでは、プロセス スクリーニング プラットフォームに集約されるため、サイト情報が失われます。
たとえば、ウェーハの 1 つで、NPN5 がサイト 1、2、3 で故障し、NPN6 がサイト 2、3、4 で故障したとします。
次に、プロセス スクリーニングプラットフォームで、このウェーハについて次の情報を取得します。
このウェーハ (NPN5 または NPN6) で失敗したサイトがいくつあるかを調べる唯一の方法は、次のとおりだと思います。
元のテーブルに戻り、1、2、3、4を数えます
-> 失敗数 = 4
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogiに同意します。サイトにアクセスできるレベルで計算を実行する必要があります。プロセス スクリーニングを使用すると、重複を区別できなくなります。ウェーハに 5 つのサイトがあり、10 のテストがあるとします。ウェーハのサイト 1 とすべてのテストでのみ障害が発生した場合、それを 1 つの障害サイトとしてカウントしますか、それとも 10 の障害テストとしてカウントしますか ( hogi の投稿には別の例があります)。これを 10 の障害サイトとしてカウントしたくないと思いますか?
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@jthi @hogiありがとう。OOS値を次のように色分けすることができます
Names Default To Here (1);
clear log ();
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
col_names = dt << Get Column Group("Processes");
ps = dt << Process Screening (Process Variables( Eval( col_names )),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Control Chart Type ("Indiv and MR"),
Grouping (:Wafer ID in lot ID ),
Color Out of Spec Values
); 次に次のことを行う必要があります
1. PPGの列を形成する
2.メンバーのいずれかに色付きのセルがある場合、特定のPPGに失敗を割り当てます。
これには生データのみが必要になります。
上記の 2 つの手順のどちらもまだやり方がわからないため、ここで指示をお願いしたいと思います。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@jthi 。特定のウェーハで、特定の PPG のメンバーのいずれかが OOS の場合、この PPG のテストは失敗となります。サイトは特定の PPG テストに失敗することがあり、他のすべての PPG のテストは成功します。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?セルに色を付けて、色が付いたすべての行を収集します。なんと創造的な回避策でしょう。
JMP の将来のバージョンでは、この願いが十分な称賛を集めれば、はるかに簡単になります...
:folded_hands: は仕様(値)内です
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?<< Kudoでセルの色を取得をサポートした後、JMP19++を待っている間に、
補助サブセットを生成し、値を合格/不合格の 0/1 情報で上書きし、PPG で合計することができます。
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group( "Processes" );
ps = dt << Process Screening(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Control Chart Type( "Indiv and MR" ),
Grouping( :Wafer ID in lot ID ),
Color Out of Spec Values
);
dt sub = dt << Subset( All rows, Selected columns only( 0 ) );
For Each( {col}, col_names,
specs = col << Get Property( "Spec limits" );
If( Not( Is Empty( specs ) ),
lsl = specs["LSL"];
usl = specs["USL"];
Eval( Eval Expr( col << set each value( Not( lsl < Expr( Name Expr( col ) ) < usl ) ) ) );
);
);
prefixes = {"NPN","PNP","INM"};
PPGs = transform each ({prefix},prefixes,prefix || " fail");
for each ({myName,i},prefixes,
colGroup = Filter Each({col}, col_names, Substr(col << getname(),1,3) == myName);
Eval (Eval Expr(dtsub << new column (PPGs[i], << Set Property( "Spec Limits", {LSL( 0 ), USL(0)} ), set each value (sum (Expr(Name Expr(colGroup)))))))
);
dt sub << Group Columns( "PPGs", PPGs );
ps = dt sub << Process Screening(
Process Variables( Eval( PPGs ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Control Chart Type( "Indiv and MR" ),
Grouping( :Wafer ID in lot ID ),
Color Out of Spec Values
);
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogi JMP 16.2 でスクリプトをテストしています
2行目にタイプミスがあるようです。
col_names = dt << Get Column Group( "Processes" );
そしてこの部分はエラーをスローしています
dt sub << Group Columns( "PPGs", failcols );
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?申し訳ありません -> 編集しました。
送信されたコードが機能するかどうかを再確認する前に、シンボルをクリアしておくべきでした。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?グループの作成は Regex() を使用して実行でき、色付きのセルの取得はコミュニティで何度も解決されています。ここに古い投稿があります。列内の色付きセルの行番号を取得し、新しく作成された列にタグ (たとえば「1」) を割り当てる方法は? 。グループの作成方法がわからないため、このパターンは正しくない可能性があります。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cont_cols = dt << Get Column Names("Continuous", String);
rgx_pattern = "^(.+?)\d*$";
For Each({colname}, cont_cols,
groupname = Regex(colname, rgx_pattern, "\1");
Write("\!N'", colname, "' belongs to '", groupname, "' group");
);
パターンを理解するには、 https://regex101.com/または大規模な言語モデルを使用することをお勧めします (これらは正規表現パターンの説明に非常に優れています)
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?また、このような積み重ねテーブルを利用すると、より簡単になります

少なくとも、何が起こっているかを視覚的に確認するのは簡単です(これらの計算は検証していません)

Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogiあなたのスクリプトをテストしましたが、期待どおりに動作します。ただし、sum() (失敗回数の合計?) がここで必要な理由がわかりません。
Eval (Eval Expr(dtsub << new column (PPGs[i], << Set Property( "Spec Limits", {LSL( 0 ), USL(0)} ), set each value (sum (Expr(Name Expr(colGroup)))))))
);少し説明していただけますか?
ありがとう
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?ColGroupには、合計される列名のリストが含まれています。「NPN Fail」という名前の列の場合、Sum()関数は次のように展開されます。
sum( :NPN1, :NPN2, :NPN3, :NPN4, :NPN5, :NPN6, :NPN7, :NPN8, :NPN9, :NPN10, :NPN11 )
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogi @txnelsonありがとうございます。スクリプトのこの部分では、特定の PPG の各メンバーのサイトごとの障害の数が追加されていることに気づきました。これを理解しているかどうかわかりません。
for each ({myName,i},prefixes,
colGroup = Filter Each({col}, col_names, Substr(col << getname(),1,3) == myName);
Eval (Eval Expr(dtsub << new column (PPGs[i], << Set Property( "Spec Limits", {LSL( 0 ), USL(0)} ), set each value (sum (Expr(Name Expr(colGroup)))))))
);特定の PPG のいずれかのメンバーに対してサイトが失敗した場合、このサイトは特定の PPG に失敗し、このサイトでこの PPG の下のより多くのメンバーが失敗しても、ロット内の PPG 歩留まり/ウェーハには影響しません (または影響しますか?)。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?こんにちは@Neo
はい、まさにその通りです。これは PP グループごとの収量を指定するために適用されるロジックです。
失敗を合計し、 USL = 0を使用します。
サイトが 1 つの仕様を満たさない場合、そのサイトは失敗です。
すべての候補者の合計が 0 の場合、いずれも不合格ではありません -> したがって、特定のサイトでグループ全体が合格します。
別のロジックをご希望ですか?
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogi 。 ずるいですね!! 今分かりました。あなたの先ほどの発言には全く同感です。 ところで、私はもともとここからそれを得ました。
私はやはり「搾取」という言葉の方が好きです...

Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@hogi現在、実際のデータ テーブルを使用してスクリプトをテストしています。
私の場合、パラメータ名はABCD_1_X_Y_1_Z の形式であり、PPG は ABCD...GH のさまざまな組み合わせによって定義されます (A は常に文字で、残りは文字または数字になります)。
X と Y は数字ですが、Z は数字、文字、またはその組み合わせです。
なぜこのような形式の名前になっているのかは聞かないでください。それは私のせいではありません。
PPGは次のように形成される
- U33P_1_0_0....はPPG「U33P」に含まれます
- CASMAPUL23Out_1_0_1_...はPPG「CASMAPUL23Out」に含まれます。
したがって、PPG 名を取得するには、パラメータ名の最初のアンダースコアの前の文字の組み合わせを取得する必要があります。私のケースで動作するように次のように変更する方法は次のとおりです。
colGroup = Filter Each({col}, col_names, Substr(col << getname(),1,3) == myName);Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?Word() および Words() 関数を調べてください。これらは通常、このような場合に非常に役立ちます。
Re: 「ロット ID 内のウェーハ ID」ごとにプロセス パラメータ グループの歩留まりを取得するにはどうすればよいですか?@jthiが言うように、
colGroup = Filter Each({col}, col_names, Word(1, col << getname(),"_") == myName);仕事はできるでしょう:)