【手続補正書】
【提出日】平成19年11月29日(2007.11.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４１
【補正方法】変更
【補正の内容】
【００４１】
また、この半導体集積回路からトレース情報としてトレース状態符号及びアドレスを得て、この半導体集積回路におけるＣＰＵによって実行されたソースプログラムとトレース情報とを順に対応させながら、このＣＰＵによる前記ソースプログラムの実行履歴を復元する方法として、ソースプログラムから間接分岐命令を検出するステップと、トレース情報から分岐先アドレスを伴った間接分岐命令の実行を示す第１の符号を検出するステップと、トレース情報から分岐先アドレスを伴わない間接分岐命令の実行を示す第２の符号を検出するステップと、間接分岐命令及び第１の符号が検出されたとき、第１の符号に伴った分岐先アドレスを記憶するステップと、間接分岐命令及び第１の符号が検出されたとき、第１の符号に伴った分岐先アドレスを復元するステップと、間接分岐命令及び第２の符号が検出されたとき、記憶された分岐先アドレスを復元するステップとを備えたものとする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
また、この半導体集積回路からトレース情報としてトレース状態符号及びアドレスを得て、この半導体集積回路におけるＣＰＵによって実行されたソースプログラムとトレース情報とを順に対応させながら、このＣＰＵによる前記ソースプログラムの実行履歴を復元する方法として、ソースプログラムから間接分岐命令を検出するステップと、トレース情報から分岐先アドレスを伴った間接分岐命令の実行を示す第１の符号を検出するステップと、トレース情報から分岐先アドレスを伴わない間接分岐命令の実行を示す第２の符号を検出するステップと、間接分岐命令及び第１の符号が検出されたとき、第１の符号に伴った分岐先アドレスを記憶するステップと、間接分岐命令及び第１の符号が検出されたとき、第１の符号に伴った分岐先アドレスを復元するステップと、間接分岐命令及び第２の符号が検出されたとき、記憶された分岐先アドレスを復元するステップとを備えたものとする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
ＣＰＵ１００がアドレス"0x50000308"（実行順番"13"）のリターン命令"ret"を実行し
たとき、信号RETがアサートされる。そして、復帰先アドレスの期待値"0x50000210"がポップされ、スタックメモリ３００の内容は、
（0x5000010c,0x5000000c）
となる。このとき、ポップされた期待値（"0x50000210"）とＣＰＵ１００から出力された実際の分岐先アドレス１１０（"0x50000210"）とは一致するため、比較結果信号４０１がアサートされる（出力"1"）。また、このとき、スタックメモリ３００の内容は有効であることからスタック有効信号３０２がアサートされており、復帰先アドレス一致信号５０１がアサートされる（出力"1"）。信号RET及び復帰先アドレス一致信号５０１がアサートされているとき、信号TPCLDENはアサートされず、トレース情報として符号"NPC"のみが出力される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
TP=0のとき、IP=0x50000000であり、ステップ２００６で、ソースプログラムから得られるプログラム部分"0x50000000 taskA:命令1"が復元され表示される。このとき、トレース情報に示された符号は"SEQ"であるので（ステップ２００７，２００８，２０１７，２０２４及び２０３２）、ステップ２０３３でIPがインクリメントされ（IP=0x50000004）、ステップ２０３４でTPがインクリメントされた後（TP=1）、ステップ２００６に戻る。TP=1,3,4,6,7,8,10,11,15,16,17,18,22,23のときも同様に処理される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
（第２の実施形態）
図８は、本発明の第２の実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路１は、第１の実施形態に係る半導体集積回路に、同期要求生成回路８００及びセレクタ７５０を追加した構成をしている。以下、第１の実施形態に係る半導体集積回路と比較して異なる部分について説明する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
ＣＰＵ１００がアドレス"0x50000104"（実行順番"5"）の命令"命令4"を実行したとき、信号EOIがアサートされるとともに実行アドレス１１１（"0x50000104"）が出力される。このとき、信号JMPTKNはアサートされず、図９に示した状態デコード表に従って、トレースパケット制御部２００は、信号TPCLDENをアサートし、信号TPCSELの値を"0"に設定し、符号２０４として"SYN"を出力する。信号TPCSELの値が"0"のとき、セレクタ７５０は、実行アドレス１１１（"0x50000104"）を選択し、シフトレジスタ７００に入力する。また、信号TPCLDENがアサートされることにより、シフトレジスタ７００は、セレクタ７５０から受けたアドレス７５１（"0x50000104"）をデータ７０１としてポート９０２に順次出力する。すなわち、ＣＰＵ１００が分岐命令以外の通常の順次実行命令を実行したときであって同期要求信号８０１がアサートされたとき、トレースパケット制御部２００は、符号２０４として"SEQ"ではなく"SYN"を出力するとともに、データ７０１として分岐先アドレス１１０ではなく実行アドレス１１１が出力されるべく信号TPCLDEN及び信号TPCSELの値を設定する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１１６
【補正方法】変更
【補正の内容】
【０１１６】
トレース開始前、アドレス"0x50000008"（実行順番"3"）のコール命令"call Sub_A"及びアドレス"0x50000108"（実行順番"6"）のコール命令"call Sub_B"の実行によって、スタックメモリ３００の内容は、
（0x5000010c,0x5000000c）
となっている。しかし、実行順番"6"のときトレースが開始され、同期要求信号８０１がアサートされる。これにより、スタックメモリ３００は初期化され、その内容は、
（）
となる。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
ＣＰＵ１００がアドレス"0x50000108"（実行順番"6"）の命令"call Sub_B"を実行したとき、信号CALL及びJMPTKNがアサートされる。このとき、トレースパケット制御部２００は、図９に示した状態デコード表に従って、信号TPCLDENをアサートし、信号TPCSELの値を"1"に設定し、符号２０４として"JMPS"を出力する。信号TPCSELの値が"1"のとき、セレクタ７５０は、分岐先アドレス１１０（"0x50000200"）を選択し、シフトレジスタ７００に入力する。また、信号TPCLDENがアサートされることにより、シフトレジスタ７００は、セレクタ７５０から受けたアドレス７５１（"0x50000200"）をデータ７０１としてポート９０２に順次出力する。すなわち、ＣＰＵ１００が分岐命令を実行したときであって同期要求信号８０１がアサートされたとき、トレースパケット制御部２００は、符号２０４として"NPC"又は"JMP"ではなく"JMPS"を出力するとともに、データ７０１として分岐先アドレス１１０が出力されるべく信号TPCLDEN及び信号TPCSELの値を設定する。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
一方、図１７は、本実施形態に係る開発支援装置によって復元されたプログラム実行履歴を示す。図１７に示したプログラム実行履歴は、図１２及び図１３に示したフローに従って得られたものである。