(57)【要約】      （修正有）【課題】デバッグ端子部を介してのリバースエンジニアリングを防止できるようにする。【解決手段】デバッグ端子部制御回路３は、ＣＰＵ４で実行されたデバッグ用プログラムＰ１の中から有効化ルーチンＲ１を抽出し、該抽出した有効化ルーチンＲ１に基づいて、デバッグ端子部２で受信されるデバッグ入力信号Ｓ４をＣＰＵ４に入力するようにデバッグ端子部２を制御する。これにより、外部メモリ７ａにデバッグ用プログラムＰ１が記憶されているときには、デバッグ端子部２が有効になってデバッグ入力信号Ｓ４がＣＰＵ４に入力されるが、外部メモリ７ａにデバッグ用プログラムＰ１が記憶されていないときには、デバッグ端子部２が無効になってデバッグ入力信号Ｓ４がＣＰＵ４に入力されない。この結果、出荷時にデバッグ端子部２を無効化することにより、デバッグ端子部２を介してのリバースエンジニアリングを防止できる。【選択図】図１
2012079152.tif 000002
【特許請求の範囲】
【請求項１】
デバッグを実行するためのデバッグ入力信号を生成するデバッグ機器に接続され、該デ
バッグ機器によりデバッグされる半導体装置において、
前記デバッグ機器によって生成されたデバッグ入力信号を受信するデバッグ端子部と、
該デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プログラムが予め記
憶されたメモリから当該デバッグ用プログラムを読み出して実行するプロセッサと、
該プロセッサで実行されたデバッグ用プログラムの中から前記有効化ルーチンを抽出し
、該抽出した有効化ルーチンに基づいて、前記デバッグ端子部で受信されるデバッグ入力
信号を前記プロセッサに入力するように前記デバッグ端子部を有効化するデバッグ端子部
制御部とを備えることを特徴とする半導体装置。
【請求項２】
前記プロセッサは、デバッグを実行するためのデバッグ出力信号を生成し、
前記デバッグ端子部は、前記プロセッサによって生成されたデバッグ出力信号を受信し
、
前記デバッグ端子部制御部は、前記プロセッサで実行されたデバッグ用プログラムの中
から前記有効化ルーチンを抽出し、該抽出した有効化ルーチンに基づいて、前記デバッグ
端子部で受信されるデバッグ出力信号を前記デバッグ機器に出力するように前記デバッグ
端子部を有効化することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記デバッグ端子部制御部は、
前記デバッグ用プログラムから抽出した有効化ルーチンに基づいて、前記デバッグ端子
部を有効化するためのデバッグ端子部制御信号を生成し、該生成したデバッグ端子部制御
信号を前記デバッグ端子部に出力することを特徴とする請求項１又は２に記載の半導体装
置。
【請求項４】
前記デバッグ端子部は、
前記デバッグ端子部制御部から前記デバッグ端子部制御信号を受信した場合に、前記デ
バッグ入力信号を前記プロセッサに入力し、及び／又は、前記デバッグ出力信号を前記デ
バッグ機器に出力することを特徴とする請求項１乃至３のいずれかに記載の半導体装置。
【請求項５】
前記デバッグ端子部、前記プロセッサ及び前記デバッグ端子部制御部は、１つの半導体
基板上に形成され、
前記メモリは、前記半導体基板に着脱自在に取り付けられて、当該半導体装置を動作さ
せるための製品プログラムが記憶された製品メモリと交換可能であることを特徴とする請
求項１乃至４のいずれかに記載の半導体装置。
【請求項６】
前記デバッグ端子部、前記プロセッサ、前記デバッグ端子部制御部及び前記メモリは、
１つの半導体基板上に形成され、
前記メモリには当該半導体装置を動作させるための製品プログラムが入力される外部接
続可能な外部端子が設けられ、
前記メモリは、記憶している前記デバッグ用プログラムを、前記外部端子に入力される
前記製品プログラムに書き換え自在であることを特徴とする請求項１乃至４のいずれかに
記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
デバッグ端子を有するＳｏＣ（System on Chip）において、デバッグの利便性と、製品
出荷後の第三者によるデバッグ端子を介したリバースエンジニアリング防止とを両立させ
るようにした半導体装置に関するものである。
【背景技術】
【０００２】
一般に、必要とされる一連の機能（システム）を１つの半導体チップ上に集積する集積
回路であるＳｏＣをデバッグするために、このＳｏＣにはデバッグ端子が設けられている
。
【０００３】
図６は、従来の半導体装置３００の構成例を示すブロック図である。図６に示すように
、半導体装置３００は、ＳｏＣ１Ｂ及び外部メモリ７ｂ等で構成される。ＳｏＣ１Ｂは、
デバッグ端子部２Ｂ、ＣＰＵ４、内部メモリ５及び機能回路６を備える。ＣＰＵ４、内部
メモリ５、機能回路６及び外部メモリ７ｂは、ＳｏＣ１Ｂ内に設けられたシステムバス１
０にそれぞれ接続され、システムバス１０を介してデータ等のやり取りをする。
【０００４】
ＣＰＵ４は、外部からパワーオンリセット信号Ｓ１が入力されると、外部メモリ７ｂに
記憶された製品プログラムＰ２を読み出して実行する。パワーオンリセット信号Ｓ１は、
ＳｏＣ１Ｂ内の各部に対するリセット信号であって、ＳｏＣ１Ｂの電源投入直後の回路状
態を一定値に定めるための信号である。
【０００５】
また、製品プログラムＰ２は、半導体装置３００を動作させるためのプログラムである
。ＣＰＵ４が製品プログラムＰ２を実行すると、例えば、内部メモリ５に記憶されている
機能回路６の動作に必要なデータを読み出して、所定のアルゴリズムを実行する。
【０００６】
デバッグ端子部２Ｂは、ＣＰＵ４の動作をＳｏＣ１Ｂの外部から制御したり観測したり
するためのデバッグ入力信号Ｓ４及びデバッグ出力信号Ｓ５を、図示しないデバッグ機器
等とやり取りするための端子である。
【０００７】
図７は、従来のデバッグ端子部２Ｂの構成例を示す回路図である。図７に示すように、
デバッグ端子部２Ｂは、入力バッファ２１Ｂ及び出力バッファ２２Ｂを有する。入力バッ
ファ２１Ｂ及び出力バッファ２２Ｂには、上述の図示しないデバッグ機器が接続される。
デバッグ機器は、半導体装置３００等の検証、評価、デバッグ及び障害解析等を行うとき
に、入力バッファ２１Ｂ及び出力バッファ２２Ｂと接続する。
【０００８】
入力バッファ２１Ｂは、デバッグ入力信号Ｓ４をデバッグ機器から受信して、ＣＰＵ４
に入力する。出力バッファ２２Ｂは、デバッグ出力信号Ｓ５をＣＰＵ４から受信して、デ
バッグ機器に出力する。
【０００９】
このような構成により、デバッグ機器は、デバッグ端子部２Ｂを介してＣＰＵ４の動作
制御や状態の観測ができる。例えば、この観測は、製品プログラムＰ２のステップ実行、
内部メモリ５及び外部メモリ７ｂに記憶されている特定アドレスのデータの参照や書き換
え、ＣＰＵ４内の図示しないレジスタ及び内部状態の参照や書き換え等である。
【００１０】
これにより、半導体装置３００は、デバッグ端子部２Ｂを用いることでＳｏＣ１Ｂ内外
の信号／状態を確認しながら製品プログラムＰ２を実行することにより、デバッグの作業
効率を向上させることができる。
【００１１】
また、別の従来例として、特許文献１に、システムＬＳＩのデバッグ方法について開示
されている。このデバッグ方法は、ＩＣカードを用いて正規の使用者であることをシステ
ムＬＳＩに認証させることにより、当該システムＬＳＩをデバッグすることができるよう
にしたものである。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１０−１６０７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
ところで、従来の半導体装置３００によれば、デバッグの作業効率は向上するが、重要
な設計資産である製品プログラムＰ２やＳｏＣ１Ｂのハードウェアを、デバッグ端子部２
Ｂを用いることで第三者によって解析される可能性がある。即ち、デバッグ端子部２Ｂを
介したリバースエンジニアリングが可能である。
【００１４】
このようなリバースエンジニアリングを防止するために、製品プログラムＰ２を暗号化
することが考えられる。この場合、製品プログラムＰ２を直接解析されることが防止でき
るが、製品プログラムＰ２が暗号化されていてもＣＰＵ４が製品プログラムＰ２を実行す
るときには、暗号化された製品プログラムＰ２を復号してから実行するので、デバッグ端
子部２Ｂを介して製品プログラムＰ２の復号結果を得て、製品プログラムＰ２の動作やＳ
ｏＣ１Ｂのハードウェア構造等を解析されてしまう。
【００１５】
また、これを防止するために、デバッグ端子部２Ｂを搭載しないことが考えられる。こ
の場合、ＳｏＣ１Ｂ内外の信号／状態を確認しながら製品プログラムＰ２を実行すること
ができないので、デバッグ作業が困難になるという問題がある。
【００１６】
更に、デバッグ端子部２Ｂを搭載する半導体装置とデバッグ端子部２Ｂを搭載しない半
導体装置との２つの品種の半導体装置を製造することが考えられる。例えば、デバッグ作
業をする際には、デバッグ端子部２Ｂを搭載する半導体装置を用い、デバッグ作業完了後
には、デバッグ端子部２Ｂを搭載する半導体装置のデバッグ結果を反映させた、デバッグ
端子部２Ｂを搭載しない半導体装置を顧客に出荷する。この場合、２つの品種を設計、製
造しなければならず、当該半導体装置の製造コストが増大してしまうという問題がある。
【００１７】
上述の特許文献１は、これらの問題を解決できるが、ＩＣカードや認証回路等を用いて
いるので、更に製造コストが増大してしまうという問題がある。
【００１８】
そこで、本発明は、上述の課題を解決したものであって、デバッグの作業効率が向上し
、デバッグ端子部からプログラムの動作や当該半導体装置のハードウェア構造等を解析さ
れることを防止でき、かつ、製造コストを低減することができる半導体装置を提供するこ
とを目的とする。
【課題を解決するための手段】
【００１９】
上述の課題を解決するために、本発明に係る半導体装置は、デバッグを実行するための
デバッグ入力信号を生成するデバッグ機器に接続され、該デバッグ機器によりデバッグさ
れる半導体装置において、デバッグ機器によって生成されたデバッグ入力信号を受信する
デバッグ端子部と、該デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プ
ログラムが予め記憶されたメモリから当該デバッグ用プログラムを読み出して実行するプ
ロセッサと、該プロセッサで実行されたデバッグ用プログラムの中から有効化ルーチンを
抽出し、該抽出した有効化ルーチンに基づいて、デバッグ端子部で受信されるデバッグ入
力信号をプロセッサに入力するようにデバッグ端子部を有効化するデバッグ端子部制御部
とを備えることを特徴とするものである。
【００２０】
本発明に係る半導体装置によれば、デバッグを実行するためのデバッグ入力信号を生成
するデバッグ機器に接続され、該デバッグ機器によりデバッグされる。これを前提にして
、デバッグ端子部は、デバッグ機器によって生成されたデバッグ入力信号を受信する。プ
ロセッサは、デバッグ端子部を有効化させる有効化ルーチンを含むデバッグ用プログラム
が予め記憶されたメモリから当該デバッグ用プログラムを読み出して実行する。そして、
デバッグ端子部制御部は、プロセッサで実行されたデバッグ用プログラムの中から有効化
ルーチンを抽出し、該抽出した有効化ルーチンに基づいて、デバッグ端子部で受信される
デバッグ入力信号をプロセッサに入力するようにデバッグ端子部を有効化する。
【００２１】
これにより、メモリにデバッグ用プログラムが記憶されているときには、デバッグ端子
部が有効になってデバッグ入力信号がプロセッサに入力されるが、メモリにデバッグ用プ
ログラムが記憶されていないときには、デバッグ端子部が無効になってデバッグ入力信号
がプロセッサに入力されない。つまり、メモリにデバッグ用プログラムが記憶されている
か否かにより、当該半導体装置がデバッグ可能か否かが決定される。
【００２２】
例えば、当該半導体装置を顧客に出荷する前には、デバッグ用プログラムが記憶された
メモリが搭載されていて、このメモリのデバッグ用プログラムによりデバッグ端子部が有
効になってデバッグが可能になる。そして、デバッグが完了したら、メモリに記憶されて
いるデバッグ用プログラムの代わりに当該半導体装置を動作させるための製品プログラム
を記憶させる。すると、デバッグ端子部が無効になり、当該半導体装置を顧客に出荷した
後、顧客によるデバッグが不可能になる。
【発明の効果】
【００２３】
本発明に係る半導体装置によれば、デバッグ時にデバッグ端子部を有効化することによ
り、デバッグ作業の利便性を向上させることができ、出荷時にデバッグ端子部を無効化す
ることにより、デバッグ端子部からプログラムの動作や当該半導体装置のハードウェア構
造等を解析されることを防止できる。そして、従来のように２品種の設計、製造をする必
要がなく、また、ＩＣカードや認証回路等を用いないので、半導体装置の製造コストを低
減することができる。
【図面の簡単な説明】
【００２４】
【図１】第１の実施の形態に係る半導体装置の構成例（デバッグ時）を示すブロック図である。
【図２】第１の実施の形態に係る半導体装置の構成例（出荷時）を示すブロック図である。
【図３】デバッグ端子部の構成例を示す回路図である。
【図４】デバッグ端子部制御回路の構成例を示すブロック図である。
【図５】第２の実施の形態に係る半導体装置の構成例を示すブロック図である。
【図６】従来の半導体装置の構成例を示すブロック図である。
【図７】従来のデバッグ端子部の構成例を示す回路図である。
【発明を実施するための形態】
【００２５】
以下、図面を参照して、本発明に係る実施の形態の一例として、半導体装置について説
明する。
【００２６】
＜第１の実施の形態＞  
［半導体装置１００の構成例］  
図１及び図２に示すように、本実施の形態に係る半導体装置１００は、ＳｏＣ１及び外
部メモリ７ａ又は７ｂで構成される。ＳｏＣ１は、デバッグ端子部２、デバッグ端子部制
御回路３、ＣＰＵ４、内部メモリ５及び機能回路６を備え、それらが、１つの半導体基板
上に形成されている。また、ＳｏＣ１は、外部よりパワーオンリセット信号Ｓ１が受信可
能であり、このパワーオンリセット信号Ｓ１により当該ＳｏＣ１内の各部に対してリセッ
トが行われる。
【００２７】
デバッグ端子部２は、デバッグ端子部制御回路３及びＣＰＵ４に接続される。デバッグ
端子部制御回路３、ＣＰＵ４、内部メモリ５、機能回路６及び外部メモリ７ａ，７ｂは、
システムバス１０にそれぞれ接続され、システムバス１０を介してデータ等のやり取りを
する。
【００２８】
外部メモリ７ａは、デバッグ端子部２を有効化させる有効化ルーチンＲ１を含むデバッ
グ用プログラムＰ１（図１）を記憶し、外部メモリ７ｂは、ＳｏＣ１を動作させるための
製品プログラムＰ２（図２）を記憶する。
【００２９】
デバッグ用プログラムＰ１は、ＳｏＣ１の要求仕様機能を実現するのに必要な処理手順
、初期データ及びアルゴリズムの他、デバッグ作業用の試験プログラムと有効化ルーチン
Ｒ１とを含む。有効化ルーチンＲ１は、デバッグ端子部２のデバッグ端子機能を有効にす
るプログラムである。製品プログラムＰ２は、デバッグ用プログラムＰ１の一部と同様に
、ＳｏＣ１の要求仕様機能を実現するのに必要な処理手順、初期データ及びアルゴリズム
等を含む。
【００３０】
外部メモリ７ａは、ＳｏＣ１に着脱自在に取り付けられて、外部メモリ７ｂと交換可能
である。例えば、ＳｏＣ１をデバッグする際には、デバッグ用プログラムＰ１が記憶され
た外部メモリ７ａをＳｏＣ１に取り付ける。そして、ＳｏＣ１のデバッグが完了したら、
外部メモリ７ａを取り外して、製品プログラムＰ２が記憶された外部メモリ７ｂをＳｏＣ
１に取り付ける。
【００３１】
デバッグ端子部２は、外部と接続する端子であり、例えば、デバッグを実行するための
デバッグ入力信号Ｓ４を生成するデバッグ機器と接続して、デバッグ入力信号Ｓ４をやり
取りする。また、デバッグを実行するためのデバッグ出力信号Ｓ５を生成するＣＰＵ４と
デバッグ出力信号Ｓ５をやり取りする。デバッグ入力信号Ｓ４及びデバッグ出力信号Ｓ５
は、ＣＰＵ４の動作をデバッグ機器から制御／観測するための信号である。
【００３２】
このデバッグ入力信号Ｓ４及びデバッグ出力信号Ｓ５により、デバッグ機器は、例えば
、デバッグ用プログラムＰ１のステップ実行、内部メモリ５及び外部メモリ７ａに記憶さ
れている特定アドレスのデータの参照や書き換え、ＣＰＵ４内の図示しないレジスタ及び
内部状態の参照や書き換え等を行う。
【００３３】
ＣＰＵ４は、プロセッサの一例であり、外部メモリ７ａに記憶されているデバッグ用プ
ログラムＰ１又は外部メモリ７ｂに記憶されている製品プログラムＰ２を読み出して逐次
実行する。また、ＣＰＵ４は、上述のように、デバッグ出力信号Ｓ５を生成してデバッグ
端子部２に出力する。
【００３４】
デバッグ端子部制御回路３は、デバッグ端子部制御部の一例であり、デバッグ端子部２
を制御するものである。例えば、デバッグ端子部制御回路３は、ＣＰＵ４で実行されたデ
バッグ用プログラムＰ１の中から有効化ルーチンＲ１を抽出し、該抽出した有効化ルーチ
ンＲ１に基づいて、デバッグ端子部２で受信されるデバッグ入力信号Ｓ４をＣＰＵ４に入
力するようにデバッグ端子部２を有効化する。また、デバッグ端子部制御回路３は、抽出
した有効化ルーチンＲ１に基づいて、デバッグ端子部２で受信されるデバッグ出力信号Ｓ
５をデバッグ機器に出力するようにデバッグ端子部２を有効化する。
【００３５】
内部メモリ５は、ＣＰＵ４及び機能回路６の動作に必要な一時的なデータを保持する。
なお、内部メモリ５は、ＣＰＵ４が実行する製品プログラムＰ２の全部又は一部を記憶し
ても構わない。この場合、ＣＰＵ４は、内部メモリ５に記憶された製品プログラムＰ２を
読み出して実行する。
【００３６】
機能回路６は、ＳｏＣ１の要求仕様を実現するものである。上述のように、機能回路６
の動作に必要なデータが内部メモリ５に記憶されており、ＣＰＵ４が当該データを読み出
して実行することで、機能回路６が動作する。本実施の形態では、ＳｏＣ１に機能回路６
を１つだけ設けているが、これに限定されず、複数設けても構わない。
【００３７】
［デバッグ端子部２の構成例］  
次に、デバッグ端子部２の構成例について説明する。図３に示すように、デバッグ端子
部２は、イネーブル付入力バッファ（以下、「入力バッファ２１」という）及びイネーブ
ル付出力バッファ（以下、「出力バッファ２２」という）を有する。入力バッファ２１及
び出力バッファ２２は、デバッグ端子部制御回路３、ＣＰＵ４及び外部機器であるデバッ
グ機器に接続される。
【００３８】
入力バッファ２１は、デバッグ端子部制御回路３から出力されるデバッグ端子部制御信
号Ｓ３により制御される。例えば、入力バッファ２１は、デバッグ入力信号Ｓ４をデバッ
グ機器から受信する。このとき、入力バッファ２１は、デバッグ端子部制御信号Ｓ３がHi
の時には、デバッグ入力信号Ｓ４を通過させてＣＰＵ４に入力し、デバッグ端子部制御信
号Ｓ３がLowの時には、デバッグ入力信号Ｓ４を遮断する。
【００３９】
デバッグ機器は、デバッグ入力信号Ｓ４により、ＣＰＵ４の動作制御、内部メモリ５及
び外部メモリ７ａに記憶されている特定アドレスのデータ書き換え、ＣＰＵ４内のレジス
タ及び内部状態の書き換えを、ＳｏＣ１外部から行う。
【００４０】
出力バッファ２２は、デバッグ端子部制御回路３から出力されるデバッグ端子部制御信
号Ｓ３により制御される。例えば、出力バッファ２２は、デバッグ出力信号Ｓ５をＣＰＵ
４から受信する。このとき、出力バッファ２２は、デバッグ端子部制御信号Ｓ３がHiの時
には、デバッグ出力信号Ｓ５を通過させてデバッグ機器に出力し、デバッグ端子部制御信
号Ｓ３がLowの時には、デバッグ出力信号Ｓ５を遮断する。
【００４１】
デバッグ機器は、デバッグ出力信号Ｓ５により、ＣＰＵ４の状態観測、内部メモリ５及
び外部メモリ７ａに記憶されている特定アドレスのデータ参照、ＣＰＵ４内のレジスタ及
び内部状態の参照を、ＳｏＣ１外部から行う。
【００４２】
このように、デバッグ端子部２は、デバッグ端子部制御回路３が出力するデバッグ端子
部制御信号Ｓ３に基づいて、デバッグ入力信号Ｓ４及びデバッグ出力信号Ｓ５を通過／遮
断する。
【００４３】
［デバッグ端子部制御回路３の構成例］  
次に、デバッグ端子部制御回路３の構成例について説明する。図４に示すように、デバ
ッグ端子部制御回路３は、Ｉ／Ｆ３１、アドレスデコーダ３２、データデコーダ３３及び
フリップフロップ３４を有する。
【００４４】
Ｉ／Ｆ３１は、ＣＰＵ４から出力される各種信号をシステムバス１０を介して受信する
。例えば、ＣＰＵ４が外部メモリ７ａからデバッグ用プログラムＰ１を読み出して実行し
、有効化ルーチンＲ１に基づく有効化信号Ｓ２をデバッグ端子部制御回路３に出力したと
き、Ｉ／Ｆ３１は、この有効化信号Ｓ２を受信する。そして、Ｉ／Ｆ３１は、受信した有
効化信号Ｓ２をアドレスデコーダ３２及びデータデコーダ３３に出力する。
【００４５】
Ｉ／Ｆ３１にはアドレスデコーダ３２及びデータデコーダ３３が接続される。アドレス
デコーダ３２及びデータデコーダ３３は、Ｉ／Ｆ３１からの有効化信号Ｓ２を受信し、該
受信した有効化信号Ｓ２に基づいてフリップフロップ３４に書き込む値を決定する。
【００４６】
アドレスデコーダ３２及びデータデコーダ３３にはフリップフロップ３４が接続される
。フリップフロップ３４は、デバッグ端子部制御信号Ｓ３を保持し、このデバッグ端子部
制御信号Ｓ３をデバッグ端子部２へ出力する。
【００４７】
フリップフロップ３４は、アドレスデコーダ３２及びデータデコーダ３３に書き込まれ
た値に基づいて、デバッグ端子部制御信号Ｓ３をHi、即ち、デバッグ端子部２のデバッグ
端子機能を有効化する。
【００４８】
また、フリップフロップ３４は、パワーオンリセット信号Ｓ１によりリセットされると
、デバッグ端子部制御信号Ｓ３をLow、即ち、デバッグ端子部２のデバッグ端子機能を無
効の状態にする。
【００４９】
このように、デバッグ端子部制御回路３は、ＣＰＵ４が、特定のアドレスに特定のデー
タを書き込むことで、デバッグ端子部制御信号Ｓ３の値を変更するという動作を実現する
。
【００５０】
［半導体装置１００の動作例］  
次に、半導体装置１００の動作例について説明する。動作例の説明のために以下の(i)
〜(iv)を仮定する。  
(i)アドレスデコーダ３２は、値0x12345678をシステムバス１０から入力されたときのみ
、フリップフロップ３４に対して値書き込みを許可する。
(ii)データデコーダ３３は、値0x9aをシステムバス１０から入力されたときのみ、フリッ
プフロップ３４の入力をHiにする。それ以外の値は、フリップフロップ３４の入力をLow
にする。
(iii)フリップフロップ３４は、アドレスデコーダ３２から値書き込みを許可されたとき
のみ、入力値を取り込んでデバッグ端子部制御信号Ｓ３としてデバッグ端子部２に出力す
る。次の値取り込み許可まで、デバッグ端子部制御信号Ｓ３の値を保持する。
(iv)デバッグ用プログラムＰ１の有効化ルーチンＲ１の内容は、「アドレス0x12345678に
、値0x9aをライトする」という動作を実行するＣＰＵ４の命令コードとする。
【００５１】
［デバッグ作業時の動作例］  
まず、図１に示した半導体装置１００のデバッグ作業時の動作例について説明する。半
導体装置１００のデバッグ作業時では、有効化ルーチンＲ１を含むデバッグ用プログラム
Ｐ１が記憶された外部メモリ７ａが搭載されていることを前提とする。
【００５２】
ＳｏＣ１は、半導体装置１００の電源投入時、パワーオンリセット信号Ｓ１が入力され
てリセット状態になる。このとき、フリップフロップ３４もリセット状態であるため（図
４参照）、デバッグ端子部制御信号Ｓ３の値はLowであり、デバッグ端子部２のデバッグ
端子機能は無効の状態になっている。
【００５３】
パワーオンリセット信号Ｓ１がLowのときをリセット状態とし、Hiのときを解除状態と
したとき、パワーオンリセット信号Ｓ１が解除状態にされると、ＣＰＵ４は、外部メモリ
７ａに記憶されているデバッグ用プログラムＰ１を読み込んで実行する。この過程で有効
化ルーチンＲ１がＣＰＵ４に実行されると、次の(1)〜(3)の動作順序でデバッグ端子部制
御信号Ｓ３の値がHiになり、デバッグ端子部２のデバッグ端子機能は有効の状態になる。
【００５４】
(1)有効化ルーチンＲ１の、「アドレス0x12345678に、値0x9aをライトする」という命令
コードをＣＰＵ４が読み込む。
(2)ＣＰＵ４は、デバッグ端子部制御回路３に対して、アドレス0x12345678に、値0x9aを
ライトする操作を実行する。
(3)フリップフロップ３４にHiが書き込まれる。
【００５５】
上述の状態でデバッグ端子部２にデバッグ機器が接続されていると、デバッグ作業を実
施することができる。
【００５６】
［出荷時の動作例］  
次に、図２に示した半導体装置１００の出荷時の動作について説明する。半導体装置１
００の出荷時では、半導体装置１００のデバッグ作業が完了して、外部メモリ７ａの代わ
りに有効化ルーチンＲ１を含まない製品プログラムＰ２が記憶された外部メモリ７ｂが搭
載されていることを前提とする。
【００５７】
ＳｏＣ１は、上述で説明したデバッグ作業時の形態と同様に、半導体装置１００の電源
投入時、パワーオンリセット信号Ｓ１が入力されてリセット状態になる。このとき、デバ
ッグ端子部制御回路３のフリップフロップ３４もリセット状態であるため、デバッグ端子
部制御信号Ｓ３の値はLowであり、デバッグ端子部２のデバッグ端子機能は無効の状態に
なっている。
【００５８】
パワーオンリセット信号Ｓ１が解除状態にされると、ＣＰＵ４は、外部メモリ７ｂに記
憶されている製品プログラムＰ２を読み込んで実行する。この製品プログラムＰ２の実行
では、デバッグ端子部制御信号Ｓ３がHiとなることはなく、デバッグ端子部２のデバッグ
端子機能は無効の状態を保持する。
【００５９】
このような状態でデバッグ端子部２にデバッグ機器を接続しても、デバッグ作業や製品
プログラムＰ２及びＳｏＣ１のハードウェア等を解析することは不可能である。以上のよ
うに、半導体装置１００は、デバッグ作業時と出荷時とは動作が異なる。
【００６０】
このように、第１の実施の形態に係る半導体装置１００によれば、デバッグを実行する
ためのデバッグ入力信号Ｓ４を生成するデバッグ機器に接続され、このデバッグ機器によ
りデバッグされる。これを前提にして、デバッグ端子部２は、デバッグ機器によって生成
されたデバッグ入力信号Ｓ４を受信する。ＣＰＵ４は、デバッグ端子部２を有効化させる
有効化ルーチンＲ１を含むデバッグ用プログラムＰ１が予め記憶された外部メモリ７ａか
ら当該デバッグ用プログラムＰ１を読み出して実行する。そして、デバッグ端子部制御回
路３は、ＣＰＵ４で実行されたデバッグ用プログラムＰ１の中から有効化ルーチンＲ１を
抽出し、該抽出した有効化ルーチンＲ１に基づいて、デバッグ端子部２で受信されるデバ
ッグ入力信号Ｓ４をＣＰＵ４に入力するようにデバッグ端子部２を有効化する。
【００６１】
これにより、外部メモリ７ａにデバッグ用プログラムＰ１が記憶されているときには、
デバッグ端子部２が有効になってデバッグ入力信号Ｓ４がＣＰＵ４に入力されるが、外部
メモリ７ａにデバッグ用プログラムＰ１が記憶されていないとき、例えば、製品プログラ
ムＰ２が記憶されている外部メモリ７ｂを搭載しているときには、デバッグ端子部２が無
効になってデバッグ入力信号Ｓ４がＣＰＵ４に入力されない。つまり、外部メモリ７ａを
搭載しているか否か（デバッグ用プログラムＰ１が記憶されているか否か）により、当該
半導体装置１００がデバッグ可能か否かが決定される。
【００６２】
また、ＣＰＵ４は、デバッグを実行するためのデバッグ出力信号Ｓ５を生成する。デバ
ッグ端子部２は、ＣＰＵ４によって生成されたデバッグ出力信号Ｓ５を受信する。そして
、デバッグ端子部制御回路３は、抽出した有効化ルーチンＲ１に基づいて、デバッグ端子
部２で受信されたデバッグ出力信号Ｓ５をデバッグ機器に出力するようにデバッグ端子部
２を制御する。
【００６３】
これにより、外部メモリ７ａにデバッグ用プログラムＰ１が記憶されているときには、
デバッグ端子部２が有効になってデバッグ出力信号Ｓ５がデバッグ機器に出力されるが、
外部メモリ７ａにデバッグ用プログラムＰ１が記憶されていないとき、例えば、製品プロ
グラムＰ２が記憶されている外部メモリ７ｂを搭載しているときには、デバッグ端子部２
が無効になってデバッグ出力信号Ｓ５がデバッグ機器に出力されない。
【００６４】
この結果、デバッグ作業時にデバッグ端子部２を有効化することにより、デバッグ作業
の利便性を向上させることができ、出荷時にデバッグ端子部２を無効化することにより、
デバッグ端子部２から製品プログラムＰ２の動作や当該半導体装置１００のハードウェア
構造等を解析されることを防止できる（リバースエンジニアリングを防止できる）。そし
て、従来のように２品種の設計、製造をする必要がなく、また、ＩＣカードや認証回路等
を用いないので、半導体装置の製造コストを低減することができる。
【００６５】
なお、本実施の形態では、デバッグ端子部の構成として、図３に示したイネーブル付バ
ッファを用いてデバッグ信号を遮断したが、これに限定されず、ＡＮＤゲートやＯＲゲー
トを用いても良い。この場合、ロジックレベルをLow、又は、Hiに固定することでデバッ
グ端子機能を無効化することができる。
【００６６】
また、デバッグ端子部制御回路の構成として、図４に示したように、一箇所のアドレス
に１つの値をライトすることでデバッグ端子部制御信号の値を変更するようにしたが、こ
れに限定されず、一箇所のアドレスに複数回順番に値をライトすることでデバッグ端子部
制御信号の値を変更するようにしても良い。
【００６７】
更に、外部メモリの格納する製品プログラムは、暗号化されていても暗号化されていな
くても構わない。製品プログラムが暗号化されている場合、デバッグ端子部が無効である
ことから、第三者がＳｏＣ１上での復号処理、製品プログラムの処理手順、初期データ及
びアルゴリズムを解析することは不可能である。また、製品プログラムが暗号化されてい
ない場合、第三者により外部メモリから直接製品プログラムを読みされて解析される可能
性がある。しかし、製品プログラムには有効化ルーチンが含まれていないことからデバッ
グ端子部を有効化する手段を知られることはない。ＳｏＣ用のプログラムの解析は、実施
のＳｏＣで実行させてデバッグ端子を介したモニタを行わない限り困難である。
【００６８】
＜第２の実施の形態＞  
第２の実施の形態では、第１の実施の形態で説明した内部メモリ５にメモリライト端子
部８を設けて、内部メモリ５の内容を書き換え可能にした半導体装置２００について説明
する。第１の実施の形態と同じ名称及び符号のものは同じ機能を有するので、その説明を
省略する。
【００６９】
図５に示すように、半導体装置２００は、前述の第１の実施の形態で説明した外部メモ
リ７ａ，７ｂを備えず、ＳｏＣ１Ａのみで構成される。ＳｏＣ１Ａは、デバッグ端子部２
、デバッグ端子部制御回路３、ＣＰＵ４、内部メモリ５、機能回路６及びメモリライト端
子部８を備える。
【００７０】
メモリライト端子部８は、外部接続可能な外部端子の一例であり、内部メモリ５に接続
される。メモリライト端子部８は、内部メモリ５に記憶されているプログラムを外部から
書き換え可能にする端子である。但し、メモリライト端子部８は、プログラムの読み出し
はできない。
【００７１】
デバッグ作業時に、メモリライト端子部８を介して有効化ルーチンＲ１を含むデバッグ
用プログラムＰ１を内部メモリ５に記憶させる。すると、ＣＰＵ４は、内部メモリ５に記
憶されたデバッグ用プログラムＰ１を読み出して実行し、前述の半導体装置１００の動作
と同様に、デバッグ端子部２を有効化にすることができる。
【００７２】
また、製品出荷時に、メモリライト端子部８を介して有効化ルーチンＲ１を含まない製
品プログラムＰ２を内部メモリ５に記憶させる。すると、ＣＰＵ４は、内部メモリ５に記
憶された製品プログラムＰ２を読み出して実行し、前述の半導体装置１００の動作と同様
に、デバッグ端子部２の無効化を維持することができる。
【００７３】
このように、第２の実施の形態に係る半導体装置２００によれば、内部メモリ５のプロ
グラムを書き換え自在なメモリライト端子部８を備えるので、前述の半導体装置１００の
ように外部メモリ７ａ，７ｂの２種類のメモリを容易する必要が無くなり、また、外部メ
モリ７ａ，７ｂ用のスペースを確保する必要が無くなり、半導体装置１００に比べて製造
コストを低減することができる。
【符号の説明】
【００７４】
１，１Ａ，１Ｂ  ＳｏＣ
２  デバッグ端子部
３  デバッグ端子部制御回路
４  ＣＰＵ
５  内部メモリ
６  機能回路
７ａ，７ｂ  外部メモリ
８  メモリライト端子部
１０  システムバス
２１  イネーブル付入力バッファ
２２  イネーブル付出力バッファ
３１  Ｉ／Ｆ
３２  アドレスデコーダ
３３  データデコーダ
３４  フリップフロップ
１００，２００  半導体装置
Ｐ１  デバッグ用プログラム
Ｐ２  製品プログラム
Ｒ１  有効化ルーチン
Ｓ１  パワーオンリセット信号
Ｓ２  有効化信号
Ｓ３  デバッグ端子部制御信号
Ｓ４  デバッグ入力信号
Ｓ５  デバッグ出力信号
【図１】
2012079152.tif 000003
【図２】
2012079152.tif 000004
【図３】
2012079152.tif 000005
【図４】
2012079152.tif 000006
【図５】
2012079152.tif 000007
【図６】
2012079152.tif 000008
【図７】
2012079152.tif 000009