(57)【要約】  ＬＳＩ内部信号（１００〜１０７）の状態を監視し、信号名情報（３１）、信号状態情報（３２）、信号状態が遷移したＬＳＩ内部の時間の情報（３３）をパケット化し、トレース情報（１０）として外部に出力する。開発支援装置では、トレース情報（１０）を復号化し、またＬＳＩ内部の時間情報を実時間の情報に変換し、得られた情報をもとにＬＳＩ内部信号の波形を再現する。複数のＬＳＩ内部信号のトレースを、トレースする信号の本数よりも少ない本数の端子（１６）を用いて行うことが可能になる。
2009031254.tif 000002
【特許請求の範囲】
【請求項１】
内部信号の遷移情報から信号名の情報と信号状態の情報とを取得する手段と、
前記信号名の情報と前記信号状態の情報とを符号化する手段と、
前記符号化の結果をトレース情報として出力する手段とを備えた半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記半導体装置の内部の時間を表す時間情報を生成する手段と、
前記時間情報を符号化する手段と、
前記時間情報の符号化の結果を前記トレース情報の一部として付加する手段とを更に備えた半導体装置。
【請求項３】
請求項１記載の半導体装置において、
同期信号のタイミングを表す第１の時間情報を生成する手段と、
前記第１の時間情報に対する前記半導体装置の内部の時間を表す第２の時間情報を生成する手段と、
前記第１及び第２の時間情報を符号化する手段と、
前記第１及び第２の時間情報の符号化の結果を前記トレース情報の一部として付加する手段とを更に備えた半導体装置。
【請求項４】
請求項３記載の半導体装置から前記トレース情報を受け取る開発支援装置であって、
前記トレース情報を復号化して、前記信号名の情報と前記信号状態の情報と前記第１及び第２の時間情報とを得る手段と、
前記第１及び第２の時間情報から実時間の情報を計算により求める手段と、
前記信号名の情報と前記信号状態の情報と前記実時間の情報とを用いて前記半導体装置の内部信号の波形の情報を再現する手段とを備えた開発支援装置。
【請求項５】
請求項２記載の半導体装置において、
前記出力すべきトレース情報を蓄積する手段と、
前記蓄積されたトレース情報を同期信号のタイミングに同期して出力する手段とを更に備えた半導体装置。
【請求項６】
請求項５記載の半導体装置において、
前記同期信号のタイミングを変更する手段を更に備えた半導体装置。
【請求項７】
請求項５記載の半導体装置において、
前記信号名の情報と前記信号状態の情報とを取得するイベントを制限する手段を更に備えた半導体装置。
【請求項８】
請求項５記載の半導体装置において、
前記時間情報を含まないトレース情報を部分的に出力するように制限を加える手段を更に備えた半導体装置。
【請求項９】
請求項５記載の半導体装置において、
前記同期信号のタイミングを変更する第１の手段と、
前記信号名の情報と前記信号状態の情報とを取得するイベントを制限する第２の手段と、
前記時間情報を含まないトレース情報を部分的に出力するように制限を加える第３の手段と、
前記第１、第２及び第３の手段のうちいずれかを選択して有効にする第４の手段とを更に備えた半導体装置。
【請求項１０】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記同期信号のタイミングを自動的に変更する手段を更に備えた半導体装置。
【請求項１１】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記信号名の情報と前記信号状態の情報とを取得するイベントを自動的に制限する手段を更に備えた半導体装置。
【請求項１２】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記時間情報を含まないトレース情報を部分的に出力するように自動的に制限を加える手段を更に備えた半導体装置。
【請求項１３】
請求項９記載の半導体装置において、
前記第４の手段は、前記トレース情報の蓄積データ量をもとにして、前記同期信号のタイミングを自動的に変更するように前記第１の手段を動作させ、前記信号名の情報と前記信号状態の情報とを取得するイベントを自動的に制限するように前記第２の手段を動作させ、又は、前記時間情報を含まないトレース情報を部分的に出力すべく自動的に制限を加えるように前記第３の手段を動作させる半導体装置。
【請求項１４】
請求項１１記載の半導体装置において、
前記信号名の情報と前記信号状態の情報とを取得しないイベントを予め設定した優先順位に従って決定する手段を更に備えた半導体装置。
【請求項１５】
請求項１２記載の半導体装置において、
前記時間情報を含まないトレース情報を出力するイベントを予め設定した優先順位に従って決定する手段を更に備えた半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ内部信号の状態を外部でトレース可能な半導体装置及びその半導体装置を用いた開発支援装置に関するものである。
【背景技術】
【０００２】
ＬＳＩ内部の動作をリアルタイムに解析するためには。ＬＳＩの内部信号をＬＳＩ外部でトレースする必要がある。そのために、従来はトレース対象の信号をＬＳＩ外部に出力し、ＬＳＩ外部でロジックアナライザなどを用いて解析していた。【０００３】
ところが、トレース対象のＬＳＩ内部信号の本数が増加すると、その信号の本数に比例してトレース用の外部端子数が必要となり、コストが大となる。【０００４】
そこで、通常機能の外部端子とトレース用の外部端子とを兼用化することが考えられる。ところが、評価時に通常機能が使えないことにより、全機能の評価が困難である。【０００５】
他方、複数のトレース対象のＬＳＩ内部信号について、内部の選択回路を制御して選択した信号をＬＳＩ外部に出力する技術も知られている（特許文献１参照）。
【特許文献１】特開２００２−２４２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術ではトレース用の外部端子数以上のＬＳＩ内部信号を同時にトレースすることができない。つまり、同時にトレースする対象のＬＳＩ内部信号の本数が増えた場合のトレース技術について考慮されていない。そのため、複数のＬＳＩ内部信号を並列にトレースする際に、信号の本数が増えた場合にトレースが不可能となることが予想される。【０００７】
このような問題点に鑑み、本発明は、複数のＬＳＩ内部信号の状態を１本の外部端子で同時にトレース可能にする手段を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に対しては、本発明によって、ＬＳＩ内部信号を直接ＬＳＩ外部に出力するのではなく、トレース対象のＬＳＩ内部信号の状態が変化した情報から信号名、信号の状態を取得し、信号の状態が変化した時間の情報と合わせて符号化してＬＳＩ外部に出力し、ＬＳＩ外部で復号化して、ＬＳＩ内部情報を再現することにより解決する。
【発明の効果】
【０００９】
本発明では、複数のＬＳＩ内部信号の動作の有無を１本の外部端子から出力される情報より知ることが可能になり、トレース対象のＬＳＩ内部信号の本数がトレース用の外部端子の本数よりも多くなった場合についても並列にトレースすることができる。【００１０】
また、同期を利用すれば、ＬＳＩ内部信号を外部でトレースするための情報量を維持したまま、データ量を削減することが可能になる。更に、ＬＳＩ内部情報取得時に発生する恐れのある情報の欠落を回避する対策を講じれば、必要な情報を確実に取得することが可能になる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明による半導体装置と開発支援装置の概略構成図である。
【図２】図２は、本発明の第１の実施形態による半導体装置の構成図である。
【図３】図３は、本発明の第１の実施形態による開発支援装置の構成図である。
【図４】図４は、本発明の第１の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図５】図５は、本発明の第１の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図６】図６は、本発明の第１の実施形態によるデバッガのトレース情報復号のアルゴリズムを示す図である。
【図７】図７は、本発明の第１の実施形態によるトレース情報復号の過程を示す図である。
【図８】図８は、本発明の第１の実施形態によるデバッガのＬＳＩ内部情報再現のアルゴリズムを示す図である。
【図９】図９は、本発明の第１の実施形態によるＬＳＩ内部情報の再現過程を示す図である。
【図１０】図１０は、本発明の第２の実施形態による半導体装置の構成図である。
【図１１】図１１は、本発明の第２の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１２】図１２は、本発明の第２の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図１３】図１３（ａ）〜図１３（ｄ）は、トレース情報の欠落とその回避手段を示す図である。
【図１４】図１４は、本発明の第３の実施形態による半導体装置の構成図である。
【図１５】図１５は、本発明の第３の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１６】図１６は、本発明の第３の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図１７】図１７は、本発明の第４の実施形態による半導体装置の構成図である。
【図１８】図１８は、本発明の第４の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１９】図１９は、本発明の第４の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図２０】図２０は、本発明の第５の実施形態による半導体装置の構成図である。
【図２１】図２１は、本発明の第５の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図２２】図２２は、本発明の第５の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図２３】図２３は、本発明の第６の実施形態による半導体装置の構成図である。
【図２４】図２４は、本発明の第６の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【符号の説明】
【００１２】
１  ＬＳＩ（半導体装置）
２  デバッガ（開発支援装置）
１０  トレース情報
１１〜１５  機能ブロック
１６  トレース情報出力端子
１７  ＬＳＩ内部情報取得部
２１  トレース情報復号部
２２  ＬＳＩ内部情報再現部
２３  ＬＳＩ内部情報バッファ
２４  時間情報復号部
２５  実時間変換部
２６  波形再現部
３１  信号名情報（ＬＳＩ側）
３２  信号状態情報（ＬＳＩ側）
３３  時間情報（ＬＳＩ側）
４１  信号名情報（デバッガ側）
４２  信号状態情報（デバッガ側）
４３  時間情報（デバッガ側）
４４  同期情報
４５  ＬＳＩ内部時間情報
４６  実時間情報
５１  同期信号
５２  トレース情報のデータ量
５３  同期周期の変更情報
５４  同期発生周期設定部ＯＮ／ＯＦＦ切替え信号
５５  イベント選択制御部ＯＮ／ＯＦＦ切替え信号
５６  時間情報取得イベント選択制御部ＯＮ／ＯＦＦ切替え信号
１００〜１０７  ＬＳＩ内部信号
２００  トレース情報生成部
２０１  時間情報取得イベント選択制御部
２０２  制限対象イベント設定部
２０３  保持バッファ
２０４  出力バッファ
２１０  時間情報生成部
２１１  同期信号生成部
２１２  内部カウンタ
２１３  同期発生周期設定部
２２０  信号特定情報生成部
２２１  信号名情報生成部
２２２  信号状態情報生成部
２２３  イベント選択制御部
２２４  制限対象イベント設定部
２３０  トレース情報欠落回避手段選択部
２４０  トレース情報出力部
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態を図面に基づいて詳細に説明する。【００１４】
《第１の実施形態》
図１に、本発明における半導体装置と開発支援装置との全体の概略構成を示す。ここでは、半導体装置（ＬＳＩ）１中の機能ブロック１１〜１４と機能ブロック１５との間の内部信号１００〜１０７を開発支援装置（デバッガ）２にてトレースするものとする。ＬＳＩ内部情報取得部１７は、単一の出力端子１６を介して、トレース対象の信号が状態遷移を起こしたことを示す情報をトレース情報１０としてデバッガ２へ供給する。デバッガ２は、トレース情報復号部２１とＬＳＩ内部情報再現部２２とを備える。【００１５】
図２及び図３に、本発明の第１の実施形態における半導体装置及び開発支援装置の構成をそれぞれ示す。【００１６】
図２に示すＬＳＩ１において、信号特定情報生成部２２０は、信号名情報生成部２２１と信号状態情報生成部２２２とを持ち、機能ブロック１１〜１４と機能ブロック１５との間の内部信号１００〜１０７をトレースし、トレース対象の信号が状態遷移を起こしたときに検出して、信号名情報３１と信号状態情報３２とを生成する。時間情報生成部２１０は、同期信号生成部２１１と内部カウンタ２１２とを持ち、同期信号生成部２１１はＬＳＩ１と外部に接続するデバッガ２とが同期するように動作し、同期時に同期信号を生成する。また、同期信号とカウンタ２１２の値とを時間情報３３とする。トレース情報生成部２００は、信号名情報３１と信号状態情報３２とを検出したら、その時点における時間情報３３を用いて、各情報３１〜３３をパケット化したトレース情報１０を生成して出力する。【００１７】
一方、図３に示すデバッガ２は、トレース情報１０を検出したら、トレース情報復号部２１で信号名情報４１と信号状態情報４２と時間情報４３とに分離する。時間情報復号部２４は、時間情報４３を同期情報４４とＬＳＩ内部時間情報４５とに分離し、実時間変換部２５は同期の回数をカウントして、同期回数とＬＳＩ内部時間情報４５とから実時間情報４６に変換する。信号名情報４１、信号状態情報４２、実時間情報４６は、ＬＳＩ内部情報バッファ２３に格納される。波形再現部２６は、ＬＳＩ内部情報バッファ２３から読み出した情報４１，４２，４６をもとにＬＳＩ内部情報を再現する。【００１８】
ＬＳＩ１にて内部信号の状態遷移を検出し、図４に示すアルゴリズムによってトレース情報１０を生成する過程を、図５に示す波形図を用いて説明する。【００１９】
図５において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１６００ｎｓでＨに遷移する信号である。内部信号１０１は初期状態がＨで、測定開始から１４００ｎｓでＬに遷移し、１９００ｎｓでＨに遷移する信号である。内部信号１０２〜１０７は、測定時に状態遷移を起こさないものとする。また、１組のトレース情報を出力するために要する時間は２５０ｎｓとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２とが同期を行う周期ＣＹＣは“８”である。【００２０】
図４によれば、測定開始時、ステップ１００１で、内部カウンタの値ＣＮＴ、同期信号ＳＹＮを“０”に設定し、ステップ１００２に移行する。ステップ１００２で測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００のバッファが空であるか判定し、空のときはフローを終了し、バッファが空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、１４００ｎｓ、１６００ｎｓ、１９００ｎｓの時に状態遷移した信号があることから、トレース情報１０を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＳＹＮ、ＣＮＴから構成される時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，０，５”、１４００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０，６”、１６００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，１，０”、１９００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，０，３”をパケット化し、ステップ１００９に移行する。ステップ１００９で、パケット化したトレース情報をトレース情報生成部２００内のバッファに格納し、ステップ１０１２に移行する。【００２１】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１０１０に移行する。ステップ１０１０で、ＳＹＮの状態を確認する。８００ｎｓの時、ＳＹＮが“１”であることから同期信号が発生して信号の状態遷移が発生していない場合のトレース情報を生成するためステップ１０１１に、その他の場合はＳＹＮが“０”であることからステップ１０１２に移行する。ステップ１０１１で、８００ｎｓのとき、同期信号が発生して信号の状態遷移が発生していない場合のトレース情報“０，０，１，０”を生成し、パケット化して、ステップ１００９に移行する。【００２２】
ステップ１０１２で、トレース情報生成部２００内のバッファに情報が残っている時はバッファから情報を出力するためにステップ１０１３に移行し、バッファが空の時はステップ１０１４に移行する。ステップ１０１３で、バッファ内の情報を出力端子１６からトレース情報１０として出力し、ステップ１０１５に移行する。ステップ１０１５で、出力したデータをバッファから削除し、未出力のデータを出力するためにバッファ内でシフトしてステップ１０１６に移行する。ステップ１０１４で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにしてステップ１０１６に移行する。【００２３】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１０１８に、不一致の場合はステップ１０１９に移行する。ステップ１０１８で、８００ｎｓと１６００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリアして、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。【００２４】
次に、デバッガ２が図６に示すアルゴリズムによってトレース情報１０を復号する過程を、図７に示す波形図を用いて説明する。【００２５】
測定開始前に、ＬＳＩ１とデバッガ２とが同期を行う周期ＳＹＮＣＹＣ、ＬＳＩ内部カウンタ２１２のサイクルＣＬＫＣＹＣを設定する。図７において、ＬＳＩ１の動作に合わせて、ＳＹＮＣＹＣを８００ｎｓ、ＣＬＫＣＹＣを１００ｎｓに設定する。また、トレース情報１０の入力期間は２５０ｎｓとする。【００２６】
測定開始時、ステップ１１０１で、同期信号のカウンタＳＹＮＣＮＴ、実時間情報Ｔを“０”に設定し、ステップ１１０２に移行する。ステップ１１０２で測定終了の確認を行い、測定を終了するときはフローを終了し、測定を終了しないときはステップ１１０３に移行する。ステップ１１０３で、トレース情報１０の入力有無を確認し、トレース情報１０が入力されている時はステップ１１０４に、トレース情報１０が入力されていない時はステップ１１０２に移行する。ステップ１１０４で、入力したトレース情報１０をトレース情報復号部２１内のバッファに格納し、ステップ１１０５に移行する。ステップ１１０５で、１組分のトレース情報１０がバッファに格納されたか確認する。７５０ｎｓ、１０５０ｎｓ、１６５０ｎｓ、１９００ｎｓ、２１５０ｎｓの時に１組分のトレース情報１０がバッファに格納されるのでステップ１１０６に移行し、それ以外の時はステップ１１０２に移行する。ステップ１１０６で、バッファに格納したトレース情報１０を復号する。具体的には、信号名に該当する情報を信号名と対応させ、“１”は信号１００を示す“１００”、“２”は信号１０１を示す“１０１”、“０”は対応する信号がない“０００”に復号して信号名情報４１として出力し、信号状態に該当する情報を信号状態と対応させ、“０”はＨ−＞Ｌの信号遷移を示す“１０”、“１”はＬ−＞Ｈの信号遷移を示す“０１”に復号して信号状態情報４２として出力し、時間情報に該当する情報は同期情報（ＳＹＮ）４４とＬＳＩ内部時間情報（ＣＮＴ）４５とに分離し、ステップ１１０７に移行する。【００２７】
ステップ１１０７で、トレース情報１０から得られたＳＹＮの値を確認する。１０５０ｎｓ、１９００ｎｓの時はＳＹＮが“１”であることより同期信号のカウンタＳＹＮＣＮＴを加算させるためにステップ１１０８に移行し、それ以外の場合はＳＹＮが“０”であることよりステップ１１０９に移行する。ステップ１１０８で、ＳＹＮＣＮＴに１を加算し、ステップ１１０９に移行する。【００２８】
ステップ１１０９で、信号名情報の示す信号が存在する信号か確認する。ここで、１０５０ｎｓの時は信号名情報が“０００”になっており、信号名が割り当てられていない情報であるため、ＬＳＩの内部信号の情報ではなく同期発生を示すトレース情報であると判別し、ＬＳＩ内部情報を生成せず、ステップ１１０２に移行する。７５０ｎｓ、１６５０ｎｓ、１９００ｎｓ、２１５０ｎｓの時は、ＬＳＩ内部情報を生成するためにステップ１１１０に移行する。【００２９】
ステップ１１１０で、同期信号のカウンタＳＹＮＣＮＴ、同期を行う周期ＳＹＮＣＹＣ（８００ｎｓ）、ＬＳＩ内部カウンタ２１２のサイクルＣＬＫＣＹＣ（１００ｎｓ）、トレース情報から得られたＣＮＴより信号遷移の発生した実時間情報Ｔを計算する。７５０ｎｓの時は、復号したＣＮＴが“５”、ＳＹＮＣＮＴが“０”であることより、Ｔは５００（ｎｓ）となる。１６５０ｎｓの時は、復号したＣＮＴが“６”、ＳＹＮＣＮＴが“１”であることより、Ｔは１４００（ｎｓ）となる。１９００ｎｓの時は、復号したＣＮＴが“０”、ＳＹＮＣＮＴが“２”であることより、Ｔは１６００（ｎｓ）となる。２１５０ｎｓの時は、復号したＣＮＴが“３”、ＳＹＮＣＮＴが“２”であることより、Ｔは１９００（ｎｓ）となる。生成したＴを実時間情報４６として出力し、ステップ１１１１に移行する。ステップ１１１１で、復号した信号名情報４１、信号状態情報４２、実時間情報４６をＬＳＩ内部情報バッファ２３に格納する。７５０ｎｓの時は“１００，１０，５００”、１６５０ｎｓの時は“１０１，１０，１４００”、１９００ｎｓの時は“１００，０１，１６００”、２１５０ｎｓの時は“１０１，０１，１９００”をＬＳＩ内部情報バッファ２３に格納する。【００３０】
次に、ＬＳＩ内部の信号波形の再現について、図８に示すアルゴリズムによって情報を復号する過程を、図９に示す波形図を用いて説明する。【００３１】
まず、波形の再現対象の信号名を“１００”に指定する。指定された信号名“１００”がＰＩＮに設定される。【００３２】
再現開始時、ステップ１２０１でＴｂｅｆを０（ｎｓ）、Ａｂｅｆを“０”に設定し、ステップ１２０２に移行する。ステップ１２０２で再現終了の確認を行い、再現を終了するときはフローを終了し、測定を終了しないときはステップ１２０３に移行する。ステップ１２０３で、ＬＳＩ内部情報バッファ２３内に未だ読み出していない情報があるか確認する。ＬＳＩ内部情報バッファ２３内には４組の情報があるので、４本読み出すまでは未だ読み出していない情報があることより、ステップ１２０４に移行する。４本読み出した後は未だ読み出していない情報がないことより、ステップ１２０５に移行する。【００３３】
ステップ１２０４では内部情報バッファ２３から１組の情報を読み出し、ステップ１２０６に移行する。ステップ１２０６で、読み出したＬＳＩ内部情報を信号名情報、信号状態情報、Ｔ（実時間情報）に分離し、ステップ１２０７に移行する。例えば“１００，１０，５００”の場合、信号名情報が“１００”、信号状態情報が“１０”、Ｔが“５００”になる。ステップ１２０７で、分離した信号名情報がＰＩＮに一致しているか確認する。読み出す情報は“１００，１０，５００”、“１０１，１０，１４００”、“１００，０１，１６００”、“１０１，０１，１９００”の順番で４組あるが、ここで“１００，１０，５００”、“１００，０１，１６００”の読み出し時は信号名情報がＰＩＮに設定されている“１００”に一致していることよりステップ１２０８に移行する。“１０１，１０，１４００”、“１０１，０１，１９００”の読み出し時は信号名情報がＰＩＮに設定されている“１００”と不一致であることよりステップ１２０２に移行する。ステップ１２０８で、信号状態情報から、信号遷移前の状態Ｂと信号遷移後の状態Ａとを設定する。信号状態情報が“１０”の場合はＢを“Ｈ”、Ａを“Ｌ”、信号状態情報が“０１”の場合はＢを“Ｌ”、Ａを“Ｈ”に設定し、ステップ１２０９に移行する。ステップ１２０９で、ＬＳＩ内部情報を再現する。具体的には、“１００，１０，５００”の読み出し時、Ｔｂｅｆは０であることより、信号１００の波形をＴｂｅｆの示す０ｎｓからＴの示す５００ｎｓまでＢの示す“Ｈ”を表示し、“１００，０１，１６００”の読み出し時、Ｔｂｅｆは５００であることより、信号１００の波形をＴｂｅｆの示す５００ｎｓからＴの示す１６００ｎｓまでＢの示す“Ｌ”を表示して、ステップ１２１０に移行する。ステップ１２１０で、ＴをＴｂｅｆに、ＡをＡｂｅｆにそれぞれ書込み、ステップ１２０２に移行する。【００３４】
ステップ１２０５では、波形再現終了時の処理を行う。ここに分岐する場合Ｔｂｅｆは１６００になっていることより、ステップ１２１１に移行する。ステップ１２１１で、未表示部分の波形の表示を行う。すなわち、Ｔｂｅｆの示す１６００ｎｓから、測定終了時までＡｂｅｆの示す“Ｈ”を表示し、再現を終了する。【００３５】
以上のフローより、信号１００の波形は測定開始から５００ｎｓまで“Ｈ”、５００ｎｓから１６００ｎｓまで“Ｌ”、１６００ｎｓ以降は“Ｈ”が表示され、図５で測定した信号１００の波形が再現される。【００３６】
次に、波形の再現対象の信号名を“１０１”とした場合、同様のフローで、測定開始から１４００ｎｓまで“Ｈ”、１４００ｎｓから１９００ｎｓまで“Ｌ”、１９００ｎｓ以降は“Ｈ”が表示される。【００３７】
また、波形の再現対象の信号名を“１０２”〜“１０７”のいずれかにした場合、同様のフローで、データの読み出し終了まで再現対象の信号と一致する情報はないため、ステップ１２０５でＴｂｅｆが初期値の“０”のままであることより、波形を表示せずにフローが終了する。【００３８】
《第２の実施形態》
図１０に、本発明の第２の実施形態における半導体装置の構成を示すブロック図を示す。第１の実施形態における半導体装置は、信号遷移の検出、また同期のたびにトレース情報１０を外部に出力していたが、第２の実施形態では、生成されたトレース情報はトレース情報生成部２００内の保持バッファ２０３に蓄積され、時間情報生成部２１０が出力する同期信号５１に従い、保持バッファ２０３内の情報は出力バッファ２０４に移動し、出力バッファ２０４からトレース情報１０に出力される。【００３９】
第２の実施形態の場合、デバッガ２は、入力したトレース情報１０に対応する同期信号の回数が把握できるため、同期信号を示すトレース情報の出力を省略でき、出力する情報のデータ量を削減できる。またトレース情報は、同じ信号が同一の測定サイクル内で複数回状態遷移を起こしたときはトレース情報をマージすることによって信号名を省略できるため、出力する情報のデータ量を削減できる。【００４０】
本発明の第２の実施形態において、内部信号の状態遷移を検出して、図１１に示すアルゴリズムによってトレース情報１０を生成する過程を、図１２に示す波形図を用いて説明する。【００４１】
図１２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１８００ｎｓでＨに遷移する信号である。また、内部信号１０１は初期状態がＨで、測定開始から１６００ｎｓでＬに遷移し、２１００ｎｓでＨに遷移する信号である。内部信号１０２〜１０７は、測定時に状態遷移を起こさないものとする。また、ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。【００４２】
測定開始時、ステップ１３０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、１６００ｎｓ、１８００ｎｓ、２１００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１８００ｎｓの時は信号１００、１６００ｎｓと２１００ｎｓの時は信号１０１の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、１６００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１８００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、２１００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。２１００ｎｓの時は、１６００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、１６００ｎｓ、１８００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１３０５に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。２１００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１３０４に移行する。【００４３】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１３０５に移行する。ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。【００４４】
ステップ１０１６では、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。【００４５】
さて、上記のようにトレース情報生成部２００内の保持バッファ２０３にトレース情報が蓄積され、同期信号５１に従い出力バッファ２０４からトレース情報１０が外部に出力される場合、図１３（ａ）のように一度の出力期間におけるトレース情報１０のデータ量が多く、出力バッファ２０４に蓄積された情報を全て出力し切る前に次の同期信号５１が発生したときには、保持バッファ２０３のデータで出力バッファ２０４を上書きするため、その時に出力バッファ２０４に残っていたデータが失われて、デバッガ２が取得するトレース情報１０が欠落するおそれがある。【００４６】
そこで、このようなトレース情報の欠落を回避するための手段を図１３（ｂ）〜図１３（ｄ）に示す。まず図１３（ｂ）によれば、同期タイミングを一時的に延期する。これにより、トレース情報の出力中に次の同期信号が発生しないようにする。図１３（ｃ）によれば、トレース対象イベントを制限し、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。図１３（ｄ）によれば、時間情報を含まないトレース情報を取得するイベントと、時間情報を含むトレース情報を取得するイベントとを分け、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。【００４７】
次に、図１３（ｂ）〜図１３（ｄ）に示したトレース情報欠落回避手段の具体例を、第３〜第５の実施形態として説明する。【００４８】
《第３の実施形態》
図１４に、本発明の第３の実施形態における半導体装置の構成を示すブロック図を示す。第３の実施形態では、時間情報生成部２１０に同期発生周期設定部２１３を設け、図１３（ｂ）に示すように同期を行う周期を拡大することで、トレース情報１０の出力中に次の同期信号５１が発生しないようにする。【００４９】
また、トレース情報のデータ量５２をもとに、予め設定していた値に同期周期を変更することができる。例えば、同期周期ＣＹＣの初期値が８００ｎｓの場合、ＮＣＹＣに予め１２００ｎｓを設定しておき、８００ｎｓの間に出力しきれないトレース情報が蓄積された場合に同期周期ＣＹＣを１２００ｎｓに変更する。同期を行う周期を変更したら、同期周期の変更を示す情報５３を、次の同期信号５１の発生時にトレース情報１０と共に出力する。【００５０】
本実施形態によれば、データ量から自動に同期周期の変更を行うことができるため、データの欠落を確認した場合に同期周期の再設定を行った後に測定を再実行する必要がなくなる。【００５１】
本発明の第３の実施形態において、内部信号の状態遷移を検出して、図１５に示すアルゴリズムによってトレース情報１０を生成する過程を、図１６に示す波形図を用いて説明する。【００５２】
図１６において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、同期周期変更後に同期を行うサイクルＮＣＹＣには“１２”、１回の出力サイクルで出力可能なデータ量ＬＩＭに“４８”、同期周期変更後に１回の出力サイクルで出力可能なデータ量ＮＬＩＭに“７２”が初期値で設定されている。ＬＩＭ、ＮＬＩＭの単位はビットであり、１組のトレース情報のデータ量は１４ビット、マージされる時に追加されるデータ量は１０ビットとする。【００５３】
測定開始時、ステップ１４０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。具体的には、５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１３００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，２”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１４０２に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。具体的には、１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１４０２に移行する。【００５４】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１４０２に移行する。ステップ１４０２で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１５００ｎｓの時、データ量は５２となり、ＬＩＭ以上の値になるため、ステップ１４０３に移行し、１５００ｎｓ以外の時はデータ量はＬＩＭの値を下回るためステップ１３０５に移行する。ステップ１４０３で、同期周期の変更情報をトレース情報生成部２００に出力し、それを受けて同期周期変更を示す情報“０，０，０”を保持バッファ２０３に格納し、時間情報生成部２１０は同期周期ＣＹＣをＮＣＹＣの値に、出力可能データ量ＬＩＭをＮＬＩＭの値に更新し、ステップ１３０５に移行する。【００５５】
ステップ１３０５では、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。【００５６】
ステップ１０１６では、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７、２０００ｎｓの時、ＣＮＴがＣＹＣに設定した１２から１を引いた１１であることより、同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと２０００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと２１００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと２１００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。【００５７】
《第４の実施形態》
図１７に、本発明の第４の実施形態における半導体装置の構成を示すブロック図を示す。第４の実施形態では、信号特定情報生成部２２０にイベント選択制御部２２３を設け、図１３（ｃ）に示すようにトレース情報を取得するイベントを限定し、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。これは、例えば内部信号１００〜１０３の信号遷移の時間関係の調査が必要であり、内部信号１０４〜１０７の情報取得の優先度が低い場合などに適用する。【００５８】
また、トレース情報のデータ量５３をもとに、トレース情報を取得するイベントの限定を自動で行うことができる。各イベントには、トレース情報取得の優先度が設定されており、優先度が低いイベントの情報取得をマスクする。優先度は、制限対象イベント設定部２２４の設定で、任意に変更することができる。【００５９】
本発明の第４の実施形態において、内部信号の状態遷移を検出して、図１８に示すアルゴリズムによってトレース情報１０を生成する過程を、図１９に示す波形図を用いて説明する。【００６０】
図１９において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、信号マスクを開始するトレース情報のデータ量ＲＬＩＭを“２４”に設定する。ＲＬＩＭの単位はビットである。信号マスクの優先度は、信号１０２を高く、信号１００、信号１０１を低く設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加されるデータ量は１０ビットとする。【００６１】
測定開始時、ステップ１５０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１５０２に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１５０２に移行する。ステップ１５０２で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があるが、１５００ｎｓの時は信号１０２がマスク指定されているため、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、２２００ｎｓの時にトレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がない、あるいはマスク指定されているためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。具体的には、５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１３００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１５０３に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１５０３に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１５０３に移行する。【００６２】
ステップ１５０３で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＲＬＩＭ以上の値になるため、ステップ１５０４に移行し、それ以外の時はステップ１３０５に移行する。ステップ１５０４で、マスク優先度の高い信号１０２をマスク指定し、ステップ１３０５に移行する。【００６３】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。【００６４】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。【００６５】
《第５の実施形態》
図２０に、本発明の第５の実施形態における半導体装置の構成を示すブロック図を示す。第５の実施形態では、トレース情報生成部２００に時間情報取得イベント選択制御部２０１を設け、図１３（ｄ）に示すように時間情報を含まないトレース情報を取得するイベントと時間情報を含むトレース情報を取得するイベントとを分け、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。これは、例えば内部信号１００〜１０７のそれぞれ立ち下がる時間の関係を調査し、それぞれの信号の立ち上がりはイベントの発生についての情報のみ取得し、時間の情報まで取得する必要がない場合などに適用する。【００６６】
また、トレース情報のデータ量５２をもとに、時間情報を含むトレース情報を取得するイベントの限定を自動で行うことができる。各イベントには、トレース情報取得の優先度が設定されており、優先度が低いイベントから順に情報取得の際に時間情報を取得しないようにする。優先度は、制限対象イベント設定部２０２の設定で、任意に変更することができる。【００６７】
本発明の第５の実施形態において、内部信号の状態遷移を検出して、図２１に示すアルゴリズムによってトレース情報１０を生成する過程を、図２２に示す波形図を用いて説明する。【００６８】
図２２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、時間情報マスクを開始するトレース情報のデータ量ＴＬＩＭを“２４”に設定する。ＴＬＩＭの単位はビットである。時間情報マスクの優先度は、信号１００〜１０２のいずれも、立上りを高く、立下りを低く設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加される信号状態情報３２のデータ量は２ビットとする。【００６９】
測定開始時、ステップ１６０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１６０２に移行する。ステップ１６０２で、信号が時間情報マスク指定されている信号か確認する。１３００ｎｓの時は、信号１００〜１０２の立上りが時間情報マスク指定されていることより、時間情報を含まないトレース情報を生成するためにステップ１６０３に移行し、それ以外の時は時間情報を含むトレース情報を生成するためにステップ１００８に移行する。ステップ１６０３で、時間情報を含まないトレース情報を生成する。具体的には、１３００ｎｓの時、内部信号１０１の信号名情報“２”、信号状態情報“１”を用いてトレース情報として“２，１”をパケット化し、ステップ１３０２に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１６０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１６０５に移行する。ステップ１６０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報から信号名情報を除いた情報を追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１”の信号状態情報に該当する“１”を追加して、ステップ１６０５に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１６０５に移行する。【００７０】
ステップ１６０５で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＴＬＩＭ以上の値になるため、ステップ１６０６に移行し、それ以外の時はステップ１３０５に移行する。ステップ１６０６で、時間情報マスク優先度の高いイベントである信号１００〜１０２の立上りをマスク指定し、ステップ１３０５に移行する。【００７１】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。【００７２】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。【００７３】
《第６の実施形態》
図２３に、本発明の第６の実施形態における半導体装置の構成を示すブロック図を示す。第６の実施形態では、第３の実施形態に示した同期発生周期設定部２１３、第４の実施形態に示したイベント選択制御部２２３、第５の実施形態に示した時間情報取得イベント選択制御部２０１を全て設け、トレース情報欠落回避手段選択部２３０を用い、上記３通りの手段のどれを有効にするかを選択する。これにより、トレース情報の欠落を回避する手段を任意に選択することができる。【００７４】
また、保持バッファ２０３内のトレース情報のデータ量５２をもとに、トレース情報の欠落を回避する手段の有効／無効の切替を自動で行うことができる。各トレース情報欠落回避手段２０１，２１３，２２３には優先度が設定されており、情報の出力中に次の同期信号が発生することによるデータの欠落が発生するおそれがあるときに、各手段のＯＮ／ＯＦＦ切替え信号５４〜５６を用いて優先度の高い手段を有効にする。優先度は、トレース情報欠落回避手段選択部２３０の設定で、任意に変更することができる。【００７５】
本発明の第６の実施形態において、内部信号の状態遷移を検出して、図２４に示すアルゴリズムによってトレース情報１０を生成する過程を説明する。波形図は、時間情報をマスクする方法の優先度を最高にすると図２２の波形と同じ動作となるので、図２２を用いて説明する。【００７６】
図２２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、トレース情報欠落回避手段２０１，２１３，２２３を有効にするトレース情報のデータ量ＡＬＩＭを“２４”に設定する。ＡＬＩＭの単位はビットである。トレース情報欠落回避手段選択部２３０で、時間情報をマスクする方法の優先度を高く、他の方法の優先度を低くする。時間情報マスクの実行時は、信号１００〜１０２の立下りの時間情報をマスクするように設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加される信号状態情報のデータ量は２ビットとする。【００７７】
測定開始時、ステップ１７０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１５０２に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１５０２に移行する。ステップ１５０２で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があり、いずれの時も信号がマスク指定されていないことからトレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１６０２に移行する。ステップ１６０２で、信号が時間情報マスク指定されている信号か確認する。１３００ｎｓの時は、信号１００〜１０２の立上りが時間情報マスク指定されていることより、時間情報を含まないトレース情報を生成するためにステップ１６０３に移行し、それ以外の時は時間情報を含むトレース情報を生成するためにステップ１００８に移行する。ステップ１６０３で、時間情報を含まないトレース情報を生成する。１３００ｎｓの時、内部信号１０１の信号名情報“２”、信号状態情報“１”を用いてトレース情報として“２，１”をパケット化し、ステップ１３０２に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１６０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１７０２に移行する。ステップ１６０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報から信号名情報を除いた情報を追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１”の信号状態情報に該当する“１”を追加して、ステップ１７０２に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１７０２に移行する。【００７８】
ステップ１７０２で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＡＬＩＭ以上の値になるため、ステップ１７０３に移行し、それ以外の時はステップ１３０５に移行する。ステップ１７０３で、トレース情報欠落回避手段選択部２３０に設定した優先度を確認する。同期周期を変更する方法の優先度が最高である場合、同期周期を変更する処理を行うためにステップ１７０４に移行し、同期周期を変更する方法以外の方法の優先度が最高である場合、ステップ１７０５に移行する。ステップ１７０４で、同期発生周期設定部ＯＮ／ＯＦＦ切替え信号５４によって同期発生周期設定部２１３が動作し、同期周期の変更情報をトレース情報生成部２００に出力し、それを受けて同期周期変更を示す情報“０，０，０”を保持バッファ２０３に格納し、時間情報生成部２１０は同期周期ＣＹＣをＮＣＹＣの値に更新し、ステップ１３０５に移行する。ステップ１７０５で、トレース情報欠落回避手段選択部２３０に設定した優先度を確認する。信号の情報取得をマスクする方法の優先度が最高である場合、信号のマスク指定を行うためにステップ１７０６に移行し、信号の情報取得をマスクする方法以外の方法の優先度が最高である場合、時間情報をマスクする方法の優先度が最高であることを意味するので、時間情報マスクの指定を行うためにステップ１７０７に移行する。ステップ１７０６で、イベント選択制御部ＯＮ／ＯＦＦ切替え信号５５によってイベント選択制御部２２３が動作し、マスク設定されている信号をマスク指定し、ステップ１３０５に移行する。ステップ１７０７で、時間情報取得イベント選択制御部ＯＮ／ＯＦＦ切替え信号５６によって時間情報取得イベント選択制御部２０１が動作し時間情報マスクの実行時にマスクするように設定されている信号を時間情報マスク指定する。時間情報マスクの実行時にマスクするように設定されている、信号１００〜１０２の立下りの時間情報をマスク指定し、ステップ１３０５に移行する。【００７９】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。【００８０】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【産業上の利用の可能性】
【００８１】
以上説明してきたとおり、本発明に係る半導体装置及び開発支援装置は、ＬＳＩ内部信号の動作を外部から解析、評価する手段として有用である。
【図１】
2009031254.tif 000003
【図２】
2009031254.tif 000004
【図３】
2009031254.tif 000005
【図４】
2009031254.tif 000006
【図５】
2009031254.tif 000007
【図６】
2009031254.tif 000008
【図７】
2009031254.tif 000009
【図８】
2009031254.tif 000010
【図９】
2009031254.tif 000011
【図１０】
2009031254.tif 000012
【図１１】
2009031254.tif 000013
【図１２】
2009031254.tif 000014
【図１３】
2009031254.tif 000015
【図１４】
2009031254.tif 000016
【図１５】
2009031254.tif 000017
【図１６】
2009031254.tif 000018
【図１７】
2009031254.tif 000019
【図１８】
2009031254.tif 000020
【図１９】
2009031254.tif 000021
【図２０】
2009031254.tif 000022
【図２１】
2009031254.tif 000023
【図２２】
2009031254.tif 000024
【図２３】
2009031254.tif 000025
【図２４】
2009031254.tif 000026
【手続補正書】
【提出日】平成21年2月18日(2009.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内部信号の遷移情報から信号名の情報と信号状態の情報とを取得する手段と、
前記信号名の情報と前記信号状態の情報とを符号化する手段と、
前記符号化の結果をトレース情報として出力する手段とを備えた半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記半導体装置の内部の時間を表す時間情報を生成する手段と、
前記時間情報を符号化する手段と、
前記時間情報の符号化の結果を前記トレース情報の一部として付加する手段とを更に備えた半導体装置。
【請求項３】
請求項１記載の半導体装置において、
同期信号のタイミングを表す第１の時間情報を生成する手段と、
前記第１の時間情報に対する前記半導体装置の内部の時間を表す第２の時間情報を生成する手段と、
前記第１及び第２の時間情報を符号化する手段と、
前記第１及び第２の時間情報の符号化の結果を前記トレース情報の一部として付加する手段とを更に備えた半導体装置。
【請求項４】
請求項３記載の半導体装置から前記トレース情報を受け取る開発支援装置であって、
前記トレース情報を復号化して、前記信号名の情報と前記信号状態の情報と前記第１及び第２の時間情報とを得る手段と、
前記第１及び第２の時間情報から実時間の情報を計算により求める手段と、
前記信号名の情報と前記信号状態の情報と前記実時間の情報とを用いて前記半導体装置の内部信号の波形の情報を再現する手段とを備えた開発支援装置。
【請求項５】
請求項２記載の半導体装置において、
前記出力すべきトレース情報を蓄積する手段と、
前記蓄積されたトレース情報を同期信号のタイミングに同期して出力する手段とを更に備え、
同じ内部信号が同一の測定サイクル内で複数回状態遷移を起こしたときは、各々のトレース情報をマージすることによって、後続トレース情報中の信号名に関する重複情報を省略する半導体装置。
【請求項６】
請求項５記載の半導体装置において、
前記同期信号のタイミングを変更する手段と、
前記タイミングの変更を示す情報を前記トレース情報の一部として付加する手段とを更に備えた半導体装置。
【請求項７】
請求項５記載の半導体装置において、
前記信号名の情報と前記信号状態の情報とを取得するイベントを制限する手段を更に備えた半導体装置。
【請求項８】
請求項５記載の半導体装置において、
前記時間情報を含まないトレース情報を部分的に出力するように制限を加える手段を更に備えた半導体装置。
【請求項９】
請求項５記載の半導体装置において、
前記同期信号のタイミングを変更する第１の手段と、
前記信号名の情報と前記信号状態の情報とを取得するイベントを制限する第２の手段と、
前記時間情報を含まないトレース情報を部分的に出力するように制限を加える第３の手段と、
前記第１、第２及び第３の手段のうちいずれかを選択して有効にする第４の手段とを更に備えた半導体装置。
【請求項１０】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記同期信号のタイミングを自動的に変更する手段を更に備えた半導体装置。
【請求項１１】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記信号名の情報と前記信号状態の情報とを取得するイベントを自動的に制限する手段を更に備えた半導体装置。
【請求項１２】
請求項５記載の半導体装置において、
前記トレース情報の蓄積データ量をもとにして前記時間情報を含まないトレース情報を部分的に出力するように自動的に制限を加える手段を更に備えた半導体装置。
【請求項１３】
請求項９記載の半導体装置において、
前記第４の手段は、前記トレース情報の蓄積データ量をもとにして、前記同期信号のタイミングを自動的に変更するように前記第１の手段を動作させ、前記信号名の情報と前記信号状態の情報とを取得するイベントを自動的に制限するように前記第２の手段を動作させ、又は、前記時間情報を含まないトレース情報を部分的に出力すべく自動的に制限を加えるように前記第３の手段を動作させる半導体装置。
【請求項１４】
請求項１１記載の半導体装置において、
前記信号名の情報と前記信号状態の情報とを取得しないイベントを予め設定した優先順位に従って決定する手段を更に備えた半導体装置。
【請求項１５】
請求項１２記載の半導体装置において、
前記時間情報を含まないトレース情報を出力するイベントを予め設定した優先順位に従って決定する手段を更に備えた半導体装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ内部信号の状態を外部でトレース可能な半導体装置及びその半導体装置を用いた開発支援装置に関するものである。
【背景技術】
【０００２】
ＬＳＩ内部の動作をリアルタイムに解析するためには。ＬＳＩの内部信号をＬＳＩ外部でトレースする必要がある。そのために、従来はトレース対象の信号をＬＳＩ外部に出力し、ＬＳＩ外部でロジックアナライザなどを用いて解析していた。
【０００３】
ところが、トレース対象のＬＳＩ内部信号の本数が増加すると、その信号の本数に比例してトレース用の外部端子数が必要となり、コストが大となる。
【０００４】
そこで、通常機能の外部端子とトレース用の外部端子とを兼用化することが考えられる。ところが、評価時に通常機能が使えないことにより、全機能の評価が困難である。
【０００５】
他方、複数のトレース対象のＬＳＩ内部信号について、内部の選択回路を制御して選択した信号をＬＳＩ外部に出力する技術も知られている（特許文献１参照）。
【特許文献１】特開２００２−２４２０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術ではトレース用の外部端子数以上のＬＳＩ内部信号を同時にトレースすることができない。つまり、同時にトレースする対象のＬＳＩ内部信号の本数が増えた場合のトレース技術について考慮されていない。そのため、複数のＬＳＩ内部信号を並列にトレースする際に、信号の本数が増えた場合にトレースが不可能となることが予想される。
【０００７】
このような問題点に鑑み、本発明は、複数のＬＳＩ内部信号の状態を１本の外部端子で同時にトレース可能にする手段を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に対しては、本発明によって、ＬＳＩ内部信号を直接ＬＳＩ外部に出力するのではなく、トレース対象のＬＳＩ内部信号の状態が変化した情報から信号名、信号の状態を取得し、信号の状態が変化した時間の情報と合わせて符号化してＬＳＩ外部に出力し、ＬＳＩ外部で復号化して、ＬＳＩ内部情報を再現することにより解決する。
【発明の効果】
【０００９】
本発明では、複数のＬＳＩ内部信号の動作の有無を１本の外部端子から出力される情報より知ることが可能になり、トレース対象のＬＳＩ内部信号の本数がトレース用の外部端子の本数よりも多くなった場合についても並列にトレースすることができる。
【００１０】
また、同期を利用すれば、ＬＳＩ内部信号を外部でトレースするための情報量を維持したまま、データ量を削減することが可能になる。更に、ＬＳＩ内部情報取得時に発生する恐れのある情報の欠落を回避する対策を講じれば、必要な情報を確実に取得することが可能になる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態を図面に基づいて詳細に説明する。
【００１２】
《第１の実施形態》
図１に、本発明における半導体装置と開発支援装置との全体の概略構成を示す。ここでは、半導体装置（ＬＳＩ）１中の機能ブロック１１〜１４と機能ブロック１５との間の内部信号１００〜１０７を開発支援装置（デバッガ）２にてトレースするものとする。ＬＳＩ内部情報取得部１７は、単一の出力端子１６を介して、トレース対象の信号が状態遷移を起こしたことを示す情報をトレース情報１０としてデバッガ２へ供給する。デバッガ２は、トレース情報復号部２１とＬＳＩ内部情報再現部２２とを備える。
【００１３】
図２及び図３に、本発明の第１の実施形態における半導体装置及び開発支援装置の構成をそれぞれ示す。
【００１４】
図２に示すＬＳＩ１において、信号特定情報生成部２２０は、信号名情報生成部２２１と信号状態情報生成部２２２とを持ち、機能ブロック１１〜１４と機能ブロック１５との間の内部信号１００〜１０７をトレースし、トレース対象の信号が状態遷移を起こしたときに検出して、信号名情報３１と信号状態情報３２とを生成する。時間情報生成部２１０は、同期信号生成部２１１と内部カウンタ２１２とを持ち、同期信号生成部２１１はＬＳＩ１と外部に接続するデバッガ２とが同期するように動作し、同期時に同期信号を生成する。また、同期信号とカウンタ２１２の値とを時間情報３３とする。トレース情報生成部２００は、信号名情報３１と信号状態情報３２とを検出したら、その時点における時間情報３３を用いて、各情報３１〜３３をパケット化したトレース情報１０を生成して出力する。
【００１５】
一方、図３に示すデバッガ２は、トレース情報１０を検出したら、トレース情報復号部２１で信号名情報４１と信号状態情報４２と時間情報４３とに分離する。時間情報復号部２４は、時間情報４３を同期情報４４とＬＳＩ内部時間情報４５とに分離し、実時間変換部２５は同期の回数をカウントして、同期回数とＬＳＩ内部時間情報４５とから実時間情報４６に変換する。信号名情報４１、信号状態情報４２、実時間情報４６は、ＬＳＩ内部情報バッファ２３に格納される。波形再現部２６は、ＬＳＩ内部情報バッファ２３から読み出した情報４１，４２，４６をもとにＬＳＩ内部情報を再現する。
【００１６】
ＬＳＩ１にて内部信号の状態遷移を検出し、図４に示すアルゴリズムによってトレース情報１０を生成する過程を、図５に示す波形図を用いて説明する。
【００１７】
図５において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１６００ｎｓでＨに遷移する信号である。内部信号１０１は初期状態がＨで、測定開始から１４００ｎｓでＬに遷移し、１９００ｎｓでＨに遷移する信号である。内部信号１０２〜１０７は、測定時に状態遷移を起こさないものとする。また、１組のトレース情報を出力するために要する時間は２５０ｎｓとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２とが同期を行う周期ＣＹＣは“８”である。
【００１８】
図４によれば、測定開始時、ステップ１００１で、内部カウンタの値ＣＮＴ、同期信号ＳＹＮを“０”に設定し、ステップ１００２に移行する。ステップ１００２で測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００のバッファが空であるか判定し、空のときはフローを終了し、バッファが空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、１４００ｎｓ、１６００ｎｓ、１９００ｎｓの時に状態遷移した信号があることから、トレース情報１０を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＳＹＮ、ＣＮＴから構成される時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，０，５”、１４００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０，６”、１６００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，１，０”、１９００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，０，３”をパケット化し、ステップ１００９に移行する。ステップ１００９で、パケット化したトレース情報をトレース情報生成部２００内のバッファに格納し、ステップ１０１２に移行する。
【００１９】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１０１０に移行する。ステップ１０１０で、ＳＹＮの状態を確認する。８００ｎｓの時、ＳＹＮが“１”であることから同期信号が発生して信号の状態遷移が発生していない場合のトレース情報を生成するためステップ１０１１に、その他の場合はＳＹＮが“０”であることからステップ１０１２に移行する。ステップ１０１１で、８００ｎｓのとき、同期信号が発生して信号の状態遷移が発生していない場合のトレース情報“０，０，１，０”を生成し、パケット化して、ステップ１００９に移行する。
【００２０】
ステップ１０１２で、トレース情報生成部２００内のバッファに情報が残っている時はバッファから情報を出力するためにステップ１０１３に移行し、バッファが空の時はステップ１０１４に移行する。ステップ１０１３で、バッファ内の情報を出力端子１６からトレース情報１０として出力し、ステップ１０１５に移行する。ステップ１０１５で、出力したデータをバッファから削除し、未出力のデータを出力するためにバッファ内でシフトしてステップ１０１６に移行する。ステップ１０１４で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにしてステップ１０１６に移行する。
【００２１】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１０１８に、不一致の場合はステップ１０１９に移行する。ステップ１０１８で、８００ｎｓと１６００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリアして、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【００２２】
次に、デバッガ２が図６に示すアルゴリズムによってトレース情報１０を復号する過程を、図７に示す波形図を用いて説明する。
【００２３】
測定開始前に、ＬＳＩ１とデバッガ２とが同期を行う周期ＳＹＮＣＹＣ、ＬＳＩ内部カウンタ２１２のサイクルＣＬＫＣＹＣを設定する。図７において、ＬＳＩ１の動作に合わせて、ＳＹＮＣＹＣを８００ｎｓ、ＣＬＫＣＹＣを１００ｎｓに設定する。また、トレース情報１０の入力期間は２５０ｎｓとする。
【００２４】
測定開始時、ステップ１１０１で、同期信号のカウンタＳＹＮＣＮＴ、実時間情報Ｔを“０”に設定し、ステップ１１０２に移行する。ステップ１１０２で測定終了の確認を行い、測定を終了するときはフローを終了し、測定を終了しないときはステップ１１０３に移行する。ステップ１１０３で、トレース情報１０の入力有無を確認し、トレース情報１０が入力されている時はステップ１１０４に、トレース情報１０が入力されていない時はステップ１１０２に移行する。ステップ１１０４で、入力したトレース情報１０をトレース情報復号部２１内のバッファに格納し、ステップ１１０５に移行する。ステップ１１０５で、１組分のトレース情報１０がバッファに格納されたか確認する。７５０ｎｓ、１０５０ｎｓ、１６５０ｎｓ、１９００ｎｓ、２１５０ｎｓの時に１組分のトレース情報１０がバッファに格納されるのでステップ１１０６に移行し、それ以外の時はステップ１１０２に移行する。ステップ１１０６で、バッファに格納したトレース情報１０を復号する。具体的には、信号名に該当する情報を信号名と対応させ、“１”は信号１００を示す“１００”、“２”は信号１０１を示す“１０１”、“０”は対応する信号がない“０００”に復号して信号名情報４１として出力し、信号状態に該当する情報を信号状態と対応させ、“０”はＨ−＞Ｌの信号遷移を示す“１０”、“１”はＬ−＞Ｈの信号遷移を示す“０１”に復号して信号状態情報４２として出力し、時間情報に該当する情報は同期情報（ＳＹＮ）４４とＬＳＩ内部時間情報（ＣＮＴ）４５とに分離し、ステップ１１０７に移行する。
【００２５】
ステップ１１０７で、トレース情報１０から得られたＳＹＮの値を確認する。１０５０ｎｓ、１９００ｎｓの時はＳＹＮが“１”であることより同期信号のカウンタＳＹＮＣＮＴを加算させるためにステップ１１０８に移行し、それ以外の場合はＳＹＮが“０”であることよりステップ１１０９に移行する。ステップ１１０８で、ＳＹＮＣＮＴに１を加算し、ステップ１１０９に移行する。
【００２６】
ステップ１１０９で、信号名情報の示す信号が存在する信号か確認する。ここで、１０５０ｎｓの時は信号名情報が“０００”になっており、信号名が割り当てられていない情報であるため、ＬＳＩの内部信号の情報ではなく同期発生を示すトレース情報であると判別し、ＬＳＩ内部情報を生成せず、ステップ１１０２に移行する。７５０ｎｓ、１６５０ｎｓ、１９００ｎｓ、２１５０ｎｓの時は、ＬＳＩ内部情報を生成するためにステップ１１１０に移行する。
【００２７】
ステップ１１１０で、同期信号のカウンタＳＹＮＣＮＴ、同期を行う周期ＳＹＮＣＹＣ（８００ｎｓ）、ＬＳＩ内部カウンタ２１２のサイクルＣＬＫＣＹＣ（１００ｎｓ）、トレース情報から得られたＣＮＴより信号遷移の発生した実時間情報Ｔを計算する。７５０ｎｓの時は、復号したＣＮＴが“５”、ＳＹＮＣＮＴが“０”であることより、Ｔは５００（ｎｓ）となる。１６５０ｎｓの時は、復号したＣＮＴが“６”、ＳＹＮＣＮＴが“１”であることより、Ｔは１４００（ｎｓ）となる。１９００ｎｓの時は、復号したＣＮＴが“０”、ＳＹＮＣＮＴが“２”であることより、Ｔは１６００（ｎｓ）となる。２１５０ｎｓの時は、復号したＣＮＴが“３”、ＳＹＮＣＮＴが“２”であることより、Ｔは１９００（ｎｓ）となる。生成したＴを実時間情報４６として出力し、ステップ１１１１に移行する。ステップ１１１１で、復号した信号名情報４１、信号状態情報４２、実時間情報４６をＬＳＩ内部情報バッファ２３に格納する。７５０ｎｓの時は“１００，１０，５００”、１６５０ｎｓの時は“１０１，１０，１４００”、１９００ｎｓの時は“１００，０１，１６００”、２１５０ｎｓの時は“１０１，０１，１９００”をＬＳＩ内部情報バッファ２３に格納する。
【００２８】
次に、ＬＳＩ内部の信号波形の再現について、図８に示すアルゴリズムによって情報を復号する過程を、図９に示す波形図を用いて説明する。
【００２９】
まず、波形の再現対象の信号名を“１００”に指定する。指定された信号名“１００”がＰＩＮに設定される。
【００３０】
再現開始時、ステップ１２０１でＴｂｅｆを０（ｎｓ）、Ａｂｅｆを“０”に設定し、ステップ１２０２に移行する。ステップ１２０２で再現終了の確認を行い、再現を終了するときはフローを終了し、測定を終了しないときはステップ１２０３に移行する。ステップ１２０３で、ＬＳＩ内部情報バッファ２３内に未だ読み出していない情報があるか確認する。ＬＳＩ内部情報バッファ２３内には４組の情報があるので、４本読み出すまでは未だ読み出していない情報があることより、ステップ１２０４に移行する。４本読み出した後は未だ読み出していない情報がないことより、ステップ１２０５に移行する。
【００３１】
ステップ１２０４では内部情報バッファ２３から１組の情報を読み出し、ステップ１２０６に移行する。ステップ１２０６で、読み出したＬＳＩ内部情報を信号名情報、信号状態情報、Ｔ（実時間情報）に分離し、ステップ１２０７に移行する。例えば“１００，１０，５００”の場合、信号名情報が“１００”、信号状態情報が“１０”、Ｔが“５００”になる。ステップ１２０７で、分離した信号名情報がＰＩＮに一致しているか確認する。読み出す情報は“１００，１０，５００”、“１０１，１０，１４００”、“１００，０１，１６００”、“１０１，０１，１９００”の順番で４組あるが、ここで“１００，１０，５００”、“１００，０１，１６００”の読み出し時は信号名情報がＰＩＮに設定されている“１００”に一致していることよりステップ１２０８に移行する。“１０１，１０，１４００”、“１０１，０１，１９００”の読み出し時は信号名情報がＰＩＮに設定されている“１００”と不一致であることよりステップ１２０２に移行する。ステップ１２０８で、信号状態情報から、信号遷移前の状態Ｂと信号遷移後の状態Ａとを設定する。信号状態情報が“１０”の場合はＢを“Ｈ”、Ａを“Ｌ”、信号状態情報が“０１”の場合はＢを“Ｌ”、Ａを“Ｈ”に設定し、ステップ１２０９に移行する。ステップ１２０９で、ＬＳＩ内部情報を再現する。具体的には、“１００，１０，５００”の読み出し時、Ｔｂｅｆは０であることより、信号１００の波形をＴｂｅｆの示す０ｎｓからＴの示す５００ｎｓまでＢの示す“Ｈ”を表示し、“１００，０１，１６００”の読み出し時、Ｔｂｅｆは５００であることより、信号１００の波形をＴｂｅｆの示す５００ｎｓからＴの示す１６００ｎｓまでＢの示す“Ｌ”を表示して、ステップ１２１０に移行する。ステップ１２１０で、ＴをＴｂｅｆに、ＡをＡｂｅｆにそれぞれ書込み、ステップ１２０２に移行する。
【００３２】
ステップ１２０５では、波形再現終了時の処理を行う。ここに分岐する場合Ｔｂｅｆは１６００になっていることより、ステップ１２１１に移行する。ステップ１２１１で、未表示部分の波形の表示を行う。すなわち、Ｔｂｅｆの示す１６００ｎｓから、測定終了時までＡｂｅｆの示す“Ｈ”を表示し、再現を終了する。
【００３３】
以上のフローより、信号１００の波形は測定開始から５００ｎｓまで“Ｈ”、５００ｎｓから１６００ｎｓまで“Ｌ”、１６００ｎｓ以降は“Ｈ”が表示され、図５で測定した信号１００の波形が再現される。
【００３４】
次に、波形の再現対象の信号名を“１０１”とした場合、同様のフローで、測定開始から１４００ｎｓまで“Ｈ”、１４００ｎｓから１９００ｎｓまで“Ｌ”、１９００ｎｓ以降は“Ｈ”が表示される。
【００３５】
また、波形の再現対象の信号名を“１０２”〜“１０７”のいずれかにした場合、同様のフローで、データの読み出し終了まで再現対象の信号と一致する情報はないため、ステップ１２０５でＴｂｅｆが初期値の“０”のままであることより、波形を表示せずにフローが終了する。
【００３６】
《第２の実施形態》
図１０に、本発明の第２の実施形態における半導体装置の構成を示すブロック図を示す。第１の実施形態における半導体装置は、信号遷移の検出、また同期のたびにトレース情報１０を外部に出力していたが、第２の実施形態では、生成されたトレース情報はトレース情報生成部２００内の保持バッファ２０３に蓄積され、時間情報生成部２１０が出力する同期信号５１に従い、保持バッファ２０３内の情報は出力バッファ２０４に移動し、出力バッファ２０４からトレース情報１０に出力される。
【００３７】
第２の実施形態の場合、デバッガ２は、入力したトレース情報１０に対応する同期信号の回数が把握できるため、同期信号を示すトレース情報の出力を省略でき、出力する情報のデータ量を削減できる。またトレース情報は、同じ信号が同一の測定サイクル内で複数回状態遷移を起こしたときはトレース情報をマージすることによって信号名を省略できるため、出力する情報のデータ量を削減できる。
【００３８】
本発明の第２の実施形態において、内部信号の状態遷移を検出して、図１１に示すアルゴリズムによってトレース情報１０を生成する過程を、図１２に示す波形図を用いて説明する。
【００３９】
図１２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１８００ｎｓでＨに遷移する信号である。また、内部信号１０１は初期状態がＨで、測定開始から１６００ｎｓでＬに遷移し、２１００ｎｓでＨに遷移する信号である。内部信号１０２〜１０７は、測定時に状態遷移を起こさないものとする。また、ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。
【００４０】
測定開始時、ステップ１３０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、１６００ｎｓ、１８００ｎｓ、２１００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１８００ｎｓの時は信号１００、１６００ｎｓと２１００ｎｓの時は信号１０１の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１６００ｎｓの時は信号１００、１４００ｎｓと１９００ｎｓの時は信号１０１の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、１６００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１８００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、２１００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。２１００ｎｓの時は、１６００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、１６００ｎｓ、１８００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１３０５に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。２１００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１３０４に移行する。
【００４１】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１３０５に移行する。ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。
【００４２】
ステップ１０１６では、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【００４３】
さて、上記のようにトレース情報生成部２００内の保持バッファ２０３にトレース情報が蓄積され、同期信号５１に従い出力バッファ２０４からトレース情報１０が外部に出力される場合、図１３（ａ）のように一度の出力期間におけるトレース情報１０のデータ量が多く、出力バッファ２０４に蓄積された情報を全て出力し切る前に次の同期信号５１が発生したときには、保持バッファ２０３のデータで出力バッファ２０４を上書きするため、その時に出力バッファ２０４に残っていたデータが失われて、デバッガ２が取得するトレース情報１０が欠落するおそれがある。
【００４４】
そこで、このようなトレース情報の欠落を回避するための手段を図１３（ｂ）〜図１３（ｄ）に示す。まず図１３（ｂ）によれば、同期タイミングを一時的に延期する。これにより、トレース情報の出力中に次の同期信号が発生しないようにする。図１３（ｃ）によれば、トレース対象イベントを制限し、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。図１３（ｄ）によれば、時間情報を含まないトレース情報を取得するイベントと、時間情報を含むトレース情報を取得するイベントとを分け、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。
【００４５】
次に、図１３（ｂ）〜図１３（ｄ）に示したトレース情報欠落回避手段の具体例を、第３〜第５の実施形態として説明する。
【００４６】
《第３の実施形態》
図１４に、本発明の第３の実施形態における半導体装置の構成を示すブロック図を示す。第３の実施形態では、時間情報生成部２１０に同期発生周期設定部２１３を設け、図１３（ｂ）に示すように同期を行う周期を拡大することで、トレース情報１０の出力中に次の同期信号５１が発生しないようにする。
【００４７】
また、トレース情報のデータ量５２をもとに、予め設定していた値に同期周期を変更することができる。例えば、同期周期ＣＹＣの初期値が８００ｎｓの場合、ＮＣＹＣに予め１２００ｎｓを設定しておき、８００ｎｓの間に出力しきれないトレース情報が蓄積された場合に同期周期ＣＹＣを１２００ｎｓに変更する。同期を行う周期を変更したら、同期周期の変更を示す情報５３を、次の同期信号５１の発生時にトレース情報１０と共に出力する。
【００４８】
本実施形態によれば、データ量から自動に同期周期の変更を行うことができるため、データの欠落を確認した場合に同期周期の再設定を行った後に測定を再実行する必要がなくなる。
【００４９】
本発明の第３の実施形態において、内部信号の状態遷移を検出して、図１５に示すアルゴリズムによってトレース情報１０を生成する過程を、図１６に示す波形図を用いて説明する。
【００５０】
図１６において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、同期周期変更後に同期を行うサイクルＮＣＹＣには“１２”、１回の出力サイクルで出力可能なデータ量ＬＩＭに“４８”、同期周期変更後に１回の出力サイクルで出力可能なデータ量ＮＬＩＭに“７２”が初期値で設定されている。ＬＩＭ、ＮＬＩＭの単位はビットであり、１組のトレース情報のデータ量は１４ビット、マージされる時に追加されるデータ量は１０ビットとする。
【００５１】
測定開始時、ステップ１４０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。具体的には、５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１３００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，２”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１４０２に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。具体的には、１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１４０２に移行する。
【００５２】
ステップ１００６では、全ての信号の信号情報を“０”にし、ステップ１４０２に移行する。ステップ１４０２で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１５００ｎｓの時、データ量は５２となり、ＬＩＭ以上の値になるため、ステップ１４０３に移行し、１５００ｎｓ以外の時はデータ量はＬＩＭの値を下回るためステップ１３０５に移行する。ステップ１４０３で、同期周期の変更情報をトレース情報生成部２００に出力し、それを受けて同期周期変更を示す情報“０，０，０”を保持バッファ２０３に格納し、時間情報生成部２１０は同期周期ＣＹＣをＮＣＹＣの値に、出力可能データ量ＬＩＭをＮＬＩＭの値に更新し、ステップ１３０５に移行する。
【００５３】
ステップ１３０５では、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。
【００５４】
ステップ１０１６では、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７、２０００ｎｓの時、ＣＮＴがＣＹＣに設定した１２から１を引いた１１であることより、同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと２０００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと２１００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと２１００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【００５５】
《第４の実施形態》
図１７に、本発明の第４の実施形態における半導体装置の構成を示すブロック図を示す。第４の実施形態では、信号特定情報生成部２２０にイベント選択制御部２２３を設け、図１３（ｃ）に示すようにトレース情報を取得するイベントを限定し、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。これは、例えば内部信号１００〜１０３の信号遷移の時間関係の調査が必要であり、内部信号１０４〜１０７の情報取得の優先度が低い場合などに適用する。
【００５６】
また、トレース情報のデータ量５３をもとに、トレース情報を取得するイベントの限定を自動で行うことができる。各イベントには、トレース情報取得の優先度が設定されており、優先度が低いイベントの情報取得をマスクする。優先度は、制限対象イベント設定部２２４の設定で、任意に変更することができる。
【００５７】
本発明の第４の実施形態において、内部信号の状態遷移を検出して、図１８に示すアルゴリズムによってトレース情報１０を生成する過程を、図１９に示す波形図を用いて説明する。
【００５８】
図１９において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、信号マスクを開始するトレース情報のデータ量ＲＬＩＭを“２４”に設定する。ＲＬＩＭの単位はビットである。信号マスクの優先度は、信号１０２を高く、信号１００、信号１０１を低く設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加されるデータ量は１０ビットとする。
【００５９】
測定開始時、ステップ１５０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１５０２に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１５０２に移行する。ステップ１５０２で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があるが、１５００ｎｓの時は信号１０２がマスク指定されているため、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、２２００ｎｓの時にトレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がない、あるいはマスク指定されているためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１００８に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。具体的には、５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１３００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，１，５”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１３０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１５０３に移行する。ステップ１３０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報の信号状態情報、ＣＮＴを追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１，５”の信号状態情報、ＣＮＴに該当する“１，５”を追加して、ステップ１５０３に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１５０３に移行する。
【００６０】
ステップ１５０３で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＲＬＩＭ以上の値になるため、ステップ１５０４に移行し、それ以外の時はステップ１３０５に移行する。ステップ１５０４で、マスク優先度の高い信号１０２をマスク指定し、ステップ１３０５に移行する。
【００６１】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。
【００６２】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【００６３】
《第５の実施形態》
図２０に、本発明の第５の実施形態における半導体装置の構成を示すブロック図を示す。第５の実施形態では、トレース情報生成部２００に時間情報取得イベント選択制御部２０１を設け、図１３（ｄ）に示すように時間情報を含まないトレース情報を取得するイベントと時間情報を含むトレース情報を取得するイベントとを分け、出力する情報の量を少なくすることで、次の同期信号の発生までにトレース情報の出力が完了するようにする。これは、例えば内部信号１００〜１０７のそれぞれ立ち下がる時間の関係を調査し、それぞれの信号の立ち上がりはイベントの発生についての情報のみ取得し、時間の情報まで取得する必要がない場合などに適用する。
【００６４】
また、トレース情報のデータ量５２をもとに、時間情報を含むトレース情報を取得するイベントの限定を自動で行うことができる。各イベントには、トレース情報取得の優先度が設定されており、優先度が低いイベントから順に情報取得の際に時間情報を取得しないようにする。優先度は、制限対象イベント設定部２０２の設定で、任意に変更することができる。
【００６５】
本発明の第５の実施形態において、内部信号の状態遷移を検出して、図２１に示すアルゴリズムによってトレース情報１０を生成する過程を、図２２に示す波形図を用いて説明する。
【００６６】
図２２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、時間情報マスクを開始するトレース情報のデータ量ＴＬＩＭを“２４”に設定する。ＴＬＩＭの単位はビットである。時間情報マスクの優先度は、信号１００〜１０２のいずれも、立上りを高く、立下りを低く設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加される信号状態情報３２のデータ量は２ビットとする。
【００６７】
測定開始時、ステップ１６０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１００４に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１００４に移行する。ステップ１００４で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があることから、トレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１６０２に移行する。ステップ１６０２で、信号が時間情報マスク指定されている信号か確認する。１３００ｎｓの時は、信号１００〜１０２の立上りが時間情報マスク指定されていることより、時間情報を含まないトレース情報を生成するためにステップ１６０３に移行し、それ以外の時は時間情報を含むトレース情報を生成するためにステップ１００８に移行する。ステップ１６０３で、時間情報を含まないトレース情報を生成する。具体的には、１３００ｎｓの時、内部信号１０１の信号名情報“２”、信号状態情報“１”を用いてトレース情報として“２，１”をパケット化し、ステップ１３０２に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１６０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１６０５に移行する。ステップ１６０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報から信号名情報を除いた情報を追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１”の信号状態情報に該当する“１”を追加して、ステップ１６０５に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１６０５に移行する。
【００６８】
ステップ１６０５で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＴＬＩＭ以上の値になるため、ステップ１６０６に移行し、それ以外の時はステップ１３０５に移行する。ステップ１６０６で、時間情報マスク優先度の高いイベントである信号１００〜１０２の立上りをマスク指定し、ステップ１３０５に移行する。
【００６９】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。
【００７０】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【００７１】
《第６の実施形態》
図２３に、本発明の第６の実施形態における半導体装置の構成を示すブロック図を示す。第６の実施形態では、第３の実施形態に示した同期発生周期設定部２１３、第４の実施形態に示したイベント選択制御部２２３、第５の実施形態に示した時間情報取得イベント選択制御部２０１を全て設け、トレース情報欠落回避手段選択部２３０を用い、上記３通りの手段のどれを有効にするかを選択する。これにより、トレース情報の欠落を回避する手段を任意に選択することができる。
【００７２】
また、保持バッファ２０３内のトレース情報のデータ量５２をもとに、トレース情報の欠落を回避する手段の有効／無効の切替を自動で行うことができる。各トレース情報欠落回避手段２０１，２１３，２２３には優先度が設定されており、情報の出力中に次の同期信号が発生することによるデータの欠落が発生するおそれがあるときに、各手段のＯＮ／ＯＦＦ切替え信号５４〜５６を用いて優先度の高い手段を有効にする。優先度は、トレース情報欠落回避手段選択部２３０の設定で、任意に変更することができる。
【００７３】
本発明の第６の実施形態において、内部信号の状態遷移を検出して、図２４に示すアルゴリズムによってトレース情報１０を生成する過程を説明する。波形図は、時間情報をマスクする方法の優先度を最高にすると図２２の波形と同じ動作となるので、図２２を用いて説明する。
【００７４】
図２２において、内部信号１００は初期状態がＨで、測定開始から５００ｎｓでＬに遷移し、１０００ｎｓでＨに遷移する信号、内部信号１０１は初期状態がＨで、測定開始から８００ｎｓでＬに遷移し、１３００ｎｓでＨに遷移する信号、内部信号１０２は初期状態がＨで、測定開始から１５００ｎｓでＬに遷移し、２２００ｎｓでＨに遷移する信号である。内部信号１０３〜１０７は、測定時に状態遷移を起こさないものとする。ＬＳＩ１の内部カウンタ２１２を動作させる内部クロックは１００ｎｓ周期で、ＬＳＩ１とデバッガ２が同期を行う周期ＣＹＣは“８”に設定している。また、トレース情報欠落回避手段２０１，２１３，２２３を有効にするトレース情報のデータ量ＡＬＩＭを“２４”に設定する。ＡＬＩＭの単位はビットである。トレース情報欠落回避手段選択部２３０で、時間情報をマスクする方法の優先度を高く、他の方法の優先度を低くする。時間情報マスクの実行時は、信号１００〜１０２の立下りの時間情報をマスクするように設定する。１組のトレース情報のデータ量は１４ビット、マージされる時に追加される信号状態情報のデータ量は２ビットとする。
【００７５】
測定開始時、ステップ１７０１で、内部カウンタ２１２の値ＣＮＴ、同期信号ＳＹＮ、出力状態信号ＯＵＴを“０”に設定し、ステップ１００２に移行する。ステップ１００２で、測定終了の確認を行い、測定を終了するときはステップ１００３に移行し、測定を終了しないときはステップ１５０２に移行する。ステップ１００３で、トレース情報生成部２００の出力バッファ２０４が空であるか判定し、空のときはフローを終了し、空でないときはステップ１５０２に移行する。ステップ１５０２で内部信号１００〜１０７の状態を確認し、５００ｎｓ、８００ｎｓ、１０００ｎｓ、１３００ｎｓ、１５００ｎｓ、２２００ｎｓの時に状態遷移した信号があり、いずれの時も信号がマスク指定されていないことからトレース情報を生成するためにステップ１００５に移行し、その他の場合は状態遷移した信号がないためにステップ１００６に移行する。ステップ１００５で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号情報を“１”にし、それ以外の信号の信号情報を“０”にして、ステップ１００７に移行する。ステップ１００７で、状態が遷移した信号、５００ｎｓと１０００ｎｓの時は信号１００、８００ｎｓと１３００ｎｓの時は信号１０１、１５００ｎｓと２２００ｎｓの時は信号１０２の信号状態情報３２を、ＨからＬに移行した信号の場合は“０”に、ＬからＨに移行した信号の場合は“１”にし、ステップ１６０２に移行する。ステップ１６０２で、信号が時間情報マスク指定されている信号か確認する。１３００ｎｓの時は、信号１００〜１０２の立上りが時間情報マスク指定されていることより、時間情報を含まないトレース情報を生成するためにステップ１６０３に移行し、それ以外の時は時間情報を含むトレース情報を生成するためにステップ１００８に移行する。ステップ１６０３で、時間情報を含まないトレース情報を生成する。１３００ｎｓの時、内部信号１０１の信号名情報“２”、信号状態情報“１”を用いてトレース情報として“２，１”をパケット化し、ステップ１３０２に移行する。ステップ１００８で、状態が遷移した信号の信号情報から信号名（信号１００は“１”、信号１０１は“２”、信号１０２は“３”、．．．、信号１０７は“８”）を示す信号名情報３１を生成して、信号状態情報３２、ＣＮＴ単独からなる時間情報３３を用いてトレース情報としてパケット化する。５００ｎｓの時は信号１００の信号情報が“１”になっていることから“１，０，５”、８００ｎｓのときは信号１０１の信号情報が“１”になっていることから“２，０，０”、１０００ｎｓのときは信号１００の信号情報が“１”になっていることから“１，１，２”、１５００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，０，７”、２２００ｎｓのときは信号１０２の信号情報が“１”になっていることから“３，１，６”をパケット化し、ステップ１３０２に移行する。ステップ１３０２で、保持バッファ２０３内に蓄積されている信号のトレース情報に、ステップ１００８でパケット化した情報と同じ信号の情報があるか確認する。１３００ｎｓの時は、８００ｎｓに生成された同じ信号１０１のトレース情報が保持バッファ２０３内にあることより、情報をマージするためにステップ１６０４に移行する。５００ｎｓ、８００ｎｓ、１０００ｎｓ、１５００ｎｓ、２２００ｎｓの時は、保持バッファ２０３内に同じ信号のトレース情報がないことより、ステップ１３０３に移行する。ステップ１３０３で、パケット化したトレース情報を保持バッファ２０３に格納し、ステップ１７０２に移行する。ステップ１６０４で、保持バッファ２０３にある同じ信号のトレース情報に、生成したトレース情報から信号名情報を除いた情報を追加する。１３００ｎｓの時、既に保持バッファ２０３内にあるトレース情報“２，０，０”に、生成したトレース情報“２，１”の信号状態情報に該当する“１”を追加して、ステップ１７０２に移行する。ステップ１００６で、全ての信号の信号情報を“０”にし、ステップ１７０２に移行する。
【００７６】
ステップ１７０２で、トレース情報のデータ量５２から、保持バッファ２０３のデータ量を確認する。１０００ｎｓの時、データ量は２８となり、ＡＬＩＭ以上の値になるため、ステップ１７０３に移行し、それ以外の時はステップ１３０５に移行する。ステップ１７０３で、トレース情報欠落回避手段選択部２３０に設定した優先度を確認する。同期周期を変更する方法の優先度が最高である場合、同期周期を変更する処理を行うためにステップ１７０４に移行し、同期周期を変更する方法以外の方法の優先度が最高である場合、ステップ１７０５に移行する。ステップ１７０４で、同期発生周期設定部ＯＮ／ＯＦＦ切替え信号５４によって同期発生周期設定部２１３が動作し、同期周期の変更情報をトレース情報生成部２００に出力し、それを受けて同期周期変更を示す情報“０，０，０”を保持バッファ２０３に格納し、時間情報生成部２１０は同期周期ＣＹＣをＮＣＹＣの値に更新し、ステップ１３０５に移行する。ステップ１７０５で、トレース情報欠落回避手段選択部２３０に設定した優先度を確認する。信号の情報取得をマスクする方法の優先度が最高である場合、信号のマスク指定を行うためにステップ１７０６に移行し、信号の情報取得をマスクする方法以外の方法の優先度が最高である場合、時間情報をマスクする方法の優先度が最高であることを意味するので、時間情報マスクの指定を行うためにステップ１７０７に移行する。ステップ１７０６で、イベント選択制御部ＯＮ／ＯＦＦ切替え信号５５によってイベント選択制御部２２３が動作し、マスク設定されている信号をマスク指定し、ステップ１３０５に移行する。ステップ１７０７で、時間情報取得イベント選択制御部ＯＮ／ＯＦＦ切替え信号５６によって時間情報取得イベント選択制御部２０１が動作し時間情報マスクの実行時にマスクするように設定されている信号を時間情報マスク指定する。時間情報マスクの実行時にマスクするように設定されている、信号１００〜１０２の立下りの時間情報をマスク指定し、ステップ１３０５に移行する。
【００７７】
ステップ１３０５で、出力状態信号ＯＵＴの値を確認する。トレース情報１０の出力時はＯＵＴが“１”になっていることよりステップ１３０６に移行し、トレース情報１０が出力を行っていない時はＯＵＴが“０”になっていることよりステップ１０１６に移行する。ステップ１３０６で、出力バッファ２０４が空の状態であるか確認する。トレース情報１０の出力が完了している場合はＯＵＴを“１”から“０”にするためにステップ１３０９に移行し、トレース情報１０の出力が完了していない場合は出力を行うためにステップ１３０７に移行する。ステップ１３０７で、出力バッファ２０４内の情報を出力端子１６からトレース情報１０として出力し、ステップ１３０８に移行する。ステップ１３０８で、出力したデータを出力バッファ２０４から削除し、未出力のデータを出力するために出力バッファ２０４内でシフトしてステップ１０１６に移行する。ステップ１３０９で、出力端子１６を、トレース情報１０の出力がないときの設定としてＯＰＥＮにして、ＯＵＴを“０”にして出力を行っていない状態に設定し、ステップ１０１６に移行する。
【００７８】
ステップ１０１６で、内部クロックの立ち上がりを確認し、立ち上がった場合は内部カウンタ２１２を動作させるためにステップ１０１７に、立ち上がっていない場合はステップ１００２に移行する。ステップ１０１７で、ＣＮＴがＣＹＣから１を引いた数と一致しているか確認する。８００ｎｓと１６００ｎｓと２４００ｎｓの時、ＣＮＴがＣＹＣに設定した８から１を引いた７であることより同期信号ＳＹＮを生成するためステップ１３１０に、不一致の場合はステップ１０１９に移行する。ステップ１３１０で、８００ｎｓと１６００ｎｓと２４００ｎｓの時、同期信号ＳＹＮを“１”にセット、ＣＮＴを“０”にクリア、また、出力状態信号ＯＵＴを“１”にして出力状態に設定し、保持バッファ２０３に蓄積されていたデータを出力バッファ２０４に移動し、ステップ１００２に移行する。ステップ１０１９で、ＣＮＴが“０”であるか確認する。９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＣＮＴが“０”であることよりＳＹＮをクリアしてＣＮＴを加算するためにステップ１０２０に、ＣＮＴが“０”でない時は単にＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２０で、９００ｎｓと１７００ｎｓと２５００ｎｓの時、ＳＹＮを“０”にし、ＣＮＴを加算するためにステップ１０２１に移行する。ステップ１０２１で、ＣＮＴに１を加算し、ステップ１００２に移行する。
【産業上の利用可能性】
【００７９】
以上説明してきたとおり、本発明に係る半導体装置及び開発支援装置は、ＬＳＩ内部信号の動作を外部から解析、評価する手段として有用である。
【図面の簡単な説明】
【００８０】
【図１】本発明による半導体装置と開発支援装置の概略構成図である。
【図２】本発明の第１の実施形態による半導体装置の構成図である。
【図３】本発明の第１の実施形態による開発支援装置の構成図である。
【図４】本発明の第１の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図５】本発明の第１の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図６】本発明の第１の実施形態によるデバッガのトレース情報復号のアルゴリズムを示す図である。
【図７】本発明の第１の実施形態によるトレース情報復号の過程を示す図である。
【図８】本発明の第１の実施形態によるデバッガのＬＳＩ内部情報再現のアルゴリズムを示す図である。
【図９】本発明の第１の実施形態によるＬＳＩ内部情報の再現過程を示す図である。
【図１０】本発明の第２の実施形態による半導体装置の構成図である。
【図１１】本発明の第２の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１２】本発明の第２の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図１３】（ａ）〜（ｄ）は、トレース情報の欠落とその回避手段を示す図である。
【図１４】本発明の第３の実施形態による半導体装置の構成図である。
【図１５】本発明の第３の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１６】本発明の第３の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図１７】本発明の第４の実施形態による半導体装置の構成図である。
【図１８】本発明の第４の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図１９】本発明の第４の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図２０】本発明の第５の実施形態による半導体装置の構成図である。
【図２１】本発明の第５の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【図２２】本発明の第５の実施形態によるＬＳＩ内部情報取得の過程を示す図である。
【図２３】本発明の第６の実施形態による半導体装置の構成図である。
【図２４】本発明の第６の実施形態によるＬＳＩ内部情報取得のアルゴリズムを示す図である。
【符号の説明】
【００８１】
１  ＬＳＩ（半導体装置）
２  デバッガ（開発支援装置）
１０  トレース情報
１１〜１５  機能ブロック
１６  トレース情報出力端子
１７  ＬＳＩ内部情報取得部
２１  トレース情報復号部
２２  ＬＳＩ内部情報再現部
２３  ＬＳＩ内部情報バッファ
２４  時間情報復号部
２５  実時間変換部
２６  波形再現部
３１  信号名情報（ＬＳＩ側）
３２  信号状態情報（ＬＳＩ側）
３３  時間情報（ＬＳＩ側）
４１  信号名情報（デバッガ側）
４２  信号状態情報（デバッガ側）
４３  時間情報（デバッガ側）
４４  同期情報
４５  ＬＳＩ内部時間情報
４６  実時間情報
５１  同期信号
５２  トレース情報のデータ量
５３  同期周期の変更情報
５４  同期発生周期設定部ＯＮ／ＯＦＦ切替え信号
５５  イベント選択制御部ＯＮ／ＯＦＦ切替え信号
５６  時間情報取得イベント選択制御部ＯＮ／ＯＦＦ切替え信号
１００〜１０７  ＬＳＩ内部信号
２００  トレース情報生成部
２０１  時間情報取得イベント選択制御部
２０２  制限対象イベント設定部
２０３  保持バッファ
２０４  出力バッファ
２１０  時間情報生成部
２１１  同期信号生成部
２１２  内部カウンタ
２１３  同期発生周期設定部
２２０  信号特定情報生成部
２２１  信号名情報生成部
２２２  信号状態情報生成部
２２３  イベント選択制御部
２２４  制限対象イベント設定部
２３０  トレース情報欠落回避手段選択部
２４０  トレース情報出力部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009031254.tif 000027
【図２】
2009031254.tif 000028
【図３】
2009031254.tif 000029
【図４】
2009031254.tif 000030
【図５】
2009031254.tif 000031
【図６】
2009031254.tif 000032
【図７】
2009031254.tif 000033
【図８】
2009031254.tif 000034
【図９】
2009031254.tif 000035
【図１０】
2009031254.tif 000036
【図１１】
2009031254.tif 000037
【図１２】
2009031254.tif 000038
【図１３】
2009031254.tif 000039
【図１４】
2009031254.tif 000040
【図１５】
2009031254.tif 000041
【図１６】
2009031254.tif 000042
【図１７】
2009031254.tif 000043
【図１８】
2009031254.tif 000044
【図１９】
2009031254.tif 000045
【図２０】
2009031254.tif 000046
【図２１】
2009031254.tif 000047
【図２２】
2009031254.tif 000048
【図２３】
2009031254.tif 000049
【図２４】
2009031254.tif 000050
【国際調査報告】
2009031254.tif 000051
2009031254.tif 000052
2009031254.tif 000053
2009031254.tif 000054