説明

文字コード圧縮方法及び文字コード復元方法

【課題】限られた記憶領域に多くの文字情報を記憶させる。
【解決手段】本発明に係る文字コード圧縮方法は、m通りの基本文字コードで表される入力文字列(lot_name)の文字種を集約ないしは削減してx通り(ただしx<m)の新文字コードで表される新文字列(new_lot_name)に変換する第1ステップ(S101〜S110)と、前記新文字列をy文字ずつに区切り、n文字目(ただしn=1、2、…、y)の新文字コードにxn−1を各々乗算した値を全て足し合わせて、y文字分でzビット(ただしx<2)の圧縮文字列データ(otpLotDat)を生成する第2ステップ(ステップS111〜S115)と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文字コード圧縮方法及び文字コード復元方法に関するものである。
【背景技術】
【0002】
近年、半導体装置の量産工程においては、チップ毎に小容量の不揮発性メモリ(OTPROM[One Time Programmable Read Only Memory]など)を組み込んでおき、各々にチップ固有の製造管理情報(ロット番号、ウェハ番号、ウェハ上における座標情報など)を格納しておくことが要求されている。
【0003】
なお、本発明に関連する従来技術の一例としては、特許文献1を挙げることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−31868号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、コンピュータ上で文字情報(英数字など)を扱う際には、一般にASCII[American Standard Code for Information Interchange]文字コードが用いられる。しかしながら、ASCII文字コードは、一文字あたり7ビット(または8ビット)の記憶容量を必要とする。そのため、チップ固有の製造管理情報として多くの文字情報を記憶しようとすると、不揮発性メモリの大容量化(延いては半導体装置のコストアップ)が招かれるという問題があった。
【0006】
本発明は、本願の発明者により見出された上記の問題点に鑑み、限られた記憶容量に多くの文字情報を記憶させることのできる文字コード圧縮方法及び文字コード復元方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明に係る文字コード圧縮方法は、m通りの基本文字コードで表される入力文字列の文字種を集約ないしは削減してx通り(ただしx<m)の新文字コードで表される新文字列に変換する第1ステップと、前記新文字列をy文字ずつに区切り、n文字目(ただしn=1、2、…、y)の新文字コードにxn−1を各々乗算した値を全て足し合わせて、y文字分でzビット(ただしx<2)の圧縮文字列データを生成する第2ステップと、を有する構成(第1の構成)とされている。
【0008】
なお、上記第1の構成から成る文字コード圧縮方法において、前記第1ステップは、前記入力文字列に含まれる英文字(「A」〜「Z」、「a」〜「z」)に対して大文字/小文字を区別することなく26文字分の新文字コードを割り当てるステップと、前記入力文字列に含まれる数字(「0」〜「9」)に対して10文字分の新文字コードを割り当てるステップとを含む構成(第2の構成)にするとよい。
【0009】
また、上記第2の構成から成る文字コード圧縮方法において、前記新文字コードは、10進表記で0〜39の値を取り得る構成(第3の構成)にするとよい。
【0010】
また、上記第3の構成から成る文字コード圧縮方法において、前記新文字コードは、0がNUL文字であって、1〜26が英文字であって、30〜39が数字である構成(第4の構成)にするとよい。
【0011】
また、上記第4の構成から成る文字コード圧縮方法において、前記新文字コードは、27〜29が記号文字である構成(第5の構成)にするとよい。
【0012】
また、本発明に係る文字コード復元方法は、上記した第1〜第5いずれかの構成から成る文字コード圧縮方法によって生成された前記圧縮文字列データから前記基本文字コードで表される出力文字列を復元するものであって、初期値として前記圧縮文字列データが格納されるテンポラリデータのxによる除算とその商による前記テンポラリデータの生成を(y−1)回繰り返し、各回の除算で各々得られた余りと(y−1)回目の除算で得られた商を前記新文字コードで表される一時文字列として取得する第1ステップと、前記一時文字列を前記出力文字列に変換する第2ステップと、を有する構成(第6の構成)とされている。
【0013】
また、上記第6の構成から成る文字コード復元方法において、前記第2ステップは、前記出力文字列が所定長に達したとき、或いは、前記一時文字列でNUL文字が確認されたときにフローを終了する構成(第7の構成)にするとよい。
【0014】
また、本発明に係るデータ書込装置は、上記第1〜第5いずれかの構成から成る文字コード圧縮方法を用いて前記入力文字列から前記圧縮文字列データを生成する演算部と、前記演算部で実行される各種プログラムを格納する記憶部と、前記圧縮文字列データを外部メモリに書き込む書込部と、を有する構成(第8の構成)とされている。
【0015】
また、本発明に係るデータ書込プログラムは、演算部、記憶部、及び、書込部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを上記第8の構成から成るデータ書込装置として機能させる構成(第9の構成)とされている。
【0016】
また、本発明に係るデータ読出装置は、外部メモリから圧縮文字列データを読み出す読出部と、上記第6または第7の構成から成る文字コード復元方法を用いて前記圧縮文字列データから出力文字列を生成する演算部と、前記演算部で実行される各種プログラムを格納する記憶部と、を有する構成(第10の構成)とされている。
【0017】
また、本発明に係るデータ読出プログラムは、読出部、演算部、及び、記憶部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを上記第10の構成から成るデータ読出装置として機能させる構成(第11の構成)とされている。
【発明の効果】
【0018】
本発明によれば、限られた記憶容量に多くの文字情報を記憶させることのできる文字コード圧縮方法及び文字コード復元方法を提供することが可能となる。
【図面の簡単な説明】
【0019】
【図1】文字コード圧縮方法のフローチャート
【図2】ASCII文字コード表
【図3】新文字コード表
【図4】文字コード圧縮処理の具体例を示す概念図
【図5】文字コード復元方法のフローチャート
【図6】文字コード復元処理の具体例を示す概念図
【図7A】第1のアプリケーション例を示すブロック図
【図7B】第2のアプリケーション例を示すブロック図
【発明を実施するための形態】
【0020】
<文字コード圧縮方法>
図1は、文字コード圧縮方法のフローチャートである。本フローチャートで例示される文字コード圧縮方法は、例えば、所定のプログラミング言語(C言語など)を用いて記述されたコンピュータプログラムとして具現化することが可能である。
【0021】
フローが開始されると、ステップS101では、図2のASCII文字コードで表される入力文字列(lot_name)の取得が行われ、その後、フローがステップS102に進められる。ASCII文字コードは、7ビット(または8ビット)の基本文字コードであり、10進表記で0〜127の値を取り得る。ASCII文字コードの内容としては、0〜31及び127が制御文字(コントロールコード)に割り当てられており、32〜126が印刷可能文字(英文字、数字、記号文字)に割り当てられている。
【0022】
ステップS102では、各種パラメータの初期化(i=0、j=0、k=0)が行われた後、フローがステップS103に進められる。
【0023】
ステップS103では、パラメータiが入力文字列(lot_name)の文字列長lenよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS104に進められ、ノー判定が下された場合にはフローがステップS111に進められる。なお、文字列長lenは、C言語のstrlen関数などを用いて容易に取得することが可能である。
【0024】
ステップS103でイエス判定が下された場合、ステップS104では、入力文字列のi文字目(lot_name[i])が数字(「0」〜「9」)であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS105に進められ、ノー判定が下された場合にはフローがステップS106に進められる。
【0025】
ステップS104でイエス判定が下された場合、ステップS105では、入力文字列のi文字目(数字(「0」〜「9」))に相当するASCIIコード(48〜57)から18を差し引いた値(lot_name[i]-18)が新文字コード(30〜39)として算出され、この新文字コード(30〜39)が新文字列のj文字目(new_lot_name[j])としてレジスタに一時格納される。そして、パラメータjが1つインクリメントされた後、フローがステップS110に進められる。
【0026】
ステップS104でノー判定が下された場合、ステップS106では、入力文字列のi文字目(lot_name[i])が英大文字(「A」〜「Z」)であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS107に進められ、ノー判定が下された場合にはフローがステップS108に進められる。
【0027】
ステップS106でイエス判定が下された場合、ステップS107では、入力文字列のi文字目(英大文字(「A」〜「Z」))に相当するASCIIコード(65〜90)から64を差し引いた値(lot_name[i]-64)が新文字コード(1〜26)として算出され、この新文字コード(1〜26)が新文字列のj文字目(new_lot_name[j])としてレジスタに一時格納される。そして、パラメータjが1つインクリメントされた後、フローがステップS110に進められる。
【0028】
ステップS106でノー判定が下された場合、ステップS108では、入力文字列のi文字目(lot_name[i])が英小文字(「a」〜「z」)であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS109に進められ、ノー判定が下された場合にはフローがステップS110に進められる。
【0029】
ステップS108でイエス判定が下された場合、ステップS109では、入力文字列のi文字目(英小文字(「a」〜「z」))に相当するASCIIコード(97〜122)から96を差し引いた値(lot_name[i]-96)が新文字コード(1〜26)として算出されて、この新文字コード(1〜26)が新文字列のj文字目(new_lot_name[j])としてレジスタに一時格納される。そして、パラメータjが1つインクリメントされた後、フローがステップS110に進められる。
【0030】
ステップS105、ステップS107、及び、ステップS109での文字コード変換処理が完了した場合、或いは、ステップS108でノー判定が下された場合、ステップS110では、パラメータiが1つインクリメントされた後、フローがステップS103に戻される。そして、以後、ステップS103でイエス判定が下されるまで、言い換えれば、入力文字列(lot_name)から新文字列(new_lot_name)への変換が完了するまで、ステップS103〜ステップS110のフローが繰り返される。
【0031】
従って、ステップS103〜ステップS110のフローが繰り返される間に、入力文字列(lot_name)に含まれる数字(「0」〜「9」)に対しては、ステップS105で10文字分の新文字コード(30〜39)が割り当てられ、入力文字列(lot_name)に含まれる英文字(「A」〜「Z」、「a」〜「z」)に対しては、ステップS107及びステップS109で大文字/小文字を区別することなく26文字分の新文字コード(1〜26)が割り当てられる。一方、入力文字列(lot_name)に含まれる記号文字については、ステップS108でのノー判定によって新文字列(new_lot_name)から除外される。
【0032】
すなわち、図1の文字コード圧縮方法を大局的に見た場合、ステップS101〜ステップS110は、128通りのASCIIコードで表される入力文字列(lot_name)の文字種を集約ないしは削減して40通りの新文字コードで表される新文字列(new_lot_name)に変換する第1ステップに相当する。
【0033】
図3は、新文字コード表の一例である。本例の新文字コードは、40通りの値(10進表記で0〜39)を取り得る。新文字コードの内容としては、0がNUL文字に割り当てられており、1〜26が英文字(大文字)に割り当てられており、30〜39が数字に割り当てられている。ただし、新文字コードにおける文字の割り当ては、これに限定されるものではない。
【0034】
また、先述のステップS101〜ステップS110では、入力文字列(lot_name)から記号文字を全て除外する動作例を挙げて説明を行ったが、新文字コードの未使用値(27〜29)を積極的に活用すれば、新文字コードに最大3種類の記号文字を割り当てることも可能である。例えば、入力文字列(lot_name)に含まれる記号文字のうち、「−」(ASCIIコード(45))を新文字コード(27)に変換する場合には、ステップS103〜ステップS110のループ中に、入力文字列(lot_name[i])のi文字目が「−」であるか否かを判定するステップと、当該ステップでイエス判定が下されたときにASCIIコードから18を差し引いた値(lot_name[i]-18)を新文字コードとして算出するステップと、を追加すればよい。その余の記号文字についても同様である。
【0035】
図1に戻り、文字コード圧縮方法の説明を続ける。ステップS103でノー判定が下された場合、ステップS111では、新文字列(new_lot_name)のj文字目以降に0(NUL文字に相当)が入力され、その後、フローがステップS112に進められる。
【0036】
ステップS112では、パラメータkが最大データ長kmaxよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS113に進められ、ノー判定が下された場合にはフローがステップS115に進められる。
【0037】
ステップS112でイエス判定が下された場合、ステップS113では、圧縮文字列データ(otpLotDat)の生成処理が行われた後、フローがステップS114に進められる。具体的に述べると、ステップS113では、新文字列の3k文字目(new_lot_name[3k])と、新文字列の(3k+1)文字目に40を乗算した値(new_lot_name[3k+1]*40)と、新文字列の(3k+2)文字目に1600を乗算した値(new_lot_name[3k+2]*1600)とを全て足し合わせて、圧縮文字列データ(otpLotDat)が算出される。この圧縮文字列データ(otpLotDat)は、3文字分の新文字列(new_lot_name[3k],[3k+1],[3k+2])を各桁の値とする3桁の40進数を10進表記した値であると言える。
【0038】
ステップS114では、パラメータkが1つインクリメントされた後、フローがステップS112に戻される。そして、以後、ステップS112でイエス判定が下されるまで、言い換えれば、新文字列(new_lot_name)から圧縮文字列データ(otpLotDat)への変換が完了するまで、ステップS112〜ステップS114のフローが繰り返される。
【0039】
ステップS112でイエス判定が下された場合、ステップS115では、不揮発性メモリに対する圧縮文字列データ(otpLotDat)の書込処理が行われた後、一連のフローが終了される。
【0040】
すなわち、図1の文字コード圧縮方法を大局的に見た場合、ステップS111〜ステップS115は、新文字列(new_lot_name)を3文字ずつに区切り、n文字目(ただしn=1、2、3)の新文字コードに40n−1を各々乗算した値を全て足し合わせて、3文字分で16ビットの圧縮文字列データ(otpLotDat)を生成する第2ステップに相当する。
【0041】
次に、図4を参照しながら、文字コード圧縮処理について具体的な説明を行う。図4は文字コード圧縮処理の具体例を示す概念図である。ここでは、入力文字列(lot_name)として、「WAFER−abc(1234)」が入力された場合を考える。なお、図1ではパラメータi、j、kの初期値を0とした例を挙げて説明を行ったが、図4では、説明の便宜上、パラメータi、j、kの初期値を1とした例を挙げて説明を行う。
【0042】
入力文字列の1文字目(lot_name[1])〜5文字目(lot_name[5])は、いずれも、英大文字「W」、「A」、「F」、「E」、「R」である。従って、各々のASCIIコード(87、65、70、69、82)から64を差し引いた新文字コード(23、1、6、5、18)が新文字列の1文字目(new_lot_name[1])〜5文字目(new_lot_name[5])としてレジスタに一時格納される(ステップS106及びステップS107)。
【0043】
入力文字列の6文字目(lot_name[6])は、記号文字「−」である。従って、そのASCIIコード(45)が新文字コードに変換されることはなく、記号文字「−」は新文字列(new_lot_name)から除外される(ステップS108のノー判定)。
【0044】
入力文字列の7文字目(lot_name[7])〜9文字目(lot_name[9])は、いずれも、英小文字「a」、「b」、「c」である。従って、各々のASCIIコード(97、98、99)から96を差し引いた新文字コード(1、2、3)が新文字列の6文字目(new_lot_name[6])〜8文字目(new_lot_name[8])としてレジスタに一時格納される(ステップS108及びステップS109)。
【0045】
入力文字列の10文字目(lot_name[10])は、記号文字「(」である。従って、そのASCIIコード(40)が新文字コードに変換されることはなく、記号文字「(」は新文字列(new_lot_name)から除外される(ステップS108のノー判定)。
【0046】
入力文字列の11文字目(lot_name[11])〜14文字目(lot_name[14])は、いずれも数字「1」、「2」、「3」、「4」である。従って、各々のASCIIコード(49、50、51、52)から18を差し引いた新文字コード(31、32、33、34)が新文字列の9文字目(new_lot_name[9])〜12文字目(new_lot_name[12])としてレジスタに一時格納される(ステップS104及びステップS105)。
【0047】
入力文字列の15文字目(lot_name[15])は、記号文字「)」である。従って、そのASCIIコード(41)が新文字コードに変換されることはなく、記号文字「)」は新文字列(new_lot_name)から除外される(ステップS108のノー判定)。
【0048】
入力文字列の16文字目(lot_name[16])はNUL文字であり、入力文字列(lot_name)の終端を示している。すなわち、入力文字列(lot_name)は15文字(文字列長len=15)である。従って、新文字列の13文字目(new_lot_name[13])〜16文字目(new_lot_name[16])まで、0(NUL文字に相当)が入力される。
【0049】
入力文字列(lot_name)から新文字列(new_lot_name)への変換処理が完了すると、圧縮文字列データ(otpLotDat)の生成処理が行われる。具体的に述べると、まず、新文字列(new_lot_name)の1文字目(23)と、新文字列(new_lot_name)の2文字目に40を乗算した値(1×40)と、新文字列(new_lot_name)の3文字目に1600を乗算した値(6×1600)と、を全て足し合わせて、圧縮文字列データ(otpLotDat)の第1桁値(9663)が算出される。
【0050】
上記と同様に、新文字列(new_lot_name)の4文字目〜6文字目(5、18、1)、7文字目〜9文字目(2、3、31)、10文字目〜12文字目(32、33、34)、及び、13文字目〜15文字目(0、0、0)をそれぞれ一まとめとして、圧縮文字列データ(otpLotDat)の第2桁値〜第5桁値(2325、49722、55752、0)が算出される。
【0051】
なお、図4の例では、新文字列(new_lot_name)の最大長が16文字に設定されているので、新文字列(new_lot_name)を3文字ずつに区切っていくと、16文字目(new_lot_name[16])が一つ余る形となる。このような場合、圧縮文字列データ(otpLotDat)の第6桁目は8ビット(1バイト)で足りる。このように、圧縮文字列データ(otpLotDat)の各桁値は、基本的に16ビット(2バイト)とされているが、全ての桁値を16ビット(2バイト)に統一しておく必要はない。
【0052】
3文字分の文字情報を記憶するために、ASCII文字コードによれば、7ビット×3文字=21ビット(或いは、8ビット×3文字=24ビット)の記憶領域が必要であるのに対して、本発明に係る文字コード圧縮方法によれば、16ビットの記憶領域で足りるので、限られた記憶容量に多くの文字情報を記憶させることが可能となる。
【0053】
なお、上記では、新文字コードの文字種類数xを40とし、圧縮文字列データ(otpLotDat)の一桁に統合される文字数yを3とし、圧縮文字列データ(otpLotDat)のビット数zを16とした場合を例に挙げて説明を行ったが、これらのパラメータx、y、zは、上記に限定されるものではなく、x<2という関係式を満たす範囲内で任意に設定することが可能である。
【0054】
例えば、新文字コードの文字種類数xを15文字(例えば、数字「0」〜「9」、英文字「A」〜「C」、記号文字「−」、及び、NUL文字)まで絞る場合であれば、16ビットの圧縮文字列データ(otpLotDat)の一桁に統合される文字数yを4に拡張することが可能である。
【0055】
すなわち、本発明に係る文字コード圧縮方法は、より概念的に述べると、m通りの基本文字コード(先の例ではASCII文字コード)で表される入力文字列(lot_name)の文字種を集約ないしは削減してx通り(ただしx<m)の新文字コードで表される新文字列(new_lot_name)に変換する第1ステップと、新文字列(new_lot_name)をy文字ずつに区切り、n文字目(ただしn=1、2、…、y)の新文字コードにxn−1を各々乗算した値を全て足し合わせて、y文字分でzビット(ただしx<2)の圧縮文字列データ(otpLotDat)を生成する第2ステップと、を有する構成であると言える。
【0056】
<文字コード復元方法>
図5は、先の文字コード圧縮方法によって生成された圧縮文字列データ(otpLotDat)からASCII文字コードで表される出力文字列(lot_name)を復元する文字コード復元方法のフローチャートである。なお、本フローチャートで例示される文字コード圧縮方法は、先述の文字コード圧縮方法と同じく、例えば、所定のプログラミング言語(C言語など)を用いて記述されたコンピュータプログラムとして具現化することが可能である。
【0057】
フローが開始されると、ステップS201において、圧縮文字列データ(otpLotDat)の取得が行われた後、フローがステップS202に進められる。
【0058】
ステップS202では、各種パラメータの初期化(i=0、k=0)が行われた後、フローがステップS203に進められる。
【0059】
ステップS203では、パラメータkが最大データ長kmaxよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS204に進められ、ノー判定が下された場合にはフローがステップS209に進められる。
【0060】
ステップS204では、圧縮文字列データの第k桁値(otpLotDat[k])がテンポラリデータ(dt)としてレジスタに格納された後、フローがステップS205に進められる。
【0061】
ステップS205では、テンポラリデータ(dt)を40で除算した余り(dt%40)が一時文字列の3k文字目(tmp_lot_name[3k])としてレジスタに格納され、商(dt/40)が新たなテンポラリデータ(dt)としてレジスタに格納された後、フローがステップS206に進められる。
【0062】
ステップS206では、テンポラリデータ(dt)を再び40で除算した余り(dt%40)が一時文字列の(3k+1)文字目(tmp_lot_name[3k+1])としてレジスタに格納され、商(dt/40)が新たなテンポラリデータ(dt)としてレジスタに格納された後、フローがステップS207に進められる。
【0063】
ステップS207では、テンポラリデータ(dt)自体が一時文字列の(3k+2)文字目(tmp_lot_name[3k+2])としてレジスタに格納された後、フローがステップS208に進められる。
【0064】
ステップS208では、パラメータkが1つインクリメントされた後、フローがステップS203に戻される。そして、以後、ステップS203でイエス判定が下されるまで、言い換えれば、圧縮文字列データ(otpLotDat)から一時文字列(tmp_lot_name)への変換が完了するまで、ステップS203〜ステップS208のフローが繰り返される。
【0065】
すなわち、図5の文字コード復元方法を大局的に見た場合、ステップS201〜ステップS208は、パラメータkがインクリメントされる度に、初期値として圧縮文字列データ(otpLotDat[k])が格納されるテンポラリデータ(dt)の40による除算とその商(dt/40)によるテンポラリデータ(dt)の生成(上書)を2回繰り返し、各回の除算で各々得られた余りと2回目の除算で得られた商を一時文字列(tmp_lot_name[3k,3k+1,3K+2])として取得する第1ステップに相当する。
【0066】
ステップS203でノー判定が下された場合、ステップS209では、パラメータiが最大文字列長imaxよりも小さいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS210に進められ、ノー判定が下された場合には一連のフローが終了される。
【0067】
ステップS209でイエス判定が下された場合、ステップS210では、一時文字列のi文字目(tmp_lot_name[i])に相当する新文字コードが1〜26の範囲内に含まれているか否か、言い換えれば、一時文字列のi文字目(tmp_lot_name[i])が英文字であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS211に進められ、ノー判定が下された場合にはフローがステップS212に進められる。
【0068】
ステップS210でイエス判定が下された場合、ステップS211では、一時文字列のi文字目に相当する新文字コード(1〜26)に64を加えた値(tmp_lot_name[i]+64)がASCII文字コード(65〜90;英大文字「A」〜「Z」)として算出され、このASCII文字コードが出力文字列のi文字目(lot_name[i])としてレジスタに一時格納される。そして、パラメータiが1つインクリメントされた後、フローがステップS209に戻される。なお、出力文字列(lot_name[i])に含まれる英文字を小文字とする場合には、新文字コード(1〜26)に加える値を96に設定すればよい。
【0069】
ステップS210でノー判定が下された場合、ステップS212では、一時文字列のi文字目(tmp_lot_name[i])に相当する新文字コードが30〜39の範囲内に含まれているか否か、言い換えれば、一時文字列のi文字目(tmp_lot_name[i])が数字であるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS213に進められ、ノー判定が下された場合にはフローがステップS214に進められる。
【0070】
ステップS212でイエス判定が下された場合、ステップS213では、一時文字列のi文字目に相当する新文字コード(30〜39)に18を加算した値(tmp_lot_name[i]+18)がASCII文字コード(48〜57;数字「0」〜「9」)として算出され、このASCII文字コードが出力文字列のi文字目(lot_name[i])としてレジスタに一時格納される。そして、パラメータiが1つインクリメントされた後、フローがステップS209に戻される。
【0071】
ステップS212でノー判定が下された場合、ステップS214では、出力文字列のi文字目(lot_name[i])に0(NUL文字に相当)が入力され、その後、一連のフローが終了される。このように、出力文字列(lot_name)の終端文字としてNUL文字を入力する構成であれば、以後の処理において出力文字列(lot_name)を取り扱う際に、その終端位置(文字列長)を容易に認識することが可能となる。
【0072】
すなわち、図5の文字コード復元方法を大局的に見た場合、ステップS209〜ステップS214は、一時文字列(tmp_lot_name)を出力文字列(lot_name)に変換する第2ステップに相当する。なお、第2ステップは、出力文字列(lot_name)が所定長(imax)に達したとき(ステップS209のイエス判定時)、或いは、一時文字列(tmp_lot_name)でNUL文字が確認されたとき(ステップS212のノー判定時)にフローを終了する。
【0073】
次に、図6を参照しながら、文字コード復元処理について具体的な説明を行う。図6は文字コード復元処理の具体例を示す概念図である。ここでは、出力文字列(lot_name)として「WAFERABC1234」が復元される場合を考える。なお、図5では、パラメータi、kの初期値を0とした例を挙げて説明を行ったが、図6では、説明の便宜上、パラメータi、kの初期値を1とした例を挙げて説明を行う。
【0074】
圧縮文字列データ(otpLotDat)から一時文字列(tmp_lot_name)への変換処理では、まず、圧縮文字列データの第1桁値(9663)を40で除算した余り(23)が一時文字列の1文字目(tmp_lot_name[1])として取得されて、商(241)がテンポラリデータとして格納される。さらに、テンポラリデータ(241)を40で除算した余り(1)が一時文字列の2文字目(tmp_lot_name[2])として取得されて、商(6)が一時文字列の3文字目(tmp_lot_name[3])として取得される(ステップS203〜ステップS208の一巡目)。
【0075】
次に、圧縮文字列データの第2桁値(2325)を40で除算した余り(5)が一時文字列の4文字目(tmp_lot_name[4])として取得されて、商(58)がテンポラリデータとして格納される。さらに、テンポラリデータ(58)を40で除算した余り(18)が一時文字列の5文字目(tmp_lot_name[5])として取得されて、商(1)が一時文字列の6文字目(tmp_lot_name[6])として取得される(ステップS203〜ステップS208の二巡目)。
【0076】
次に、圧縮文字列データの第3桁値(49722)を40で除算した余り(2)が一時文字列の7文字目(tmp_lot_name[7])として取得されて、商(1243)がテンポラリデータとして格納される。さらに、テンポラリデータ(1243)を40で除算した余り(3)が一時文字列の8文字目(tmp_lot_name[8])として取得されて、商(31)が一時文字列の9文字目(tmp_lot_name[9])として取得される(ステップS203〜ステップS208の三巡目)。
【0077】
次に、圧縮文字列データの第4桁値(55752)を40で除算した余り(32)が一時文字列の10文字目(tmp_lot_name[10])として取得されて、商(1393)がテンポラリデータとして格納される。さらに、テンポラリデータ(1393)を40で除算した余り(33)が一時文字列の11文字目(tmp_lot_name[11])として取得されて、商(34)が一時文字列の12文字目(tmp_lot_name[9])として取得される(ステップS203〜ステップS208の四巡目)。
【0078】
次に、圧縮文字列データの第5桁値(0)を40で除算した余り(0)が一時文字列の13文字目(tmp_lot_name[13])として取得されて、商(0)がテンポラリデータとして格納される。さらに、テンポラリデータ(0)を40で除算した余り(0)が一時文字列の14文字目(tmp_lot_name[14])として取得されて、商(0)が一時文字列の15文字目(tmp_lot_name[15])として取得される(ステップS203〜ステップS208の五巡目)。
【0079】
最後に、圧縮文字列データの第6桁値(0)がそのまま一時文字列の16文字目(tmp_lot_name[16])として取得される(図5では明示せず)。
【0080】
圧縮文字列データ(otpLotDat)から一時文字列(tmp_lot_name)への変換処理が完了すると、続いて、一時文字列(tmp_lot_name)から出力文字列(lot_name)への変換処理が行われる。
【0081】
一時文字列の1文字目(tmp_lot_name[1])〜8文字目(lot_name[8])に相当する新文字コードは、いずれも1〜26の範囲内(英文字に相当)に含まれている。従って、各々の新文字コード(23、1、6、5、18、1、2、3)に64を加算したASCII文字コード(87、65、70、69、82、65、66、67)が出力文字列の1文字目(lot_name[1])〜8文字目(lot_name[8])としてレジスタに一時格納される(ステップS210及びステップS211)。
【0082】
一方、一時文字列の9文字目(tmp_lot_name[9])〜12文字目(lot_name[12])に相当する新文字コードは、いずれも30〜39の範囲内(数字に相当)に含まれている。従って、各々の新文字コード(31、32、33、34)に18を加算したASCII文字コード(49、50、51、52)が出力文字列の9文字目(lot_name[9])〜12文字目(lot_name[12])としてレジスタに一時格納される(ステップS212及びステップS213)。
【0083】
また、一時文字列の13文字目(tmp_lot_name[13])がNUL文字であることから、出力文字列の13文字目(lot_name[13])には、出力文字列(lot_name)の終端文字として0(NUL文字)が入力されて、一連のフローが終了される(ステップS214)。
【0084】
このように、本発明に係る文字コード復元方法によれば、先述の文字コード圧縮方法によって生成された圧縮文字列データ(otpLotDat)から出力文字列(lot_name)を復元することが可能となる。
【0085】
なお、新文字コードの文字種類数x、圧縮文字列データ(otpLotDat)の一桁に統合される文字数y、及び、圧縮文字列データ(otpLotDat)のビット数zについては、先にも述べた通り、x<2という関係式を満たす範囲内で任意に設定することができる。
【0086】
すなわち、本発明に係る文字コード復元方法は、より概念的に述べると、初期値として圧縮文字列データ(otpLotDat)が格納されるテンポラリデータ(dt)のxによる除算とその商(dt/x)によるテンポラリデータ(dt)の生成(上書)を(y−1)回繰り返し、各回の除算で各々得られた余り(dt%x)と(y−1)回目の除算で得られた商(dt/x)を新文字コードで表される一時文字列(tmp_lot_name)として取得する第1ステップと、一時文字列(tmp_lot_name)を出力文字列(lot_name)に変換する第2ステップを有する構成であると言える。
【0087】
<アプリケーション>
図7A及び図7Bは、それぞれ、先述の文字コード圧縮方法及び文字コード復元方法が適用されるアプリケーションの一例を示すブロック図である。図7A及び図7Bに示された半導体装置の量産設備には、コンピュータ10と通信プロトコル変換装置20が含まれており、半導体装置30の量産工程において、半導体装置30内にパッケージング済みのチップ(図7Aを参照)や、ウェハ40上に形成されたチップ(図7B)を対象として、各チップ毎の不揮発性メモリに製造管理情報(ロット番号、ウェハ番号、ウェハ上における座標情報など)の書込/読出が行われる。
【0088】
コンピュータ10は、書込/読出部11と、演算部12と、ヒューマンインタフェイス部13と、記憶部14と、を有している。コンピュータ10は、記憶部14に格納された文字コード圧縮プログラムや文字コード復元プログラムを適宜読み出して実行することにより、製造管理情報の書込/読出動作を統括的に制御するデータ書込/読出装置として機能する。なお、コンピュータ10としては、パーソナルコンピュータやマイコン、或いは製品テスタなどがこれに相当する。
【0089】
書込/読出部11は、通信プロトコル変換装置20を介して、各チップ毎の不揮発性メモリに製造管理情報(圧縮文字列データ)の書込/読出しを行う。なお、書込/読出部11と半導体装置30ないしはウェハ40との間で直接的に通信を行うことができる場合には通信プロトコル変換装置20を省略することが可能である。
【0090】
演算部12は、先述の文字コード圧縮方法や文字コード復元方法を用いて、製造管理情報の圧縮/復元(すなわち、入力文字列から圧縮文字列データへの変換処理、及び、圧縮文字列データから出力文字列への変換処理)を行う。なお、演算部12としては、CPU[Central Processing Unit]などを好適に用いることができる。
【0091】
ヒューマンインタフェイス部13は、製造管理情報の書込時に入力文字列の入力を受け付けたり、製造管理情報の読出時に出力文字列を出力したりする。なお、ヒューマンインタフェイス部13としては、キーボード、マウス、タッチパネル、ディスプレイ、スピーカなどを用いることができる。
【0092】
記憶部14は、演算部12で実行される各種プログラム(文字コード圧縮プログラムや文字コード復元プログラムを含む)を不揮発的に格納するほか、各種プログラムの作業領域としても用いられる。なお、記憶部14としては、ハードディスクドライブや半導体メモリデバイスなどを用いることができる。
【0093】
このように、半導体装置の量産工程において、チップ毎の不揮発性メモリに格納される製造管理情報の文字コードを圧縮/復元する構成であれば、限られた記憶容量に多くの文字情報を記憶させることが可能となる。
【0094】
なお、図7A及び図7Bでは、ヒューマンインタフェイス部を有するアプリケーションを例に挙げて説明を行ったが、本発明の構成はこれに限定されるものではなく、ヒューマンインタフェイス部が存在しないアプリケーションも想定される。例えば、データ書込時にロットデータを人間が入力する場合には、上記のヒューマンインタフェイス部が必要となるが、ロットデータは、ウェハ上やICの表印、或いは、梱包のラベルやバーコード等でも記載されており、それらを自動的に読み取る装置があれば、上記のヒューマンインタフェイス部は不要となる。また、データ読出時についても、次の工程などで単にロットデータを読み出して品質管理のために単にハードディスクドライブなどの記憶領域に記録しておけば足りる場合には、ヒューマンインタフェイス部が不要となる。
【0095】
<その他の変形例>
なお、上記では、半導体装置の量産工程において、チップ毎の不揮発性メモリに格納される製造管理情報の文字コードを圧縮/復元する構成を例に挙げて説明を行ったが、本発明の適用対象はこれに限定されるものではなく、その他の用途に供される文字コードの圧縮/復元を行う際にも広く本発明を適用することが可能である。
【0096】
また、本発明に係る文字コード圧縮方法及び文字コード復元方法を応用すれば、入力文字列の暗号化/復号化を行うことも可能である。その意味において、本明細書中で用いられている「圧縮/復元」という文言は、これを狭義的に解釈することなく、「暗号化/復号化」も含む広義的な概念として解釈すべきものである。
【0097】
本発明の特徴としては、圧縮/復元を共に2ステップで処理する構成となっており、実施形態では1ステップ毎に全ての文字列を処理する例を示したが、圧縮後の各文字単位kごとに2ステップの処理を実施する構成も考えられる。
【0098】
本発明は、固定長と可変長の両方の文字列を処理することができ、固定長の文字列ではNUL文字の処理を省略することも可能である。
【0099】
このように、本明細書中に開示されている種々の技術的特徴は、上記実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明に限定されるものではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。
【産業上の利用可能性】
【0100】
本発明に係る文字コード圧縮方法及び文字コード復元方法は、例えば、半導体装置の量産工程において、チップ固有の製造管理情報を格納する不揮発性メモリの小容量化を実現するための技術として利用することが可能である。
【符号の説明】
【0101】
10 コンピュータ
11 書込/読出部
12 演算部
13 ヒューマンインタフェイス部
14 記憶部
20 通信プロトコル変換装置
30 半導体装置
40 ウェハ

【特許請求の範囲】
【請求項1】
m通りの基本文字コードで表される入力文字列の文字種を集約ないしは削減してx通り(ただしx<m)の新文字コードで表される新文字列に変換する第1ステップと、
前記新文字列をy文字ずつに区切り、n文字目(ただしn=1、2、…、y)の新文字コードにxn−1を各々乗算した値を全て足し合わせて、y文字分でzビット(ただしx<2)の圧縮文字列データを生成する第2ステップと、
を有することを特徴とする文字コード圧縮方法。
【請求項2】
前記第1ステップは、
前記入力文字列に含まれる英文字(「A」〜「Z」、「a」〜「z」)に対して大文字/小文字を区別することなく26文字分の新文字コードを割り当てるステップと、
前記入力文字列に含まれる数字(「0」〜「9」)に対して10文字分の新文字コードを割り当てるステップと、
を含むことを特徴とする請求項1に記載の文字コード圧縮方法。
【請求項3】
前記新文字コードは、10進表記で0〜39の値を取り得ることを特徴とする請求項2に記載の文字コード圧縮方法。
【請求項4】
前記新文字コードは、0がNUL文字であり、1〜26が英文字であり、30〜39が数字であることを特徴とする請求項3に記載の文字コード圧縮方法。
【請求項5】
前記新文字コードは、27〜29が記号文字であることを特徴とする請求項4に記載の文字コード圧縮方法。
【請求項6】
請求項1〜請求項5のいずれか一項に記載の文字コード圧縮方法によって生成された前記圧縮文字列データから前記基本文字コードで表される出力文字列を復元する文字コード復元方法であって、
初期値として前記圧縮文字列データが格納されるテンポラリデータのxによる除算とその商による前記テンポラリデータの生成を(y−1)回繰り返し、各回の除算で各々得られた余りと(y−1)回目の除算で得られた商を前記新文字コードで表される一時文字列として取得する第1ステップと、
前記一時文字列を前記出力文字列に変換する第2ステップと、
を有することを特徴とする文字コード復元方法。
【請求項7】
前記第2ステップは、前記出力文字列が所定長に達したとき、或いは、前記一時文字列でNUL文字が確認されたときにフローを終了することを特徴とする請求項6に記載の文字コード復元方法。
【請求項8】
請求項1〜請求項5のいずれか一項に記載された文字コード圧縮方法を用いて前記入力文字列から前記圧縮文字列データを生成する演算部と、
前記演算部で実行される各種プログラムを格納する記憶部と、
前記圧縮文字列データを外部メモリに書き込む書込部と、
を有することを特徴とするデータ書込装置。
【請求項9】
演算部、記憶部、及び、書込部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを請求項8に記載のデータ書込装置として機能させることを特徴とするデータ書込プログラム。
【請求項10】
外部メモリから圧縮文字列データを読み出す読出部と、
請求項6または請求項7に記載された文字コード復元方法を用いて前記圧縮文字列データから出力文字列を生成する演算部と、
前記演算部で実行される各種プログラムを格納する記憶部と、
を有することを特徴とするデータ読出装置。
【請求項11】
読出部、演算部、及び、記憶部を備えたコンピュータに読み出されて実行されることにより、前記コンピュータを請求項10に記載のデータ読出装置として機能させることを特徴とするデータ読出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate


【公開番号】特開2013−73592(P2013−73592A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−214584(P2011−214584)
【出願日】平成23年9月29日(2011.9.29)
【出願人】(000116024)ローム株式会社 (3,539)
【Fターム(参考)】