説明

半導体装置

【課題】デバッグ端子部を介してのリバースエンジニアリングを防止できるようにする。
【解決手段】デバッグ端子部制御回路3は、CPU4で実行されたデバッグ用プログラムP1の中から有効化ルーチンR1を抽出し、該抽出した有効化ルーチンR1に基づいて、デバッグ端子部2で受信されるデバッグ入力信号S4をCPU4に入力するようにデバッグ端子部2を制御する。これにより、外部メモリ7aにデバッグ用プログラムP1が記憶されているときには、デバッグ端子部2が有効になってデバッグ入力信号S4がCPU4
に入力されるが、外部メモリ7aにデバッグ用プログラムP1が記憶されていないときには、デバッグ端子部2が無効になってデバッグ入力信号S4がCPU4に入力されない。この結果、出荷時にデバッグ端子部2を無効化することにより、デバッグ端子部2を介してのリバースエンジニアリングを防止できる。

【発明の詳細な説明】
【技術分野】
【0001】
デバッグ端子を有するSoC(System on Chip)において、デバッグの利便性と、製品
出荷後の第三者によるデバッグ端子を介したリバースエンジニアリング防止とを両立させ
るようにした半導体装置に関するものである。
【背景技術】
【0002】
一般に、必要とされる一連の機能(システム)を1つの半導体チップ上に集積する集積
回路であるSoCをデバッグするために、このSoCにはデバッグ端子が設けられている

【0003】
図6は、従来の半導体装置300の構成例を示すブロック図である。図6に示すように
、半導体装置300は、SoC1B及び外部メモリ7b等で構成される。SoC1Bは、
デバッグ端子部2B、CPU4、内部メモリ5及び機能回路6を備える。CPU4、内部
メモリ5、機能回路6及び外部メモリ7bは、SoC1B内に設けられたシステムバス1
0にそれぞれ接続され、システムバス10を介してデータ等のやり取りをする。
【0004】
CPU4は、外部からパワーオンリセット信号S1が入力されると、外部メモリ7bに
記憶された製品プログラムP2を読み出して実行する。パワーオンリセット信号S1は、
SoC1B内の各部に対するリセット信号であって、SoC1Bの電源投入直後の回路状
態を一定値に定めるための信号である。
【0005】
また、製品プログラムP2は、半導体装置300を動作させるためのプログラムである
。CPU4が製品プログラムP2を実行すると、例えば、内部メモリ5に記憶されている
機能回路6の動作に必要なデータを読み出して、所定のアルゴリズムを実行する。
【0006】
デバッグ端子部2Bは、CPU4の動作をSoC1Bの外部から制御したり観測したり
するためのデバッグ入力信号S4及びデバッグ出力信号S5を、図示しないデバッグ機器
等とやり取りするための端子である。
【0007】
図7は、従来のデバッグ端子部2Bの構成例を示す回路図である。図7に示すように、
デバッグ端子部2Bは、入力バッファ21B及び出力バッファ22Bを有する。入力バッ
ファ21B及び出力バッファ22Bには、上述の図示しないデバッグ機器が接続される。
デバッグ機器は、半導体装置300等の検証、評価、デバッグ及び障害解析等を行うとき
に、入力バッファ21B及び出力バッファ22Bと接続する。
【0008】
入力バッファ21Bは、デバッグ入力信号S4をデバッグ機器から受信して、CPU4
に入力する。出力バッファ22Bは、デバッグ出力信号S5をCPU4から受信して、デ
バッグ機器に出力する。
【0009】
このような構成により、デバッグ機器は、デバッグ端子部2Bを介してCPU4の動作
制御や状態の観測ができる。例えば、この観測は、製品プログラムP2のステップ実行、
内部メモリ5及び外部メモリ7bに記憶されている特定アドレスのデータの参照や書き換
え、CPU4内の図示しないレジスタ及び内部状態の参照や書き換え等である。
【0010】
これにより、半導体装置300は、デバッグ端子部2Bを用いることでSoC1B内外
の信号/状態を確認しながら製品プログラムP2を実行することにより、デバッグの作業
効率を向上させることができる。
【0011】
また、別の従来例として、特許文献1に、システムLSIのデバッグ方法について開示
されている。このデバッグ方法は、ICカードを用いて正規の使用者であることをシステ
ムLSIに認証させることにより、当該システムLSIをデバッグすることができるよう
にしたものである。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2010−160765号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
ところで、従来の半導体装置300によれば、デバッグの作業効率は向上するが、重要
な設計資産である製品プログラムP2やSoC1Bのハードウェアを、デバッグ端子部2
Bを用いることで第三者によって解析される可能性がある。即ち、デバッグ端子部2Bを
介したリバースエンジニアリングが可能である。
【0014】
このようなリバースエンジニアリングを防止するために、製品プログラムP2を暗号化
することが考えられる。この場合、製品プログラムP2を直接解析されることが防止でき
るが、製品プログラムP2が暗号化されていてもCPU4が製品プログラムP2を実行す
るときには、暗号化された製品プログラムP2を復号してから実行するので、デバッグ端
子部2Bを介して製品プログラムP2の復号結果を得て、製品プログラムP2の動作やS
oC1Bのハードウェア構造等を解析されてしまう。
【0015】
また、これを防止するために、デバッグ端子部2Bを搭載しないことが考えられる。こ
の場合、SoC1B内外の信号/状態を確認しながら製品プログラムP2を実行すること
ができないので、デバッグ作業が困難になるという問題がある。
【0016】
更に、デバッグ端子部2Bを搭載する半導体装置とデバッグ端子部2Bを搭載しない半
導体装置との2つの品種の半導体装置を製造することが考えられる。例えば、デバッグ作
業をする際には、デバッグ端子部2Bを搭載する半導体装置を用い、デバッグ作業完了後
には、デバッグ端子部2Bを搭載する半導体装置のデバッグ結果を反映させた、デバッグ
端子部2Bを搭載しない半導体装置を顧客に出荷する。この場合、2つの品種を設計、製
造しなければならず、当該半導体装置の製造コストが増大してしまうという問題がある。
【0017】
上述の特許文献1は、これらの問題を解決できるが、ICカードや認証回路等を用いて
いるので、更に製造コストが増大してしまうという問題がある。
【0018】
そこで、本発明は、上述の課題を解決したものであって、デバッグの作業効率が向上し
、デバッグ端子部からプログラムの動作や当該半導体装置のハードウェア構造等を解析さ
れることを防止でき、かつ、製造コストを低減することができる半導体装置を提供するこ
とを目的とする。
【課題を解決するための手段】
【0019】
上述の課題を解決するために、本発明に係る半導体装置は、デバッグを実行するための
デバッグ入力信号を生成するデバッグ機器に接続され、該デバッグ機器によりデバッグさ
れる半導体装置において、デバッグ機器によって生成されたデバッグ入力信号を受信する
デバッグ端子部と、該デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プ
ログラムが予め記憶されたメモリから当該デバッグ用プログラムを読み出して実行するプ
ロセッサと、該プロセッサで実行されたデバッグ用プログラムの中から有効化ルーチンを
抽出し、該抽出した有効化ルーチンに基づいて、デバッグ端子部で受信されるデバッグ入
力信号をプロセッサに入力するようにデバッグ端子部を有効化するデバッグ端子部制御部
とを備えることを特徴とするものである。
【0020】
本発明に係る半導体装置によれば、デバッグを実行するためのデバッグ入力信号を生成
するデバッグ機器に接続され、該デバッグ機器によりデバッグされる。これを前提にして
、デバッグ端子部は、デバッグ機器によって生成されたデバッグ入力信号を受信する。プ
ロセッサは、デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プログラム
が予め記憶されたメモリから当該デバッグ用プログラムを読み出して実行する。そして、
デバッグ端子部制御部は、プロセッサで実行されたデバッグ用プログラムの中から有効化
ルーチンを抽出し、該抽出した有効化ルーチンに基づいて、デバッグ端子部で受信される
デバッグ入力信号をプロセッサに入力するようにデバッグ端子部を有効化する。
【0021】
これにより、メモリにデバッグ用プログラムが記憶されているときには、デバッグ端子
部が有効になってデバッグ入力信号がプロセッサに入力されるが、メモリにデバッグ用プ
ログラムが記憶されていないときには、デバッグ端子部が無効になってデバッグ入力信号
がプロセッサに入力されない。つまり、メモリにデバッグ用プログラムが記憶されている
か否かにより、当該半導体装置がデバッグ可能か否かが決定される。
【0022】
例えば、当該半導体装置を顧客に出荷する前には、デバッグ用プログラムが記憶された
メモリが搭載されていて、このメモリのデバッグ用プログラムによりデバッグ端子部が有
効になってデバッグが可能になる。そして、デバッグが完了したら、メモリに記憶されて
いるデバッグ用プログラムの代わりに当該半導体装置を動作させるための製品プログラム
を記憶させる。すると、デバッグ端子部が無効になり、当該半導体装置を顧客に出荷した
後、顧客によるデバッグが不可能になる。
【発明の効果】
【0023】
本発明に係る半導体装置によれば、デバッグ時にデバッグ端子部を有効化することによ
り、デバッグ作業の利便性を向上させることができ、出荷時にデバッグ端子部を無効化す
ることにより、デバッグ端子部からプログラムの動作や当該半導体装置のハードウェア構
造等を解析されることを防止できる。そして、従来のように2品種の設計、製造をする必
要がなく、また、ICカードや認証回路等を用いないので、半導体装置の製造コストを低
減することができる。
【図面の簡単な説明】
【0024】
【図1】第1の実施の形態に係る半導体装置の構成例(デバッグ時)を示すブロック図である。
【図2】第1の実施の形態に係る半導体装置の構成例(出荷時)を示すブロック図である。
【図3】デバッグ端子部の構成例を示す回路図である。
【図4】デバッグ端子部制御回路の構成例を示すブロック図である。
【図5】第2の実施の形態に係る半導体装置の構成例を示すブロック図である。
【図6】従来の半導体装置の構成例を示すブロック図である。
【図7】従来のデバッグ端子部の構成例を示す回路図である。
【発明を実施するための形態】
【0025】
以下、図面を参照して、本発明に係る実施の形態の一例として、半導体装置について説
明する。
【0026】
<第1の実施の形態>
[半導体装置100の構成例]
図1及び図2に示すように、本実施の形態に係る半導体装置100は、SoC1及び外
部メモリ7a又は7bで構成される。SoC1は、デバッグ端子部2、デバッグ端子部制
御回路3、CPU4、内部メモリ5及び機能回路6を備え、それらが、1つの半導体基板
上に形成されている。また、SoC1は、外部よりパワーオンリセット信号S1が受信可
能であり、このパワーオンリセット信号S1により当該SoC1内の各部に対してリセッ
トが行われる。
【0027】
デバッグ端子部2は、デバッグ端子部制御回路3及びCPU4に接続される。デバッグ
端子部制御回路3、CPU4、内部メモリ5、機能回路6及び外部メモリ7a,7bは、
システムバス10にそれぞれ接続され、システムバス10を介してデータ等のやり取りを
する。
【0028】
外部メモリ7aは、デバッグ端子部2を有効化させる有効化ルーチンR1を含むデバッ
グ用プログラムP1(図1)を記憶し、外部メモリ7bは、SoC1を動作させるための
製品プログラムP2(図2)を記憶する。
【0029】
デバッグ用プログラムP1は、SoC1の要求仕様機能を実現するのに必要な処理手順
、初期データ及びアルゴリズムの他、デバッグ作業用の試験プログラムと有効化ルーチン
R1とを含む。有効化ルーチンR1は、デバッグ端子部2のデバッグ端子機能を有効にす
るプログラムである。製品プログラムP2は、デバッグ用プログラムP1の一部と同様に
、SoC1の要求仕様機能を実現するのに必要な処理手順、初期データ及びアルゴリズム
等を含む。
【0030】
外部メモリ7aは、SoC1に着脱自在に取り付けられて、外部メモリ7bと交換可能
である。例えば、SoC1をデバッグする際には、デバッグ用プログラムP1が記憶され
た外部メモリ7aをSoC1に取り付ける。そして、SoC1のデバッグが完了したら、
外部メモリ7aを取り外して、製品プログラムP2が記憶された外部メモリ7bをSoC
1に取り付ける。
【0031】
デバッグ端子部2は、外部と接続する端子であり、例えば、デバッグを実行するための
デバッグ入力信号S4を生成するデバッグ機器と接続して、デバッグ入力信号S4をやり
取りする。また、デバッグを実行するためのデバッグ出力信号S5を生成するCPU4と
デバッグ出力信号S5をやり取りする。デバッグ入力信号S4及びデバッグ出力信号S5
は、CPU4の動作をデバッグ機器から制御/観測するための信号である。
【0032】
このデバッグ入力信号S4及びデバッグ出力信号S5により、デバッグ機器は、例えば
、デバッグ用プログラムP1のステップ実行、内部メモリ5及び外部メモリ7aに記憶さ
れている特定アドレスのデータの参照や書き換え、CPU4内の図示しないレジスタ及び
内部状態の参照や書き換え等を行う。
【0033】
CPU4は、プロセッサの一例であり、外部メモリ7aに記憶されているデバッグ用プ
ログラムP1又は外部メモリ7bに記憶されている製品プログラムP2を読み出して逐次
実行する。また、CPU4は、上述のように、デバッグ出力信号S5を生成してデバッグ
端子部2に出力する。
【0034】
デバッグ端子部制御回路3は、デバッグ端子部制御部の一例であり、デバッグ端子部2
を制御するものである。例えば、デバッグ端子部制御回路3は、CPU4で実行されたデ
バッグ用プログラムP1の中から有効化ルーチンR1を抽出し、該抽出した有効化ルーチ
ンR1に基づいて、デバッグ端子部2で受信されるデバッグ入力信号S4をCPU4に入
力するようにデバッグ端子部2を有効化する。また、デバッグ端子部制御回路3は、抽出
した有効化ルーチンR1に基づいて、デバッグ端子部2で受信されるデバッグ出力信号S
5をデバッグ機器に出力するようにデバッグ端子部2を有効化する。
【0035】
内部メモリ5は、CPU4及び機能回路6の動作に必要な一時的なデータを保持する。
なお、内部メモリ5は、CPU4が実行する製品プログラムP2の全部又は一部を記憶し
ても構わない。この場合、CPU4は、内部メモリ5に記憶された製品プログラムP2を
読み出して実行する。
【0036】
機能回路6は、SoC1の要求仕様を実現するものである。上述のように、機能回路6
の動作に必要なデータが内部メモリ5に記憶されており、CPU4が当該データを読み出
して実行することで、機能回路6が動作する。本実施の形態では、SoC1に機能回路6
を1つだけ設けているが、これに限定されず、複数設けても構わない。
【0037】
[デバッグ端子部2の構成例]
次に、デバッグ端子部2の構成例について説明する。図3に示すように、デバッグ端子
部2は、イネーブル付入力バッファ(以下、「入力バッファ21」という)及びイネーブ
ル付出力バッファ(以下、「出力バッファ22」という)を有する。入力バッファ21及
び出力バッファ22は、デバッグ端子部制御回路3、CPU4及び外部機器であるデバッ
グ機器に接続される。
【0038】
入力バッファ21は、デバッグ端子部制御回路3から出力されるデバッグ端子部制御信
号S3により制御される。例えば、入力バッファ21は、デバッグ入力信号S4をデバッ
グ機器から受信する。このとき、入力バッファ21は、デバッグ端子部制御信号S3がHi
の時には、デバッグ入力信号S4を通過させてCPU4に入力し、デバッグ端子部制御信
号S3がLowの時には、デバッグ入力信号S4を遮断する。
【0039】
デバッグ機器は、デバッグ入力信号S4により、CPU4の動作制御、内部メモリ5及
び外部メモリ7aに記憶されている特定アドレスのデータ書き換え、CPU4内のレジス
タ及び内部状態の書き換えを、SoC1外部から行う。
【0040】
出力バッファ22は、デバッグ端子部制御回路3から出力されるデバッグ端子部制御信
号S3により制御される。例えば、出力バッファ22は、デバッグ出力信号S5をCPU
4から受信する。このとき、出力バッファ22は、デバッグ端子部制御信号S3がHiの時
には、デバッグ出力信号S5を通過させてデバッグ機器に出力し、デバッグ端子部制御信
号S3がLowの時には、デバッグ出力信号S5を遮断する。
【0041】
デバッグ機器は、デバッグ出力信号S5により、CPU4の状態観測、内部メモリ5及
び外部メモリ7aに記憶されている特定アドレスのデータ参照、CPU4内のレジスタ及
び内部状態の参照を、SoC1外部から行う。
【0042】
このように、デバッグ端子部2は、デバッグ端子部制御回路3が出力するデバッグ端子
部制御信号S3に基づいて、デバッグ入力信号S4及びデバッグ出力信号S5を通過/遮
断する。
【0043】
[デバッグ端子部制御回路3の構成例]
次に、デバッグ端子部制御回路3の構成例について説明する。図4に示すように、デバ
ッグ端子部制御回路3は、I/F31、アドレスデコーダ32、データデコーダ33及び
フリップフロップ34を有する。
【0044】
I/F31は、CPU4から出力される各種信号をシステムバス10を介して受信する
。例えば、CPU4が外部メモリ7aからデバッグ用プログラムP1を読み出して実行し
、有効化ルーチンR1に基づく有効化信号S2をデバッグ端子部制御回路3に出力したと
き、I/F31は、この有効化信号S2を受信する。そして、I/F31は、受信した有
効化信号S2をアドレスデコーダ32及びデータデコーダ33に出力する。
【0045】
I/F31にはアドレスデコーダ32及びデータデコーダ33が接続される。アドレス
デコーダ32及びデータデコーダ33は、I/F31からの有効化信号S2を受信し、該
受信した有効化信号S2に基づいてフリップフロップ34に書き込む値を決定する。
【0046】
アドレスデコーダ32及びデータデコーダ33にはフリップフロップ34が接続される
。フリップフロップ34は、デバッグ端子部制御信号S3を保持し、このデバッグ端子部
制御信号S3をデバッグ端子部2へ出力する。
【0047】
フリップフロップ34は、アドレスデコーダ32及びデータデコーダ33に書き込まれ
た値に基づいて、デバッグ端子部制御信号S3をHi、即ち、デバッグ端子部2のデバッグ
端子機能を有効化する。
【0048】
また、フリップフロップ34は、パワーオンリセット信号S1によりリセットされると
、デバッグ端子部制御信号S3をLow、即ち、デバッグ端子部2のデバッグ端子機能を無
効の状態にする。
【0049】
このように、デバッグ端子部制御回路3は、CPU4が、特定のアドレスに特定のデー
タを書き込むことで、デバッグ端子部制御信号S3の値を変更するという動作を実現する

【0050】
[半導体装置100の動作例]
次に、半導体装置100の動作例について説明する。動作例の説明のために以下の(i)
〜(iv)を仮定する。
(i)アドレスデコーダ32は、値0x12345678をシステムバス10から入力されたときのみ
、フリップフロップ34に対して値書き込みを許可する。
(ii)データデコーダ33は、値0x9aをシステムバス10から入力されたときのみ、フリッ
プフロップ34の入力をHiにする。それ以外の値は、フリップフロップ34の入力をLow
にする。
(iii)フリップフロップ34は、アドレスデコーダ32から値書き込みを許可されたとき
のみ、入力値を取り込んでデバッグ端子部制御信号S3としてデバッグ端子部2に出力す
る。次の値取り込み許可まで、デバッグ端子部制御信号S3の値を保持する。
(iv)デバッグ用プログラムP1の有効化ルーチンR1の内容は、「アドレス0x12345678に
、値0x9aをライトする」という動作を実行するCPU4の命令コードとする。
【0051】
[デバッグ作業時の動作例]
まず、図1に示した半導体装置100のデバッグ作業時の動作例について説明する。半
導体装置100のデバッグ作業時では、有効化ルーチンR1を含むデバッグ用プログラム
P1が記憶された外部メモリ7aが搭載されていることを前提とする。
【0052】
SoC1は、半導体装置100の電源投入時、パワーオンリセット信号S1が入力され
てリセット状態になる。このとき、フリップフロップ34もリセット状態であるため(図
4参照)、デバッグ端子部制御信号S3の値はLowであり、デバッグ端子部2のデバッグ
端子機能は無効の状態になっている。
【0053】
パワーオンリセット信号S1がLowのときをリセット状態とし、Hiのときを解除状態と
したとき、パワーオンリセット信号S1が解除状態にされると、CPU4は、外部メモリ
7aに記憶されているデバッグ用プログラムP1を読み込んで実行する。この過程で有効
化ルーチンR1がCPU4に実行されると、次の(1)〜(3)の動作順序でデバッグ端子部制
御信号S3の値がHiになり、デバッグ端子部2のデバッグ端子機能は有効の状態になる。
【0054】
(1)有効化ルーチンR1の、「アドレス0x12345678に、値0x9aをライトする」という命令
コードをCPU4が読み込む。
(2)CPU4は、デバッグ端子部制御回路3に対して、アドレス0x12345678に、値0x9aを
ライトする操作を実行する。
(3)フリップフロップ34にHiが書き込まれる。
【0055】
上述の状態でデバッグ端子部2にデバッグ機器が接続されていると、デバッグ作業を実
施することができる。
【0056】
[出荷時の動作例]
次に、図2に示した半導体装置100の出荷時の動作について説明する。半導体装置1
00の出荷時では、半導体装置100のデバッグ作業が完了して、外部メモリ7aの代わ
りに有効化ルーチンR1を含まない製品プログラムP2が記憶された外部メモリ7bが搭
載されていることを前提とする。
【0057】
SoC1は、上述で説明したデバッグ作業時の形態と同様に、半導体装置100の電源
投入時、パワーオンリセット信号S1が入力されてリセット状態になる。このとき、デバ
ッグ端子部制御回路3のフリップフロップ34もリセット状態であるため、デバッグ端子
部制御信号S3の値はLowであり、デバッグ端子部2のデバッグ端子機能は無効の状態に
なっている。
【0058】
パワーオンリセット信号S1が解除状態にされると、CPU4は、外部メモリ7bに記
憶されている製品プログラムP2を読み込んで実行する。この製品プログラムP2の実行
では、デバッグ端子部制御信号S3がHiとなることはなく、デバッグ端子部2のデバッグ
端子機能は無効の状態を保持する。
【0059】
このような状態でデバッグ端子部2にデバッグ機器を接続しても、デバッグ作業や製品
プログラムP2及びSoC1のハードウェア等を解析することは不可能である。以上のよ
うに、半導体装置100は、デバッグ作業時と出荷時とは動作が異なる。
【0060】
このように、第1の実施の形態に係る半導体装置100によれば、デバッグを実行する
ためのデバッグ入力信号S4を生成するデバッグ機器に接続され、このデバッグ機器によ
りデバッグされる。これを前提にして、デバッグ端子部2は、デバッグ機器によって生成
されたデバッグ入力信号S4を受信する。CPU4は、デバッグ端子部2を有効化させる
有効化ルーチンR1を含むデバッグ用プログラムP1が予め記憶された外部メモリ7aか
ら当該デバッグ用プログラムP1を読み出して実行する。そして、デバッグ端子部制御回
路3は、CPU4で実行されたデバッグ用プログラムP1の中から有効化ルーチンR1を
抽出し、該抽出した有効化ルーチンR1に基づいて、デバッグ端子部2で受信されるデバ
ッグ入力信号S4をCPU4に入力するようにデバッグ端子部2を有効化する。
【0061】
これにより、外部メモリ7aにデバッグ用プログラムP1が記憶されているときには、
デバッグ端子部2が有効になってデバッグ入力信号S4がCPU4に入力されるが、外部
メモリ7aにデバッグ用プログラムP1が記憶されていないとき、例えば、製品プログラ
ムP2が記憶されている外部メモリ7bを搭載しているときには、デバッグ端子部2が無
効になってデバッグ入力信号S4がCPU4に入力されない。つまり、外部メモリ7aを
搭載しているか否か(デバッグ用プログラムP1が記憶されているか否か)により、当該
半導体装置100がデバッグ可能か否かが決定される。
【0062】
また、CPU4は、デバッグを実行するためのデバッグ出力信号S5を生成する。デバ
ッグ端子部2は、CPU4によって生成されたデバッグ出力信号S5を受信する。そして
、デバッグ端子部制御回路3は、抽出した有効化ルーチンR1に基づいて、デバッグ端子
部2で受信されたデバッグ出力信号S5をデバッグ機器に出力するようにデバッグ端子部
2を制御する。
【0063】
これにより、外部メモリ7aにデバッグ用プログラムP1が記憶されているときには、
デバッグ端子部2が有効になってデバッグ出力信号S5がデバッグ機器に出力されるが、
外部メモリ7aにデバッグ用プログラムP1が記憶されていないとき、例えば、製品プロ
グラムP2が記憶されている外部メモリ7bを搭載しているときには、デバッグ端子部2
が無効になってデバッグ出力信号S5がデバッグ機器に出力されない。
【0064】
この結果、デバッグ作業時にデバッグ端子部2を有効化することにより、デバッグ作業
の利便性を向上させることができ、出荷時にデバッグ端子部2を無効化することにより、
デバッグ端子部2から製品プログラムP2の動作や当該半導体装置100のハードウェア
構造等を解析されることを防止できる(リバースエンジニアリングを防止できる)。そし
て、従来のように2品種の設計、製造をする必要がなく、また、ICカードや認証回路等
を用いないので、半導体装置の製造コストを低減することができる。
【0065】
なお、本実施の形態では、デバッグ端子部の構成として、図3に示したイネーブル付バ
ッファを用いてデバッグ信号を遮断したが、これに限定されず、ANDゲートやORゲー
トを用いても良い。この場合、ロジックレベルをLow、又は、Hiに固定することでデバッ
グ端子機能を無効化することができる。
【0066】
また、デバッグ端子部制御回路の構成として、図4に示したように、一箇所のアドレス
に1つの値をライトすることでデバッグ端子部制御信号の値を変更するようにしたが、こ
れに限定されず、一箇所のアドレスに複数回順番に値をライトすることでデバッグ端子部
制御信号の値を変更するようにしても良い。
【0067】
更に、外部メモリの格納する製品プログラムは、暗号化されていても暗号化されていな
くても構わない。製品プログラムが暗号化されている場合、デバッグ端子部が無効である
ことから、第三者がSoC1上での復号処理、製品プログラムの処理手順、初期データ及
びアルゴリズムを解析することは不可能である。また、製品プログラムが暗号化されてい
ない場合、第三者により外部メモリから直接製品プログラムを読みされて解析される可能
性がある。しかし、製品プログラムには有効化ルーチンが含まれていないことからデバッ
グ端子部を有効化する手段を知られることはない。SoC用のプログラムの解析は、実施
のSoCで実行させてデバッグ端子を介したモニタを行わない限り困難である。
【0068】
<第2の実施の形態>
第2の実施の形態では、第1の実施の形態で説明した内部メモリ5にメモリライト端子
部8を設けて、内部メモリ5の内容を書き換え可能にした半導体装置200について説明
する。第1の実施の形態と同じ名称及び符号のものは同じ機能を有するので、その説明を
省略する。
【0069】
図5に示すように、半導体装置200は、前述の第1の実施の形態で説明した外部メモ
リ7a,7bを備えず、SoC1Aのみで構成される。SoC1Aは、デバッグ端子部2
、デバッグ端子部制御回路3、CPU4、内部メモリ5、機能回路6及びメモリライト端
子部8を備える。
【0070】
メモリライト端子部8は、外部接続可能な外部端子の一例であり、内部メモリ5に接続
される。メモリライト端子部8は、内部メモリ5に記憶されているプログラムを外部から
書き換え可能にする端子である。但し、メモリライト端子部8は、プログラムの読み出し
はできない。
【0071】
デバッグ作業時に、メモリライト端子部8を介して有効化ルーチンR1を含むデバッグ
用プログラムP1を内部メモリ5に記憶させる。すると、CPU4は、内部メモリ5に記
憶されたデバッグ用プログラムP1を読み出して実行し、前述の半導体装置100の動作
と同様に、デバッグ端子部2を有効化にすることができる。
【0072】
また、製品出荷時に、メモリライト端子部8を介して有効化ルーチンR1を含まない製
品プログラムP2を内部メモリ5に記憶させる。すると、CPU4は、内部メモリ5に記
憶された製品プログラムP2を読み出して実行し、前述の半導体装置100の動作と同様
に、デバッグ端子部2の無効化を維持することができる。
【0073】
このように、第2の実施の形態に係る半導体装置200によれば、内部メモリ5のプロ
グラムを書き換え自在なメモリライト端子部8を備えるので、前述の半導体装置100の
ように外部メモリ7a,7bの2種類のメモリを容易する必要が無くなり、また、外部メ
モリ7a,7b用のスペースを確保する必要が無くなり、半導体装置100に比べて製造
コストを低減することができる。
【符号の説明】
【0074】
1,1A,1B SoC
2 デバッグ端子部
3 デバッグ端子部制御回路
4 CPU
5 内部メモリ
6 機能回路
7a,7b 外部メモリ
8 メモリライト端子部
10 システムバス
21 イネーブル付入力バッファ
22 イネーブル付出力バッファ
31 I/F
32 アドレスデコーダ
33 データデコーダ
34 フリップフロップ
100,200 半導体装置
P1 デバッグ用プログラム
P2 製品プログラム
R1 有効化ルーチン
S1 パワーオンリセット信号
S2 有効化信号
S3 デバッグ端子部制御信号
S4 デバッグ入力信号
S5 デバッグ出力信号

【特許請求の範囲】
【請求項1】
デバッグを実行するためのデバッグ入力信号を生成するデバッグ機器に接続され、該デ
バッグ機器によりデバッグされる半導体装置において、
前記デバッグ機器によって生成されたデバッグ入力信号を受信するデバッグ端子部と、
該デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プログラムが予め記
憶されたメモリから当該デバッグ用プログラムを読み出して実行するプロセッサと、
該プロセッサで実行されたデバッグ用プログラムの中から前記有効化ルーチンを抽出し
、該抽出した有効化ルーチンに基づいて、前記デバッグ端子部で受信されるデバッグ入力
信号を前記プロセッサに入力するように前記デバッグ端子部を有効化するデバッグ端子部
制御部とを備えることを特徴とする半導体装置。
【請求項2】
前記プロセッサは、デバッグを実行するためのデバッグ出力信号を生成し、
前記デバッグ端子部は、前記プロセッサによって生成されたデバッグ出力信号を受信し

前記デバッグ端子部制御部は、前記プロセッサで実行されたデバッグ用プログラムの中
から前記有効化ルーチンを抽出し、該抽出した有効化ルーチンに基づいて、前記デバッグ
端子部で受信されるデバッグ出力信号を前記デバッグ機器に出力するように前記デバッグ
端子部を有効化することを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記デバッグ端子部制御部は、
前記デバッグ用プログラムから抽出した有効化ルーチンに基づいて、前記デバッグ端子
部を有効化するためのデバッグ端子部制御信号を生成し、該生成したデバッグ端子部制御
信号を前記デバッグ端子部に出力することを特徴とする請求項1又は2に記載の半導体装
置。
【請求項4】
前記デバッグ端子部は、
前記デバッグ端子部制御部から前記デバッグ端子部制御信号を受信した場合に、前記デ
バッグ入力信号を前記プロセッサに入力し、及び/又は、前記デバッグ出力信号を前記デ
バッグ機器に出力することを特徴とする請求項1乃至3のいずれかに記載の半導体装置。
【請求項5】
前記デバッグ端子部、前記プロセッサ及び前記デバッグ端子部制御部は、1つの半導体
基板上に形成され、
前記メモリは、前記半導体基板に着脱自在に取り付けられて、当該半導体装置を動作さ
せるための製品プログラムが記憶された製品メモリと交換可能であることを特徴とする請
求項1乃至4のいずれかに記載の半導体装置。
【請求項6】
前記デバッグ端子部、前記プロセッサ、前記デバッグ端子部制御部及び前記メモリは、
1つの半導体基板上に形成され、
前記メモリには当該半導体装置を動作させるための製品プログラムが入力される外部接
続可能な外部端子が設けられ、
前記メモリは、記憶している前記デバッグ用プログラムを、前記外部端子に入力される
前記製品プログラムに書き換え自在であることを特徴とする請求項1乃至4のいずれかに
記載の半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate