(57)【特許請求の範囲】
【請求項１】
データ書込装置と通信プロトコル変換装置を有し、チップの不揮発性メモリに製造管理情報の書込を行う製造設備において、
前記データ書込装置は、
所定の文字コード圧縮方法を用いて前記製造管理情報に相当する入力文字列から圧縮文字列データを生成する演算部と、
前記演算部で実行される各種プログラムを格納する記憶部と、
前記通信プロトコル変換装置を介して前記圧縮文字列データを前記不揮発性メモリに書き込む書込部と、
を含み、
前記文字コード圧縮方法は、
ｍ通りの基本文字コードで表される前記入力文字列の文字種を集約ないしは削減してｘ通り（ただしｘ＜ｍ）の新文字コードで表される新文字列に変換する第１ステップと、
前記新文字列をｙ文字ずつに区切り、ｎ文字目（ただしｎ＝１、２、…、ｙ）の新文字コードにｘｎ−１を各々乗算した値を全て足し合わせて、ｙ文字分でｚビット（ただしｘｙ＜２ｚ）の前記圧縮文字列データを生成する第２ステップと、
を有することを特徴とする製造設備。
【請求項２】
前記第１ステップは、
前記入力文字列に含まれる英文字（「Ａ」〜「Ｚ」、「ａ」〜「ｚ」）に対して大文字／小文字を区別することなく２６文字分の新文字コードを割り当てるステップと、
前記入力文字列に含まれる数字（「０」〜「９」）に対して１０文字分の新文字コードを割り当てるステップと、
を含むことを特徴とする請求項１に記載の製造設備。
【請求項３】
前記新文字コードは、１０進表記で０〜３９の値を取り得ることを特徴とする請求項２に記載の製造設備。
【請求項４】
前記新文字コードは、０がＮＵＬ文字であり、１〜２６が英文字であり、３０〜３９が数字であることを特徴とする請求項３に記載の製造設備。
【請求項５】
前記新文字コードは、２７〜２９が記号文字であることを特徴とする請求項４に記載の製造設備。
【請求項６】
前記データ書込装置は、前記入力文字列の入力を受け付けるヒューマンインタフェイス部をさらに含むことを特徴とする請求項１〜請求項５のいずれか一項に記載の製造設備。
【請求項７】
前記データ書込装置は、ウェハ上やＩＣの表印、或いは、梱包のラベルやバーコードを自動的に読み取って前記入力文字列を取得する読取装置をさらに含むことを特徴とする請求項１〜請求項５のいずれか一項に記載の製造設備。
【請求項８】
演算部、記憶部、及び、書込部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを請求項１〜請求項７のいずれか一項に記載の製造設備に用いられるデータ書込装置として機能させることを特徴とするデータ書込プログラム。
【請求項９】
データ読出装置と通信プロトコル変換装置を有し、チップの不揮発性メモリに格納されている製造管理情報の読出を行う製造設備において、
前記データ読出装置は、
前記通信プロトコル変換装置を介して前記不揮発メモリから所定の文字コード圧縮方法によって生成された圧縮文字列データを読み出す読出部と、
所定の文字コード復元方法を用いて前記圧縮文字列データから前記製造管理情報に相当する出力文字列を生成する演算部と、
前記演算部で実行される各種プログラムを格納する記憶部と、
を含み、
前記文字コード圧縮方法は、
ｍ通りの基本文字コードで表される入力文字列の文字種を集約ないしは削減してｘ通り（ただしｘ＜ｍ）の新文字コードで表される新文字列に変換する第１ステップと、
前記新文字列をｙ文字ずつに区切り、ｎ文字目（ただしｎ＝１、２、…、ｙ）の新文字コードにｘｎ−１を各々乗算した値を全て足し合わせて、ｙ文字分でｚビット（ただしｘｙ＜２ｚ）の前記圧縮文字列データを生成する第２ステップと、
を有し、
前記文字コード復元方法は、
初期値として前記圧縮文字列データが格納されるテンポラリデータのｘによる除算とその商による前記テンポラリデータの生成を（ｙ−１）回繰り返し、各回の除算で各々得られた余りと（ｙ−１）回目の除算で得られた商を前記新文字コードで表される一時文字列として取得する第３ステップと、
前記一時文字列を前記基本文字コードで表される前記出力文字列に変換する第４ステップと、
を有することを特徴とする製造設備。
【請求項１０】
前記第４ステップは、前記出力文字列が所定長に達したとき、或いは、前記一時文字列でＮＵＬ文字が確認されたときにフローを終了することを特徴とする請求項９に記載の製造設備。
【請求項１１】
読出部、演算部、及び、記憶部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを請求項９または請求項１０に記載の製造設備に用いられるデータ読出装置として機能させることを特徴とするデータ読出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字コード圧縮方法及び文字コード復元方法に関するものである。
【背景技術】
【０００２】
近年、半導体装置の量産工程においては、チップ毎に小容量の不揮発性メモリ（ＯＴＰＲＯＭ［One Time Programmable Read Only Memory］など）を組み込んでおき、各々にチップ固有の製造管理情報（ロット番号、ウェハ番号、ウェハ上における座標情報など）を格納しておくことが要求されている。
【０００３】
なお、本発明に関連する従来技術の一例としては、特許文献１を挙げることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３１８６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、コンピュータ上で文字情報（英数字など）を扱う際には、一般にＡＳＣＩＩ［American Standard Code for Information Interchange］文字コードが用いられる。しかしながら、ＡＳＣＩＩ文字コードは、一文字あたり７ビット（または８ビット）の記憶容量を必要とする。そのため、チップ固有の製造管理情報として多くの文字情報を記憶しようとすると、不揮発性メモリの大容量化（延いては半導体装置のコストアップ）が招かれるという問題があった。
【０００６】
本発明は、本願の発明者により見出された上記の問題点に鑑み、限られた記憶容量に多くの文字情報を記憶させることのできる文字コード圧縮方法及び文字コード復元方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係る文字コード圧縮方法は、ｍ通りの基本文字コードで表される入力文字列の文字種を集約ないしは削減してｘ通り（ただしｘ＜ｍ）の新文字コードで表される新文字列に変換する第１ステップと、前記新文字列をｙ文字ずつに区切り、ｎ文字目（ただしｎ＝１、２、…、ｙ）の新文字コードにｘｎ−１を各々乗算した値を全て足し合わせて、ｙ文字分でｚビット（ただしｘｙ＜２ｚ）の圧縮文字列データを生成する第２ステップと、を有する構成（第１の構成）とされている。
【０００８】
なお、上記第１の構成から成る文字コード圧縮方法において、前記第１ステップは、前記入力文字列に含まれる英文字（「Ａ」〜「Ｚ」、「ａ」〜「ｚ」）に対して大文字／小文字を区別することなく２６文字分の新文字コードを割り当てるステップと、前記入力文字列に含まれる数字（「０」〜「９」）に対して１０文字分の新文字コードを割り当てるステップとを含む構成（第２の構成）にするとよい。
【０００９】
また、上記第２の構成から成る文字コード圧縮方法において、前記新文字コードは、１０進表記で０〜３９の値を取り得る構成（第３の構成）にするとよい。
【００１０】
また、上記第３の構成から成る文字コード圧縮方法において、前記新文字コードは、０がＮＵＬ文字であって、１〜２６が英文字であって、３０〜３９が数字である構成（第４の構成）にするとよい。
【００１１】
また、上記第４の構成から成る文字コード圧縮方法において、前記新文字コードは、２７〜２９が記号文字である構成（第５の構成）にするとよい。
【００１２】
また、本発明に係る文字コード復元方法は、上記した第１〜第５いずれかの構成から成る文字コード圧縮方法によって生成された前記圧縮文字列データから前記基本文字コードで表される出力文字列を復元するものであって、初期値として前記圧縮文字列データが格納されるテンポラリデータのｘによる除算とその商による前記テンポラリデータの生成を（ｙ−１）回繰り返し、各回の除算で各々得られた余りと（ｙ−１）回目の除算で得られた商を前記新文字コードで表される一時文字列として取得する第１ステップと、前記一時文字列を前記出力文字列に変換する第２ステップと、を有する構成（第６の構成）とされている。
【００１３】
また、上記第６の構成から成る文字コード復元方法において、前記第２ステップは、前記出力文字列が所定長に達したとき、或いは、前記一時文字列でＮＵＬ文字が確認されたときにフローを終了する構成（第７の構成）にするとよい。
【００１４】
また、本発明に係るデータ書込装置は、上記第１〜第５いずれかの構成から成る文字コード圧縮方法を用いて前記入力文字列から前記圧縮文字列データを生成する演算部と、前記演算部で実行される各種プログラムを格納する記憶部と、前記圧縮文字列データを外部メモリに書き込む書込部と、を有する構成（第８の構成）とされている。
【００１５】
また、本発明に係るデータ書込プログラムは、演算部、記憶部、及び、書込部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを上記第８の構成から成るデータ書込装置として機能させる構成（第９の構成）とされている。
【００１６】
また、本発明に係るデータ読出装置は、外部メモリから圧縮文字列データを読み出す読出部と、上記第６または第７の構成から成る文字コード復元方法を用いて前記圧縮文字列データから出力文字列を生成する演算部と、前記演算部で実行される各種プログラムを格納する記憶部と、を有する構成（第１０の構成）とされている。
【００１７】
また、本発明に係るデータ読出プログラムは、読出部、演算部、及び、記憶部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを上記第１０の構成から成るデータ読出装置として機能させる構成（第１１の構成）とされている。
【発明の効果】
【００１８】
本発明によれば、限られた記憶容量に多くの文字情報を記憶させることのできる文字コード圧縮方法及び文字コード復元方法を提供することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】文字コード圧縮方法のフローチャート
【図２】ＡＳＣＩＩ文字コード表
【図３】新文字コード表
【図４】文字コード圧縮処理の具体例を示す概念図
【図５】文字コード復元方法のフローチャート
【図６】文字コード復元処理の具体例を示す概念図
【図７Ａ】第１のアプリケーション例を示すブロック図
【図７Ｂ】第２のアプリケーション例を示すブロック図
【発明を実施するための形態】
【００２０】
＜文字コード圧縮方法＞
図１は、文字コード圧縮方法のフローチャートである。本フローチャートで例示される文字コード圧縮方法は、例えば、所定のプログラミング言語（Ｃ言語など）を用いて記述されたコンピュータプログラムとして具現化することが可能である。
【００２１】
フローが開始されると、ステップＳ１０１では、図２のＡＳＣＩＩ文字コードで表される入力文字列（lot_name）の取得が行われ、その後、フローがステップＳ１０２に進められる。ＡＳＣＩＩ文字コードは、７ビット（または８ビット）の基本文字コードであり、１０進表記で０〜１２７の値を取り得る。ＡＳＣＩＩ文字コードの内容としては、０〜３１及び１２７が制御文字（コントロールコード）に割り当てられており、３２〜１２６が印刷可能文字（英文字、数字、記号文字）に割り当てられている。
【００２２】
ステップＳ１０２では、各種パラメータの初期化（ｉ＝０、ｊ＝０、ｋ＝０）が行われた後、フローがステップＳ１０３に進められる。
【００２３】
ステップＳ１０３では、パラメータｉが入力文字列（lot_name）の文字列長ｌｅｎよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ１０４に進められ、ノー判定が下された場合にはフローがステップＳ１１１に進められる。なお、文字列長ｌｅｎは、Ｃ言語のｓｔｒｌｅｎ関数などを用いて容易に取得することが可能である。
【００２４】
ステップＳ１０３でイエス判定が下された場合、ステップＳ１０４では、入力文字列のｉ文字目（lot_name[i]）が数字（「０」〜「９」）であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ１０５に進められ、ノー判定が下された場合にはフローがステップＳ１０６に進められる。
【００２５】
ステップＳ１０４でイエス判定が下された場合、ステップＳ１０５では、入力文字列のｉ文字目（数字（「０」〜「９」））に相当するＡＳＣＩＩコード（４８〜５７）から１８を差し引いた値（lot_name[i]-18）が新文字コード（３０〜３９）として算出され、この新文字コード（３０〜３９）が新文字列のｊ文字目（new_lot_name[j]）としてレジスタに一時格納される。そして、パラメータｊが１つインクリメントされた後、フローがステップＳ１１０に進められる。
【００２６】
ステップＳ１０４でノー判定が下された場合、ステップＳ１０６では、入力文字列のｉ文字目（lot_name[i]）が英大文字（「Ａ」〜「Ｚ」）であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ１０７に進められ、ノー判定が下された場合にはフローがステップＳ１０８に進められる。
【００２７】
ステップＳ１０６でイエス判定が下された場合、ステップＳ１０７では、入力文字列のｉ文字目（英大文字（「Ａ」〜「Ｚ」））に相当するＡＳＣＩＩコード（６５〜９０）から６４を差し引いた値（lot_name[i]-64）が新文字コード（１〜２６）として算出され、この新文字コード（１〜２６）が新文字列のｊ文字目（new_lot_name[j]）としてレジスタに一時格納される。そして、パラメータｊが１つインクリメントされた後、フローがステップＳ１１０に進められる。
【００２８】
ステップＳ１０６でノー判定が下された場合、ステップＳ１０８では、入力文字列のｉ文字目（lot_name[i]）が英小文字（「ａ」〜「ｚ」）であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ１０９に進められ、ノー判定が下された場合にはフローがステップＳ１１０に進められる。
【００２９】
ステップＳ１０８でイエス判定が下された場合、ステップＳ１０９では、入力文字列のｉ文字目（英小文字（「ａ」〜「ｚ」））に相当するＡＳＣＩＩコード（９７〜１２２）から９６を差し引いた値（lot_name[i]-96）が新文字コード（１〜２６）として算出されて、この新文字コード（１〜２６）が新文字列のｊ文字目（new_lot_name[j]）としてレジスタに一時格納される。そして、パラメータｊが１つインクリメントされた後、フローがステップＳ１１０に進められる。
【００３０】
ステップＳ１０５、ステップＳ１０７、及び、ステップＳ１０９での文字コード変換処理が完了した場合、或いは、ステップＳ１０８でノー判定が下された場合、ステップＳ１１０では、パラメータｉが１つインクリメントされた後、フローがステップＳ１０３に戻される。そして、以後、ステップＳ１０３でイエス判定が下されるまで、言い換えれば、入力文字列（lot_name）から新文字列（new_lot_name）への変換が完了するまで、ステップＳ１０３〜ステップＳ１１０のフローが繰り返される。
【００３１】
従って、ステップＳ１０３〜ステップＳ１１０のフローが繰り返される間に、入力文字列（lot_name）に含まれる数字（「０」〜「９」）に対しては、ステップＳ１０５で１０文字分の新文字コード（３０〜３９）が割り当てられ、入力文字列（lot_name）に含まれる英文字（「Ａ」〜「Ｚ」、「ａ」〜「ｚ」）に対しては、ステップＳ１０７及びステップＳ１０９で大文字／小文字を区別することなく２６文字分の新文字コード（１〜２６）が割り当てられる。一方、入力文字列（lot_name）に含まれる記号文字については、ステップＳ１０８でのノー判定によって新文字列（new_lot_name）から除外される。
【００３２】
すなわち、図１の文字コード圧縮方法を大局的に見た場合、ステップＳ１０１〜ステップＳ１１０は、１２８通りのＡＳＣＩＩコードで表される入力文字列（lot_name）の文字種を集約ないしは削減して４０通りの新文字コードで表される新文字列（new_lot_name）に変換する第１ステップに相当する。
【００３３】
図３は、新文字コード表の一例である。本例の新文字コードは、４０通りの値（１０進表記で０〜３９）を取り得る。新文字コードの内容としては、０がＮＵＬ文字に割り当てられており、１〜２６が英文字（大文字）に割り当てられており、３０〜３９が数字に割り当てられている。ただし、新文字コードにおける文字の割り当ては、これに限定されるものではない。
【００３４】
また、先述のステップＳ１０１〜ステップＳ１１０では、入力文字列（lot_name）から記号文字を全て除外する動作例を挙げて説明を行ったが、新文字コードの未使用値（２７〜２９）を積極的に活用すれば、新文字コードに最大３種類の記号文字を割り当てることも可能である。例えば、入力文字列（lot_name）に含まれる記号文字のうち、「−」（ＡＳＣＩＩコード（４５））を新文字コード（２７）に変換する場合には、ステップＳ１０３〜ステップＳ１１０のループ中に、入力文字列（lot_name[i]）のｉ文字目が「−」であるか否かを判定するステップと、当該ステップでイエス判定が下されたときにＡＳＣＩＩコードから１８を差し引いた値（lot_name[i]-18）を新文字コードとして算出するステップと、を追加すればよい。その余の記号文字についても同様である。
【００３５】
図１に戻り、文字コード圧縮方法の説明を続ける。ステップＳ１０３でノー判定が下された場合、ステップＳ１１１では、新文字列（new_lot_name）のｊ文字目以降に０（ＮＵＬ文字に相当）が入力され、その後、フローがステップＳ１１２に進められる。
【００３６】
ステップＳ１１２では、パラメータｋが最大データ長ｋｍａｘよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ１１３に進められ、ノー判定が下された場合にはフローがステップＳ１１５に進められる。
【００３７】
ステップＳ１１２でイエス判定が下された場合、ステップＳ１１３では、圧縮文字列データ（otpLotDat）の生成処理が行われた後、フローがステップＳ１１４に進められる。具体的に述べると、ステップＳ１１３では、新文字列の３ｋ文字目（new_lot_name[3k]）と、新文字列の（３ｋ＋１）文字目に４０を乗算した値（new_lot_name[3k+1]*40）と、新文字列の（３ｋ＋２）文字目に１６００を乗算した値（new_lot_name[3k+2]*1600）とを全て足し合わせて、圧縮文字列データ（otpLotDat）が算出される。この圧縮文字列データ（otpLotDat）は、３文字分の新文字列（new_lot_name[3k],[3k+1],[3k+2]）を各桁の値とする３桁の４０進数を１０進表記した値であると言える。
【００３８】
ステップＳ１１４では、パラメータｋが１つインクリメントされた後、フローがステップＳ１１２に戻される。そして、以後、ステップＳ１１２でイエス判定が下されるまで、言い換えれば、新文字列（new_lot_name）から圧縮文字列データ（otpLotDat）への変換が完了するまで、ステップＳ１１２〜ステップＳ１１４のフローが繰り返される。
【００３９】
ステップＳ１１２でイエス判定が下された場合、ステップＳ１１５では、不揮発性メモリに対する圧縮文字列データ（otpLotDat）の書込処理が行われた後、一連のフローが終了される。
【００４０】
すなわち、図１の文字コード圧縮方法を大局的に見た場合、ステップＳ１１１〜ステップＳ１１５は、新文字列（new_lot_name）を３文字ずつに区切り、ｎ文字目（ただしｎ＝１、２、３）の新文字コードに４０ｎ−１を各々乗算した値を全て足し合わせて、３文字分で１６ビットの圧縮文字列データ（otpLotDat）を生成する第２ステップに相当する。
【００４１】
次に、図４を参照しながら、文字コード圧縮処理について具体的な説明を行う。図４は文字コード圧縮処理の具体例を示す概念図である。ここでは、入力文字列（lot_name）として、「ＷＡＦＥＲ−ａｂｃ（１２３４）」が入力された場合を考える。なお、図１ではパラメータｉ、ｊ、ｋの初期値を０とした例を挙げて説明を行ったが、図４では、説明の便宜上、パラメータｉ、ｊ、ｋの初期値を１とした例を挙げて説明を行う。
【００４２】
入力文字列の１文字目（lot_name[1]）〜５文字目（lot_name[5]）は、いずれも、英大文字「Ｗ」、「Ａ」、「Ｆ」、「Ｅ」、「Ｒ」である。従って、各々のＡＳＣＩＩコード（８７、６５、７０、６９、８２）から６４を差し引いた新文字コード（２３、１、６、５、１８）が新文字列の１文字目（new_lot_name[1]）〜５文字目（new_lot_name[5]）としてレジスタに一時格納される（ステップＳ１０６及びステップＳ１０７）。
【００４３】
入力文字列の６文字目（lot_name[6]）は、記号文字「−」である。従って、そのＡＳＣＩＩコード（４５）が新文字コードに変換されることはなく、記号文字「−」は新文字列（new_lot_name）から除外される（ステップＳ１０８のノー判定）。
【００４４】
入力文字列の７文字目（lot_name[7]）〜９文字目（lot_name[9]）は、いずれも、英小文字「ａ」、「ｂ」、「ｃ」である。従って、各々のＡＳＣＩＩコード（９７、９８、９９）から９６を差し引いた新文字コード（１、２、３）が新文字列の６文字目（new_lot_name[6]）〜８文字目（new_lot_name[8]）としてレジスタに一時格納される（ステップＳ１０８及びステップＳ１０９）。
【００４５】
入力文字列の１０文字目（lot_name[10]）は、記号文字「（」である。従って、そのＡＳＣＩＩコード（４０）が新文字コードに変換されることはなく、記号文字「（」は新文字列（new_lot_name）から除外される（ステップＳ１０８のノー判定）。
【００４６】
入力文字列の１１文字目（lot_name[11]）〜１４文字目（lot_name[14]）は、いずれも数字「１」、「２」、「３」、「４」である。従って、各々のＡＳＣＩＩコード（４９、５０、５１、５２）から１８を差し引いた新文字コード（３１、３２、３３、３４）が新文字列の９文字目（new_lot_name[9]）〜１２文字目（new_lot_name[12]）としてレジスタに一時格納される（ステップＳ１０４及びステップＳ１０５）。
【００４７】
入力文字列の１５文字目（lot_name[15]）は、記号文字「）」である。従って、そのＡＳＣＩＩコード（４１）が新文字コードに変換されることはなく、記号文字「）」は新文字列（new_lot_name）から除外される（ステップＳ１０８のノー判定）。
【００４８】
入力文字列の１６文字目（lot_name[16]）はＮＵＬ文字であり、入力文字列（lot_name）の終端を示している。すなわち、入力文字列（lot_name）は１５文字（文字列長ｌｅｎ＝１５）である。従って、新文字列の１３文字目（new_lot_name[13]）〜１６文字目（new_lot_name[16]）まで、０（ＮＵＬ文字に相当）が入力される。
【００４９】
入力文字列（lot_name）から新文字列（new_lot_name）への変換処理が完了すると、圧縮文字列データ（otpLotDat）の生成処理が行われる。具体的に述べると、まず、新文字列（new_lot_name）の１文字目（２３）と、新文字列（new_lot_name）の２文字目に４０を乗算した値（１×４０）と、新文字列（new_lot_name）の３文字目に１６００を乗算した値（６×１６００）と、を全て足し合わせて、圧縮文字列データ（otpLotDat）の第１桁値（９６６３）が算出される。
【００５０】
上記と同様に、新文字列（new_lot_name）の４文字目〜６文字目（５、１８、１）、７文字目〜９文字目（２、３、３１）、１０文字目〜１２文字目（３２、３３、３４）、及び、１３文字目〜１５文字目（０、０、０）をそれぞれ一まとめとして、圧縮文字列データ（otpLotDat）の第２桁値〜第５桁値（２３２５、４９７２２、５５７５２、０）が算出される。
【００５１】
なお、図４の例では、新文字列（new_lot_name）の最大長が１６文字に設定されているので、新文字列（new_lot_name）を３文字ずつに区切っていくと、１６文字目（new_lot_name[16]）が一つ余る形となる。このような場合、圧縮文字列データ（otpLotDat）の第６桁目は８ビット（１バイト）で足りる。このように、圧縮文字列データ（otpLotDat）の各桁値は、基本的に１６ビット（２バイト）とされているが、全ての桁値を１６ビット（２バイト）に統一しておく必要はない。
【００５２】
３文字分の文字情報を記憶するために、ＡＳＣＩＩ文字コードによれば、７ビット×３文字＝２１ビット（或いは、８ビット×３文字＝２４ビット）の記憶領域が必要であるのに対して、本発明に係る文字コード圧縮方法によれば、１６ビットの記憶領域で足りるので、限られた記憶容量に多くの文字情報を記憶させることが可能となる。
【００５３】
なお、上記では、新文字コードの文字種類数ｘを４０とし、圧縮文字列データ（otpLotDat）の一桁に統合される文字数ｙを３とし、圧縮文字列データ（otpLotDat）のビット数ｚを１６とした場合を例に挙げて説明を行ったが、これらのパラメータｘ、ｙ、ｚは、上記に限定されるものではなく、ｘｙ＜２ｚという関係式を満たす範囲内で任意に設定することが可能である。
【００５４】
例えば、新文字コードの文字種類数ｘを１５文字（例えば、数字「０」〜「９」、英文字「Ａ」〜「Ｃ」、記号文字「−」、及び、ＮＵＬ文字）まで絞る場合であれば、１６ビットの圧縮文字列データ（otpLotDat）の一桁に統合される文字数ｙを４に拡張することが可能である。
【００５５】
すなわち、本発明に係る文字コード圧縮方法は、より概念的に述べると、ｍ通りの基本文字コード（先の例ではＡＳＣＩＩ文字コード）で表される入力文字列（lot_name）の文字種を集約ないしは削減してｘ通り（ただしｘ＜ｍ）の新文字コードで表される新文字列（new_lot_name）に変換する第１ステップと、新文字列（new_lot_name）をｙ文字ずつに区切り、ｎ文字目（ただしｎ＝１、２、…、ｙ）の新文字コードにｘｎ−１を各々乗算した値を全て足し合わせて、ｙ文字分でｚビット（ただしｘｙ＜２ｚ）の圧縮文字列データ（otpLotDat）を生成する第２ステップと、を有する構成であると言える。
【００５６】
＜文字コード復元方法＞
図５は、先の文字コード圧縮方法によって生成された圧縮文字列データ（otpLotDat）からＡＳＣＩＩ文字コードで表される出力文字列（lot_name）を復元する文字コード復元方法のフローチャートである。なお、本フローチャートで例示される文字コード圧縮方法は、先述の文字コード圧縮方法と同じく、例えば、所定のプログラミング言語（Ｃ言語など）を用いて記述されたコンピュータプログラムとして具現化することが可能である。
【００５７】
フローが開始されると、ステップＳ２０１において、圧縮文字列データ（otpLotDat）の取得が行われた後、フローがステップＳ２０２に進められる。
【００５８】
ステップＳ２０２では、各種パラメータの初期化（ｉ＝０、ｋ＝０）が行われた後、フローがステップＳ２０３に進められる。
【００５９】
ステップＳ２０３では、パラメータｋが最大データ長ｋｍａｘよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ２０４に進められ、ノー判定が下された場合にはフローがステップＳ２０９に進められる。
【００６０】
ステップＳ２０４では、圧縮文字列データの第ｋ桁値（otpLotDat[k]）がテンポラリデータ（dt）としてレジスタに格納された後、フローがステップＳ２０５に進められる。
【００６１】
ステップＳ２０５では、テンポラリデータ（dt）を４０で除算した余り（dt%40）が一時文字列の３ｋ文字目（tmp_lot_name[3k]）としてレジスタに格納され、商（dt/40）が新たなテンポラリデータ(dt）としてレジスタに格納された後、フローがステップＳ２０６に進められる。
【００６２】
ステップＳ２０６では、テンポラリデータ（dt）を再び４０で除算した余り（dt%40）が一時文字列の（３ｋ＋１）文字目（tmp_lot_name[3k+1]）としてレジスタに格納され、商（dt/40）が新たなテンポラリデータ(dt）としてレジスタに格納された後、フローがステップＳ２０７に進められる。
【００６３】
ステップＳ２０７では、テンポラリデータ（dt）自体が一時文字列の（３ｋ＋２）文字目（tmp_lot_name[3k+2]）としてレジスタに格納された後、フローがステップＳ２０８に進められる。
【００６４】
ステップＳ２０８では、パラメータｋが１つインクリメントされた後、フローがステップＳ２０３に戻される。そして、以後、ステップＳ２０３でイエス判定が下されるまで、言い換えれば、圧縮文字列データ（otpLotDat）から一時文字列（tmp_lot_name）への変換が完了するまで、ステップＳ２０３〜ステップＳ２０８のフローが繰り返される。
【００６５】
すなわち、図５の文字コード復元方法を大局的に見た場合、ステップＳ２０１〜ステップＳ２０８は、パラメータｋがインクリメントされる度に、初期値として圧縮文字列データ（otpLotDat[k]）が格納されるテンポラリデータ（dt）の４０による除算とその商（dt/40）によるテンポラリデータ（dt）の生成（上書）を２回繰り返し、各回の除算で各々得られた余りと２回目の除算で得られた商を一時文字列（tmp_lot_name[3k,3k+1,3K+2]）として取得する第１ステップに相当する。
【００６６】
ステップＳ２０３でノー判定が下された場合、ステップＳ２０９では、パラメータｉが最大文字列長ｉｍａｘよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ２１０に進められ、ノー判定が下された場合には一連のフローが終了される。
【００６７】
ステップＳ２０９でイエス判定が下された場合、ステップＳ２１０では、一時文字列のｉ文字目（tmp_lot_name[i]）に相当する新文字コードが１〜２６の範囲内に含まれているか否か、言い換えれば、一時文字列のｉ文字目（tmp_lot_name[i]）が英文字であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ２１１に進められ、ノー判定が下された場合にはフローがステップＳ２１２に進められる。
【００６８】
ステップＳ２１０でイエス判定が下された場合、ステップＳ２１１では、一時文字列のｉ文字目に相当する新文字コード（１〜２６）に６４を加えた値（tmp_lot_name[i]+64）がＡＳＣＩＩ文字コード（６５〜９０；英大文字「Ａ」〜「Ｚ」）として算出され、このＡＳＣＩＩ文字コードが出力文字列のｉ文字目（lot_name[i]）としてレジスタに一時格納される。そして、パラメータｉが１つインクリメントされた後、フローがステップＳ２０９に戻される。なお、出力文字列（lot_name[i]）に含まれる英文字を小文字とする場合には、新文字コード（１〜２６）に加える値を９６に設定すればよい。
【００６９】
ステップＳ２１０でノー判定が下された場合、ステップＳ２１２では、一時文字列のｉ文字目（tmp_lot_name[i]）に相当する新文字コードが３０〜３９の範囲内に含まれているか否か、言い換えれば、一時文字列のｉ文字目（tmp_lot_name[i]）が数字であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップＳ２１３に進められ、ノー判定が下された場合にはフローがステップＳ２１４に進められる。
【００７０】
ステップＳ２１２でイエス判定が下された場合、ステップＳ２１３では、一時文字列のｉ文字目に相当する新文字コード（３０〜３９）に１８を加算した値（tmp_lot_name[i]+18）がＡＳＣＩＩ文字コード（４８〜５７；数字「０」〜「９」）として算出され、このＡＳＣＩＩ文字コードが出力文字列のｉ文字目（lot_name[i]）としてレジスタに一時格納される。そして、パラメータｉが１つインクリメントされた後、フローがステップＳ２０９に戻される。
【００７１】
ステップＳ２１２でノー判定が下された場合、ステップＳ２１４では、出力文字列のｉ文字目（lot_name[i]）に０（ＮＵＬ文字に相当）が入力され、その後、一連のフローが終了される。このように、出力文字列（lot_name）の終端文字としてＮＵＬ文字を入力する構成であれば、以後の処理において出力文字列（lot_name）を取り扱う際に、その終端位置（文字列長）を容易に認識することが可能となる。
【００７２】
すなわち、図５の文字コード復元方法を大局的に見た場合、ステップＳ２０９〜ステップＳ２１４は、一時文字列（tmp_lot_name）を出力文字列（lot_name）に変換する第２ステップに相当する。なお、第２ステップは、出力文字列（lot_name）が所定長（imax）に達したとき（ステップＳ２０９のイエス判定時）、或いは、一時文字列（tmp_lot_name）でＮＵＬ文字が確認されたとき（ステップＳ２１２のノー判定時）にフローを終了する。
【００７３】
次に、図６を参照しながら、文字コード復元処理について具体的な説明を行う。図６は文字コード復元処理の具体例を示す概念図である。ここでは、出力文字列（lot_name）として「ＷＡＦＥＲＡＢＣ１２３４」が復元される場合を考える。なお、図５では、パラメータｉ、ｋの初期値を０とした例を挙げて説明を行ったが、図６では、説明の便宜上、パラメータｉ、ｋの初期値を１とした例を挙げて説明を行う。
【００７４】
圧縮文字列データ（otpLotDat）から一時文字列（tmp_lot_name）への変換処理では、まず、圧縮文字列データの第１桁値（９６６３）を４０で除算した余り（２３）が一時文字列の１文字目（tmp_lot_name[1]）として取得されて、商（２４１）がテンポラリデータとして格納される。さらに、テンポラリデータ（２４１）を４０で除算した余り（１）が一時文字列の２文字目（tmp_lot_name[2]）として取得されて、商（６）が一時文字列の３文字目（tmp_lot_name[3]）として取得される（ステップＳ２０３〜ステップＳ２０８の一巡目）。
【００７５】
次に、圧縮文字列データの第２桁値（２３２５）を４０で除算した余り（５）が一時文字列の４文字目（tmp_lot_name[4]）として取得されて、商（５８）がテンポラリデータとして格納される。さらに、テンポラリデータ（５８）を４０で除算した余り（１８）が一時文字列の５文字目（tmp_lot_name[5]）として取得されて、商（１）が一時文字列の６文字目（tmp_lot_name[6]）として取得される（ステップＳ２０３〜ステップＳ２０８の二巡目）。
【００７６】
次に、圧縮文字列データの第３桁値（４９７２２）を４０で除算した余り（２）が一時文字列の７文字目（tmp_lot_name[7]）として取得されて、商（１２４３）がテンポラリデータとして格納される。さらに、テンポラリデータ（１２４３）を４０で除算した余り（３）が一時文字列の８文字目（tmp_lot_name[8]）として取得されて、商（３１）が一時文字列の９文字目（tmp_lot_name[9]）として取得される（ステップＳ２０３〜ステップＳ２０８の三巡目）。
【００７７】
次に、圧縮文字列データの第４桁値（５５７５２）を４０で除算した余り（３２）が一時文字列の１０文字目（tmp_lot_name[10]）として取得されて、商（１３９３）がテンポラリデータとして格納される。さらに、テンポラリデータ（１３９３）を４０で除算した余り（３３）が一時文字列の１１文字目（tmp_lot_name[11]）として取得されて、商（３４）が一時文字列の１２文字目（tmp_lot_name[9]）として取得される（ステップＳ２０３〜ステップＳ２０８の四巡目）。
【００７８】
次に、圧縮文字列データの第５桁値（０）を４０で除算した余り（０）が一時文字列の１３文字目（tmp_lot_name[13]）として取得されて、商（０）がテンポラリデータとして格納される。さらに、テンポラリデータ（０）を４０で除算した余り（０）が一時文字列の１４文字目（tmp_lot_name[14]）として取得されて、商（０）が一時文字列の１５文字目（tmp_lot_name[15]）として取得される（ステップＳ２０３〜ステップＳ２０８の五巡目）。
【００７９】
最後に、圧縮文字列データの第６桁値（０）がそのまま一時文字列の１６文字目（tmp_lot_name[16]）として取得される（図５では明示せず）。
【００８０】
圧縮文字列データ（otpLotDat）から一時文字列（tmp_lot_name）への変換処理が完了すると、続いて、一時文字列（tmp_lot_name）から出力文字列（lot_name）への変換処理が行われる。
【００８１】
一時文字列の１文字目（tmp_lot_name[1]）〜８文字目（lot_name[8]）に相当する新文字コードは、いずれも１〜２６の範囲内（英文字に相当）に含まれている。従って、各々の新文字コード（２３、１、６、５、１８、１、２、３）に６４を加算したＡＳＣＩＩ文字コード（８７、６５、７０、６９、８２、６５、６６、６７）が出力文字列の１文字目（lot_name[1]）〜８文字目（lot_name[8]）としてレジスタに一時格納される（ステップＳ２１０及びステップＳ２１１）。
【００８２】
一方、一時文字列の９文字目（tmp_lot_name[9]）〜１２文字目（lot_name[12]）に相当する新文字コードは、いずれも３０〜３９の範囲内（数字に相当）に含まれている。従って、各々の新文字コード（３１、３２、３３、３４）に１８を加算したＡＳＣＩＩ文字コード（４９、５０、５１、５２）が出力文字列の９文字目（lot_name[9]）〜１２文字目（lot_name[12]）としてレジスタに一時格納される（ステップＳ２１２及びステップＳ２１３）。
【００８３】
また、一時文字列の１３文字目（tmp_lot_name[13]）がＮＵＬ文字であることから、出力文字列の１３文字目（lot_name[13]）には、出力文字列（lot_name）の終端文字として０（ＮＵＬ文字）が入力されて、一連のフローが終了される（ステップＳ２１４）。
【００８４】
このように、本発明に係る文字コード復元方法によれば、先述の文字コード圧縮方法によって生成された圧縮文字列データ（otpLotDat）から出力文字列（lot_name）を復元することが可能となる。
【００８５】
なお、新文字コードの文字種類数ｘ、圧縮文字列データ（otpLotDat）の一桁に統合される文字数ｙ、及び、圧縮文字列データ（otpLotDat）のビット数ｚについては、先にも述べた通り、ｘｙ＜２ｚという関係式を満たす範囲内で任意に設定することができる。
【００８６】
すなわち、本発明に係る文字コード復元方法は、より概念的に述べると、初期値として圧縮文字列データ（otpLotDat）が格納されるテンポラリデータ（dt）のｘによる除算とその商（dt/x）によるテンポラリデータ（dt）の生成（上書）を（ｙ−１）回繰り返し、各回の除算で各々得られた余り（dt%x）と（ｙ−１）回目の除算で得られた商（dt/x）を新文字コードで表される一時文字列（tmp_lot_name）として取得する第１ステップと、一時文字列（tmp_lot_name）を出力文字列（lot_name）に変換する第２ステップを有する構成であると言える。
【００８７】
＜アプリケーション＞
図７Ａ及び図７Ｂは、それぞれ、先述の文字コード圧縮方法及び文字コード復元方法が適用されるアプリケーションの一例を示すブロック図である。図７Ａ及び図７Ｂに示された半導体装置の量産設備には、コンピュータ１０と通信プロトコル変換装置２０が含まれており、半導体装置３０の量産工程において、半導体装置３０内にパッケージング済みのチップ（図７Ａを参照）や、ウェハ４０上に形成されたチップ（図７Ｂ）を対象として、各チップ毎の不揮発性メモリに製造管理情報（ロット番号、ウェハ番号、ウェハ上における座標情報など）の書込／読出が行われる。
【００８８】
コンピュータ１０は、書込／読出部１１と、演算部１２と、ヒューマンインタフェイス部１３と、記憶部１４と、を有している。コンピュータ１０は、記憶部１４に格納された文字コード圧縮プログラムや文字コード復元プログラムを適宜読み出して実行することにより、製造管理情報の書込／読出動作を統括的に制御するデータ書込／読出装置として機能する。なお、コンピュータ１０としては、パーソナルコンピュータやマイコン、或いは製品テスタなどがこれに相当する。
【００８９】
書込／読出部１１は、通信プロトコル変換装置２０を介して、各チップ毎の不揮発性メモリに製造管理情報（圧縮文字列データ）の書込／読出しを行う。なお、書込／読出部１１と半導体装置３０ないしはウェハ４０との間で直接的に通信を行うことができる場合には通信プロトコル変換装置２０を省略することが可能である。
【００９０】
演算部１２は、先述の文字コード圧縮方法や文字コード復元方法を用いて、製造管理情報の圧縮／復元（すなわち、入力文字列から圧縮文字列データへの変換処理、及び、圧縮文字列データから出力文字列への変換処理）を行う。なお、演算部１２としては、ＣＰＵ［Central Processing Unit］などを好適に用いることができる。
【００９１】
ヒューマンインタフェイス部１３は、製造管理情報の書込時に入力文字列の入力を受け付けたり、製造管理情報の読出時に出力文字列を出力したりする。なお、ヒューマンインタフェイス部１３としては、キーボード、マウス、タッチパネル、ディスプレイ、スピーカなどを用いることができる。
【００９２】
記憶部１４は、演算部１２で実行される各種プログラム（文字コード圧縮プログラムや文字コード復元プログラムを含む）を不揮発的に格納するほか、各種プログラムの作業領域としても用いられる。なお、記憶部１４としては、ハードディスクドライブや半導体メモリデバイスなどを用いることができる。
【００９３】
このように、半導体装置の量産工程において、チップ毎の不揮発性メモリに格納される製造管理情報の文字コードを圧縮／復元する構成であれば、限られた記憶容量に多くの文字情報を記憶させることが可能となる。
【００９４】
なお、図７Ａ及び図７Ｂでは、ヒューマンインタフェイス部を有するアプリケーションを例に挙げて説明を行ったが、本発明の構成はこれに限定されるものではなく、ヒューマンインタフェイス部が存在しないアプリケーションも想定される。例えば、データ書込時にロットデータを人間が入力する場合には、上記のヒューマンインタフェイス部が必要となるが、ロットデータは、ウェハ上やＩＣの表印、或いは、梱包のラベルやバーコード等でも記載されており、それらを自動的に読み取る装置があれば、上記のヒューマンインタフェイス部は不要となる。また、データ読出時についても、次の工程などで単にロットデータを読み出して品質管理のために単にハードディスクドライブなどの記憶領域に記録しておけば足りる場合には、ヒューマンインタフェイス部が不要となる。
【００９５】
＜その他の変形例＞
なお、上記では、半導体装置の量産工程において、チップ毎の不揮発性メモリに格納される製造管理情報の文字コードを圧縮／復元する構成を例に挙げて説明を行ったが、本発明の適用対象はこれに限定されるものではなく、その他の用途に供される文字コードの圧縮／復元を行う際にも広く本発明を適用することが可能である。
【００９６】
また、本発明に係る文字コード圧縮方法及び文字コード復元方法を応用すれば、入力文字列の暗号化／復号化を行うことも可能である。その意味において、本明細書中で用いられている「圧縮／復元」という文言は、これを狭義的に解釈することなく、「暗号化／復号化」も含む広義的な概念として解釈すべきものである。
【００９７】
本発明の特徴としては、圧縮／復元を共に２ステップで処理する構成となっており、実施形態では１ステップ毎に全ての文字列を処理する例を示したが、圧縮後の各文字単位ｋごとに２ステップの処理を実施する構成も考えられる。
【００９８】
本発明は、固定長と可変長の両方の文字列を処理することができ、固定長の文字列ではＮＵＬ文字の処理を省略することも可能である。
【００９９】
このように、本明細書中に開示されている種々の技術的特徴は、上記実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明に限定されるものではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。
【産業上の利用可能性】
【０１００】
本発明に係る文字コード圧縮方法及び文字コード復元方法は、例えば、半導体装置の量産工程において、チップ固有の製造管理情報を格納する不揮発性メモリの小容量化を実現するための技術として利用することが可能である。
【符号の説明】
【０１０１】
１０    コンピュータ
１１    書込／読出部
１２    演算部
１３    ヒューマンインタフェイス部
１４    記憶部
２０    通信プロトコル変換装置
３０    半導体装置
４０    ウェハ
【図１】
0005866168.tif 000002
【図２】
0005866168.tif 000003
【図３】
0005866168.tif 000004
【図４】
0005866168.tif 000005
【図５】
0005866168.tif 000006
【図６】
0005866168.tif 000007
【図７Ａ】
0005866168.tif 000008
【図７Ｂ】
0005866168.tif 000009