(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-12
(45)【発行日】2022-04-20
(54)【発明の名称】半導体装置の設計方法及び半導体装置
(51)【国際特許分類】
G06F 30/394 20200101AFI20220413BHJP
H01L 21/82 20060101ALI20220413BHJP
H01L 21/822 20060101ALI20220413BHJP
H01L 27/04 20060101ALI20220413BHJP
【FI】
G06F30/394
H01L21/82 L
H01L27/04 H
H01L27/04 D
(21)【出願番号】P 2018025201
(22)【出願日】2018-02-15
【審査請求日】2021-02-10
(73)【特許権者】
【識別番号】518055442
【氏名又は名称】株式会社吉川システック
(74)【代理人】
【識別番号】100090273
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】長友 春敏
【審査官】堀井 啓明
(56)【参考文献】
【文献】特開2016-063061(JP,A)
【文献】特開2004-260212(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
H01L 21/82
H01L 21/822
(57)【特許請求の範囲】
【請求項1】
第1のクロック信号で動作するフリップフロップと前記第1のクロック信号とは位相が異なる第2のクロック信号で動作するフリップフロップとを有するシフトレジスタと、1以上のバッファを有する第1のバッファ群と前記第1のバッファ群の後段に接続される1以上のバッファを有する第2のバッファ群とを有し前記第1のクロック信号を出力するクロックツリーとを含む半導体装置の設計方法であって、
コンピュータが、前記第2のバッファ群から前記第1のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第1の配線を生成する第1の工程と、
前記コンピュータが、前記第1のバッファ群から前記第2のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第2の配線を生成する第2の工程とを有することを特徴とする半導体装置の設計方法。
【請求項2】
前記第1の工程では、さらに前記第2のクロック信号を前記第2のクロック信号で動作するフリップフロップに供給する第3の配線を生成し、
前記第2の工程では、前記第1の工程で生成した前記第3の配線を、前記第2の配線に変更することを特徴とする請求項1記載の半導体装置の設計方法。
【請求項3】
前記第2のクロック信号は、前記第1のクロック信号を反転したクロック信号であることを特徴とする請求項1又は2記載の半導体装置の設計方法。
【請求項4】
第1のクロック信号で動作するフリップフロップと前記第1のクロック信号とは位相が異なる第2のクロック信号で動作するフリップフロップとを有するシフトレジスタと、
前記第1のクロック信号が入力され、1以上のバッファを有する第1のバッファ群と、
前記第1のバッファ群の後段に接続される1以上のバッファを有する第2のバッファ群と、
前記第2のバッファ群の出力と前記第1のクロック信号で動作するフリップフロップとを接続し、前記第2のバッファ群から前記第1のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第1の配線と、
前記第1のバッファ群の出力と前記第2のクロック信号で動作するフリップフロップとを接続し、前記第1のバッファ群から前記第2のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第2の配線とを有することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置の設計方法及び半導体装置に関する。
【背景技術】
【0002】
近年、半導体装置の不当なリバースエンジニアリングが増えてきている。リバースエンジニアリングの手法として、半導体装置が実装されたチップ表面からの光学的解析だけでなく、配線層を1層ずつ剥離して撮影し、得られた画像を重ね合わせ、ソフトウェアツールで配線情報を抽出し回路図を再現する技術も用いられている。
【0003】
リバースエンジニアリングを防止するための様々な方法が提案されており(例えば、特許文献1~10参照)、リバースエンジニアリングを防ぐために、例えば配線層に工夫を施す方法や、配線層よりも下層にある拡散層やバルクを利用する方法が提案されている。例えば、特許文献1には、酸化膜厚を変えた複数種類のトランジスタから構成され、ゲート遅延を利用して出力の解析を困難にした回路を用いることで、リバースエンジニアリングによって半導体装置を再現することを困難にする技術が提案されている。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許第9479176号明細書
【文献】米国特許第9437555号明細書
【文献】特開平6-163539号公報
【文献】特開平9-92727号公報
【文献】米国特許第6117762号明細書
【文献】米国特許第6979606号明細書
【文献】米国特許第7128271号明細書
【文献】米国特許第9337156号明細書
【文献】特表2004-518273号公報
【文献】特開2014-135386号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、前述した特許文献1に記載の技術では、酸化膜厚を変えた複数種類のトランジスタを用いるため、プロセスフローの変更が必要になる。また、リバースエンジニアリングを防止する他の方法においても、半導体製造プロセスの変更が必要になり、プロセス開発期間やコストが増加するといった問題がある。本発明の目的は、半導体製造プロセスの変更等を必要とせずに、リバースエンジニアリングでの半導体装置の再設計を困難にすることである。
【課題を解決するための手段】
【0006】
本発明に係る半導体装置の設計方法は、第1のクロック信号で動作するフリップフロップと前記第1のクロック信号とは位相が異なる第2のクロック信号で動作するフリップフロップとを有するシフトレジスタと、1以上のバッファを有する第1のバッファ群と前記第1のバッファ群の後段に接続される1以上のバッファを有する第2のバッファ群とを有し前記第1のクロック信号を出力するクロックツリーとを含む半導体装置の設計方法であって、コンピュータが、前記第2のバッファ群から前記第1のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第1の配線を生成する第1の工程と、前記コンピュータが、前記第1のバッファ群から前記第2のクロック信号で動作するフリップフロップに前記第1のクロック信号を供給する第2の配線を生成する第2の工程とを有することを特徴とする。
【発明の効果】
【0007】
本発明によれば、リバースエンジニアリングでの半導体装置の再設計を困難にすることができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態における設計対象の半導体装置の例を示す図である。
【
図2】本実施形態における半導体装置の設計方法の例を示すフローチャートである。
【
図3】本実施形態における半導体装置の設計方法を説明する図である。
【
図4】本実施形態における半導体装置の例を示す図である。
【
図5】リバースエンジニアリングを説明する図である。
【
図6】本実施形態における半導体装置の適用例を示す図である。
【
図7】本実施形態における半導体装置の設計方法を実現可能なコンピュータの構成例を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態を図面に基づいて説明する。
【0010】
図1を参照して、本発明の実施形態における設計対象の半導体装置の例について説明する。本実施形態における設計対象の半導体装置は、例えば
図1に例示した機能を実現するシフトレジスタを含む。
図1(A)に示すように、設計対象の半導体装置が有するシフトレジスタは、3つのフリップフロップ(レジスタ)11、12、13を有する。
【0011】
入力信号SGAが、フリップフロップ11のデータ入力端子(D)に入力され、フリップフロップ11のデータ出力端子(Q)からの出力信号SGBが、フリップフロップ12のデータ入力端子(D)に入力される。また、フリップフロップ12のデータ出力端子(Q)からの出力信号SGCが、フリップフロップ13のデータ入力端子(D)に入力され、フリップフロップ13のデータ出力端子(Q)からの出力が出力信号SGDとして出力される。
【0012】
フリップフロップ11、13のクロック入力端子には、バッファ14を介してクロック信号CKが入力され、フリップフロップ12のクロック入力端子には、インバータ15を介して、クロック信号CKを反転した反転クロック信号CKBが入力される。フリップフロップ11、12、13のそれぞれは、入力されるクロック信号の立ち上がり時にデータをラッチして出力する。したがって、フリップフロップ12の出力は、フリップフロップ11、13に対してクロック信号CKの半周期早く出力されることになるが、入力信号SGAをシフトして出力信号SGDを得るシフトレジスタの機能が実現される。
【0013】
例えば、
図1(B)に示すように、時刻T11において、入力信号SGAがパルス状にハイレベル(“H”)になると、クロック信号CKが立ち上がる時刻T12において、フリップフロップ11が“H”をラッチして出力信号SGBが“H”となる。続いて、クロック信号CKBが立ち上がる時刻T13において、フリップフロップ12が“H”をラッチして出力信号SGCが“H”となり、その後にクロック信号CKが立ち上がる時刻T14において、フリップフロップ13が“H”をラッチして出力信号SGDが“H”となる。すなわち、
図1(A)に示すシフトレジスタは、入力される入力信号SGAをクロック信号CKの2周期後に出力信号SGDとして出力する機能を実現する3段のシフトレジスタである。
【0014】
次に、本実施形態における半導体装置の設計方法について説明する。
図2は、本実施形態における半導体装置の設計方法を説明するフローチャートである。図
2に示す処理は、例えばレイアウト設計等を行う半導体装置の設計装置により実行される。以下では、
図1に示した3段のシフトレジスタを適宜参照して説明するが、本発明は、これに限定されるものではなく、2以上の異なる位相のクロック信号を用いる、任意の複数段のシフトレジスタに対して適用可能である。
【0015】
まず、ステップS21にて、設計装置は、回路情報に基づいてレイアウト設計を行い、半導体装置における配置配線及びクロックツリーを自動生成する。例えば、
図1(A)に示したシフトレジスタについては、
図3に示すように配置配線及びクロックツリーが自動で生成される。この
図3において、
図1(A)に示した構成要素と同一の構成要素には同一の符号を付している。
図3において、16、17はバッファ(クロックバッファ)であり、クロック信号CKをそのままの位相で出力する。
図3に示すように、フリップフロップ12は反転クロック信号CKBを受けるため、ステップS21での処理後においてはインバータ15が残っている。
【0016】
次に、ステップS22にて、設計装置は、ステップS21での処理により得られた情報において、反転クロック信号の配線の変更を行う。ステップS22での処理では、反転クロック信号CKBを出力するためのインバータを削除し、反転クロック信号CKBの代わりとして、クロックツリーの上流側のバッファから出力されるクロック信号CKが供給されるようにクロック信号の配線を変更する。
【0017】
例えば、
図1(A)に示したシフトレジスタについては、
図4(A)に示すように配線を変更する。反転クロック信号CKBを出力するためのインバータ15を削除する。そして、シフトレジスタ11、13にクロック信号CKを供給するバッファ14よりもクロックツリーにおいて上流側にあるバッファ16から出力されるクロック信号CKXがフリップフロップ12に供給されるようクロック信号の配線を変更する。
【0018】
このように変更すると、フリップフロップ12におけるデータのラッチタイミングは、反転クロック信号CKBを用いる場合と比較して遅れることになる。しかし、クロック信号CKが立ち上がる前にクロック信号CKXが立ち上がるので、シフトレジスタの出力信号SGDのタイミングには影響を及ぼすことなく、所望の動作が実現できる。
【0019】
例えば、
図4(B)に示すように、時刻T41において、入力信号SGAがパルス状に“H”になると、クロック信号CKが立ち上がる時刻T42において、フリップフロップ11が“H”をラッチして出力信号SGBが“H”となる。続いて、クロック信号CKが次に立ち上がる時刻T44より前の時刻T43において、クロック信号CKXが立ち上がり、フリップフロップ12が“H”をラッチして出力信号SGCが“H”となり、その後にクロック信号CKが立ち上がる時刻T44において、フリップフロップ14が“H”をラッチして出力信号SGDが“H”となる。すなわち、入力信号SGAと出力信号SGDとの関係でみれば、入力される入力信号SGAをクロック信号CKの2周期後に出力信号SGDとして出力する同じ機能が実現される。
【0020】
図2に戻り、ステップS22での処理を行った後、ステップS23にて、設計装置は、クロック信号の配線を変更したレイアウト情報を出力して処理を終了する。
【0021】
次に、前述のように設計を行って製造された半導体装置について、リバースエンジニアリングでの半導体装置の再設計が困難であることを説明する。リバースエンジニアリングでは、半導体装置のレイアウトから回路情報を抽出するので、
図4(A)に示したように配線が変更された半導体装置のレイアウトからは
図5(A)に示すような回路情報が得られることになる。すなわち、フリップフロップ51~53の何れもがクロック信号CKで動作する回路構成が得られる。なお、
図5において、フリップフロップ51~53は、それぞれ
図4(A)におけるフリップフロップ11~13に対応する。
【0022】
リバースエンジニアリングを行うエンジニアは、再設計においては配置配線の自動生成を再度実施するため、タイミング情報がまったく異なったものとなり、クロックツリーの自動生成も実施する必要がある。この際、
図4(A)に示したようなクロックツリーは一度すべて削除され、新たにクロックツリーの生成を行う。したがって、
図5(A)に示したようにフリップフロップ51~53の何れもが同じ位相のクロック信号CKで動作する回路構成では、フリップフロップ51~53に対してクロックタイミング(スキュー)が調整された
図5(B)に示すようなクロックツリーが生成される。なお、
図5において、バッファ56、57は、それぞれ
図4(A)におけるバッファ16、17に対応する。
【0023】
この場合には、
図5(C)に示すように、クロック信号CKが立ち上がる時刻T51、T52、T53、T54において、入力信号SGAがシフトされる。すなわち、クロック信号CKの1周期毎に信号をシフトして、入力される入力信号SGAをクロック信号CKの3周期後に出力信号SGDとして出力することになる。したがって、入力される入力信号SGAをクロック信号CKの2周期後に出力信号SGDとして出力するシフトレジスタの機能を実現することができず、所望の動作を再現することができない。
【0024】
このように本実施形態によれば、シフトレジスタにおいて、反転クロック信号CKBで動作するフリップフロップに対して、反転クロック信号CKBの代わりにクロックツリーにおける上流側のバッファが出力するクロック信号CKを供給するように配線を変更することで、リバースエンジニアリングの際にクロックツリーの自動生成を実施すると、所望の動作が再現できなくなる。クロックツリーの自動生成で動作が再現できないと、クロックツリーにおけるゲート遅延や配線遅延をも考慮した解析が必要となり、その解析は非常に困難である。したがって、半導体装置のリバースエンジニアリングを困難にし、光学的・破壊的なリバースエンジニアリングによる不正コピーや不正使用目的の回路解析を防止することが可能となる。
【0025】
図6は、本実施形態における半導体装置の適用例を示す図である。
図6において、100は、本実施形態における半導体装置を含む半導体チップである。半導体チップ100において、各種の論理処理を行う論理処理回路部110に対して、前述のようにして設計された1個又は複数個の本実施形態における半導体装置120の出力が接続される。論理処理回路部110は、半導体装置120の出力を用いて一部又は全部の論理処理を行うことで、論理処理回路部110における入力と出力との関係は、半導体装置120の出力状態にも依存する。リバースエンジニアリングにより本実施形態における半導体装置120の出力状態を判明することは困難であり、論理処理回路部110における入力と出力との関係を解析することも困難となり、半導体チップの不正コピー等を防止することが可能となる。
【0026】
前述した実施形態における半導体装置の設計方法は、例えばCPU又はMPU、RAM、ROM等を有するコンピュータが、記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータが前記機能を果たすように動作させるプログラムを、例えばCD-ROMのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、CD-ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【0027】
また、コンピュータがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【0028】
また、供給されたプログラムがコンピュータにおいて稼動しているOS(オペレーティングシステム)又は他のアプリケーションソフト等と協働して前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【0029】
例えば、前述した実施形態における半導体装置の設計方法は、
図7に示すようなコンピュータ(設計装置)により実現でき、そのCPU(Central Processing Unit)により前述した実施形態における半導体装置の設計方法の動作が実施される。
図7は、本実施形態における半導体装置の設計方法を実現可能なコンピュータの構成例を示す図である。バス201には、CPU202、ROM(Read Only Memory)203、RAM(Random Access Memory)204、ネットワークインターフェース205、入力装置206、出力装置207、及び外部記憶装置208が接続されている。
【0030】
CPU202は、データの処理や演算を行うとともに、バス201を介して接続された各構成要素を制御するものである。ROM203には、予めブートプログラムが記憶されており、このブートプログラムをCPU202が実行することにより、コンピュータが起動する。外部記憶装置208にコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM204にコピーされてCPU202により実行することで、例えば前述した半導体装置の設計方法の各処理等が行われる。RAM204は、データの入出力、送受信のためのワークメモリ、各構成要素の制御のための一時記憶として用いられる。
【0031】
ネットワークインターフェース205は、ネットワークに接続するためのインターフェースである。入力装置206は、例えばキーボードやポインティングデバイス(マウス)等であり、各種指定や入力等を行うことができる。出力装置207は、ディスプレイやプリンタ等であり、表示や印刷等を行うことができる。外部記憶装置208は、例えばハードディスク記憶装置やCD-ROMのような記録媒体等であり、電源を切っても記憶内容が消えない。
【0032】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0033】
11、12、13 フリップフロップ
14、16、17 バッファ
15 インバータ
100 半導体チップ
110 論理処理回路部
120 半導体装置
201 バス
202 CPU
203 ROM
204 RAM
205 ネットワークインターフェース
206 入力装置
207 出力装置
208 外部記憶装置