(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-21
(54)【発明の名称】半導体処理装置の処理ジョブの起動方法、及び装置
(51)【国際特許分類】
H01L 21/02 20060101AFI20230713BHJP
【FI】
H01L21/02 Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023504644
(86)(22)【出願日】2021-07-26
(85)【翻訳文提出日】2023-01-23
(86)【国際出願番号】 CN2021108333
(87)【国際公開番号】W WO2022033292
(87)【国際公開日】2022-02-17
(31)【優先権主張番号】202010821443.2
(32)【優先日】2020-08-14
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】510182294
【氏名又は名称】北京北方華創微電子装備有限公司
【氏名又は名称原語表記】BEIJING NAURA MICROELECTRONICS EQUIPMENT CO., LTD.
【住所又は居所原語表記】NO.8 Wenchang Avenue Beijing Economic-Technological Development Area, Beijing 100176, China
(74)【代理人】
【識別番号】110001771
【氏名又は名称】弁理士法人虎ノ門知的財産事務所
(72)【発明者】
【氏名】ウー ファンナー
(72)【発明者】
【氏名】シー スーシュェ
(57)【要約】
本願は半導体処理装置の処理ジョブの起動方法及び装置を提供し、該方法は、半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するステップと、すべての起動対象処理ジョブを確定し、各起動対象処理ジョブの処理領域関係リストを生成するステップと、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップと、すべての起動対象処理ジョブが起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての起動可能処理ジョブから目標起動可能処理ジョブを選択し、目標起動可能処理ジョブを起動するステップと、を含む。これにより、いずれの時刻においても目標起動可能処理ジョブと現在の処理ジョブが対象とする材料が2つの同じ処理領域に出現するが出現順序が逆である状況が発生せず、デッドロックの発生を回避し、生産効率を向上させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
順次設けられた複数の処理ユニットを含み、前記複数の処理ユニットは複数の処理領域に区画され、前記複数の処理領域を前記複数の処理ユニットの配列順序に従って組み合わせることにより複数の処理領域群が形成される半導体処理装置の処理ジョブの起動方法であって、
前記半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するステップであって、前記現在の処理ジョブの処理領域関係リストが前記現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子を含むステップと、
すべての起動対象処理ジョブを確定し、各前記起動対象処理ジョブの処理領域関係リストを生成するステップであって、前記起動対象処理ジョブの処理領域関係リストが前記起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含むステップと、
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップと、
すべての前記起動対象処理ジョブが前記起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての前記起動可能処理ジョブから目標起動可能処理ジョブを選択し、前記目標起動可能処理ジョブを起動するステップと、を含むことを特徴とする半導体処理装置の処理ジョブの起動方法。
【請求項2】
前記第1の予め設定された規則は、
起動対象処理ジョブと前記現在の処理ジョブが共に処理領域群に関連するが、前記処理領域群の前記起動対象処理ジョブと前記現在の処理ジョブにおける状態が異なる場合、前記起動対象処理ジョブを起動可能処理ジョブとせず、それ以外の場合、前記起動対象処理ジョブを起動可能処理ジョブとすることを含み、
前記状態は正順状態及び逆順状態を含み、前記正順状態とは前記処理領域群の対応する処理ジョブでの前後関係と前記処理領域群の前記半導体処理装置での前後関係とが一致することであり、前記逆順状態とは前記処理領域群の対応する処理ジョブでの前後関係と前記処理領域群の前記半導体処理装置での前後関係とが一致しないことであることを特徴とする請求項1に記載の方法。
【請求項3】
すべての起動対象処理ジョブを確定し、各前記起動対象処理ジョブの処理領域関係リストを生成する前記ステップは、
前記現在の処理ジョブが前記複数の処理領域のうちの1つの予め設定された処理領域に関連する場合、前記現在の処理ジョブにおける前記予め設定された処理領域に対応するシリアル/パラレルタイプを確定するステップと、
すべての前記起動対象処理ジョブにおける前記予め設定された処理領域に関連する起動対象処理ジョブを確定するステップと、
各前記予め設定された処理領域に関連する前記起動対象処理ジョブにおける前記予め設定された処理領域に対応するシリアル/パラレルタイプを確定するステップと、
前記予め設定された処理領域に関連し、且つ前記予め設定された処理領域に対応するシリアル/パラレルタイプが、前記現在の処理ジョブにおける前記予め設定された処理領域に対応するシリアル/パラレルタイプと一致する起動対象処理ジョブを目標起動対象処理ジョブとして確定するステップと、
各前記目標起動対象処理ジョブの処理領域関係リストを生成するステップと、を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認する前記ステップは、
前記現在の処理ジョブの処理領域関係リストと各前記目標起動対象処理ジョブの処理領域関係リストに基づき、すべての前記目標起動対象処理ジョブが起動可能処理ジョブを含むか否かを前記第1の予め設定された規則に応じて確認するステップを含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記第2の予め設定された規則は、
すべての前記起動可能処理ジョブから待ち時間が最も長い起動可能処理ジョブを前記目標起動可能処理ジョブとして選択することを含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記現在の処理ジョブは前記半導体処理装置の実行中の処理ジョブ、前記半導体処理装置が新たに起動した処理ジョブのうちの1つであることを特徴とする請求項1に記載の方法。
【請求項7】
前記半導体処理装置の現在の処理ジョブの処理領域関係リストを生成する前記ステップは、
各前記処理領域に処理領域識別子を設定するステップと、
前記複数の処理ユニットの配列順序に従って前記処理領域識別子を組み合わせることにより、各前記処理領域群の処理領域群識別子が得られ、すべての前記処理領域群識別子を含む処理領域群識別子リストを生成するステップと、
各前記処理領域群識別子に割り当てる値を初期値とするステップであって、前記初期値は前記処理領域群識別に対応する処理領域群が存在しないことを表すことに用いられるステップと、
前記現在の処理ジョブに関連する処理領域群及びその前記状態に従って、前記処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、前記現在の処理ジョブの処理領域関係リストを得るステップであって、前記正順値は前記処理領域群識別子に対応する処理領域群が存在し且つ前記正順状態にあることを表すことに用いられ、前記逆順値は前記処理領域群識別子に対応する処理領域群が存在し且つ前記逆順状態にあることを表すことに用いられるステップと、を含むことを特徴とする請求項2に記載の方法。
【請求項8】
各前記起動対象処理ジョブの処理領域関係リストを生成する前記ステップは、
各前記起動対象処理ジョブに関連する処理領域群及びその前記状態に従って、前記処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、各前記起動対象処理ジョブの処理領域関係リストを得るステップを含むことを特徴とする請求項7に記載の方法。
【請求項9】
各前記処理領域群識別子をバイナリキー値対に対応付け、前記初期値は00であり、前記順序値は01であり、前記逆順値は10であり、
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを確認する前記ステップは、
各前記起動対象処理ジョブの処理領域関係リストと前記現在の処理ジョブの処理領域関係リストのそれぞれに対してバイナリ排他的論理和演算を実行し、各前記起動対象処理ジョブの計算結果を得るステップと、
起動対象処理ジョブの計算結果に11が含まれる場合、前記起動対象処理ジョブを起動可能処理ジョブとせず、起動対象処理ジョブの計算結果に11が含まれない場合、前記起動対象処理ジョブを起動可能処理ジョブとすることを確定するステップと、を含むことを特徴とする請求項8に記載の方法。
【請求項10】
半導体処理装置の処理ジョブの起動装置であって、
半導体処理装置に取り付けられ、前記半導体処理装置は順次設けられた複数の処理ユニットを含み、前記複数の処理ユニットは複数の処理領域に区画され、複数の処理領域群は前記複数の処理領域を前記複数の処理ユニットの配列順序に従って組み合わせることにより形成され、
前記半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するように構成される生成ユニットであって、前記現在の処理ジョブの処理領域関係リストが前記現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む生成ユニットと、
すべての起動対象処理ジョブを確定し、各前記起動対象処理ジョブの処理領域関係リストを生成するように構成される第1決定ユニットであって、前記起動対象処理ジョブの処理領域関係リストが前記起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む第1決定ユニットと、
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するように構成される第2決定ユニットと、
すべての前記起動対象処理ジョブが前記起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての前記起動可能処理ジョブから目標起動可能処理ジョブを選択し、前記目標起動可能処理ジョブを起動するように構成される起動ユニットと、を含むことを特徴とする半導体処理装置の処理ジョブの起動装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は半導体装置の技術分野に関連し、具体的には、半導体処理装置の処理ジョブの起動方法、及び装置に関連する。
【背景技術】
【0002】
デッドロックはウェーハ洗浄装置などの半導体処理装置においてマルチジョブを行う場合に、半導体処理装置の稼働率に最も影響を与える異常である。デッドロックが発生した場合、半導体処理装置が動作しにくくなり、半導体処理装置の歩留まりに影響を与え、また、半導体処理装置が正常に動作できないことも引き起こす。
【0003】
ウェーハ洗浄装置を例とし、起動時間が近い第1ジョブと第2ジョブについて、第1ジョブの正順RouteRecipeはShelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelfとして表され、第2ジョブのランダムRouteRecipeはShelf-PD01/PD02-WTC-IOBuffer-Tank7-Tank8-Tank1-Tank2-Dry-WTC-PD01/PD02-Shelfとして表される。第1ジョブでは、Tank2内の材料をTank7に移す必要があり、第2ジョブでは、Tank8内の材料をTank1に移す必要がある。酸性水バインディング規則により、Tank1、Tank2は同一の処理領域に属し、Tank7、Tank8は同一の処理領域に属し、同一の処理領域に1つの材料しか存在できず、材料は少なくとも一組のウェハ(基板とも呼ばれる)であってもよい。
【0004】
第1ジョブでは、Tank8内の材料がTank7、Tank8で構成される処理領域に位置し、該処理領域がTank8に占められるため、Tank2内の材料はTank7、Tank8で構成される処理領域におけるTank7に移せず、同様に、第2ジョブでは、Tank2内の材料がTank1、Tank2で構成される処理領域に位置し、該処理領域がTank2に占められるため、Tank8内の材料はTank1、Tank2で構成される処理領域におけるTank1に移せず、これにより、デッドロックが発生することを引き起こす。
【0005】
酸性水バインディング規則において、上記デッドロックの発生を回避することは早急に解決すべき課題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
関連技術に存在する問題を克服するために、本願はデッドロックの発生を解決することができる半導体処理装置の処理ジョブの起動方法、及び装置を提供する。
【課題を解決するための手段】
【0007】
本願の実施例の第1態様によれば、
前記半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するステップであって、前記現在の処理ジョブの処理領域関係リストが前記現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子を含むステップと、
すべての起動対象処理ジョブを確定し、各前記起動対象処理ジョブの処理領域関係リストを生成するステップであって、前記起動対象処理ジョブの処理領域関係リストが前記起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含むステップと、
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップと、
すべての前記起動対象処理ジョブが前記起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての前記起動可能処理ジョブから目標起動可能処理ジョブを選択し、前記目標起動可能処理ジョブを起動するステップと、を含む半導体処理装置の処理ジョブの起動方法を提供する。
【0008】
本願の実施例の第2態様によれば、
前記半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するように構成される生成ユニットであって、前記現在の処理ジョブの処理領域関係リストに前記現在の処理ジョブが関連するすべての処理領域群の処理領域群識別子を含む生成ユニットと、
すべての起動対象処理ジョブを確定し、各前記起動対象処理ジョブの処理領域関係リストを生成するように構成される第1決定ユニットであって、前記起動対象処理ジョブの処理領域関係リストが前記起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む第1決定ユニットと、
前記現在の処理ジョブの処理領域関係リストと各前記起動対象処理ジョブの処理領域関係リストに基づき、すべての前記起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するように構成される第2決定ユニットと、
すべての前記起動対象処理ジョブが前記起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての前記起動可能処理ジョブから目標起動可能処理ジョブを選択し、前記目標起動可能処理ジョブを起動するように構成される起動ユニットと、を含む半導体処理装置の処理ジョブの起動装置を提供する。
【発明の効果】
【0009】
本願の実施例に係る半導体処理装置の処理ジョブの起動方法、及び装置は、処理領域群識別子を利用して異なる処理ジョブにおいて材料が同じ処理領域に出現するが出現順序が逆である状況を識別することを実現する。起動時刻が隣接する目標起動可能処理ジョブと現在の処理ジョブが半導体処理装置においてパラレル運転される過程において、材料が2つの同じ処理領域に出現するが出現順序が逆である可能な状況をすべて考慮する。
【0010】
起動時刻が隣接する目標起動可能処理ジョブと現在の処理ジョブが半導体処理装置においてパラレル運転される過程において、いずれの時刻においてもデッドロックが発生しないことを確保する。
【図面の簡単な説明】
【0011】
ここでの図面は明細書に組み込まれ且つ明細書の一部を構成し、本願に適合する実施例を示し、且つ明細書とともに本願の原理を説明することに用いられる。
【
図1】本願の実施例に係る半導体処理装置の処理ジョブの起動方法第1実施例のフローチャートである。
【
図4】本願の実施例に係る半導体処理装置の処理ジョブの起動方法の第2実施例のフローチャートである。
【
図5】現在の処理ジョブに関連する処理領域群の処理領域群識別子を割り当てる流れの一例の概略図である。
【
図6】第1洗浄機における目標起動可能処理ジョブを起動する流れの一例の概略図である。
【
図7】第2洗浄機における目標起動可能処理ジョブを起動する流れの一例の概略図である。
【
図8】本願の実施例に係る半導体処理装置の処理ジョブの起動装置の構造ブロック図である。
【発明を実施するための形態】
【0012】
以下、図面及び実施例を参照しつつ本願をさらに詳細に説明する。理解されるように、ここで説明される具体的な実施例は関連発明を説明することに用いられ、該発明を限定するものではない。なお、説明の便宜上、図面には発明に関連する部分のみを示している。
【0013】
なお、矛盾しない限り、本願の実施例及び実施例の特徴は互いに組み合わせることができる。以下、図面及び実施例を参照しつつ本願を詳細に説明する。
【0014】
図1は本願の実施例に係る半導体処理装置の処理ジョブの起動方法の第1実施例のフローチャートであり、該方法は、ステップ101~ステップ104を含む。
【0015】
ステップ101、半導体処理装置の現在の処理ジョブの処理領域関係リストを生成する。
【0016】
以下、まず本願の実施例に係る処理ジョブ起動方法を適用することができるウェーハ洗浄装置又は洗浄機の例示的な構造を簡単に説明する。
【0017】
洗浄機はStationモジュール集合を含んでもよく、Stationモジュール集合は{Shelf1、Shelf2、Shelf3、Shelf4、Shelf5、Shelf6、Shelf7、Shelf8、Shelf9、Shelf10、Shelf11、Shelf12、Shelf13、Shelf14、Shelf15、Shelf16、PDO1、PDO2}として表される。
【0018】
シェルフ(Shelf)はフープ(Foup)を一時的に格納するために用いられ、1つのFoupに一組のWafer(ウェハ又は基板)を格納することができる。各Shelfに最大限で1つのFoupを配置することができ、ShelfにはFoupの数(0又は1)を検出することができるセンサがある。洗浄機は計16個のShelfを有し、最大限で16個のFoupを格納することができる。
【0019】
PD0は、Foupドアを開閉し、Mapping(スキャン)機能を行うためのものである。材料として例えば一組の基板が洗浄機に入ってPD0に配置されると、PD0は開扉操作を実行してFoup内の基板(すなわちWafer)に対してMappingチェックを行い、材料残留やWaferの配置異常を回避する。
【0020】
洗浄機は順次設けられた複数のTankモジュールを含み、Tankモジュールは処理ユニットと呼ばれてもよく、洗浄機は処理タンクと呼ばれてもよい。Tankモジュール集合は{Tank1(T1)、Tank2(T2)、Tank3(T3)、Tank4(T4)、Tank5(T5)、Tank6(T6)、Tank7(T7)、Tank8(T8)、Dry、WTC、IOBuffer、EEWD}として表されてもよい。
【0021】
Tankモジュールは材料である少なくとも1組のWaferに対して処理操作を実行するために用いられ、各Tankモジュールは最大限で2組のWaferを配置することができ、全タイプのTankモジュールは危険処理ユニット(Critical Tank)と通常処理ユニット(Rinse Tank)を含んでもよい。Critical Tank内の材料は処理精度の要件が高く、Critical Tankは過度浸漬を許可しない酸処理ユニットであってもよい。過度浸漬を許可する酸処理ユニット、水処理ユニット、Dry、IOBuffer、WTC、EEWDなどはRinse Tankである。
【0022】
Dryは乾燥処理ユニットであり、材料に対してdrying処理操作を実行するために用いられ、処理ジョブ(すなわちJob)が完了した後の材料が乾燥のものであることを確保する。IOBufferは材料に対してAlign校正操作を実行するために用いられる。WTCは同一のジョブの材料を合わせて1つのTankに配置して、同時に処理操作を行うために用いられる。EEWDは異なる酸タンク内の材料を把持するロボットアームに対して洗浄操作を実行するために用いられ、ロボットアームによる各酸処理ユニット内の酸の汚染を低減させる。
【0023】
洗浄機は1つのFoupRobotロボットアーム、1つのWHRロボットアーム、1つのWTRロボットアーム、複数のDuallifterロボットアームを含んでもよい。フープロボットアーム(FoupRobot、FR)はFoupの搬送を担当するロボットアームであり、FRはShelfとPD0との間で双方向移動し、一回に1つのFoupを把持することができる。ウェーハ把持ロボットアーム(Wafer Handling Robot、WHR)は乾燥した材料の搬送を担当するロボットアームであり、WHRはPD0とWTCとの間で双方向移動を行うことができ、WHRは一回に1組のWaferを把持することができる。ウェーハ搬送ロボットアーム(Wafer Transferring Robot、WTR)はデュアルリフター(Duallifter)を使用しないTank間の湿材料の搬送を担当し、WTRはデュアルリフター(Duallifter)を使用しない2つのTankモジュール間で双方向移動を行うことができる。WTRは一回に2組のWaferを把持することができる。Duallifterは湿材料の搬送を担当するロボットアームであり、Duallifterはこれに対応する固定された2つのTank間で双方向移動を行うことができ、Duallifterは一回に2組のWaferを把持することができる。
【0024】
さらに、本願の実施例に係る処理ジョブの起動方法は第1タイプの洗浄機又は第2タイプの洗浄機に適用することができる。第1タイプの洗浄機は第1洗浄機とも呼ばれる。第2タイプの洗浄機は第2洗浄機とも呼ばれる。
【0025】
図2を参照し、第1洗浄機の例示的な構造図が示されている。
【0026】
第1洗浄機では、酸処理ユニット集合はTank1、Tank3、Tank4、Tank7を含み、水処理ユニット集合はTank2、Tank5、Tank6、Tank8を含み、Dryは乾燥処理ユニットである。Tank1とTank2との間の材料の搬送、Tank7とTank8との間の材料の搬送はいずれも対応するDuallifterにより行われる。残りのTank間の材料の搬送はいずれもWTRにより行われる。
【0027】
第1洗浄機におけるCritical Tank集合は{T1、T3、T4、T7}として表されてもよい。第1洗浄機におけるRinse Tank集合は{T2、T5、T6、T8、Dry、IOBuffer、WTC、EEWD}として表されてもよい。
【0028】
第1洗浄機は5つのロボットアームを含んでもよい。第1洗浄機のロボットアーム集合は{FR、WTR、WHR、Duallifter12(D12)、Duallifter78(D78)}として表されてもよい。D12はTank1とTank2との間の材料の搬送を担当し、D78はTank7与Tank8との間の材料の搬送を担当する。
【0029】
第1洗浄機のJobの処理パスは以下の処理パスを含んでもよく、パラレルは「/」で表されてもよく、「/」はパスにおいて両者のうちの一方を含むことを示す。
【0030】
オールDuallifterRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
シングルDuallifterRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
シリアルオールRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank5-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank4-Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
パラレルオールRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3/Tank4-Tank5/Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Tank3Tank4シリアル、Tank5Tank6パラレルRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank4-Tank5/Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank5/Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank4-Tank5/Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Tank3Tank4パラレル、Tank5Tank6シリアルRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3/Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3/Tank4-Tank5-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3/Tank4-Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
指定PD0RouteRecipe:
Shelf-PD01-…-PD01-Shelf;
Shelf-PD01-…-PD02-Shelf;
ランダムRouteRecipe、例えば、Shelf-PD01/PD02-WTC-IOBuffer-A-C-B-Dry-WTC-PD01/PD02-Shelf、A、C、Bは実行された処理操作が処理ユニットの属する処理領域に発生したマークを示す。
PD0組み合わせ方式は、すべてのJobは単一のPD0を指定し、すべてのJobはパラレルPD0(PD01/PD02)を使用する。
図3を参照し、第2洗浄機の例示的な構造図が示されている。
第2洗浄機では、Tank1、Tank3、Tank5、Tank7は酸処理ユニットであり、Tank2、Tank4、Tank6、Tank8は水処理ユニットである。Tank1とTank2との間の材料搬送、Tank3とTank4との間の材料搬送、Tank5とTank6との間の材料搬送、Tank7とTank8との間の材料搬送はいずれも対応するDuallifterにより行われる。
第2洗浄機のCritical Tank集合は{T1、T3、T5、T7}として表されてもよい。第2予備洗浄機のRinse Tank集合は{T2、T4、T6、T8、Dry、IOBuffer、WTC、EEWD}として表されてもよい。第2洗浄機は7つのロボットアームを含んでもよく、第2洗浄機のロボットアーム集合は{FR、WTR、WHR、D12、Duallifter34(D34)、Duallifter56(D56)、D78}として表されてもよい。D34はTank3とTank4との間の材料搬送を担当する。D56はTank5とTank6との間の材料搬送を担当する。
第2洗浄機のJobの処理パスは以下の処理パスを含む。
オールRouteRecipe:Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
シングルDuallifterRouteRecipe:
Shelf-PD01/PD02-WTC-IOBuffer-Tank1-Tank2-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank3-Tank4-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank5-Tank6-Dry-WTC-PD01/PD02-Shelf;
Shelf-PD01/PD02-WTC-IOBuffer-Tank7-Tank8-Dry-WTC-PD01/PD02-Shelf;
指定PD0 RouteRecipe:
Shelf-PD01-…-PD01-Shelf;
Shelf-PD01-…-PD02-Shelf;
【0031】
ランダムRouteRecipe、例えばShelf-PD01/PD02-WTC-IOBuffer-B-C-A-D-Dry-WTC-PD01/PD02-Shelf、B、C、A、Dは実行された処理操作が処理ユニットの属する処理領域に発生したマークを示す。
【0032】
PD0組み合わせ方式は、すべてのJobは単一のPD0を指定し、すべてのJobはパラレルPD0(PD01/PD02)を使用することを含む。
【0033】
本実施例では、処理ジョブはJobと呼ばれてもよく、現在のJobは既に起動しており且つ完了していないすべてのJobのうち起動時間が最も遅いJobであってもよく、現在のJobは最近起動しているJobと呼ばれてもよい。目標起動可能Jobを1つ決定するたびに、決定された当該目標起動可能Jobを起動し、決定された当該目標起動可能Jobは現在のJobとなる。
【0034】
半導体処理装置における現在のJobの処理領域関係リストはrouteRegionSortと呼ばれてもよい。ジョブの処理パスはRouteRecipeと呼ばれてもよい。
【0035】
いくつかの実施例では、現在の処理ジョブは半導体処理装置の実行中の処理ジョブ、半導体処理装置が新たに起動した処理ジョブのうちの1つである。
【0036】
現在の処理ジョブが半導体処理装置の実行中の処理ジョブである場合、現在の処理ジョブは対象材料が処理ユニットにおいて処理操作を実行中であり且つ起動時間が最も遅いジョブを指してもよい。現在の処理ジョブが、半導体処理装置が新たに起動した処理ジョブである場合、現在の処理ジョブはすでに起動しているジョブのうち対象材料がまだシェルフから離れず且つ起動時間が最も遅いジョブを指してもよい。
【0037】
目標起動可能Jobを決定するときに、現在のJobが対象とする材料がすでにシェルフから離れており、且つ現在のJobが対象とする材料が処理ユニットにおいて処理操作を実行中である場合がある。この場合、現在のJobはTankにおける処理中の現在のJobと呼ばれてもよい。
【0038】
目標起動可能Jobを決定するときに、現在のJobが対象とする材料がシェルフから離れていない場合があり、この場合、現在のJobは新たに起動したJobと呼ばれてもよい。
【0039】
本実施例では、上記洗浄機を例とし、処理領域は少なくとも1つの酸処理ユニットと少なくとも1つの水処理ユニットを含む領域であってもよく、処理領域は酸-水処理領域とも呼ばれる
【0040】
本実施例では、複数の処理ユニットは複数の処理領域に分けられ、具体的には、各処理ユニットはそれぞれ個別の処理領域に属してもよい。複数の処理ユニットは同一の処理領域に属してもよい。
【0041】
例えば、Tank1-Tank2は処理領域Aに属し、Tank3-Tank6は処理領域Bに属し、Tank7-Tank8は処理領域Cに属する。
【0042】
現在のJobの処理領域関係リストrouteRegionSortは現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む。
【0043】
現在のJobの処理領域関係リストrouteRegionSort処理領域関係リストにおける処理領域群識別子は現在の処理ジョブに関連する処理領域の処理領域識別子を組み合わせて得ることができる。
【0044】
現在のJobは順序に従って実行される一連の材料に対する処理操作を含む。各処理操作はそれぞれ1つの処理ユニットで実行される。
【0045】
現在のJobの処理パスRouteRecipeは現在のJobにおいて処理操作を実行する処理ユニットの順序を記述する。
【0046】
本実施例では、現在のJobを実行するときに、材料に対する処理操作を実行する処理ユニットは現在のJobに関連する処理ユニットと呼ばれてもよい。
【0047】
本実施例では、現在のJobに関連する処理領域は、現在のJobを実行するときに材料に対する処理操作を実行する処理ユニットの属する処理領域であってもよい。
【0048】
本実施例では、半導体処理装置における複数の処理領域を組み合わせ、半導体処理装置の複数の処理領域群を得るようにしてもよい。
【0049】
現在のJobに関連する処理領域群は半導体処理装置の複数の処理領域群における、現在のJobに関連する2つの処理領域で構成される処理領域群であってもよい。
【0050】
本実施例では、現在のJobに関連する各処理領域群については、現在のJobを実行するときに材料が現在のJobに関連する処理領域から離れる時刻の遅かれ早かれ関係に基づき、該処理領域群における、現在のJobに関連する2つの処理領域の前後関係を決定することができる。
【0051】
現在のJobに関連する1つの処理領域群について、現在のJobを実行するとき、材料の該処理領域群における1つの処理領域を離れた時刻が材料の該処理領域群における別の処理領域を離れた時刻よりも早いと、該処理領域群における2つの処理領域の前後関係は該1つの処理領域が前におり、該別の処理領域が後にある。
【0052】
本実施例では、現在のJobに関連する各処理領域については、該処理領域群における2つの処理領域の現在のJobにおける前後関係と該2つの処理領域の半導体処理装置での前後関係とが一致すると、該処理領域群の現在のJobにおける状態は正順状態であると言える。該処理領域群における2つの処理領域の現在のJobにおける前後関係と該2つの処理領域の半導体処理装置での前後関係とが一致しないと、該処理領域群の現在のJobにおける状態は逆順状態であると言える。
【0053】
なお、処理領域群の状態は処理ジョブに対するものである。同一の処理領域群は2つの異なる処理ジョブにおける状態が同じであってもよいし、異なってもよい。
【0054】
例えば、現在のJobのフルパスはShelf-PDO1/PDO2-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PDO1/PDO2-Shelfである。
【0055】
現在のJobが対象とする材料に対して処理操作を行う時刻の早い順にTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8のようにソートされ、すなわち、まずTank1において現在のJobが対象とする材料に対して処理操作を行い、その後、Tank2において現在のJobが対象とする材料に対して処理操作を行い、このことから類推する。
【0056】
現在のJobに関連するすべての処理ユニットはTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8を含む。
【0057】
現在のJobが対象とする材料に対して処理操作を行う時刻は早い順にTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8である。
【0058】
Tank1-Tank2は処理領域Aに属し、Tank3-Tank6は処理領域Bに属し、Tank7-Tank8は処理領域Cに属する。
【0059】
半導体処理装置では、処理領域は前から順に処理領域A、処理領域B、処理領域Cである。
【0060】
現在のJobに関連するすべての処理領域は処理領域A、処理領域B、処理領域Cを含む。
【0061】
現在のJobに関連するすべての処理領域は材料の離れる時刻の早い順に処理領域A、処理領域B、処理領域Cにソートする。
【0062】
換言すれば、現在のJobに関連するすべての処理領域は順に処理領域A、処理領域B、処理領域Cである。
【0063】
現在のJobに関連するすべての処理領域群は処理領域Aと処理領域Bで構成される処理領域群、処理領域Aと処理領域Cで構成される処理領域群、処理領域Bと処理領域Cで構成される処理領域群を含む。
【0064】
処理領域Aと処理領域Bで構成される処理領域群では、現在のJobが実行されるとき、材料の処理領域Aから離れる時刻が材料の処理領域Bから離れる時刻よりも早いため、処理領域Aと処理領域Bの現在のJobでの前後関係は処理領域Aが処理領域Bの前にあるすることであり、該処理領域群における処理領域Aと処理領域Bの現在のJobでの前後関係と、処理領域Aと処理領域Bの半導体処理装置での前後関係とが一致するため、処理領域Aと処理領域Bで構成される処理領域群の現在のJobでの状態は正順状態である。
【0065】
処理領域Aと処理領域Cで構成される処理領域群では、処理領域Aと処理領域Cの現在のJobでの前後関係は処理領域Aが処理領域Cの前にあることであり、該処理領域群における処理領域Aと処理領域Cの現在のJobでの前後関係と、処理領域Aと処理領域Cの半導体処理装置での前後関係とが一致するため、処理領域Aと処理領域Cで構成される処理領域群の現在のJobでの状態は正順状態である。
【0066】
処理領域Bと処理領域Cで構成される処理領域群では、処理領域Bと処理領域Cの現在のJobでの前後関係は処理領域Bが処理領域Cの前にあることであり、該処理領域群における処理領域Bと処理領域Cの現在のJobでの前後関係と、処理領域Bと処理領域Cの半導体処理装置での前後関係とが一致するため、処理領域Bと処理領域Cで構成される処理領域群の現在のJobでの状態は正順状態である。
【0067】
例えば、現在のJobのフルパスはShelf-PDO1/PDO2-WTC-IOBuffer-Tank1-Tank2-Tank7-Tank8-Tank3-Tank4-Tank5-Tank6-Dry-WTC-PDO1/PDO2-Shelfである。
【0068】
半導体処理装置では、すべての処理ユニットは前から順にTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8である。
【0069】
現在のJobに関連するすべての処理ユニットはTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8を含む。
【0070】
現在のJobが対象とする材料に対して処理操作を行う時刻は早い順にTank1、Tank2、Tank7、Tank8、Tank3、Tank4、Tank5、Tank6である。
【0071】
Tank1-Tank2は処理領域Aに属し、Tank3-Tank6は処理領域Bに属し、Tank7-Tank8は処理領域Cに属する。
【0072】
現在のJobに関連するすべての処理領域は処理領域A、処理領域B、処理領域Cを含む。
【0073】
現在のJobに関連するすべての処理領域は材料の処理領域から離れる時刻の早い順に処理領域A、処理領域B、処理領域Cにソートする。
【0074】
換言すれば、現在のJobに関連するすべての処理領域は順に処理領域A、処理領域C、処理領域Bである。
【0075】
現在のJobに関連するすべての処理領域群は処理領域Aと処理領域Bで構成される処理領域群、処理領域Aと処理領域Cで構成される処理領域群、処理領域Cと処理領域で構成される処理領域群を含む。
【0076】
処理領域Aと処理領域Bで構成される処理領域群では、処理領域Aと処理領域Bの現在のJobでの前後関係は処理領域Aが処理領域Bの前にあることであり、該処理領域群における処理領域Aと処理領域Bの現在のJobでの前後関係と、処理領域Aと処理領域Bの半導体処理装置での前後関係とが一致するため、処理領域Aと処理領域Bで構成される処理領域群の現在のJobでの状態は正順状態である。
【0077】
処理領域Aと処理領域Cで構成される処理領域群では、処理領域Aと処理領域Cの現在のJobでの前後関係は処理領域Aが処理領域Cの前にあることであり、該処理領域群における処理領域Aと処理領域Cの現在のJobでの前後関係と、処理領域Aと処理領域Cの半導体処理装置での前後関係とが一致するため、処理領域Aと処理領域Cで構成される処理領域群の現在のJobでの状態は正順状態である。
【0078】
処理領域Cと処理領域で構成される処理領域群では、現在のJobが実行されるとき、材料の処理領域Cから離れる時刻が材料の処理領域Bから離れる時刻よりも早いため、処理領域Cと処理領域Bの現在のJobでの前後関係は処理領域Cが処理領域Bの前にあることであり、該処理領域群における処理領域Cと処理領域Bの現在のJobでの前後関係と、処理領域Bと処理領域Cの半導体処理装置での前後関係とが一致しないため、処理領域Cと処理領域で構成される処理領域群の現在のJobでの状態は逆順状態である。
【0079】
本実施例では、半導体処理装置における現在の処理ジョブの処理領域関係リストを生成するために、まず、現在のJobの処理ユニット識別子シークエンスを生成してもよい。
【0080】
現在のJobの処理ユニット識別子シークエンスは現在のJobに関連する各処理ユニットの識別子を含む。
【0081】
現在のJobの処理ユニット識別子シークエンスでは、処理ユニット識別子の順序は現在のJobの処理パスに記述された処理ユニットの処理操作を実行する順序と一致する。
【0082】
例えば、現在のJobの処理パスはTank3-Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PDO1/PDO2-Shelfである。現在のJobは処理操作を行うためのTank3、処理操作を行うためのTank4、処理操作を行うためのTank5、処理操作を行うためのTank6、処理操作を行うためのTank7、処理操作を行うためのTank8などの複数の処理ユニットに関連する。現在のJobの処理ユニット識別子シークエンスは、Tank3の処理ユニット識別子T3、Tank4の処理ユニット識別子T4、Tank5の処理ユニット識別子T5、Tank6の処理ユニット識別子T6、Tank7の処理ユニット識別子T7、Tank8の処理ユニット識別子T8を含む。Tank3の処理ユニット識別子T3は現在のJobの処理ユニット識別子シークエンスにおける1番目の処理ユニット識別子であり、Tank4の処理ユニット識別子T4は現在のJobの処理ユニット識別子シークエンスにおける2番目の処理ユニット識別子であり、このことから類推する。
【0083】
本実施例では、半導体処理装置における現在のJobの処理領域関係リストを生成するために、現在のJobの処理ユニット識別子シークエンスを生成した後、現在のJobの処理ユニット識別子シークエンスをトラバースしてもよい。トラバースにおいて、1回に1つの処理ユニット識別子にアクセスし、これにより、現在のJobに関連する複数の処理領域の処理領域識別子で構成される現在のJobの処理領域識別子シークエンスを生成する。現在のJobの処理領域識別子シークエンスにおけるすべての処理領域識別子は、現在のJobに関連する各処理ユニットの属する処理領域の識別子をアグリゲートしてから重複排除を行うことにより得られる。
【0084】
まず、現在のJobの処理ユニット識別子シークエンスにおける1番目の処理ユニット識別子にアクセスし、その後、現在のJobの処理ユニット識別子シークエンスにおける2番目の処理ユニット識別子にアクセスし、このことから類推する。
【0085】
1つの処理ユニット識別子にアクセスし、且つ、該処理ユニット識別子を有する処理ユニットと次の処理ユニット識別子に対応する処理ユニットが異なる処理領域に属すると、まず該処理ユニット識別子を有する処理ユニットの属する処理領域の処理領域識別子を生成し、その後、該後の処理ユニット識別子に対応する処理ユニットの属する処理領域の処理領域識別子を生成する。
【0086】
各処理領域はそれぞれ1つの処理領域識別子を有する。例えば処理領域Aの処理領域識別子はAであり、処理領域Bの処理領域識別子はBであり、処理領域Cの処理領域識別子はCである。
【0087】
アクセスされた位置が連続する複数の処理ユニット識別子のうちそれぞれの属する処理ユニットがいずれも同一の処理領域に属する場合、1つの処理領域識別子、すなわち当該同一の処理領域の処理領域識別子のみを生成する。属する処理領域が、該位置が連続する複数の処理ユニット識別子のうちそれぞれの属する処理領域と異なる処理ユニット識別子にアクセスすると、該処理ユニット識別子の属する処理領域の処理領域識別子を生成する。
【0088】
生成されたすべての処理領域識別子は現在のJobの処理領域識別子シークエンスを構成することができ、現在のJob処理領域識別子シークエンスでは、すべての処理領域識別子の順序は処理領域識別子の生成時刻の早い順である。
【0089】
実際には、現在のJobの処理領域識別子シークエンスにおけるすべての処理領域識別子の順序は現在のJobに関連するすべての処理領域が材料の処理領域から離れる時刻の早い順にソートされた順序である。
【0090】
現在のJobの処理領域識別子シークエンスを生成した後、予め設定された正順組み合わせ方式で、生成された処理領域識別子シークエンスにおける処理領域識別子を組み合わせ、少なくとも1つの処理領域群識別子を得るようにしてもよく、ここで、正順は処理ユニットの設置順序であってもよい。
【0091】
処理領域識別子シークエンスにおける各処理領域識別子について、該処理領域識別子が処理領域識別子シークエンスにおける最後の処理領域識別子ではない場合、該処理領域識別子を該処理領域識別子よりも後の各処理領域識別子のそれぞれと組み合わせることにより、該処理領域識別子に対応するすべての処理領域群識別子が得られる。
【0092】
処理領域識別子シークエンスにおける各処理領域識別子について、該処理領域識別子に対応するすべての処理領域群識別子では、該処理領域識別子は該処理領域識別子よりも後の1つの処理領域識別子の前にある。
【0093】
処理領域識別子シークエンスにおける各処理領域識別子のそれぞれに対応するすべての処理領域群識別子を得た後、処理領域識別子シークエンスにおける各処理領域識別子のそれぞれに対応するすべての処理領域群識別子を組み合わせて現在の処理ジョブの処理領域関係リストとする。
【0094】
第1洗浄機を例とし、例えば、現在のJobの処理ユニット識別子シークエンスは、Tank3の処理ユニット識別子T3、Tank4の処理ユニット識別子T4、Tank5の処理ユニット識別子T5、Tank6の処理ユニット識別子T6、Tank7の処理ユニット識別子T7、Tank8の処理ユニット識別子T8を含む。Tank3-Tank6はいずれも処理領域Bに属し、Tank7-Tank8はいずれも処理領域Cに属する。
【0095】
Tank3の処理ユニット識別子T3、Tank4の処理ユニット識別子T4、Tank5の処理ユニット識別子T5、Tank6の処理ユニット識別子T6に順にアクセスし、T3、T4、T5、T6は位置が連続する複数の処理ユニット識別子であり、Tank3-Tank6はいずれも処理領域Bに属するため、処理領域Bの識別子Bのみを生成する。
【0096】
T6の属する処理ユニットTank6はTank7と異なり、Tank7の処理ユニット識別子T7にアクセスするときに、処理領域Cの処理領域識別子Cを生成する。Tank7の処理ユニット識別子、Tank8の処理ユニット識別子に順にアクセスし、T7、T8は位置が連続する複数の処理ユニット識別子であり、Tank7-Tank8はいずれも処理領域Cに属するため、処理領域Cの処理領域識別子Cのみを生成する。
【0097】
生成されたすべての処理領域識別子はB、Cを含み、すべての処理領域識別子B、Cは現在のJobの処理領域識別子シークエンスを構成することができる。現在のJobの処理領域識別子シークエンスでは、BはCの前にある。
【0098】
現在のJobの処理領域識別子シークエンスを得た後、予め設定された正順組み合わせ方式で、処理領域識別子シークエンスにおける処理領域識別子を組み合わせることにより、少なくとも1つの処理領域群識別子が得られる。処理領域識別子Bにとって、処理領域識別子Cが処理領域識別子Bの後にあることにより、処理領域識別子Bと処理領域識別子Cを組み合わせ、処理領域識別子Bに対応する処理領域群識別子BCを得ることができる。Cの後に他の処理領域識別子がないため、Cは他の処理識別子と組み合わせることがない。したがって、現在の処理ジョブの処理領域関係リストはBCを含む。
【0099】
ステップ102、すべての起動対象処理ジョブを決定し、各起動対象処理ジョブの処理領域関係リストを生成する。
【0100】
ここでは、起動対象処理ジョブの処理領域関係リストは起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む。
【0101】
いずれかの起動対象Jobの処理領域関係リストを生成するプロセスは上記半導体処理装置における現在の処理ジョブの処理領域関係リストを生成するプロセスと類似し、上記現在の処理ジョブの処理領域関係リストを生成するプロセスを参照して、いずれかの起動対象Jobの処理領域関係リストの処理を生成してもよい。
【0102】
例えば、半導体処理装置は処理領域A、処理領域B、処理領域C、処理領域Dなどの処理領域を含み、Tank1-Tank2は処理領域Aに属し、Tank3-Tank4は処理領域Bに属し、Tank5-Tank6は処理領域Cに属し、Tank7-Tank8は処理領域Dに属する。
【0103】
1つの起動対象JobのフルパスはShelf-PDO1/PDO2-WTC-IOBuffer-Tank1-Tank2-Tank3-Tank4-Tank5-Tank6-Tank7-Tank8-Dry-WTC-PDO1/PDO2-Shelfである。
【0104】
該起動対象Jobに関連する処理ユニットは材料に対して処理操作を行う時刻の早い順にTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8にソートし、すなわち、まずTank1で材料に対して処理操作を行い、その後、Tank2で材料に対して処理操作を行い、このことから類推する。
【0105】
該起動対象Jobに関連する複数の処理領域は順に処理領域A、処理領域B、処理領域C、処理領域Dである。該起動対象Jobに関連する複数の処理領域の処理領域識別子は処理領域識別子シークエンスを構成する。処理領域識別子シークエンスは、処理領域Aの処理領域識別子A、処理領域Bの処理領域識別子B、処理領域Cの処理領域識別子C、処理領域Dの処理領域識別子Dを順次に含む。
【0106】
AをAよりも後のB、C、Dのそれぞれと組み合わせ、処理領域群識別子AB、AC、ADを得て、BをBよりも後のC、Dのそれぞれと組み合わせ、処理領域群識別子BC、BDを得る。CをCよりも後のDと組み合わせ、処理領域群識別子CDを得る。
【0107】
得られたすべての処理領域群識別子は該起動対象Jobの処理領域関係リストを構成することができ、該起動対象Jobの処理領域関係リストはAB、AC、AD、BC、BD、CDを含む。
【0108】
本実施例のいくつかの選択可能な実現態様では、すべての起動対象処理ジョブを決定し、各起動対象処理ジョブの処理領域関係リストを生成するステップは、該現在の処理ジョブが複数の処理領域のうちの1つの予め設定された処理領域に関連する場合、現在の処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプを決定するステップと、すべての起動対象処理ジョブのうち予め設定された処理領域に関連する起動対象処理ジョブを決定するステップと、予め設定された処理領域に関連する起動対象処理ジョブのそれぞれにおいて予め設定された処理領域に対応するシリアル/パラレルタイプを決定するステップと、予め設定された処理領域に関連し、且つ予め設定された処理領域に対応するシリアル/パラレルタイプが現在の処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプと一致する起動対象処理ジョブを目標起動対象処理ジョブとして決定するステップと、各目標起動対象処理ジョブの処理領域関係リストを生成するステップと、を含む。
【0109】
本実施例では、現在の処理ジョブが複数の処理領域のうちの1つの予め設定された処理領域に関連する場合、すべての起動対象ジョブのうち、この予め設定された処理領域に関連し、且つ予め設定された処理領域に対応するシリアル/パラレルタイプが現在の処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプと一致する起動対象処理ジョブは目標起動対象処理ジョブと呼ばれてもよい。
【0110】
少なくとも1つの目標起動対象処理ジョブが存在する場合、各起動対象処理ジョブの処理領域関係リストを生成する過程において、後のステップを行うために、各目標起動対象処理ジョブの処理領域関係リストを優先的に生成してもよい。
【0111】
1つの処理ジョブとして例えば現在の処理ジョブ又はいずれかの起動対象処理ジョブについて、該処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプは該処理ジョブのパスにおける予め設定された処理領域に対応するサブパスのシリアル/パラレルタイプであってもよい。
【0112】
1つの処理ジョブとして例えば現在の処理ジョブ又はいずれかの起動対象処理ジョブについて、該処理ジョブのパスにおける予め設定された処理領域に対応するサブパスは、該処理ジョブのパスにおける、予め設定された処理領域に属する処理ユニットに関連するサブパスであってもよい。
【0113】
上記の第1洗浄機を例とし、予め設定された処理領域は処理領域Bであってもよい。1つの起動対象JobのパスがオールDuallifter RouteRecipeである場合、該起動対象Jobの処理パスは予め設定された処理領域である処理領域Bに対応するサブパスを含まず、該起動対象Jobの処理パスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは空である。それに対応して、起動対象Jobにおいて処理領域Bに対応するシリアル/パラレルタイプは空である。同様に、現在のJobのパスがオールDuallifter RouteRecipeである場合、該現在のJobの処理パスは処理領域Bに対応するサブパスを含まず、現在のJobの処理パスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは空である。それに対応して、現在のJobにおいて処理領域Bに対応するシリアル/パラレルタイプは空である。
【0114】
同様に、1つの起動対象JobのパスがシングルDuallifterRouteRecipeである場合、該起動対象Jobの処理パスは処理領域Bに対応するサブパスを含まず、該起動対象Jobの処理パスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは空である。同様に、現在のJobがシングルDuallifter RouteRecipeである場合、現在のJobの処理パスは予め設定された処理領域に対応するサブパスを含まず、現在のJobの処理パスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは空である。
【0115】
起動対象JobのパスがシリアルオールRouteRecipeである場合、起動対象Jobのパスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは、Tank3とTank4がシリアルであり、且つTank5とTank6がシリアルである。それに対応して、起動対象Jobのうち処理領域Bに対応するシリアル/パラレルタイプは、Tank3とTank4がシリアルで且つTank5とTank6がシリアルである。同様に、現在のJobのパスがシリアルオールRouteRecipeである場合、現在のJobのパスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは、Tank3とTank4がシリアルで且つTank5とTank6がシリアルである。それに対応して、現在のJobにおいて処理領域Bに対応するシリアル/パラレルタイプは、Tank3とTank4がシリアルであり、且つTank5とTank6がシリアルである。
【0116】
起動対象JobのパスはTank3とTank4がシリアルであり、且つTank5とTank6がパラレルでRouteRecipeである場合、起動対象Jobのパスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは、Tank3とTank4がシリアルであり、且つTank5とTank6がパラレルである。同様に、現在のJobのパスはTank3とTank4がシリアルであり、且つTank5とTank6がパラレルであるRouteRecipeである場合、現在のJobのパスにおける処理領域Bに対応するサブパスのシリアル/パラレルタイプは、Tank3とTank4がシリアルであり、且つTank5とTank6がパラレルである。
【0117】
ステップ103、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認する。
【0118】
本実施例では、現在の処理ジョブの処理領域関係リストと各目標起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが少なくとも1つの起動可能処理ジョブを含むか否かを確認する場合、第1の予め設定された規則は、起動対象処理ジョブと現在の処理ジョブが共に処理領域群に関連するが、該処理領域群の該起動対象処理ジョブと現在の処理ジョブにおける状態が異なる場合、該起動対象処理ジョブを起動可能処理ジョブとせず、それ以外の場合、該起動対象処理ジョブを起動可能処理ジョブとする。
【0119】
上記状態は正順状態及び逆順状態を含み、正順状態とは処理領域群の対応する処理ジョブでの前後関係が半導体処理装置での前後関係と一致することである。上記逆順状態とは処理領域群の対応する処理ジョブでの前後関係が半導体処理装置での前後関係と一致しないことである。
【0120】
例えば、処理領域群の現在の処理ジョブでの前後関係が半導体処理装置での前後関係と一致すると、該処理領域群の該現在の処理ジョブにおける状態は正順状態であり、処理領域群の現在の処理ジョブでの前後関係が半導体処理装置での前後関係と一致しないと、該処理領域群の該現在の処理ジョブにおける状態は逆順状態である。処理領域群の起動対象処理ジョブでの前後関係が半導体処理装置での前後関係と一致すると、該処理領域群の該起動対象処理ジョブにおける状態は正順状態であり、処理領域群の該起動対象処理ジョブでの前後関係が半導体処理装置での前後関係と一致しないと、該処理領域群の該起動対象処理ジョブにおける状態は逆順状態である。
【0121】
仮に現在の処理ジョブが特定の作業領域群に関連し、且つ該作業領域群の現在の処理ジョブの状態が正順状態である場合、各起動対象処理ジョブに対して、該起動対象処理ジョブの処理領域関係リストが該特定の作業領域群を含み、且つ状態が逆順状態であるか否かを決定し、否定の場合、該起動対象処理ジョブを起動可能処理ジョブとすることができると確定し、肯定の場合、該起動対象処理ジョブを1つの起動可能処理ジョブとすることができないと確定する。
【0122】
該特定の作業領域群の処理領域群識別子のうち処理領域識別子の順序が現在の処理ジョブにおける該特定の作業領域群の処理領域識別子の順序と異なる、又は順序が逆であることは、該処理領域群の該起動処理ジョブと現在の処理ジョブにおける状態が異なることを示し、それ以外の場合、該処理領域群の該起動処理ジョブと現在の処理ジョブにおける状態が同じであることを示す。
【0123】
例えば、現在の処理ジョブの処理パスの複数の処理領域は順にA、B、Cである。現在の処理ジョブを実行する際に、まず、処理領域Aにおける少なくとも1つの処理ユニットで材料に対して処理を行い、その後、処理領域Bにおける少なくとも1つの処理ユニットで材料に対して処理を行い、最後に、処理領域Cにおける少なくとも1つの処理ユニットで材料に対して処理を行う。
【0124】
現在の処理ジョブの処理領域識別子リストにおいて、処理領域識別子は前から順にA、B、Cである。予め設定された正順組み合わせ方式で、処理領域識別子リストにおける処理領域識別子を組み合わせることにより、現在の処理ジョブの処理領域関係リストが得られ、現在の処理ジョブの処理領域関係リストがAB、AC、BCを含む。
【0125】
1つの起動対象処理ジョブについては、該起動対象処理ジョブに関連する複数の処理領域は順にA、C、Bである。該起動対象処理ジョブを起動する際に、まず処理領域Aにおける少なくとも1つの処理ユニットで材料に対して処理を行い、その後、処理領域Cにおける少なくとも1つの処理ユニットで材料に対して処理を行い、最後に、処理領域Bにおける少なくとも1つの処理ユニットで材料に対して処理を行う。
【0126】
該起動対象処理ジョブの処理領域識別子リストにおいて、処理領域識別子は前から順にA、C、Bである。予め設定された正順組み合わせ方式で、処理領域識別子リストにおける処理領域識別子を組み合わせることにより、現在の処理ジョブの処理領域関係リストが得られ、現在の処理ジョブの処理領域関係リストがAC、AB、CBを含む。
【0127】
起動対象処理ジョブの処理領域関係リストにおけるABに含まれる処理領域識別子は現在の処理ジョブの処理領域関係リストにおけるABに含まれる処理領域識別子と同じであり、現在の処理ジョブの処理領域関係リストにおけるABは起動対象処理ジョブの処理領域関係リストにおけるABに対応する処理領域群識別子である。
【0128】
起動対象処理ジョブの処理領域関係リストにおけるACに含まれる処理領域識別子は現在の処理ジョブの処理領域関係リストにおけるACに含まれる処理領域識別子と同じであり、現在の処理ジョブの処理領域関係リストにおけるACは起動対象処理ジョブの処理領域関係リストにおけるACに対応する処理領域群識別子である。
【0129】
起動対象処理ジョブの処理領域関係リストにおけるCBに含まれる処理領域識別子は現在の処理ジョブの処理領域関係リストにおけるBCに含まれる処理領域識別子と同じであり、現在の処理ジョブの処理領域関係リストにおけるBCは起動対象処理ジョブの処理領域関係リストにおけるCBに対応する処理領域群識別子である。
【0130】
起動対象処理ジョブの処理領域関係リストにおけるABの順序は現在の処理ジョブの処理領域関係リストにおけるABの順序と同じである。起動対象処理ジョブの処理領域関係リストにおけるACの順序は現在の処理ジョブの処理領域関係リストにおけるACの順序と同じである。起動対象処理ジョブの処理領域関係リストにおけるCBの順序は現在の処理ジョブの処理領域関係リストにおけるBC順序と異なる。したがって、該起動対象処理ジョブを起動可能処理ジョブとすることができない。
【0131】
また、例えば、現在の処理ジョブの処理領域関係リストには、AB、AC、BCが含まれ、起動対象処理ジョブの処理領域関係リストには、AB、AC、BCが含まれる。
【0132】
該現在の処理ジョブ及び起動対象処理ジョブの処理領域関係リストにおけるAB、AC、BCの順序はいずれも同じであるため、該起動対象処理ジョブを起動可能処理ジョブとすることができる。
【0133】
なお、上記起動対象処理ジョブは特定の起動対象処理ジョブを指すものではなく、上記起動対象処理ジョブと現在の処理ジョブのいずれも関連する処理領域群も特定の処理領域群を指すものではない。
【0134】
本実施例では、いずれかの起動対象処理ジョブについては、該起動対象処理ジョブと現在の処理ジョブが共に関連する処理領域群を、該起動対象処理ジョブと現在の処理ジョブが共に関連する処理領域群と呼ばれてもよい。
【0135】
いずれかの起動対象処理ジョブについて、該起動対象処理ジョブと現在の処理ジョブが共に1つの処理領域群に関連し、且つ該処理領域群の該起動対象処理ジョブにおける状態と該処理領域群の現在の処理ジョブにおける状態が異なる場合、該起動対象処理ジョブを起動可能処理ジョブとすることはではないと確定できる。
【0136】
1つの起動対象処理ジョブについては、該起動対象処理ジョブと現在の処理ジョブが共に関連する各処理領域群に対して、該処理領域群の該起動対象処理ジョブにおける状態と該処理領域群の現在の処理ジョブにおける状態が同じである場合、該起動対象ジョブを起動可能処理ジョブとすることができる。
【0137】
いくつかの実施例では、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップは、現在の処理ジョブの処理領域関係リストと各目標起動対象処理ジョブの処理領域関係リストに基づき、すべての目標起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップを含む。
【0138】
本願では、起動可能処理ジョブが存在するか否かを確認するときに、すべての起動対象ジョブが少なくとも1つの目標起動対象の処理ジョブを含む場合、すべての目標起動対象処理ジョブが起動可能処理ジョブを含むか否かのみを確認することができる。換言すれば、すべての目標起動対象処理ジョブのみから起動可能処理ジョブを検索、取得し、起動可能処理ジョブがすべての目標起動対象処理ジョブから由来する。すべての目標起動対象処理ジョブから少なくとも1つの起動可能処理ジョブを検索、取得すると、少なくとも1つの起動可能処理ジョブが存在すると確定することができ、それに対応して、すべての起動対象ジョブが起動可能処理ジョブを含むと確定することができる。
【0139】
いくつかの実施例では、半導体処理装置における各処理領域の処理領域群識別子をバイナリキー値対に対応付け、初期値は00であり、正順値は01であり、逆順値は10である。このような設定によれば、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップは、各起動対象処理ジョブの処理領域関係リストと現在の処理ジョブの処理領域関係リストに対してバイナリ排他的論理和演算をそれぞれ実行し、各起動対象処理ジョブの計算結果を得るステップと、起動対象処理ジョブの計算結果に11が含まれる場合、該起動対象処理ジョブを起動可能処理ジョブとすることはではないと確定し、起動対象処理ジョブの計算結果に11が含まれない場合、該起動対象処理ジョブが起動可能処理ジョブであると確定するステップと、を含む。
【0140】
本実施例では、1つの起動対象処理ジョブの処理領域関係リストと現在の処理ジョブの処理領域関係リストに対してバイナリ排他的論理和演算を実行する際に、該起動対象処理ジョブの処理領域関係リストにおける各処理領域群識別子に対し、該処理領域群識別子の値と現在の処理ジョブの処理領域関係リストにおける該処理領域群識別子の値についてバイナリ排他的論理和演算を実行する。これにより、該起動対象処理ジョブの複数の計算結果を得る。
【0141】
例えば、現在の処理ジョブの処理領域関係リストは{{AB:01}、{AC:01}、{AD:00}、{BC:01}、{BD:00}、{CD:00}}として表される。
【0142】
起動対象処理ジョブの処理領域関係リストは{{AB:01}、{AC:10}、{AD:00}、{BC:10}、{BD:00}、{CD:00}}として表される。
【0143】
起動対象処理ジョブの処理領域関係リストにおけるABの値である01と現在の処理ジョブの処理領域関係リストにおけるABの値である01に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果01を得る。
【0144】
起動対象処理ジョブの処理領域関係リストにおけるACの値である01と現在の処理ジョブの処理領域関係リストにおけるACの値である10に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果11を得る。
【0145】
起動対象処理ジョブの処理領域関係リストにおけるADの値である00と現在の処理ジョブの処理領域関係リストにおけるADの値である00に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果00を得る。BD、CDの値に対するバイナリ排他的論理和演算は上記と同様であり、計算結果はいずれも00である。
【0146】
起動対象処理ジョブの処理領域関係リストにおけるBCの値である10と現在の処理ジョブの処理領域関係リストにおけるBCの値である01に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果11を得る。
【0147】
得られたすべてのバイナリ排他的論理和演算結果には2つの11が含まれるため、該起動対象処理ジョブを起動可能処理ジョブとすることができないと確定する。
【0148】
ステップ104、すべての起動対象処理ジョブが前記起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての起動可能処理ジョブから目標起動可能処理ジョブを選択し、目標起動可能処理ジョブを起動する。
【0149】
本実施例では、第2の予め設定された規則に応じてランダムですべての起動可能処理ジョブから目標起動可能処理ジョブを選択するようにしてもよい。目標起動可能処理ジョブを起動すると、目標起動可能処理ジョブは現在の処理ジョブになる。
【0150】
本実施例のいくつかの選択可能な実現態様では、第2の予め設定された規則は、すべての起動可能処理ジョブから待ち時間が最も長い起動可能処理ジョブを目標起動可能処理ジョブとして選択することを含む。
【0151】
本実施例のいくつかの選択可能な実現態様では、現在の処理ジョブが存在しない場合、すべての起動対象処理ジョブのうち待ち時間が最も長い起動対象処理ジョブを起動するステップをさらに含む。例えば、ジョブを起動する必要があると決定する時刻に、すべての既に起動しているジョブの実行が完了すると、現在の処理ジョブが存在しない。すべての起動対象処理ジョブのうち待ち時間が最も長い起動対象処理ジョブを起動することができる。
【0152】
図4は本願の実施例に係る半導体処理装置の処理ジョブの起動方法の第2実施例のフローチャートを示しており、
図4に示すように、該方法は、ステップ401~ステップ404を含む。
【0153】
ステップ401、半導体処理装置の現在の処理ジョブの処理領域関係リストを生成し、現在の処理ジョブの処理領域関係リストが現在の処理ジョブに関連する処理領域群の処理領域群識別子と割り当て値を含む。
【0154】
本実施例では、半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するステップは、半導体処理装置における各処理領域に処理領域識別子を設定ステップと、半導体処理装置における複数の処理ユニットの配列順序に従って処理領域識別子を組み合わせ、各処理領域群の処理領域群識別子を得て、すべての処理領域群識別子を含む処理領域群識別子リストを生成するステップと、各処理領域群識別子に割り当てる値を初期値とするステップであって、初期値は該処理領域群識別子に対応する処理領域群が存在しないことを表すことに用いられるステップと、現在の処理ジョブに関連する処理領域群及びその状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値として、現在の処理ジョブの処理領域関係リストを得るステップであって、正順値は処理領域群識別子に対応する処理領域群が存在し且つ正順状態にあることを表すことに用いられ、逆順値は処理領域群識別子に対応する処理領域群が存在し且つ逆順状態にあることを表すことに用いられるステップとを含む。
【0155】
現在の処理ジョブの処理領域関係リストを生成する際に、まず、半導体処理装置における各処理領域に処理領域識別子を設定することができる。
【0156】
例えば、半導体処理装置は処理領域A、処理領域B、処理領域C、処理領域Dを含む。処理領域Aの処理領域識別子をAに設定し、処理領域Bの処理領域識別子をBに設定し、処理領域Cの処理領域識別子をCに設定し、処理領域Dの処理領域識別子をDに設定する。
【0157】
本実施例では、半導体処理装置における複数の処理ユニットの配列順序に従って処理領域識別子を組み合わせる際に、まず、半導体処理装置における複数の処理ユニットの配列順序に従って、半導体処理装置における複数の処理領域の配列順序、すなわち半導体処理装置における複数の処理領域の半導体処理装置での前後順番を決定してもよい。処理領域における処理ユニットの位置が前であるほど、処理領域の位置が前になる。
【0158】
洗浄機を例とし、すべての処理ユニットは前から順にTank1、Tank2、Tank3、Tank4、Tank5、Tank6、Tank7、Tank8である。
【0159】
Tank1-Tank2は処理領域Aに属し、Tank3-Tank6は処理領域Bに属し、Tank7-Tank8は処理領域Cに属する。
【0160】
複数の処理領域は前から順に処理領域A、処理領域B、処理領域Cである。
【0161】
処理領域の前からの順と処理領域識別子の前からの順とが一致する。したがって、処理領域の前からの順を確定すると、処理領域識別子の前からの順が確定される。その後、予め設定された正順組み合わせ方式で処理領域の処理領域識別子を組み合わせることにより、各処理領域群の処理領域群識別子が得られてもよい。
【0162】
予め設定された正順組み合わせ方式は、各処理領域識別子について、該処理領域識別子の後に少なくとも1つの他の処理領域識別子が存在する場合、該処理領域識別子を該処理領域識別子の後の他の各処理領域識別子とそれぞれ組み合わせることである。
【0163】
例えば、1番目の処理領域識別子はAであり、2番目の処理領域識別子はBであり、3番目の処理領域識別子はCであり、4番目の処理領域識別子はDである。すなわち複数の処理領域は前から順にA、B、C、Dである。
【0164】
処理領域識別子A、B、C、Dがいずれも該処理領域識別子の後の他の処理領域識別子である場合、AをB、C、Dのそれぞれと組み合わせることにより、処理領域群識別子AB、AC、ADが得られる。
【0165】
処理領域識別子B、C、Dがいずれも該処理領域識別子の後の他の処理領域識別子である場合、BをC、Dのそれぞれと組み合わせることにより、BC、BDが得られる。
【0166】
処理領域識別子C、Dが該処理領域識別子の後の他の処理領域識別子である場合、CとDを組み合わせることにより、CDが得られる。
【0167】
得られたすべての処理領域群の処理領域群識別子はAB、AC、AD、BC、BD、CDを含む。
【0168】
各処理領域群の処理領域群識別子を得た後、すべての処理領域群識別子を含む処理領域群識別子リストを生成してもよい。処理領域群識別子リストはcombineRegionNameと呼ばれてもよい。
【0169】
処理領域群識別子リストcombineRegionNameの構造はデータ構造におけるList構造である。
【0170】
例えば、得られたすべての処理領域群の処理領域群識別子は、AB、AC、AD、BC、BD、CDを含み、処理領域群識別子リストcombineRegionNameは、List<string>combineRegionName={AB、AC、AD、BC、BD、CD}として表されてもよい。
【0171】
すべての処理領域群識別子を含む処理領域群識別子リストを生成した後、処理領域群識別子に割り当てる値を初期値としてもよく、初期値は該処理領域群識別子に対応する処理領域群が存在しないことを表すことに用いられる。
【0172】
例えば、処理領域群識別子リストcombineRegionNameはList<string>combineRegionName={AB、AC、AD、BC、BD、CD}として表されてもよく、各処理領域群識別子に割り当てる値を初期値とし、初期値は00であり、得られたデータ構造は{{AB:00}、{AC:00}、{AD:00}、{BC:00}、{BD:00}、{CD:00}}として表される。
【0173】
その後、現在の処理ジョブに関連する処理領域群及びその状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、現在の処理ジョブの処理領域関係リストを得るようにしてもよい。正順値は処理領域群識別子に対応する処理領域群が存在し且つ正順状態にあることを表すことに用いられ、逆順値は処理領域群識別子に対応する処理領域群が存在し且つ逆順状態にあることを表すことに用いられる。
【0174】
本実施例では、1つの処理領域群識別子について、1つの処理領域群が該処理領域群識別子における2つの処理領域群識別子の各処理領域識別子にそれぞれ対応する処理領域を含む場合、該処理領域は該処理領域群識別子に対応する処理領域群と呼ばれてもよい。
【0175】
該処理領域群が現在の処理ジョブに関連する処理領域群である場合、該処理領域群が存在すると呼ばれてもよい。該処理領域群が現在の処理ジョブに関連する処理領域群ではない場合、該処理領域群が存在しないとしてもよい。
【0176】
現在の処理ジョブに関連する処理領域群の状態は現在の処理ジョブに関連する処理領域群の現在の処理ジョブにおける状態を指してもよい。
【0177】
現在の処理ジョブの処理領域関係リストにおける現在の処理ジョブに関連する処理領域群に属する各処理領域群識別子について、該処理領域群識別子の属する処理領域群の現在の処理ジョブにおける状態が正順状態である場合、該処理領域群識別子に割り当てる値を正順値とし、該処理領域群識別子の属する処理領域群の現在の処理ジョブにおける状態が逆順状態である場合、該処理領域群識別子に割り当てる値を逆順値とする。
【0178】
例えば、各処理領域群識別子に割り当てる値を初期値とし、初期値は00であり、得られたデータ構造は{{AB:00}、{AC:00}、{AD:00}、{BC:00}、{BD:00}、{CD:00}}として表される。仮に現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子がAB、ACを含む場合、処理領域識別子ABに対応する処理領域Aと処理領域Bで構成される処理領域群の現在の処理ジョブにおける状態が正順状態であり、処理領域識別子ACに対応する処理領域Aと処理領域Cで構成される処理領域群の現在の処理ジョブにおける状態が逆順状態である。これにより、ABに割り当てる値を正順値(例えば01)とし、ACに割り当てる値を逆順値(例えば10)とする。得られた現在の処理ジョブの処理領域関係リストは{{AB:01}、{AC:10}、{AD:00}、{BC:00}、{BD:00}、{CD:00}}として表される。
【0179】
図5を参照し、現在の処理ジョブに関連する処理領域群の処理領域群識別子を割り当てる流れの一例の概略図が示されている。
【0180】
図5に示すように、半導体処理装置の処理領域識別子シークエンスlistRegionNameを取得する。listRegionNameに従って半導体処理装置の処理領域群識別子リストcombineRegionNameを取得する。各処理領域群識別子に割り当てる値を初期値とする。現在のジョブの処理領域識別子シークエンスListrouteRegionSortを取得する。現在の処理ジョブの処理領域識別子シークエンスListrouteRegionSortは現在の処理ジョブに関連する各処理領域の処理領域識別子を含む。ListrouteRegionSortに従って現在の処理ジョブの処理領域群識別子リストcurrentregionnameを取得する。現在の処理ジョブの処理領域群識別子リストcurrentregionnameは現在の処理ジョブに関連する各処理領域群の処理領域群識別子を含む。
【0181】
currentregionnameにおける処理領域群識別子をトラバースアクセスすることができる。1つの処理領域群識別子にアクセスすると、該処理領域群識別子は現在アクセスしている処理領域群識別子である。
【0182】
combineRegionNameに現在アクセスしているcurrentregionnameにおける処理領域群識別子が含まれているか否かを判断する。combineRegionNameに現在アクセスしているcurrentregionnameにおける処理領域群識別子が含まれる場合、現在アクセスしているcurrentregionnameにおける処理領域群識別子に対応する処理領域群の現在の処理ジョブにおける状態が正順状態であるか否かを判断する。
【0183】
肯定の場合、現在アクセスしているcurrentregionnameにおける処理領域群識別子に01を割り当てる。否定の場合、現在アクセスしているcurrentregionnameにおける処理領域群識別子に10を割り当てる。
【0184】
combineRegionNameに現在アクセスしているcurrentregionnameにおける処理領域群識別子が含まれない場合、currentregionnameにおける次の処理領域群識別子にアクセスする。
【0185】
ステップ402、すべての起動対象処理ジョブを確定し、各起動対象処理ジョブの処理領域関係リストを生成し、起動対象処理ジョブの処理領域関係リストに起動対象処理ジョブが関連する処理領域群の処理領域群識別子と割り当て値を含む。
【0186】
本実施例では、各起動対象処理ジョブの処理領域関係リストを生成するステップは、各起動対象処理ジョブに関連する処理領域群及びその状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、各起動対象処理ジョブの処理領域関係リストを得るステップを含む。
【0187】
起動対象処理ジョブに関連する処理領域群及びその正状態に従って、起動対象処理ジョブの処理領域関係リストを得るプロセスは上記現在の処理ジョブに関連する処理領域群及びその状態に従って、現在の処理ジョブの処理領域関係リストを得るプロセスと類似する。上記現在の処理ジョブに関連する処理領域群及びその状態に従って、現在の処理ジョブの処理領域関係リストを得るプロセスを参照して、各起動対象処理ジョブに関連する処理領域群及びその状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、各起動対象処理ジョブの処理領域関係リストを得るようにしてもよい。
【0188】
ステップ403、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否か第1の予め設定された規則に応じて確認する。
【0189】
本実施例では、半導体処理装置における各処理領域の処理領域群識別子をバイナリキー値対に対応付け、初期値は00であり、正順値は01であり、逆順値は10である。このような設定によれば、現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するステップは、各起動対象処理ジョブの処理領域関係リストと現在の処理ジョブの処理領域関係リストに対してバイナリ排他的論理和演算をそれぞれ実行し、各起動対象処理ジョブの計算結果を得るステップと、起動対象処理ジョブの計算結果に11が含まれる場合、該起動対象処理ジョブを起動可能処理ジョブとすることがではないと確定し、起動対象処理ジョブの計算結果に11が含まれない場合、該起動対象処理ジョブを起動可能処理ジョブとすることができると確定するステップと、を含む。
【0190】
本実施例では、1つの起動対象処理ジョブの処理領域関係リストと現在の処理ジョブの処理領域関係リストに対してバイナリ排他的論理和演算を実行する際に、該起動対象処理ジョブの処理領域関係リストにおける各処理領域群識別子に対し、該処理領域群識別子の値と現在の処理ジョブの処理領域関係リストにおける該処理領域群識別子の値についてバイナリ排他的論理和演算を実行する。これにより、該起動対象処理ジョブの複数の計算結果を得る。
【0191】
例えば、現在の処理ジョブの処理領域関係リストは{{AB:01}、{AC:01}、{AD:00}、{BC:01}、{BD:00}、{CD:00}}として表される。
【0192】
1つの起動対象処理ジョブの処理領域関係リストは{{AB:01}、{AC:10}、{AD:00}、{BC:10}、{BD:00}、{CD:00}}として表される。
【0193】
起動対象処理ジョブの処理領域関係リストにおけるABの値である01と現在の処理ジョブの処理領域関係リストにおけるABの値である01に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果01を得る。
【0194】
起動対象処理ジョブの処理領域関係リストにおけるACの値である01と現在の処理ジョブの処理領域関係リストにおけるACの値である10に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果11を得る。
【0195】
起動対象処理ジョブの処理領域関係リストにおけるADの値である00と現在の処理ジョブの処理領域関係リストにおけるADの値である00に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果00を得る。BD、CDの値に対するバイナリ排他的論理和演算は上記と同様であり、計算結果はいずれも00である。
【0196】
起動対象処理ジョブの処理領域関係リストにおけるBCの値、すなわち10と現在の処理ジョブの処理領域関係リストにおけるBCの値、すなわち01に対してバイナリ排他的論理和演算を行い、バイナリ排他的論理和演算結果11を得る。
【0197】
得られたすべてのバイナリ排他的論理和演算結果は2つの11を含むため、該起動対象処理ジョブを起動可能処理ジョブとすることができないと確定する。
【0198】
ステップ404、すべての起動対象処理ジョブが起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての起動可能処理ジョブから目標起動可能処理ジョブを選択し、目標起動可能処理ジョブを起動する。
【0199】
ステップ404の実行プロセスは上記したステップ104の実行プロセスと類似し、ステップ404の実行プロセスは上記したステップ104の実行プロセスを参照してもよい。
【0200】
図6を参照し、第1洗浄機の目標起動可能処理ジョブを起動する流れの一例の概略図が示されている。
【0201】
実行中の現在のJobが存在するか否かを判断する。実行中の現在のJobが存在するか否かを判断することは、実行状態にある現在のJobが存在するか否かを判断することに相当する。実行中の現在のJobは対象材料が処理ユニットに処理操作を受けており、且つ起動時間が最も遅いジョブを指してもよい。
【0202】
実行中の現在のJobが存在する場合、実行中の現在のJobのT3-T6処理領域、すなわちB処理領域でのシリアル/パラレルモードを取得する。
【0203】
実行中の現在のJobのT3-T6処理領域でのシリアル/パラレルモードが空であるか否かを判断する。実行中の現在のJobのT3-T6処理領域でのシリアル/パラレルモードが空ではない場合、T3-T6処理領域でのB処理領域のシリアル/パラレルモードが現在のJobのT3-T6処理領域でのシリアル/パラレルモードと一致する起動対象Jobを検索する。シリアル/パラレルモードが一致する列JobLisT1を生成する。T3-T6処理領域のB処理領域でのシリアル/パラレルモードが現在のJobT3-T6処理領域でのシリアル/パラレルモードと一致する起動対象Jobが存在しない場合、JobLisT1を空にする。JobLisT1が空である場合、目標起動可能処理ジョブが存在しないと判定する。T3-T6処理領域のB処理領域でのシリアル/パラレルモードが現在のJobT3-T6処理領域でのシリアル/パラレルモードと一致する起動対象Jobが少なくとも1つ存在する場合、JobLisT1を空にしない。JobLisT1が空ではない場合、実行中の現在のJobの処理領域関係リストを取得する。実行中の現在のJobの処理領域関係リストとJobLisT1における起動対象ジョブの処理領域関係リストとに従って、起動可能Jobを検索する。換言すれば、すべてのT3-T6処理領域のB処理領域でのシリアル/パラレルモードが現在のJobのT3-T6処理領域でのシリアル/パラレルモードと一致する起動対象Jobにおいて、起動可能Jobを検索する。
【0204】
起動可能処理ジョブリストJobList2を生成する。起動可能Jobが検出されなかった場合、JobList2は空である。JobLisT2が空である場合、目標起動可能処理ジョブが存在しないと判定する。少なくとも1つの起動可能Jobが検出された場合、JobList2は空ではなく、JobList2は検出されたすべての起動可能Jobを含む。JobList2が空ではない場合、JobList2における待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動する。
【0205】
実行中の現在のJobが存在し、且つ実行中の現在のJobのT3-T6処理領域であるB処理領域でのシリアル/パラレルモードが空である場合、T3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobに関するリストJoblist3を生成する。T3-T6処理領域のシリアル/パラレルモードが空である起動対象Jobが存在しない場合、Joblist3は空である。JobLisT3が空である場合、目標起動可能処理ジョブが存在しないと判定する。T3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobが少なくとも1つ存在する場合、Joblist3は空ではない。Joblist3が空ではない場合、実行中の現在のJobの処理領域関係リストを取得する。実行中の現在のJobとJoblist3におけるT3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobの処理領域関係リストとに従って、起動可能Jobを検索する。起動可能処理ジョブリストJoblist4を生成する。T3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobの起動可能Jobが検出されなかった場合、Joblist4は空である。JobLisT4が空である場合、目標起動可能処理ジョブが存在しないと判定する。T3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobの起動可能Jobが少なくとも1つ検出された場合、Joblist4は空ではない。
【0206】
Joblist4が空ではない場合、Joblist4におけるT3-T6処理領域でのシリアル/パラレルモードが空である起動対象Jobのすべての起動可能Jobのうち待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動する。
【0207】
実行中の現在のJobが存在しない場合、NewJobIDが存在するか否かを判断する。NewJobIDは半導体処理装置が新たに起動した処理ジョブを示す。半導体処理装置が新たに起動した処理ジョブは、すでに起動しているジョブのうち対象材料がまだシェルフから離れず且つ起動時間が最も遅いジョブを指してもよい。実行中の現在のJobが存在せず、且つNewJobIDが存在する場合、NewJobIDを現在のJobとする。
【0208】
NewJobIDが存在する場合、NewJobIDの処理領域関係リストを取得する。NewJobIDと、T3-T6処理領域でのシリアル/パラレルモードがNewJobIDのT3-T6処理領域でのシリアル/パラレルモードと一致する各起動対象ジョブの処理領域関係リストとに従って、起動可能Jobを検索する。起動可能処理ジョブリストJoblist5を生成する。起動可能Jobが検出されなかった場合、Joblist5は空である。JobLisT5が空である場合、目標起動可能処理ジョブが存在しないと判定する。少なくとも1つの起動可能Jobが検出された場合、Joblist5は空ではない。Joblist5が空ではない場合、Joblist5における待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動し、NewJobIDを更新する。起動された目標起動可能処理ジョブはシェルフから離れておらず、且つ起動時間が最も遅いため、新たなNewJobIDとなる。
【0209】
NewJobIDが存在しない場合、待ち時間が最も長い起動対象Jobが存在するか否かを判断する。待ち時間が最も長い起動対象Jobが存在しない場合、目標起動可能処理ジョブが存在しないと判定する。待ち時間が最も長い起動対象Jobが存在する場合、待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動し、NewJobIDを更新する。
【0210】
図7を参照し、第2洗浄機における目標起動可能処理ジョブを起動する流れの一例の概略図が示されている。
【0211】
実行中の現在のJobが存在するか否かを判断する。実行中の現在のJobが存在するか否かを判断することは、実行状態にある現在のJobが存在するか否かを判断することに相当する。実行中の現在のJobは対象材料が処理ユニットに処理操作を受けており、且つ起動時間が最も遅いジョブを指してもよい。
【0212】
実行中の現在のJobが存在する場合、実行中の現在のJobの処理領域関係リストを取得する。実行中の現在のJobの処理領域関係リストと各起動対象ジョブの処理領域関係リストとに従って、起動可能Jobを検索する。起動可能処理ジョブリストを生成する。起動可能Jobが検出されなかった場合、起動可能処理ジョブリストは空である。起動可能処理ジョブリストが空である場合、目標起動可能処理ジョブが存在しないと判定する。少なくとも1つの起動可能Jobが検出された場合、起動可能処理ジョブリストは空ではなく、検出されたすべての起動可能Jobを含む。起動可能処理ジョブリストが空ではない場合、起動可能処理ジョブリストにおける待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動する。
【0213】
実行中の現在のJobが存在しない場合、NewJobIDが存在するか否かを判断する。NewJobIDが存在する場合、NewJobIDの処理領域関係リストを取得する。NewJobIDの処理領域関係リストと各起動対象ジョブの処理領域関係リストとに従って、起動可能Jobを検索する。起動可能処理ジョブリストを生成する。起動可能Jobが検出されなかった場合、起動可能処理ジョブリストは空である。起動可能処理ジョブリストが空である場合、目標起動可能処理ジョブが存在しないと判定する。少なくとも1つの起動可能Jobが検出された場合、起動可能処理ジョブリストは空ではなく、検索されたすべての起動可能Jobを含む。起動可能処理ジョブリストが空ではない場合、起動可能処理ジョブリストにおける待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動し、NewJobIDを更新する。
【0214】
NewJobIDが存在しない場合、待ち時間が最も長い起動対象Jobが存在するか否かを判断する。待ち時間が最も長い起動対象Jobが存在しない場合、目標起動可能処理ジョブが存在しないと判定する。待ち時間が最も長い起動対象Jobが存在する場合、待ち時間が最も長い起動可能Jobを目標起動可能処理ジョブとして選択し、目標起動可能処理ジョブを起動し、NewJobIDを更新する。
【0215】
図8を参照し、本願の実施例に係る半導体処理装置の処理ジョブの起動装置の構造ブロック図が示されている。半導体処理装置の処理ジョブの起動装置は、生成ユニット801と、第1決定ユニット802と、第2決定ユニット803と、起動ユニット804とを含む。
【0216】
生成ユニット801は半導体処理装置の現在の処理ジョブの処理領域関係リストを生成するように構成され、現在の処理ジョブの処理領域関係リストが現在の処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む。
【0217】
第1決定ユニット802はすべての起動対象処理ジョブを確定し、各起動対象処理ジョブの処理領域関係リストを生成するように構成され、起動対象処理ジョブの処理領域関係リストが起動対象処理ジョブに関連するすべての処理領域群の処理領域群識別子を含む。
【0218】
第2決定ユニット803は現在の処理ジョブの処理領域関係リストと各起動対象処理ジョブの処理領域関係リストに基づき、すべての起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するように構成される。
【0219】
起動ユニット804は、すべての起動対象処理ジョブが起動可能処理ジョブを含む場合、第2の予め設定された規則に応じてすべての起動可能処理ジョブから目標起動可能処理ジョブを選択し、目標起動可能処理ジョブを起動するように構成される。
【0220】
いくつかの実施例では、第1決定ユニット802は、さらに、現在の処理ジョブが複数の処理領域のうちの1つの予め設定された処理領域に関連する場合、現在の処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプを確定し、すべての起動対象処理ジョブにおいて予め設定された処理領域に関連する起動対象処理ジョブを確定し、予め設定された処理領域に関連する各起動対象処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプを確定し、予め設定された処理領域に関連し、且つ予め設定された処理領域に対応するシリアル/パラレルタイプが、現在の処理ジョブにおいて予め設定された処理領域に対応するシリアル/パラレルタイプと一致する起動対象処理ジョブを目標起動対象処理ジョブとして確定し、各目標起動対象処理ジョブの処理領域関係リストを生成するように構成される。
【0221】
いくつかの実施例では、第2決定ユニット803は、さらに、現在の処理ジョブの処理領域関係リストと各目標起動対象処理ジョブの処理領域関係リストに基づき、すべての目標起動対象処理ジョブが起動可能処理ジョブを含むか否かを第1の予め設定された規則に応じて確認するように構成される。
【0222】
いくつかの実施例では、第2の予め設定された規則は、すべての起動可能処理ジョブから待ち時間が最も長い起動可能処理ジョブを目標起動可能処理ジョブとして選択することを含む。
【0223】
いくつかの実施例では、現在の処理ジョブは半導体処理装置の実行中の処理ジョブ、半導体処理装置が新たに起動した処理ジョブのうちの1つである。
【0224】
いくつかの実施例では、生成ユニット801は、さらに、各処理領域に処理領域識別子を設定し、複数の処理ユニットの配列順序に従って、処理領域識別子を組み合わせ、各処理領域群の処理領域群識別子を得て、すべての処理領域群識別子を含む処理領域群識別子リストを生成し、各処理領域群識別子に割り当てる値を該処理領域群識別子に対応する処理領域群が存在しないことを表すことに用いられる初期値とし、現在の処理ジョブに関連する処理領域群及びその正逆順状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、現在の処理ジョブの処理領域関係リストを得るように構成され、正順値は該処理領域群識別子に対応する処理領域群が存在しかつ正順状態にあることを表すことに用いられ、逆順値は該処理領域群識別子に対応する処理領域群が存在し、逆順状態にあることを表すことに用いられる。
【0225】
いくつかの実施例では、第1決定ユニット802は、さらに、各起動対象処理ジョブに関連する処理領域群及びその状態に従って、処理領域群識別子リスト中の対応する処理領域群識別子に割り当てる値を正順値又は逆順値とし、各起動対象処理ジョブの処理領域関係リストを得るように構成される。
【0226】
いくつかの実施例では、第1の予め設定された規則は、起動対象処理ジョブと現在の処理ジョブが共に処理領域群に関連するが、該処理領域群の該起動処理ジョブと現在の処理ジョブにおける状態が異なる場合、該起動対象処理ジョブを起動可能処理ジョブとせず、それ以外の場合、該起動対象処理ジョブ起動可能処理ジョブとなることである。
【0227】
いくつかの実施例では、各処理領域群識別子をバイナリキー値対に対応付け、初期値は00であり、正順値は01であり、逆順値は10である。第2決定ユニット803は、さらに、対各起動対象処理ジョブの処理領域関係リストと現在の処理ジョブの処理領域関係リストに対してバイナリ排他的論理和演算をそれぞれ実行し、各起動対象処理ジョブの計算結果を得て、起動対象処理ジョブの計算結果に11が含まれる場合、該起動対象処理ジョブを起動可能処理ジョブとすることがではないと確定し、起動対象処理ジョブの計算結果に11が含まれない場合、該起動対象処理ジョブを起動可能処理ジョブとすることができると確定するように構成される。
【0228】
当業者は、明細書を検討し、本明細書に開示された出願を実施することにより、本願の他の実施形態を容易に想到するであろう。本願は本願のあらゆる変形、用途又は適応的変化をカーバすることを意図しており、これらの変形、用途又は適応的変化は本願の一般原理に従い、本願に開示されていない技術分野における公知常識又は慣用技術的手段を含む。本明細書及び実施形態は例示的なものにすぎず、本願の真の範囲及び精神は以下の請求項によって示される。
【0229】
本願は、上記で説明され図面に示された正確な構造に限定されず、様々な修正や変更がその範囲を逸脱することなく実施され得ることを理解されたい。出願の範囲は添付された請求項のみによって限定される。
【国際調査報告】