(57)【要約】【課題】パッケージ化された後でも検査プログラムを用いた検査が可能であり、かつ、検査後において不正なプログラムの実行を確実に防止できる集積回路とその検査方法を提供する。【解決手段】図１に示す集積回路１０によれば、起動時において、内部のメモリ５０に格納される起動プログラムが処理部４０に読み込まれて実行される。この起動プログラムでは、例えば同一アドレスへの書き込み値とその読み出し値とを比較することによって、メモリ２０が破損しているか否かの検査が行なわれる。このメモリ検査の結果、メモリ２０が破損していない場合は、集積回路１０のインターフェース部３０より入力される任意のプログラムの実行が許可され、メモリ２０が破損している場合は、インターフェース部３０より入力されるプログラムの実行が禁止される。【選択図】      図１
2005025510.tif 000002
【特許請求の範囲】
【請求項１】
耐久性限界を超えて書き込みが繰り返された場合に破損する第１のメモリと、
データ入力手段と、
上記第１のメモリが破損しているか否かを検査し、該メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムの実行を許可し、上記第１のメモリが破損している場合は、上記入力されるプログラムの実行を禁止する処理手段と、
を有する集積回路。
【請求項２】
上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力される第１のプログラムに応じて、上記集積回路の所定の検査を実行し、上記データ入力手段より入力される第２のプログラムに応じて、上記第１のメモリに上記耐久性限界を超えた書き込みを行う、
請求項１に記載の集積回路。
【請求項３】
上記処理手段に所定の処理を実行させる第３のプログラムを格納した第２のメモリを有し、
上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損している場合、上記第２のメモリに格納された上記第３のプログラムを実行する、
請求項２に記載の集積回路。
【請求項４】
上記第２のメモリは、上記第１のメモリが破損しているか否かを検査する第１のステップと、上記第１のステップにおける検査の結果、上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムを実行し、上記第１のメモリが破損している場合は、上記第３のプログラムを実行する第２のステップと、を有する第４のプログラムを格納し、
上記処理手段は、起動時において上記第４のプログラムを実行する、
請求項３に記載の集積回路。
【請求項５】
第３のメモリを有し、
上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムを上記第１のメモリに書き込み、上記第１のメモリに書き込んだ当該プログラムを上記第３のメモリにロードし、上記第３のメモリにロードした当該プログラムを実行する、
請求項１に記載の集積回路。
【請求項６】
上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記第３のメモリにロードした第１のプログラムに応じて、上記集積回路の所定の検査を実行し、上記第３のメモリにロードした第２のプログラムに応じて、上記第１のメモリに上記耐久性限界を超えた書き込みを行う、
請求項５に記載の集積回路。
【請求項７】
上記第２のメモリは、読み出し専用メモリである、
請求項４に記載の集積回路。
【請求項８】
耐久性限界を超えて書き込みが繰り返された場合に破損するメモリを有した集積回路の検査方法であって、
上記第１のメモリが破損しているか否かを検査し、上記メモリ検査の結果、上記第１のメモリが破損していない場合、上記集積回路のデータ入力手段より入力されるプログラムの実行を許可し、上記第１のメモリが破損している場合は、上記入力されるプログラムの実行を禁止する起動プログラムを、上記集積回路の処理手段に実行させる第１の工程と、
上記第１の工程において起動プログラムを実行させた後、上記集積回路の所定の検査を実行するプログラムを上記データ入力手段より入力して上記処理手段に実行させる第２の工程と、
上記第２の工程の後、上記第１のメモリに上記耐久性限界を超えた書き込みを行う第３の工程と、
を有する検査方法。
【請求項９】
上記第３の工程は、上記第１の工程において起動プログラムを実行させた後、上記第１のメモリに上記耐久性限界を超えた書き込みを行うプログラムを上記データ入力手段より入力して上記処理手段に実行させる、
請求項８に記載の検査方法。
【請求項１０】
上記第２の工程および上記第３の工程は、
上記データ入力手段より入力されるプログラムを上記第１のメモリに書き込む第４の工程と、
上記第４の工程において上記第１のメモリに書き込んだプログラムを上記集積回路の第３のメモリにロードする第５の工程と、
上記第５の工程において上記第３のメモリにロードしたプログラムを上記処理手段に実行させる第６の工程とを有する、
請求項９に記載の検査方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路とその検査方法に係り、特に、検査用のプログラムを起動するための回路を備えた集積回路とその検査方法に関するものである。
【０００２】
【従来の技術】
一般に、ＣＰＵを備えた大規模な集積回路においては、所定の機能が正常に働いているか否かを検査するために、検査用のプログラムを実行するための回路が設けられている。例えば、集積回路に内蔵されたメモリに格納されているプログラムに代わって、外部より任意のプログラムをロードして実行するためのインターフェース回路などが設けられている。
【０００３】
通常、このような検査プログラムには、内蔵メモリに格納される正規のプログラムと同様に、集積回路の種々の処理を実行する権限が与えられている。このため、もし製品として出荷された集積回路が検査プログラムの実行を許す状態にあると、検査プログラムの代わりに不正なプログラムが集積回路において実行される危険性がある。例えば、内蔵メモリに格納される正規のプログラムや機密データを外部に読み出したり、あるいは、正規のプログラムを不正なプログラムに書き換えたりといった、通常の使用では困難な不正行為が可能になってしまう。
【０００４】
このような不正行為を防止するために、製品出荷後の集積回路において検査プログラムが実行できなくなるように、種々の対策が講じられている。
一般には、パッケージ化される前のウェーハまたはチップの状態で、検査プログラムを用いた機能検査を行い、その検査後、検査プログラムの入出力端子が外部に露出しないようにパッケージ化する方法が用いられる。
【０００５】
また、この他にも、例えば特許文献１の図３には、半導体チップ（３）に内蔵されるセキュリティ回路（３１）が記載されている。
このセキュリティ回路（３１）は、不正な書き換え行為からの保護を必要とするプログラムやデータを記憶したセキュリティデータ記憶回路（３６）を内蔵するとともに、次に述べるＩＤ記憶回路（３３）、カウンタ回路（３７）、一致検出回路（３５）を内蔵する。
【０００６】
ＩＤ記憶回路（３３）は、半導体チップ（３）の外部から読み出し不可能で、かつ書き換え不可能な不揮発性メモリからなり、複数の識別情報を記憶する。
カウンタ回路（３７）は、このＩＤ記憶回路（３３）に記憶されている複数の識別情報のうちの何れか１つを指定するための指定情報を、毎回規則的または不規則に変化させて生成し、その指定情報を半導体チップ（３）の外部に出力することが可能である。
一致検出回路（３５）は、半導体チップ（３）の外部から入力された入力識別情報が、ＩＤ記憶回路（３３）に記憶されかつカウンタ回路（３７）からの指定情報によって指定された識別情報と一致しているか否かを判別し、一致しているときに限ってセキュリティデータ記憶回路３６の書き換えを許可する。
このような構成によって、ＩＤ記憶回路（３３）に記憶されている識別情報についての知識を有していない者が、セキュリティデータ記憶回路３６の内容を不正に書き換えることを困難にしている。
【０００７】
【特許文献１】
特開２０００−２４２４９２号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、検査プログラムの入出力端子をパッケージによって覆う方法では、パッケージ化された後の出荷時の状態において、検査プログラムを用いた詳しい機能検査を行うことができない。そのため、製品の不良率を上昇させてしまう恐れがある。
【０００９】
また、特許文献１に記載されるセキュリティ回路（３１）では、半導体チップ（３）に識別情報を入力する過程においてその内容が外部に漏洩してしまう可能性や、多数回の試行によって識別情報を見出されてしまう可能性がある。また、一旦識別情報が漏洩してしまうと、不正行為に歯止めが利かなくなるという不利益がある。
【００１０】
本発明はかかる事情に鑑みてなされたものであり、パッケージ化された後でも検査プログラムを用いた検査が可能であり、かつ、検査後において不正なプログラムの実行を確実に防止できる集積回路とその検査方法を提供することにある。
【００１１】
【課題を解決するための手段】
上記の目的を達成するため、本発明の第１の観点の集積回路は、第１のメモリと、データ入力手段と、処理手段とを有する。
上記第１のメモリは、耐久性限界を超えて書き込みが繰り返された場合に破損する。
上記処理手段は、上記第１のメモリが破損しているか否かを検査し、該メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムの実行を許可し、上記第１のメモリが破損している場合は、上記入力されるプログラムの実行を禁止する。
好適には、上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力される第１のプログラムに応じて、上記集積回路の所定の検査を実行し、上記データ入力手段より入力される第２のプログラムに応じて、上記第１のメモリに上記耐久性限界を超えた書き込みを行う。
【００１２】
本発明の第１の観点によると、上記処理手段において、上記第１のメモリが破損しているか否かの検査が行われる。このメモリ検査の結果において、上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムの実行が許可され、上記第１のメモリが破損している場合は、上記データ入力手段より入力されるプログラムの実行が禁止される。このため、上記第１のメモリの破損により、上記データ入力手段より入力されるプログラムの実行が防止される。
例えば、上記第１のメモリが破損していない状態で上記データ入力手段より上記第１のプログラムを入力すると、上記メモリ検査の結果において上記第１のメモリが破損していないことから、上記処理手段において、上記第１のプログラムに応じた上記集積回路の所定の検査が実行される。次いで、上記データ入力手段より上記第２のプログラムを入力すると、この段階においても、上記メモリ検査の結果において上記第１のメモリが破損していないことから、上記処理手段において、上記第２のプログラムに応じて、上記第１のメモリに上記耐久性限界を超えた書き込みが行われる。その結果、以降の上記メモリ検査では、上記第１のメモリが破損しているため、上記データ入力手段より入力されるプログラムの実行が防止される。
【００１３】
また、本発明の第１の観点の集積回路は、上記処理手段に所定の処理を実行させる第３のプログラムを格納した第２のメモリを有しても良く、上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損している場合、上記第２のメモリに格納された上記第３のプログラムを実行しても良い。
上述した構成によると、上記メモリ検査の結果において上記第１のメモリが破損している場合、上記処理手段では、上記データ入力手段より入力されるプログラムの実行が禁止されるとともに、上記第２のメモリに格納された上記第３のプログラムが実行される。
【００１４】
また、本発明の第１の観点の集積回路は、第３のメモリを有しても良く、上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記データ入力手段より入力されるプログラムを上記第１のメモリに書き込み、上記第１のメモリに書き込んだ当該プログラムを上記第３のメモリにロードし、上記第３のメモリにロードした当該プログラムを実行しても良い。
また、上記処理手段は、上記メモリ検査の結果において上記第１のメモリが破損していない場合、上記第３のメモリにロードした第１のプログラムに応じて、上記集積回路の所定の検査を実行し、上記第３のメモリにロードした第２のプログラムに応じて、上記第１のメモリに上記耐久性限界を超えた書き込みを行っても良い。
上述した構成によると、上記データ入力手段より入力されるプログラムは、上記第１のメモリに書き込まれ、更に上記第１のメモリから上記第３のメモリへロードされた後に、上記処理手段において実行される。このため、上記第１のメモリの破損により、上記データ入力手段より入力されるプログラムの実行がより確実に防止される。
【００１５】
本発明の第２の観点の検査方法は、耐久性限界を超えて書き込みが繰り返された場合に破損するメモリを有した集積回路の検査方法であり、第１の工程と、第２の工程と、第３の工程とを有する。
上記第１の工程は、上記第１のメモリが破損しているか否かを検査し、上記メモリ検査の結果、上記第１のメモリが破損していない場合、上記集積回路のデータ入力手段より入力されるプログラムの実行を許可し、上記第１のメモリが破損している場合は、上記入力されるプログラムの実行を禁止する起動プログラムを、上記集積回路の処理手段に実行させる。
上記第２の工程は、上記第１の工程において起動プログラムを実行させた後、上記集積回路の所定の検査を実行するプログラムを上記データ入力手段より入力して上記処理手段に実行させる。
上記第３の工程は、上記第２の工程の後、上記第１のメモリに上記耐久性限界を超えた書き込みを行う。
【００１６】
本発明の第２の観点によると、上記第１の工程では、上記集積回路の処理手段において上記起動プログラムが実行される。この起動プログラムでは、上記第１のメモリが破損しているか否かの検査が行われ、このメモリ検査の結果、上記第１のメモリが破損していない場合、上記集積回路のデータ入力手段より入力されるプログラムの実行が許可され、上記第１のメモリが破損している場合は、上記入力されるプログラムの実行が禁止される。
また、上記第２の工程では、上記第１の工程において起動プログラムが実行された後、上記集積回路の所定の検査を実行するプログラムが上記データ入力手段より入力され、上記処理手段において実行される。
上記第３の工程では、上記第２の工程の後、上記第１のメモリに対して上記耐久性限界を超えた書き込みが行われる。
これにより、以降の工程で上記処理手段の起動プログラムが実行されても、上記データ入力手段より入力されるプログラムの実行は禁止される。
【００１７】
また、上記第３の工程は、上記第１の工程において起動プログラムを実行させた後、上記第１のメモリに上記耐久性限界を超えた書き込みを行うプログラムを上記データ入力手段より入力して上記処理手段に実行させても良い。
これにより、上記第１のメモリに対する上記耐久性限界を超えた書き込みが、上記データ入力手段より入力されるプログラムに応じて自動的に実行される。
【００１８】
上記第２の工程および上記第３の工程は、上記データ入力手段より入力されるプログラムを上記第１のメモリに書き込む第４の工程と、上記第４の工程において上記第１のメモリに書き込んだプログラムを上記集積回路の第３のメモリにロードする第５の工程と、上記第５の工程において上記第３のメモリにロードしたプログラムを上記処理手段に実行させる第６の工程とを有しても良い。
これにより、上記データ入力手段より入力されるプログラムは、上記第１のメモリに書き込まれ、更に上記第１のメモリから上記第３のメモリへロードされた後に、上記処理手段において実行される。このため、上記第３の工程において上記第１のメモリが破損した後、上記データ入力手段より入力されるプログラムの実行はより確実に防止される。
【００１９】
【発明の実施の形態】
以下、本発明の２つの実施形態について述べる。
【００２０】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る集積回路の構成の一例を示すブロック図である。
図１に示す集積回路１０は、第１のメモリの実施形態であるメモリ２０と、データ入力手段の実施形態であるインターフェース部３０と、処理手段の実施形態である処理部４０と、第２のメモリの実施形態であるメモリ５０とを有する。
【００２１】
［メモリ２０］
メモリ２０は、耐久性限界を超えて書き込みが繰り返された場合に破壊するメモリである。メモリ２０には、例えばフラッシュＲＯＭなど、書き込みによる劣化の進行が比較的早いメモリが適用される。
【００２２】
［インターフェース部３０］
インターフェース部３０は、処理部４０において実行可能なプログラムのデータを、集積回路１０の外部から端子Ｔ１を介して入力し、処理部４０へ供給する。図１の例では、集積回路１０の外部の記憶装置７０に格納されるプログラム・データを読み出して、処理部４０に供給している。
【００２３】
［処理部４０］
処理部４０は、例えば集積回路に電源が投入される場合や、集積回路１０の図示しない初期化回路から初期化信号が入力される場合などの起動時において、メモリ５０に格納される起動プログラムを読み込んで実行する。すなわち、起動時において、処理部４０はメモリ５０の所定のアドレスより起動プログラムを読み込んで実行する。
【００２４】
［メモリ５０］
メモリ５０は、処理部４０の上述した起動プログラムと、この起動プログラム上で実行されるアプリケーション・プログラムを格納する。アプリケーション・プログラムは、処理部４０に所定の処理を実行させるプログラムであり、後述する集積回路の検査が終了した後は、実質的にこのアプリケーション・プログラムに基づいて、処理部４０における大部分の処理が実行される。
【００２５】
次に、メモリ５０に格納される起動プログラムについて、図２に示すフローチャートを参照して説明する。
【００２６】
ステップＳＴ１０１：
まず、メモリ２０に対するデータの書き込みが行われる。このときメモリ２０に書き込むデータの値は、耐久性限界を超えた書き込みによってメモリ２０が破壊された場合にメモリ２０から読み出される値とは異なる値である。例えば、破壊時においてメモリ２０からの読み出しデータが常にビット値‘０’となる場合、ステップＳＴ１０１では、メモリ２０にビット値‘１’を書き込む。
【００２７】
ステップＳＴ１０２：
ステップＳＴ１０１における書き込みの後、この書き込みを行った同一のアドレスからデータが読み出される。
【００２８】
ステップＳＴ１０３：
ステップＳＴ１０１において書き込まれた値と、ステップＳＴ１０２において読み出された値とを比較し、この比較結果から、メモリ２０が破損しているか否かの判定が行われる。すなわち、書き込み値と読み出し値とが一致する場合、メモリ２０は破損していないと判定され、そうでない場合、メモリ２０は破損していると判定される。
【００２９】
ステップＳＴ１０４：
ステップＳＴ１０３において、書き込み値と読み出し値とが一致し、メモリ２０が破損していないと判定された場合、インターフェース部３０において集積回路１０の外部の記憶装置７０からプログラムが読み込まれ、処理部４０に入力される。処理部４０では、この外部から読み込まれたプログラムが実行される。
【００３０】
ステップＳＴ１０５：
ステップＳＴ１０３において、書き込み値と読み出し値とが一致せず、メモリ２０が破損していると判定された場合、処理部４０では、集積回路１０の内部のメモリ５０に格納されたアプリケーション・プログラムが実行される。
【００３１】
ここで、上述した構成を有する図１に示す集積回路１０の検査方法について、図３〜図６のフローチャートを参照して説明する。
【００３２】
図３は、集積回路１０の検査方法の一例を示すフローチャートである。
集積回路１０の検査は、例えば、図３に示すように２つの工程（ステップＳＴ２０１およびＳＴ２０２）を有する。
ステップＳＴ２０１では、まだメモリ２０が破損していない集積回路１０に対して、所定の検査プログラムに基づいた検査が行われる。
ステップＳＴ２０２では、この検査の終了後に、メモリ２０を破壊させるための破壊用プログラムが処理部４０において実行される。これにより、メモリ２０が破損し、外部より入力されるプログラムの実行が禁止された状態になる。
【００３３】
図４は、上記した図３の検査方法における、検査工程（ステップＳＴ２０１）のより詳細な手順の一例を示すフローチャートである。
【００３４】
ステップＳＴ３０１：
まず、処理部４０が起動され、メモリ５０の起動プログラムが処理部４０において実行される。
【００３５】
ステップＳＴ３０２，ＳＴ３０３：
メモリ２０はまだ破損していないため、起動プログラムでは、ステップＳＴ１０３の判定において、書き込み値と読み出し値とが等しくなり、ステップＳＴ１０４の処理が実行される。一方、集積回路１０の外部には、所定の検査プログラムを格納した記憶装置７０が準備され、集積回路１０の端子Ｔ１に接続される。したがって、集積回路１０には、記憶装置７０に格納された検査プログラムがインターフェース部３０を介して読み込まれて、その処理部４０に入力される（ステップＳＴ３０２）。そして、この検査プログラムに応じた処理が処理部４０において実行される（ステップＳＴ３０３）。
なお、図１には特に図示していないが、検査において必要な場合には、集積回路１０の所定の端子に検査のための装置が接続される。この検査装置では、例えば、上述した検査プログラムの処理と連動して、集積回路１０に対する信号の供給や、集積回路１０からの出力信号の検査・判定などが行われる。
【００３６】
ステップＳＴ３０４：
検査プログラムを用いた一連の検査の後、次に実行すべき検査がある場合には、再びステップＳＴ３０１に戻って、処理部４０の起動（ステップＳＴ３０１）、検査プログラムの供給（ステップＳＴ３０２）および実行（ステップＳＴ３０３）が繰り返される。この場合、必要に応じて、記憶装置７０には新たな検査プログラムが格納される。
次に実行すべき検査がない場合には、集積回路１０に対する検査工程が終了する。
【００３７】
図５は、上記した図３の検査方法における、破壊書き込み工程（ステップＳＴ２０２）のより詳細な手順の一例を示すフローチャートである。
【００３８】
ステップＳＴ４０１：
まず、図４に示す検査工程の場合と同様に処理部４０が起動され、メモリ５０の起動プログラムが処理部４０において実行される。
【００３９】
ステップＳＴ４０２，ＳＴ４０３：
メモリ２０は、この段階においてもまだ破損していないため、起動プログラムでは、ステップＳＴ１０３の判定において、書き込み値と読み出し値とが等しくなり、ステップＳＴ１０４の処理が実行される。一方、集積回路１０の外部には、メモリ２０を破壊させるための後述する破壊プログラムを格納した記憶装置７０が準備され、集積回路１０の端子Ｔ１に接続される。したがって、集積回路１０には、記憶装置７０に格納されたこの破壊プログラムがインターフェース部３０を介して読み込まれて、その処理部４０に入力される（ステップＳＴ４０２）。そして、この破壊プログラムに応じた処理が処理部４０において実行される（ステップＳＴ４０３）。
【００４０】
図６は、メモリ２０を破壊する破壊プログラムにおける処理の流れの一例を示すフローチャートである。
【００４１】
ステップＳＴ５０１：
まず、メモリ２０に対するデータの書き込みが行われる。このときメモリ２０に書き込むデータの値は、既に述べた起動プログラムのステップＳＴ１０１と同様に、破壊後のメモリ２０から読み出される値とは異なる値である。
【００４２】
ステップＳＴ５０２：
ステップＳＴ５０１における書き込みの後、この書き込みを行った同一のアドレスからデータが読み出される。
【００４３】
ステップＳＴ５０３：
ステップＳＴ５０１において書き込まれた値と、ステップＳＴ５０２において読み出された値とを比較し、この比較結果から、メモリ２０が破損しているか否かの判定が行われる。書き込み値と読み出し値とが一致する場合、メモリ２０は破損していないと判定され、そうでない場合、メモリ２０は破損していると判定される。
この判定の結果、まだメモリ２０が破損していない場合には、ステップＳＴ５０１の書き込み、ステップＳＴ５０２の読み出し、ステップＳＴ５０３の判定が再び繰り返され、メモリ２０が破損している場合には、破壊プログラムの処理が終了する。
【００４４】
以上説明したように、図１に示す集積回路１０によれば、起動時において、内部のメモリ５０に格納される起動プログラムが処理部４０に読み込まれて実行される。この起動プログラムでは、例えば同一アドレスへの書き込み値とその読み出し値とを比較することによって、メモリ２０が破損しているか否かの検査が行なわれる。このメモリ検査の結果、メモリ２０が破損していない場合は、集積回路１０のインターフェース部３０より入力される任意のプログラムの実行が許可され、メモリ２０が破損している場合は、インターフェース部３０より入力されるプログラムの実行が禁止される。
そのため、図３〜図６のフローチャートに示す検査方法のように、メモリ２０が破損していない状態で、インターフェース部３０より検査用のプログラムを入力し、これを処理部４０に実行させて集積回路１０の所定の検査を行った上で、インターフェース部３０よりメモリ２０の破壊用のプログラムを入力し、これを処理部４０に実行させると、それ以降、処理部４０において、インターフェース部３０より入力されるプログラムの実行を禁止することができる。
すなわち、検査プログラムを用いた検査を、パッケージ化する前のウェーハやチップの状態だけでなく、パッケージ化された状態の集積回路に対しても実行することが可能である。したがって、より出荷形態に近い集積回路に対して検査プログラムを用いた精密な検査を行うことが可能になり、製品の不良率を効果的に抑えることができる。更に、その検査後において、不正なプログラムが入力端子Ｔ１より入力され実行されることを確実に防止することができる。
【００４５】
また、図２に示す起動プログラムのうち、アプリケーション・プログラムは製品ごとに異なる可能性があるものの、それ以外の部分は集積回路１０の機能に依らず共通である。したがって、起動プログラムにおいて共通化できる部分をソフトウェア・ライブラリとして一度作成すれば、後に種々の機能を有したアプリケーション・プログラムを開発した場合においても、この共通のライブラリを再利用することが可能であり、設計作業の効率化を図ることができる。
【００４６】
また、メモリ２０としては、ＣＰＵなどの処理手段を備える集積回路において広く一般に使用されているフラッシュＲＯＭなどの不揮発性メモリを利用することができる。したがって、集積回路１０にこのようなメモリが設けられている場合には、その一部分をメモリ２０として利用することも可能であり、回路規模の増大を極力抑えることが可能である。
【００４７】
しかも、メモリ２０の破壊は、メモリ２０に対して耐久性限界を超えた書き込みを行うという単純な方法で実現可能であり、そのための破壊プログラムは非常に簡易である。また、プログラムによって自動的にメモリ２０の破壊を実行できるため、出荷検査時における作業の負担を軽減できる。さらに、メモリ２０の破壊を実行するための特別な信号を外部の装置から集積回路に入力する必要がないため、そのような信号を入力するためのピンを集積回路に設けなくても良いという利点がある。
【００４８】
＜第２の実施形態＞
図７は、本発明の第２の実施形態に係る集積回路の構成の一例を示すブロック図であり、図１と図７の同一符号は同一の構成要素を示す。
【００４９】
図７に示す集積回路１０Ａは、図１に示す集積回路１０と同一の構成を有するとともに、端子Ｔ１より入力されるプログラムをロードするためのメモリ６０を有する。
メモリ６０は、本発明の第３のメモリの一実施形態である。
【００５０】
メモリ６０は、例えばＤＲＡＭやＳＲＡＭなど、データの書き込みと消去が可能なメモリであり、メモリ２０に書き込まれた外部のプログラムがロードされる。メモリ６０は、このような外部プログラムを格納する用途の他にも、処理部４０におけるプログラムの実行過程で一時的に記憶することが必要な種々のデータを格納するメモリとして利用することも可能である。
【００５１】
集積回路１０Ａの集積回路１０に対する違いは、図２に示すフローチャートのステップＳＴ１０４において、外部プログラムを入力し実行する際に、端子Ｔ１より入力した外部プログラムを一旦メモリ２０に書き込み、これをメモリ６０にロードして実行する点にある。
【００５２】
図８は、集積回路１０Ａにおける外部プログラムの入力と実行に係る処理の一例を示すフローチャートである。
【００５３】
ステップＳＴ６０１：
インターフェース部３０において集積回路１０の外部の記憶装置７０からプログラムが読み込まれ、メモリ２０に一旦書き込まれる。
【００５４】
ステップＳＴ６０２：
メモリ２０に書き込まれた外部プログラムが、再びメモリ２０から読み出され、メモリ６０に書き込まれる。
【００５５】
ステップＳＴ６０３：
メモリ６０に書き込まれた外部プログラムが処理部４０によって順に読み出され、その処理が実行される。
【００５６】
したがって、上述した図７に示す集積回路１０Ａによれば、集積回路１０と同様の効果を奏することが可能であるとともに、次に述べるような効果がもたらされる。
すなわち、図５に示す破壊プログラムが実行されたにも係わらず、破壊が完全でないために、起動プログラムのステップＳＴ１０３において書き込み値と読み出し値とが一致してしまうと、図１に示す集積回路１０では、破壊書き込み工程後であるにもかかわらず、外部プログラムの実行が許可されてしまう可能性がある。一方、図７に示す集積回路１０Ａでは、仮にこの    ような事態が起こったとしても、外部プログラムを入力し実行する際に、外部プログラムが一旦メモリ２０に書き込まれてから実行されるため、破壊後のメモリ２０に書き込まれる外部プログラムの大半がメモリ６０へ正常にロードされなくなる。そのため、メモリ６０には壊れたプログラムが格納されることになり、処理部４０において外部プログラムは正常に実行されなくなる。したがって、破壊書き込み工程後における外部プログラムの実行をより確実に防止することができる。
【００５７】
なお、本発明は上述した実施形態に限定されず、例えば次に述べるような種々の改変が可能である。
【００５８】
メモリ５０は、読み出し専用メモリを用いて構成しても良い。これにより、メモリ５０に書き込まれるプログラムの改竄を確実に防止することができる。
【００５９】
上述した実施形態では、破壊プログラムを用いて集積回路の内部でメモリを破壊する例を説明したが、この例の他に、外部の装置から信号を供給することによって内部のメモリを破壊することも可能である。
【００６０】
メモリ２０が破壊しているか否かを検査するステップＳＴ１０１〜ＳＴ１０３の処理において、メモリ２０に書き込むデータのデータ長は、１ビットでも良いし、複数ビットでも良い。
メモリの破壊後の値が不定な場合は、例えば‘１’と‘０’を共に含んだ複数ビットのデータを書き込み、その書き込み値と読み出し値とをビットごとに比較することによって、メモリの破壊の有無を判定しても良い。
また、メモリ２０を破壊するステップＳＴ１０１〜ＳＴ１０３の処理においても、メモリ２０に書き込むデータのデータ長は任意である。
【００６１】
また、外部プログラムを入力し実行する際に、外部プログラムを一旦メモリ２０に書き込む場合には、破壊書き込み工程において、この外部プログラムが書き込まれる可能性のある領域の全てを破壊しても良い。これにより、破壊書き込み工程の後における外部プログラムの実行をより確実に防止することができる。
【００６２】
【発明の効果】
本発明の集積回路とその検査方法によれば、パッケージ化された後でも検査プログラムを用いた検査が可能であり、かつ、検査後において不正なプログラムの実行を確実に防止できる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る集積回路の構成の一例を示すブロック図である。
【図２】起動プログラムにおける処理の流れの一例を示すフローチャートである。
【図３】集積回路の検査方法の一例を示すフローチャートである。
【図４】検査プログラムを集積回路に入力して実行する工程の一例を示すフローチャートである。
【図５】破壊プログラムを集積回路に入力して実行する工程の一例を示すフローチャートである。
【図６】破壊プログラムにおける処理の流れの一例を示すフローチャートである。
【図７】本発明の第２の実施形態に係る集積回路の構成の一例を示すブロック図である。
【図８】図７に示す集積回路における外部プログラムの入力と実行に係る処理の一例を示すフローチャートである。
【符号の説明】
１０，１０Ａ…集積回路、２０，５０，６０…メモリ、３０…インターフェース部、４０…処理部、７０…外部記憶装置
【図１】
2005025510.tif 000003
【図２】
2005025510.tif 000004
【図３】
2005025510.tif 000005
【図４】
2005025510.tif 000006
【図５】
2005025510.tif 000007
【図６】
2005025510.tif 000008
【図７】
2005025510.tif 000009
【図８】
2005025510.tif 000010