IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シャープ株式会社の特許一覧

<>
  • 特許-半導体装置 図1
  • 特許-半導体装置 図2
  • 特許-半導体装置 図3
  • 特許-半導体装置 図4
  • 特許-半導体装置 図5
  • 特許-半導体装置 図6
  • 特許-半導体装置 図7
  • 特許-半導体装置 図8
  • 特許-半導体装置 図9
  • 特許-半導体装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-18
(45)【発行日】2024-06-26
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 11/22 20060101AFI20240619BHJP
   G06F 11/34 20060101ALI20240619BHJP
   G06F 15/78 20060101ALI20240619BHJP
【FI】
G06F11/22 684
G06F11/34 176
G06F15/78 516
【請求項の数】 9
(21)【出願番号】P 2020172947
(22)【出願日】2020-10-14
(65)【公開番号】P2022064364
(43)【公開日】2022-04-26
【審査請求日】2023-09-20
(73)【特許権者】
【識別番号】000005049
【氏名又は名称】シャープ株式会社
(74)【代理人】
【識別番号】100147304
【弁理士】
【氏名又は名称】井上 知哉
(74)【代理人】
【識別番号】100148493
【弁理士】
【氏名又は名称】加藤 浩二
(72)【発明者】
【氏名】紺野 伊知朗
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2009-211625(JP,A)
【文献】特開2017-111642(JP,A)
【文献】特開2005-25360(JP,A)
【文献】特表2017-530464(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 11/34
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
第1プロセッサと、
前記第1プロセッサと並列に動作可能な第2プロセッサと、
不良解析回路と
を具備する半導体装置であって、前記不良解析回路は、
第1メモリと、
前記半導体装置への電源投入時に動作を開始するタイマーと、
前記半導体装置への電源投入に応答して実行される第1プロセス及び第2プロセスの開始情報を前記第1プロセッサ及び第2プロセッサからそれぞれ受信し、前記開始情報と、当該開始情報を受信した際における前記タイマーのカウント値に基づく情報とを、互いに対応付けて前記第1メモリに書き込む制御回路と、
前記半導体装置の外部から前記第1メモリへのアクセスを可能とするインターフェース回路と
を備える半導体装置。
【請求項2】
前記制御回路は、前記第1プロセッサ及び前記第2プロセッサから、前記第1プロセスがコールされた旨の通知、または前記第2プロセスがコールされた旨の通知を、前記開始情報として受信し、
前記タイマーのカウント値に基づく情報は、前記半導体装置に電源が投入されてから、前記通知を受信するまでの経過時間に対応する、請求項1記載の半導体装置。
【請求項3】
前記開始情報は、前記コールされたプロセスのプロセス名と、当該プロセスに含まれるサブプロセスの番号とを含み、
前記制御回路は、前記プロセス名、前記サブプロセスの番号、及び前記経過時間を関連付けて、前記第1メモリに書き込む、請求項2記載の半導体装置。
【請求項4】
前記第1プロセス及び前記第2プロセスは、前記半導体装置の起動処理の少なくとも一部である、請求項1乃至3いずれか1項記載の半導体装置。
【請求項5】
前記制御回路は、前記起動処理に含まれるプロセスであっても、前記第1プロセッサまたは前記第2プロセッサから当該プロセスの開始情報を受信しない場合には、当該プロセスに関する情報を前記第1メモリに書き込まない、請求項4記載の半導体装置。
【請求項6】
前記起動処理は、前記半導体装置に電源が投入されてから、オペレーティングシステムが起動するまでに必要な処理である、請求項4または5記載の半導体装置。
【請求項7】
前記インターフェース回路は、前記半導体装置の起動が未完了である状態においても、前記外部とアクセス可能である、請求項1乃至6いずれか1項記載の半導体装置。
【請求項8】
前記半導体装置は、テレビ受像機を制御し、
前記起動処理は、前記テレビ受像機が映像をディスプレイに表示し、音声をスピーカから出力可能となるまでに必要な処理を含む、請求項4または5記載の半導体装置。
【請求項9】
EDIDを保持する第2メモリと、
前記第1メモリ及び前記第2メモリからデータを読み出し可能な読み出し回路と
を更に備え、
前記インターフェース回路には第1アドレスが割り当てられ、前記第2メモリには第2アドレスが割り当てられ、
前記読み出し回路は、DDC(Display Data Channel)を介して前記第1アドレスまたは前記第2アドレスを指定されることにより、前記第1メモリと前記第2メモリのいずれかからデータを読み出す、請求項8記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
SoC(System on Chip)の起動時において動作不良が発生した場合に備えて、いずれのプロセスにおいて不良が生じているのかを解析する技術が重要となっている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-211625号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1には、初期化処理を行なうプログラムの実行中に、タイムアウトが発生した処理番号を不揮発性メモリに保存する技術が開示されている。しかし、特許文献1記載の技術であると、複数のプロセッサが並列処理を行なう場合等に対応することが困難である。
【0005】
本発明の一形態は、動作不良の解析精度を向上可能な半導体装置を提供する。
【課題を解決するための手段】
【0006】
本発明の一形態の半導体装置は、第1プロセッサと、第1プロセッサと並列に動作可能な第2プロセッサと、不良解析回路とを備える。不良解析回路は、第1メモリと、半導体装置への電源投入時に動作を開始するタイマーと、半導体装置への電源投入に応答して実行される第1プロセス及び第2プロセスの開始情報を第1プロセッサ及び第2プロセッサからそれぞれ受信し、開始情報と、開始情報を受信した際におけるタイマーのカウント値に基づく情報とを、互いに対応付けて第1メモリに書き込む制御回路と、半導体装置の外部から第1メモリへのアクセスを可能とするインターフェース回路とを備える。
【図面の簡単な説明】
【0007】
図1】第1実施形態に係る半導体装置のブロック図。
図2】第1実施形態に係る半導体装置の動作を示すフローチャート。
図3】第1実施形態に係る半導体装置の起動時における処理の流れを示すフローチャート。
図4】第1実施形態に係る半導体装置の起動時において記録される情報の一例を示すダイアグラム。
図5】第2実施形態に係る半導体装置の起動時における処理の流れを示すフローチャート。
図6】第2実施形態に係る半導体装置の起動時において記録される情報の一例を示すダイアグラム。
図7】第3実施形態に係るテレビシステム制御回路のブロック図。
図8】第1乃至第3実施形態に係る半導体装置の起動時における動作の一例を示すフローチャート。
図9】第1乃至第3実施形態の第1変形例に係る半導体装置の起動時において記録される情報の一例を示すダイアグラム。
図10】第1乃至第3実施形態の第2変形例に係る半導体装置の備える不良解析回路のブロック図。
【発明を実施するための形態】
【0008】
以下、本発明の実施形態について、図面を参照しつつ説明する。なお、図面については、同一又は同等の要素には同一の符号を付し、重複する説明は省略する。
【0009】
(第1実施形態)
この発明の第1実施形態に係る半導体装置につき説明する。本実施形態は、複数のプロセッサを備えたSoC(System on Chip)の構成に関し、またSoCへの電源投入時における動作に関する。
【0010】
<構成について>
図1は、本実施形態に係るSoCのブロック図である。図示するようにSoC1は、複数のプロセッサ100(本例では4つのCPU100-1~100-4)、ROM200、RAM300、電源検出回路400、及び不良解析回路500を備えている。
【0011】
CPU100-1~100-4は、SoC1内部において必要な情報処理を実行し、並列動作が可能である。本例では、SoC1が4つのCPU100-1~100-4を備える例について示しているが、4つに限らず、2つ以上であればよく、またCPUに限らず、その少なくとも一部はGPU(Graphics Processing Unit)等の他のプロセッサであってもよい。また以下の記述において、CPU100-1~100-4を区別しない場合には、単にCPU100と呼ぶ。
【0012】
ROM200は、CPU100により実行されるプログラムや必要なデータを保持する。具体的には、例えばSoC1へ電源が投入された際においてSoC1の起動に必要な処理を行なうための起動プログラム201や、SoC1が動作するためのオペレーティングシステム202を保持する。またRAM300は、CPU100の作業領域として機能する。SoC1外部からのRAM300へのアクセスは、例えばオペレーティングシステム起動後に可能となる。
【0013】
電源検出回路400は、SoC1への電源投入を検出し、その旨の信号を例えばCPU100及び不良解析回路500へ送信する。
【0014】
不良解析回路500はSoC1を構成する回路の一部であり、SoC1の起動時において起動不良が発生した際に、それを解析するために用いられる。不良解析回路500は、大まかにはリセット回路510、タイマー回路520、メモリ部530、及びインターフェース回路540を備えている。
【0015】
リセット回路510は、電源検出回路400から電源検出の旨の信号を受信すると、リセット信号を生成する。そして、生成したリセット信号を、タイマー回路520及びメモリ部530に供給する。
【0016】
タイマー回路520は、例えば図示せぬクロック生成回路から与えられるクロック信号に基づいて、カウントアップを行なう。より具体的には、タイマー回路520は、リセット回路510からリセット信号を受信すると、カウント値をリセット(例えばゼロ)すると共に、リセット信号をトリガとしてカウントアップを開始する。本例では、一例として、タイマー回路520のカウント値が、カウントを開始してからの経過時間に相当する場合を例に説明する。なお、タイマー回路520はカウントアップの代わりにカウントダウンを行なってもよく、そのカウント値が上記経過時間に対応していれば限定されない。
【0017】
メモリ部530は、読み出し/書き込み制御回路531、RAM532、及びアドレスカウンタ533を保持している。メモリ部530は、SoC1の電源投入時においてCPU100の実行するプロセスのログを記憶し、インターフェース回路540を介して、SoC1外部へ出力可能とされている。
【0018】
読み出し/書き込み制御回路531は、大まかには書き込み回路600と読み出し回路610とを備えている。
【0019】
書き込み回路600は、書き込み制御部601、キャッシュメモリ602、及び加算部603(603-1~603-4)を備えている。加算部603-1~603-4の各々は、CPU100-1~100-4に対応付けられている。そして加算部603-1~603-4はそれぞれ、CPU100-1~100-4につきコールされたプロセス番号と、当該プロセス内における処理(サブプロセス)の処理番号に関する情報(開始情報)をCPU100-1~100-4から受信し、またタイマー回路520からカウント値(すなわち経過時間情報)を受信する。そして、これらのデータを、書き込み制御部601の制御に基づいて、キャッシュメモリ602に書き込む。キャッシュメモリ602は、複数の加算部603からの開始情報を同時に受信した時でも、受信データを取りこぼすことなくRAM532に書き込むため、加算部603から受信したデータを一時的に保持する。書き込み制御部601は、上記キャッシュメモリ602及び加算部603を制御する。また書き込み制御部601は、アドレスカウンタ533のカウンタ値をカウントアップ(またはカウントダウン)させる。アドレスカウンタ533のカウンタ値は、RAM532におけるアドレスを指定する。そして書き込み制御部601は、アドレスカウンタ533で指定されるRAM532におけるアドレスに、キャッシュメモリ602に保持されるデータを書き込むよう制御する。また読み出し回路610は、インターフェース回路540からの要求に応じて、RAM532からデータを読み出し、これをインターフェース回路540に転送する。この際、読み出し回路610は、アドレスカウンタ533のカウンタ値をカウントアップ(またはカウントダウン)させることにより、所望のアドレスにアクセスすることができる。
【0020】
RAM532は、例えばSRAMであり、書き込み回路600の命令に従って、キャッシュメモリ602から転送されるデータを保持する。また、読み出し回路610の命令に従って、保持するデータを読み出し、これを読み出し回路610に転送する。なおRAM532は、リセット回路510からのリセット信号を受信した際に、保持するデータを全て消去するように構成されていてもよい。この際、CPU100による起動プログラム実行時のログデータ(詳細は後述する)のみを消去する場合であってもよい。
【0021】
アドレスカウンタ533は、RAM532内の特定の領域を指定するためのアドレスを生成する。前述のようにアドレスカウンタ533は、書き込み回路600及び読み出し回路610からの命令に従って、生成するアドレスをインクリメント(またはデクリメント)して、新たなアドレスを生成可能である。そして、生成したアドレスをRAM532に転送する。またアドレスカウンタ533のカウント値(アドレス)は、リセット回路510からのリセット信号を受信した際にリセットされる(例えば“0x00”とされる)。なお、本明細書において先頭に“0x”を付記した数字は16進数表記であることを示す。
【0022】
次に、インターフェース回路540について説明する。インターフェース回路540は、SoC1外部と不良解析回路500との間の信号の送受信を司る。より具体的には、SoC1外部の例えばテスター等から、前述の起動プログラム実行時のログデータの読み出し命令を受信すると、その旨を読み出し回路610に転送する。そして、読み出し回路610により読み出されたログデータをテスターに送信する。インターフェース回路540は、例えばCPU100等の他の回路とは独立して、SoC1外部から不良解析回路500にアクセス可能とするものであり、その一例はJTAG(Joint Test Action Group)インターフェースである。
【0023】
<動作について>
次に、上記構成のSoC1の電源投入時における動作につき、不良解析回路500に着目して、以下説明する。図2は、SoC1の電源投入時における動作を示すフローチャートである。
【0024】
図示するように、まず電源検出回路400がSoC1への電源投入を検知する(ステップS10)と、その旨を知らせる検知信号をCPU100や不良解析回路500に送信する。
【0025】
検知信号を受信した不良解析回路500では、リセット回路510がリセット信号を発行し、これをタイマー回路520、RAM532、及びアドレスカウンタ533に送信する。この結果、タイマー回路520、RAM532、及びアドレスカウンタ533がリセットされる(ステップS11)。より具体的には、タイマー回路520におけるカウント値が例えばゼロ(換言すれば、時刻が00時00分00秒000ミリ秒)とされ、RAM532内部のデータ(例えばログデータ)が消去され、アドレスカウンタ533におけるアドレスがゼロ(例えば“0x00”)とされる。もちろん、これらの値は一例に過ぎず、リセット値はその他の値であってもよい。
【0026】
そしてタイマー回路520は、リセット信号をトリガとしてカウントを開始する(ステップS12)。すなわち、実質的に電源投入直後からの経過時間を計測する。また、CPU100は、ROM200から起動プログラム201を読み出し、これを実行する(ステップS13)。なお、図1の例では、起動プログラム201とオペレーティングシステム202とが同一のROM200内に保持されている場合を示しているが、起動プログラム201は別の起動専用のROMに格納されていてもよい。また、オペレーティングシステム等の他のアプリケーションプログラムと同一のROM200に格納される場合には、電源投入時に最初に読み出しアクセスされる専用の領域に保持されていてもよい。
【0027】
起動プログラム201は、複数のプロセスを含み、複数のCPU100は各々が実行すべきプロセスを指定された順番で実行する。また、各プロセスは複数の処理を含む。そして各CPU100は、各々がコールしたプロセスと、当該プロセスにおいて実行予定の番号の処理の開始通知を、不良解析回路500の加算部603に通知する(ステップS14)。
【0028】
加算部603は、書き込み制御部601の命令に応答して、対応するCPU100から受信したプロセス及び処理番号と、タイマー回路520から受信したカウント数、すなわち経過時間とを対応付けて、これらのデータをキャッシュメモリ602に書き込む。更に書き込み制御部601は、キャッシュメモリ602に書き込まれたデータをRAM532に書き込む。この際、データは、アドレスカウンタ533で生成されたアドレスに対応した領域に書き込まれる(ステップS15)。
【0029】
書き込み回路600は、上記ステップS14及びS15の処理を、起動プログラムの処理が終了するまで(ステップS16、NO)、または処理がタイムアウトするまで、アドレスカウンタ533の生成するアドレスをインクリメントしつつ(ステップS17)、繰り返す。なお、上記ステップS14及びS15の詳細については、具体例を用いて後述する。
【0030】
起動プログラムの処理が終了した後(ステップS16、YES)、SoC1外部の例えばテスターからログデータの読み出し要求を受信すると(ステップS18、YES)、読み出し回路610がRAM532からログデータを読み出し、インターフェース回路540を介してログデータをテスターに出力する(ステップS19)。すなわち、インターフェース回路540から読み出し要求を受信した読み出し回路610は、アドレスカウンタ533に対して、ログデータが記憶されている領域の先頭アドレスを指定するよう命令し、その後、アドレスをインクリメントさせつつ、データをRAM532から読み出す。なお、外部から要求されているログデータが、その全てではなく一部であった場合には、読み出し回路610は当該領域のみを指定するようにアドレスカウンタ533に命令してもよい。
【0031】
<<具体例について>>
上記ステップS14及びS15において、CPU100の動作とRAM532に記憶されるデータの具体例につき、図3及び図4を用いて説明する。図3は、電源投入直後において起動プログラム201を実行するCPU100の処理の流れを示している。図中の表記「プロセスPi-j」において、本例ではiは1~6の整数であり、それぞれが起動プログラム201に含まれるプロセスの番号(順番)を示し、jは1~4の整数であり、対応するプロセスがCPU100-1~100-4であることを示す。したがって、例えばプロセスP1-1は、起動プログラム201におけるプロセスP1がCPU100-1によって実行されることを示している。また、説明の簡単化のため、各プロセスPにおける処理(サブプロセス)数は2つとし、それぞれの処理番号を“S”及び“E”と呼ぶ。
【0032】
図3の例であると、電源投入直後、まずプロセスP1-1がコールされ、これがCPU100-1によって実行される。プロセスP1-1が完了すると、次にプロセスP1-1によりプロセスP2-1及びP2-3がコールされ、これらがCPU100-1及び100-3によってそれぞれ実行される。
【0033】
引き続き、プロセスP2-1が完了すると、次にプロセスP2-1によりプロセスP3-1及びP3-2がコールされ、これらがCPU100-1及び100-2によって実行される。また、プロセスP2-3が完了すると、次にプロセスP2-3によりプロセスP3-3及びP3-4がコールされ、これらがCPU100-3及び100-4によって実行される。
【0034】
更に、プロセス3-1が完了すると、次にプロセス3-1によりプロセスP4-1がコールされ、CPU100-1によって実行される。プロセスP3-2及びP4-1が完了すると、プロセスP3-2及びP4-1の各々によりプロセスP5-1がコールされ、CPU100-1によって実行される。なお、プロセスP5-1は、プロセスP3-2とP4-1の両方からコールされなければ実行開始されない。同様に、プロセスP3-3及びP3-4の両方からプロセスP5-3がコールされると、プロセスP5-3はCPU100-3によって実行される。
【0035】
その後、プロセスP5-1及びP5-3が完了し、これらによってプロセスP6-1がコールされると、CPU100-1によってプロセスP6-1が実行される。以上によりSoC1の起動処理が完了する。
【0036】
上記の例において、例えばプロセスP3-1において不具合が発生し、処理が完了しない場合を仮定する。この場合に、RAM532に記憶されるログデータを示しているのが図4である。
【0037】
図示するように、電源投入からの経過時間00:00:00:010にプロセスP1-1がコールされると、CPU100-1は当該プロセスP1-1に関する処理の開始通知(上記で述べた開始情報に対応)を書き込み回路600に送信する。この開始通知には、開始されるプロセスのプロセス名(本例ではP1-1)と、当該プロセスにおける処理対象の処理(サブプロセス)の処理番号(本例では“S”)とが含まれる。すると書き込み回路600は、受信したプロセス名P1-1と、処理番号“S”とを、RAM532におけるアドレス“0x00”に書き込む。引き続きCPU100-1は、処理番号“S”の処理を完了すると、電源投入からの経過時間00:00:00:100に、プロセスP1-1の処理番号“E”の処理の開始通知を書き込み回路600に送信し、これらのデータが、RAM532におけるアドレス“0x01”に書き込まれる。なお、プロセスP1-1の処理番号“E”の処理は、プロセスP1-1の処理番号“S”の処理が完了した後に実行される。したがって、プロセスP1-1の処理番号“E”についての開始通知が発行されたということは、プロセスP1-1の処理番号“S”の処理が正常に終了したことを示す。
【0038】
引き続き、電源投入からの経過時間00:00:00:110に、プロセスP2-1及びP2-3の処理番号“S”の開始通知が、CPU100-1及び100-3から書き込み回路600に送信され、これらのデータが、RAM532におけるアドレス“0x02”及び“0x03”に書き込まれる。プロセスP2-1及びP2-3は、共にプロセスP1-1によってコールされるので、これらのプロセスP2-1及びP2-3がコールされたということは、プロセスP1-1が正常に終了したことを示す。
【0039】
その後、アドレス“0x04”及び“0x05”には、プロセスP2-1及びP2-2の処理番号“E”に関する情報が書き込まれ、更にアドレス“0x06”にはプロセスP3-1の処理番号“S”に関する情報が書き込まれる。また、“0x07”~“0x09”には、プロセスP3-2、P3-3、及びP3-4の処理番号“S”に関する情報が順次書き込まれ、更に“0x0A”~“0x0C”には、プロセスP3-2、P3-3、及びP3-4の処理番号“E”に関する情報が順次書き込まれる。
【0040】
更に、アドレス“0x0D”には、プロセスP5-1の処理番号“S”に関する情報が書き込まれ、更にアドレス“0x0E”及び“0x0F”には、プロセスP5-3の処理番号“S”及び“E”に関する情報が書き込まれる。そして最後に、アドレス“0x10”に、プロセスP6-1の処理番号“S”に関する情報が書き込まれる。
【0041】
図4のログデータによれば、アドレス“0x06”にプロセスP3-1の処理番号“S”の処理が記録されているが、当該プロセスP3-1の処理番号“E”の処理は記録されていない。また図3に示されるように、プロセスP4-1はプロセスP3-1の処理完了後にコールされる。この点、本例ではプロセスP3-1で不具合が発生しているため、プロセスP4-1はコールされず、図4のログデータにもプロセスP4-1の処理が記録されていない。更に、プロセスP5-1はプロセスP3-2の処理とプロセスP4-1の処理完了後に実行される。この点、本例ではプロセスP4-1がコールされていないため、プロセスP5-1は実行されず、そのためプロセスP5-1に関しては処理番号“S”のみが記録され、処理番号“E”は記録されない。プロセスP6-1についても同様である。
【0042】
そして、電源投入からの経過時間に基づいて各プロセスの実行順序が分かるため、プロセスP3-1内においてまず不具合が発生したことが分かる。また、プロセスP3-1内の不具合により、プロセスP4-1、P5-1、及びP6-1が実行されなかったことが分かる。
【0043】
<本実施形態に係る効果>
上記のように、本実施形態に係るSoC1によれば、不良解析回路500は、SoC1の起動時においてCPU100により実行されるプロセスの各々に関する情報を、電源投入からの経過時間と共に記録する。よって、起動時の処理の最中に不良が発生した場合に、どのプロセスで不良が発生したのかを特定することが容易となり、不良の解析精度を向上できる。また書き込み回路600はキャッシュメモリ602を保持しており、データをRAM532に書き込む前にキャッシュメモリ602に書き込む。したがって、同時刻に複数のプロセッサからプロセスの開始通知を受信した場合であっても、一時的にキャッシュメモリ602でデータを保持し、その後、それぞれのプロセスに関する情報をRAM532に順次書き込むことができる。そのため、ログデータを高精度に記録することができる。
【0044】
更に本実施形態では、不良解析回路500はSoC1外部との通信を司るインターフェース回路540を備える。インターフェース回路540は、CPU100とは独立して読み出し/書き込み制御回路531によって動作可能である。したがって、オペレーティングシステムが起動されない場合であっても、RAM532からログデータを読み出すことが可能となり、不良解析をより容易なものとすることができる。
【0045】
(第2実施形態)
次に、この発明の第2実施形態に係る半導体装置につき説明する。本実施形態は、上記第1実施形態の図3及び図4で説明したケースとは異なる不具合が発生した場合の具体例に関するものである。よって、本実施形態に係るSoC1の構成や動作は第1実施形態と同様であるので、その説明は省略する。
【0046】
<起動処理の具体例について>
図5は、電源投入直後において起動プログラム201を実行するCPU100の処理の流れを示しており、第1実施形態で説明した図3に対応する。図5の例が図3と異なる点は、プロセスP5-3が、プロセスP3-1の結果310を参照する点にある。したがって、プロセスP3-1が正常に終了する前にプロセスP5-3が終了した場合、プロセスP5-3は正しくない結果を出力する可能性が非常に高い。図6は、そのような場合におけるログデータの例であり、第1実施形態で説明した図4に対応する。
【0047】
図示するように、第1実施形態と同様に、電源投入からの経過時間00:00:00:310と共にプロセスP3-1の処理番号“S”がアドレス“0x06”に記録されている。そして本例であると、経過時間00:00:00:530と共にプロセスP3-1の処理番号“E”がアドレス“0x10”に記録されている。したがって、プロセスP3-1は正常に終了した可能性が高い。
【0048】
しかし、プロセスP3-1が終了するより前の時刻00:00:00:510及び00:00:00:520に、既にプロセスP5-3の処理番号“S”及び“E”が、アドレス“0x0E”及び“0x0F”に記録されている。このことから、プロセスP5-3は、プロセスP3-1の正常な処理結果310を参照することなく実行されていることが分かる。
【0049】
<本実施形態に係る効果>
上記のように、本実施形態によれば、あるプロセスが他のプロセスの処理結果を参照する場合においても、ログデータにおける経過時間を見ることにより、当該プロセスが正常に実行されているか否かを知ることができる。
【0050】
(第3実施形態)
次に、この発明の第3実施形態に係る半導体装置につき説明する。本実施形態は、上記第1または第2実施形態を、テレビシステムに適用すると共に、ログデータの読み出しインターフェースにJTAGの代わりにEDID読み出し制御回路を用いたものである。以下では、第1及び第2実施形態と異なる点についてのみ説明する。
【0051】
図7は、本実施形態に係るテレビシステム2のブロック図である。テレビシステム2は、例えばテレビ受像機である。図示するようにテレビシステム2は、第1実施形態で説明したSoC1、フラッシュメモリ3、LCD(Liquid Crystal Display)制御部4、オーディオプロセッサ5、電源ユニット6、及びHDMI(High-Definition Multimedia Interface)コネクタ7などを備えている。フラッシュメモリ3は、例えばSoC1が実行するためのアプリケーションプログラム8を保持する。LCD制御部4は、SoC1の制御に基づいて、映像信号を液晶ディスプレイに画像として表示する。オーディオプロセッサ5は、音声信号をオーディオ機器から音声として出力する。電源ユニット6は、例えば外部から与えられる電圧を昇圧または降圧して、テレビシステム2の各ユニットに必要な電圧を生成する。HDMIコネクタ7は、HDMI規格に従って外部と信号の送受信を行なう。
【0052】
また本実施形態に係るSoC1は、第1実施形態で説明したCPU100、ROM200、RAM300、電源検出回路400、及び不良解析回路500に加えて、EDID(Extended Display Identification Data)用メモリ700、EDID読み出し制御回路800、フラッシュインターフェース回路900、及び内部インターフェース回路1000を備えている。
【0053】
内部インターフェース回路1000は、テレビシステム2内部においてSoC1とLCD制御部4、オーディオプロセッサ5、及び電源ユニット6との間の信号の送受信を司る。例えば、SoC1内のCPU100の命令を各ユニットに送信し、あるいは各ユニットからの信号を受信してCPU100に転送する。
【0054】
フラッシュインターフェース900は、上記内部インターフェース回路1000を介することなく、フラッシュメモリ3にアクセスする。そして、SoC1内で必要なアプリケーションプログラム8を例えばRAM300等に転送し、またCPU100の処理結果をフラッシュメモリ3へ転送する。
【0055】
EDID用メモリ700は、EDIDを保持する。EDIDは、例えばテレビシステム2におけるディスプレイの画面サイズ、対応解像度、リフレッシュレート、色特性、及び製造元などの情報を含む。
【0056】
EDID読み出し制御回路800は、EDID用メモリからのEDIDの読み出し、及び不良解析回路500からのログデータの読み出しを制御する。そしてEDID読み出し制御回路800は、DDC(Display Data Channel)ラインによってHDMIコネクタ7と接続されている。
【0057】
上記構成において、不良解析回路500にはスレーブアドレスとして例えば“0xB0”が割り当てられ、EDID用メモリ700には例えば“0xA0”が割り当てられている。そして、HDMIコネクタ7を介してテレビシステム2に接続される外部機器は、スレーブアドレスを指定することによって、不良解析回路500またはEDID用メモリ700にアクセスする。
【0058】
例えば、外部機器がレコーダ等の場合には、外部機器はスレーブアドレスとして“0xA0”を指定して、DDCラインを介してEDID読み出し制御回路800に対してデータを要求する。するとEDID読み出し制御回路800は、受信したスレーブアドレスに従って、EDID用メモリにアクセスしてEDIDを読み出し、外部機器に出力する。他方で、外部機器がテスターなどの起動情報読み出し装置10であった場合には、外部機器はスレーブアドレスとして“0xB0”を指定して、DDCラインを介してEDID読み出し制御回路800に対してデータを要求する。するとEDID読み出し制御回路800は、受信したスレーブアドレスに従って、不良解析回路500にアクセスしてログデータを読み出し、外部機器に出力する。
【0059】
<本実施形態に係る効果>
上記のように、第1及び第2実施形態で説明したSoC1は、テレビシステムに適用することができる。この際、HDMIを用いることにより、不良解析回路500とEDID用メモリ700とのいずれかを選択することができる。これにより、テレビシステム2における不良解析を簡易且つ高精度に実施できる。
【0060】
<変形例など>
以上のように、上記第1乃至第3実施形態で説明した構成によれば、不良解析回路500は、起動中の各プロセスの処理番号を、起動開始からの経過時間情報と共に、SoC1内部のメモリ532に保存する。このメモリ532は、SoC1外部から直接にアクセス可能であり、例えばJTAGなどのインターフェースを用いてアクセスできる。したがって、SoC1が起動できていない状態であっても、メモリ532からログデータを外部に読み出すことができ、起動処理のどの時点において不具合が発生しているかを特定することができる。
【0061】
また、第3実施形態で説明したように、不良解析回路500は、例えば8KプロセッサなどのCPUを内蔵したLSIの起動不良解析にも適用できる。一例として、LSIの起動不良によって出荷できなかった場合、当該LSIは修理対象となり、不良個所を特定できなければ修理不能となり廃棄される。しかし上記実施形態に係る不良解析回路500を用いることで、起動に深くかかわるSoC、フラッシュメモリ、DDRメモリ、及びその他の周辺デバイスのどこに不具合があるかの特定が容易となる。また、ログデータに記録された経過時間から、各プロセスにおける処理の順番や、処理に要した時間を特定できるため、ハードウェアにおける不良だけでなく、ソフトウェアにおける不具合の特定も容易となる。その結果、修理対象となったLSI部品交換などで救済できる可能性を向上できる。
【0062】
なお、実施形態は上記説明した形態に限定されず、種々の変形が可能である。例えば、起動時の処理の一例としては、図8に示す例があり得る。図8は、SoC1の起動処理のフローチャートである。図示するように、SoC1に電源が投入されると、まずBIOSが起動され(ステップS20)、CPU100はハードウェアのチェックなどを行ない、MBR(Master Boot Record)からブートローダを起動する(ステップS21)。ブートローダは、例えばブート用のメモリからカーネルをRAMに読み出し、CPU100がカーネルを起動する(ステップS22)。カーネルは、メモリの初期化やシステムクロックの設定などを行ない、initプロセスを起動する(ステップS23)。Initプロセスは、システムの初期化スクリプトを実行し、ランレベル(runlevel)に応じたサービスを実行し、その結果オペレーティングシステムが起動して、起動処理が完了する。上記のステップS20~S23の各々が、図3及び図5で説明したプロセスP1~P6に対応する。
【0063】
もちろん、起動処理は図8に限定されるものではなく、例えば第3実施形態で説明したテレビシステムの場合には、テレビ受像機に電源投入されてから、ディスプレイに画像が正常に表示され、スピーカから音声が正常に出力されるまでのあらゆる処理であってもよい。また、上記第1及び第2実施形態で説明した不良解析回路500は、起動処理に限らず、起動後におけるあらゆる処理に関するプロセッサ100の処理結果をログデータとして記録してもよい。
【0064】
また、上記実施形態では、不良解析回路500がCPU100から各プロセス内の処理(サブプロセス)の開始通知を受けて、これに基づいてログデータをRAM532に記録する場合を例に説明した。前述のとおり、複数のプロセスからのコールを必要とするプロセス(例えば図3におけるプロセスP5-1、P5-3、及びP6-1)は、必要とする全てのプロセスからコールされなければ実際の処理は開始されない。この点、例えば不良解析回路500は、開始通知の代わりに、処理が正常に終了したことを示す完了通知を受信する場合であってもよい。すなわち、CPU100は、各プロセスの処理を正常に終了すると、その旨を不良解析回路500に通知し、正常に終了できなかった場合には何らの通知も行わないか、あるいは正常に終了できなかった旨の通知を行なう。この場合のログデータの例を図9に示す。図9図4に対応する。図示するように、プロセスP3-1は正常に処理を完了できなかったため、ログデータには記録されない。また、プロセスP5-1及びP6-1も処理を開始できないため、ログデータには記録されない。このような場合であっても、不良個所の特定が可能である。また、不良解析回路500が開始通知を受信する場合であっても、実際にサブプロセスの処理の実行が開始された際に、開始通知が出力される場合であってもよい。この場合、例えば第1実施形態の例では、プロセスP3-1の処理番号“S”の処理は不具合により正常に終了できないが、処理自体は実際に開始されるので、図4の例のようにアドレス“0x06”にプロセスP3-1が記録されるが、実際の処理が開始されないプロセスP5-1及びP6-1は記録されない。
【0065】
また上記実施形態では、読み出し回路610がログデータを外部に出力する場合を例に説明した。しかし、読み出し回路610が不良個所を特定して、その情報を外部出力する場合であってもよい。このような場合の不良解析回路500の例を図10に示す。図示するように本例に係る不良解析回路500は、第1実施形態で説明した図1の構成において、読み出し回路610が、読み出し制御部611及び不良解析部612を備える。読み出し制御部611は、インターフェース回路540から受信した要求に応答して、RAM532からログデータを読み出し、これを不良解析部612に転送する。不良解析部612は、受信したログデータを参照し、経過時間やプロセスの順番に基づいて、どのプロセスにおいて不良が発生しているかを特定する。そして、特定された不良情報を、インターフェース回路540を介して外部に出力する。
【0066】
また上記実施形態では、書き込み回路600は、タイマー回路520から受信したカウント値が、電源投入からの経過時間に対応する場合を例に説明した。具体的には、例えばタイマー回路520がカウント値を経過時間に変換して、これを加算部603に出力してもよいし、またはタイマー回路520から加算部603に与えられたカウント値を、例えば書き込み制御部601が経過時間に変換してもよい。しかしながら、ログデータとして記録される経過時間は、必ずしも電源投入からの経過時間に限らず、例えばカウント値そのものであってもよい。この場合であってもカウント値に基づいて各プロセスの処理順序を特定できる。または、タイマー回路520は、例えばSoC内部に設けられたバッテリで動作する時計機能を有していてもよい。そしてタイマー回路520は現在時刻を加算部603に送信し、書き込み制御部601は、電源投入からの経過時間の代わりに現在時刻と共に各プロセスの情報をRAM532に記録してもよい。この場合であっても、各プロセスに対応する時刻情報に基づいて、各プロセスの処理順序を特定できる。更に、タイマー回路520は、SoC1外部に設けられていてもよい。すなわち、SoC1が、時刻に関する情報を何らかの形で外部から受信できればよい。
【0067】
また、上記実施形態では複数のプロセッサを備える場合を例に説明した。しかし、単一のプロセッサが複数のプロセスを同時実行可能な場合には、複数のプロセッサを備える場合に限定されない。更に、上記実施形態はSoCに限らず、半導体装置全般に適用可能であり、また第3実施形態で説明したテレビシステム以外のあらゆるアプリケーションに適用できる。更に、上記実施形態で説明したフローチャートの処理の順番は、可能な限り入れ替えることができる。
【0068】
上記では、本発明のいくつかの実施形態を説明したが、上述した形態に限定されるものではなく、適宜変形可能である。そして上記の構成は、実質的に類似の構成、類似の作用効果を奏する構成または類似の目的を達成できる構成で置き換えることができる。
【符号の説明】
【0069】
1…SoC、2…テレビシステム、3…フラッシュメモリ、4…LCD制御部、5…オーディオプロセッサ、6…電源ユニット、7…HDMIコネクタ、10…起動情報読み出し装置、100…CPU、200…ROM、201…起動プログラム、202…オペレーティングシステム、300、532…RAM、400…電源検出回路、500…不良解析回路、510…リセット回路、520…タイマー回路、530…メモリ部、531…読み出し/書き込み制御回路、533…アドレスカウンタ、540…インターフェース回路、1000…内部インターフェース回路、600…書き込み回路、601…書き込み制御部、602…キャッシュメモリ、603…加算部、610…読み出し回路、611…読み出し制御部、612…不良解析部、700…EDID用メモリ、800…EDID読み出し制御回路、900…フラッシュインターフェース回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10