(57)【要約】【課題】リバースエンジニアリングでの半導体装置の再設計を困難にする。【解決手段】クロック信号で動作するフリップフロップと反転クロック信号で動作するフリップフロップとを有するシフトレジスタと、１以上のバッファを有する第１のバッファ群とその後段に接続される１以上のバッファを有する第２のバッファ群とを有しクロック信号を出力するクロックツリーとを含む半導体装置を設計する際、第２のバッファ群からクロック信号で動作するフリップフロップにクロック信号を供給する配線を生成し、第１のバッファ群から反転クロック信号で動作するフリップフロップにクロック信号を供給する配線を生成するようにして、リバースエンジニアリングでの半導体装置の再設計を困難にする。【選択図】図２
2019139714.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号で動作するフリップフロップと前記第１のクロック信号とは位相が異なる第２のクロック信号で動作するフリップフロップとを有するシフトレジスタと、１以上のバッファを有する第１のバッファ群と前記第１のバッファ群の後段に接続される１以上のバッファを有する第２のバッファ群とを有し前記第１のクロック信号を出力するクロックツリーとを含む半導体装置の設計方法であって、
前記第２のバッファ群から前記第１のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第１の配線を生成する第１の工程と、
前記第１のバッファ群から前記第２のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第２の配線を生成する第２の工程とを有することを特徴とする半導体装置の設計方法。
【請求項２】
前記第１の工程では、さらに前記第２のクロック信号を前記第２のクロック信号で動作するフリップフロップに供給する第３の配線を生成し、
前記第２の工程では、前記第１の工程で生成した前記第３の配線を、前記第２の配線に変更することを特徴とする請求項１記載の半導体装置の設計方法。
【請求項３】
前記第２のクロック信号は、前記第１のクロック信号を反転したクロック信号であることを特徴とする請求項１又は２記載の半導体装置の設計方法。
【請求項４】
第１のクロック信号で動作するフリップフロップと前記第１のクロック信号とは位相が異なる第２のクロック信号で動作するフリップフロップとを有するシフトレジスタと、
前記第１のクロック信号が入力され、１以上のバッファを有する第１のバッファ群と、
前記第１のバッファ群の後段に接続される１以上のバッファを有する第２のバッファ群と、
前記第２のバッファ群の出力と前記第１のクロック信号で動作するフリップフロップとを接続し、前記第２のバッファ群から前記第１のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第１の配線と、
前記第１のバッファ群の出力と前記第２のクロック信号で動作するフリップフロップとを接続し、前記第１のバッファ群から前記第２のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第２の配線とを有することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計方法及び半導体装置に関する。
【背景技術】
【０００２】
近年、半導体装置の不当なリバースエンジニアリングが増えてきている。リバースエンジニアリングの手法として、半導体装置が実装されたチップ表面からの光学的解析だけでなく、配線層を１層ずつ剥離して撮影し、得られた画像を重ね合わせ、ソフトウェアツールで配線情報を抽出し回路図を再現する技術も用いられている。
【０００３】
リバースエンジニアリングを防止するための様々な方法が提案されており（例えば、特許文献１〜１０参照）、リバースエンジニアリングを防ぐために、例えば配線層に工夫を施す方法や、配線層よりも下層にある拡散層やバルクを利用する方法が提案されている。例えば、特許文献１には、酸化膜厚を変えた複数種類のトランジスタから構成され、ゲート遅延を利用して出力の解析を困難にした回路を用いることで、リバースエンジニアリングによって半導体装置を再現することを困難にする技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９４７９１７６号明細書
【特許文献２】米国特許第９４３７５５５号明細書
【特許文献３】特開平６−１６３５３９号公報
【特許文献４】特開平９−９２７２７号公報
【特許文献５】米国特許第６１１７７６２号明細書
【特許文献６】米国特許第６９７９６０６号明細書
【特許文献７】米国特許第７１２８２７１号明細書
【特許文献８】米国特許第９３３７１５６号明細書
【特許文献９】特表２００４−５１８２７３号公報
【特許文献１０】特開２０１４−１３５３８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、前述した特許文献１に記載の技術では、酸化膜厚を変えた複数種類のトランジスタを用いるため、プロセスフローの変更が必要になる。また、リバースエンジニアリングを防止する他の方法においても、半導体製造プロセスの変更が必要になり、プロセス開発期間やコストが増加するといった問題がある。本発明の目的は、半導体製造プロセスの変更等を必要とせずに、リバースエンジニアリングでの半導体装置の再設計を困難にすることである。
【課題を解決するための手段】
【０００６】
本発明に係る半導体装置の設計方法は、第１のクロック信号で動作するフリップフロップと前記第１のクロック信号とは位相が異なる第２のクロック信号で動作するフリップフロップとを有するシフトレジスタと、１以上のバッファを有する第１のバッファ群と前記第１のバッファ群の後段に接続される１以上のバッファを有する第２のバッファ群とを有し前記第１のクロック信号を出力するクロックツリーとを含む半導体装置の設計方法であって、前記第２のバッファ群から前記第１のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第１の配線を生成する第１の工程と、前記第１のバッファ群から前記第２のクロック信号で動作するフリップフロップに前記第１のクロック信号を供給する第２の配線を生成する第２の工程とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、リバースエンジニアリングでの半導体装置の再設計を困難にすることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態における設計対象の半導体装置の例を示す図である。
【図２】本実施形態における半導体装置の設計方法の例を示すフローチャートである。
【図３】本実施形態における半導体装置の設計方法を説明する図である。
【図４】本実施形態における半導体装置の例を示す図である。
【図５】リバースエンジニアリングを説明する図である。
【図６】本実施形態における半導体装置の適用例を示す図である。
【図７】本実施形態における半導体装置の設計方法を実現可能なコンピュータの構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態を図面に基づいて説明する。
【００１０】
図１を参照して、本発明の実施形態における設計対象の半導体装置の例について説明する。本実施形態における設計対象の半導体装置は、例えば図１に例示した機能を実現するシフトレジスタを含む。図１（Ａ）に示すように、設計対象の半導体装置が有するシフトレジスタは、３つのフリップフロップ（レジスタ）１１、１２、１３を有する。
【００１１】
入力信号ＳＧＡが、フリップフロップ１１のデータ入力端子（Ｄ）に入力され、フリップフロップ１１のデータ出力端子（Ｑ）からの出力信号ＳＧＢが、フリップフロップ１２のデータ入力端子（Ｄ）に入力される。また、フリップフロップ１２のデータ出力端子（Ｑ）からの出力信号ＳＧＣが、フリップフロップ１３のデータ入力端子（Ｄ）に入力され、フリップフロップ１３のデータ出力端子（Ｑ）からの出力が出力信号ＳＧＤとして出力される。
【００１２】
フリップフロップ１１、１３のクロック入力端子には、バッファ１４を介してクロック信号ＣＫが入力され、フリップフロップ１２のクロック入力端子には、インバータ１５を介して、クロック信号ＣＫを反転した反転クロック信号ＣＫＢが入力される。フリップフロップ１１、１２、１３のそれぞれは、入力されるクロック信号の立ち上がり時にデータをラッチして出力する。したがって、フリップフロップ１２の出力は、フリップフロップ１１、１３に対してクロック信号ＣＫの半周期早く出力されることになるが、入力信号ＳＧＡをシフトして出力信号ＳＧＤを得るシフトレジスタの機能が実現される。
【００１３】
例えば、図１（Ｂ）に示すように、時刻Ｔ１１において、入力信号ＳＧＡがパルス状にハイレベル（“Ｈ”）になると、クロック信号ＣＫが立ち上がる時刻Ｔ１２において、フリップフロップ１１が“Ｈ”をラッチして出力信号ＳＧＢが“Ｈ”となる。続いて、クロック信号ＣＫＢが立ち上がる時刻Ｔ１３において、フリップフロップ１２が“Ｈ”をラッチして出力信号ＳＧＣが“Ｈ”となり、その後にクロック信号ＣＫが立ち上がる時刻Ｔ１４において、フリップフロップ１３が“Ｈ”をラッチして出力信号ＳＧＤが“Ｈ”となる。すなわち、図１（Ａ）に示すシフトレジスタは、入力される入力信号ＳＧＡをクロック信号ＣＫの２周期後に出力信号ＳＧＤとして出力する機能を実現する３段のシフトレジスタである。
【００１４】
次に、本実施形態における半導体装置の設計方法について説明する。図２は、本実施形態における半導体装置の設計方法を説明するフローチャートである。図４に示す処理は、例えばレイアウト設計等を行う半導体装置の設計装置により実行される。以下では、図１に示した３段のシフトレジスタを適宜参照して説明するが、本発明は、これに限定されるものではなく、２以上の異なる位相のクロック信号を用いる、任意の複数段のシフトレジスタに対して適用可能である。
【００１５】
まず、ステップＳ２１にて、設計装置は、回路情報に基づいてレイアウト設計を行い、半導体装置における配置配線及びクロックツリーを自動生成する。例えば、図１（Ａ）に示したシフトレジスタについては、図３に示すように配置配線及びクロックツリーが自動で生成される。この図３において、図１（Ａ）に示した構成要素と同一の構成要素には同一の符号を付している。図３において、１６、１７はバッファ（クロックバッファ）であり、クロック信号ＣＫをそのままの位相で出力する。図３に示すように、フリップフロップ１２は反転クロック信号ＣＫＢを受けるため、ステップＳ２１での処理後においてはインバータ１５が残っている。
【００１６】
次に、ステップＳ２２にて、設計装置は、ステップＳ２１での処理により得られた情報において、反転クロック信号の配線の変更を行う。ステップＳ２２での処理では、反転クロック信号ＣＫＢを出力するためのインバータを削除し、反転クロック信号ＣＫＢの代わりとして、クロックツリーの上流側のバッファから出力されるクロック信号ＣＫが供給されるようにクロック信号の配線を変更する。
【００１７】
例えば、図１（Ａ）に示したシフトレジスタについては、図４（Ａ）に示すように配線を変更する。反転クロック信号ＣＫＢを出力するためのインバータ１５を削除する。そして、シフトレジスタ１１、１３にクロック信号ＣＫを供給するバッファ１４よりもクロックツリーにおいて上流側にあるバッファ１６から出力されるクロック信号ＣＫＸがフリップフロップ１２に供給されるようクロック信号の配線を変更する。
【００１８】
このように変更すると、フリップフロップ１２におけるデータのラッチタイミングは、反転クロック信号ＣＫＢを用いる場合と比較して遅れることになる。しかし、クロック信号ＣＫが立ち上がる前にクロック信号ＣＫＸが立ち上がるので、シフトレジスタの出力信号ＳＧＤのタイミングには影響を及ぼすことなく、所望の動作が実現できる。
【００１９】
例えば、図４（Ｂ）に示すように、時刻Ｔ４１において、入力信号ＳＧＡがパルス状に“Ｈ”になると、クロック信号ＣＫが立ち上がる時刻Ｔ４２において、フリップフロップ１１が“Ｈ”をラッチして出力信号ＳＧＢが“Ｈ”となる。続いて、クロック信号ＣＫが次に立ち上がる時刻Ｔ４４より前の時刻Ｔ４３において、クロック信号ＣＫＸが立ち上がり、フリップフロップ１２が“Ｈ”をラッチして出力信号ＳＧＣが“Ｈ”となり、その後にクロック信号ＣＫが立ち上がる時刻Ｔ４４において、フリップフロップ１４が“Ｈ”をラッチして出力信号ＳＧＤが“Ｈ”となる。すなわち、入力信号ＳＧＡと出力信号ＳＧＤとの関係でみれば、入力される入力信号ＳＧＡをクロック信号ＣＫの２周期後に出力信号ＳＧＤとして出力する同じ機能が実現される。
【００２０】
図２に戻り、ステップＳ２２での処理を行った後、ステップＳ２３にて、設計装置は、クロック信号の配線を変更したレイアウト情報を出力して処理を終了する。
【００２１】
次に、前述のように設計を行って製造された半導体装置について、リバースエンジニアリングでの半導体装置の再設計が困難であることを説明する。リバースエンジニアリングでは、半導体装置のレイアウトから回路情報を抽出するので、図４（Ａ）に示したように配線が変更された半導体装置のレイアウトからは図５（Ａ）に示すような回路情報が得られることになる。すなわち、フリップフロップ５１〜５３の何れもがクロック信号ＣＫで動作する回路構成が得られる。なお、図５において、フリップフロップ５１〜５３は、それぞれ図４（Ａ）におけるフリップフロップ１１〜１３に対応する。
【００２２】
リバースエンジニアリングを行うエンジニアは、再設計においては配置配線の自動生成を再度実施するため、タイミング情報がまったく異なったものとなり、クロックツリーの自動生成も実施する必要がある。この際、図４（Ａ）に示したようなクロックツリーは一度すべて削除され、新たにクロックツリーの生成を行う。したがって、図５（Ａ）に示したようにフリップフロップ５１〜５３の何れもが同じ位相のクロック信号ＣＫで動作する回路構成では、フリップフロップ５１〜５３に対してクロックタイミング（スキュー）が調整された図５（Ｂ）に示すようなクロックツリーが生成される。なお、図５において、バッファ５６、５７は、それぞれ図４（Ａ）におけるバッファ１６、１７に対応する。
【００２３】
この場合には、図５（Ｃ）に示すように、クロック信号ＣＫが立ち上がる時刻Ｔ５１、Ｔ５２、Ｔ５３、Ｔ５４において、入力信号ＳＧＡがシフトされる。すなわち、クロック信号ＣＫの１周期毎に信号をシフトして、入力される入力信号ＳＧＡをクロック信号ＣＫの３周期後に出力信号ＳＧＤとして出力することになる。したがって、入力される入力信号ＳＧＡをクロック信号ＣＫの２周期後に出力信号ＳＧＤとして出力するシフトレジスタの機能を実現することができず、所望の動作を再現することができない。
【００２４】
このように本実施形態によれば、シフトレジスタにおいて、反転クロック信号ＣＫＢで動作するフリップフロップに対して、反転クロック信号ＣＫＢの代わりにクロックツリーにおける上流側のバッファが出力するクロック信号ＣＫを供給するように配線を変更することで、リバースエンジニアリングの際にクロックツリーの自動生成を実施すると、所望の動作が再現できなくなる。クロックツリーの自動生成で動作が再現できないと、クロックツリーにおけるゲート遅延や配線遅延をも考慮した解析が必要となり、その解析は非常に困難である。したがって、半導体装置のリバースエンジニアリングを困難にし、光学的・破壊的なリバースエンジニアリングによる不正コピーや不正使用目的の回路解析を防止することが可能となる。
【００２５】
図６は、本実施形態における半導体装置の適用例を示す図である。図６において、１００は、本実施形態における半導体装置を含む半導体チップである。半導体チップ１００において、各種の論理処理を行う論理処理回路部１１０に対して、前述のようにして設計された１個又は複数個の本実施形態における半導体装置１２０の出力が接続される。論理処理回路部１１０は、半導体装置１２０の出力を用いて一部又は全部の論理処理を行うことで、論理処理回路部１１０における入力と出力との関係は、半導体装置１２０の出力状態にも依存する。リバースエンジニアリングにより本実施形態における半導体装置１２０の出力状態を判明することは困難であり、論理処理回路部１１０における入力と出力との関係を解析することも困難となり、半導体チップの不正コピー等を防止することが可能となる。
【００２６】
前述した実施形態における半導体装置の設計方法は、例えばＣＰＵ又はＭＰＵ、ＲＡＭ、ＲＯＭ等を有するコンピュータが、記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータが前記機能を果たすように動作させるプログラムを、例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【００２７】
また、コンピュータがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【００２８】
また、供給されたプログラムがコンピュータにおいて稼動しているＯＳ（オペレーティングシステム）又は他のアプリケーションソフト等と協働して前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【００２９】
例えば、前述した実施形態における半導体装置の設計方法は、図７に示すようなコンピュータ（設計装置）により実現でき、そのＣＰＵ（Central Processing Unit）により前述した実施形態における半導体装置の設計方法の動作が実施される。図７は、本実施形態における半導体装置の設計方法を実現可能なコンピュータの構成例を示す図である。バス２０１には、ＣＰＵ２０２、ＲＯＭ（Read Only Memory）２０３、ＲＡＭ（Random Access Memory）２０４、ネットワークインターフェース２０５、入力装置２０６、出力装置２０７、及び外部記憶装置２０８が接続されている。
【００３０】
ＣＰＵ２０２は、データの処理や演算を行うとともに、バス２０１を介して接続された各構成要素を制御するものである。ＲＯＭ２０３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ２０２が実行することにより、コンピュータが起動する。外部記憶装置２０８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ２０４にコピーされてＣＰＵ２０２により実行することで、例えば前述した半導体装置の設計方法の各処理等が行われる。ＲＡＭ２０４は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。
【００３１】
ネットワークインターフェース２０５は、ネットワークに接続するためのインターフェースである。入力装置２０６は、例えばキーボードやポインティングデバイス（マウス）等であり、各種指定や入力等を行うことができる。出力装置２０７は、ディスプレイやプリンタ等であり、表示や印刷等を行うことができる。外部記憶装置２０８は、例えばハードディスク記憶装置やＣＤ−ＲＯＭのような記録媒体等であり、電源を切っても記憶内容が消えない。
【００３２】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００３３】
１１、１２、１３  フリップフロップ
１４、１６、１７  バッファ
１５  インバータ
１００  半導体チップ
１１０  論理処理回路部
１２０  半導体装置
２０１  バス
２０２  ＣＰＵ
２０３  ＲＯＭ
２０４  ＲＡＭ
２０５  ネットワークインターフェース
２０６  入力装置
２０７  出力装置
２０８  外部記憶装置
【図１】
2019139714.tif 000003
【図２】
2019139714.tif 000004
【図３】
2019139714.tif 000005
【図４】
2019139714.tif 000006
【図５】
2019139714.tif 000007
【図６】
2019139714.tif 000008
【図７】
2019139714.tif 000009