(57)【要約】  回路設計支援装置（１００）は、オンチップデバッグ部（１１０）と、シミュレーション部（１３０）と、を備える。オンチップデバッグ部（１１０）は、電子回路（４７）の動作が切替段階に至るまでは集積回路上で電子回路（４７）を動作させ、電子回路（４７）の動作が切替段階に至ると電子回路（４７）中のデータを抽出する。シミュレーション部（１３０）は、電子回路（４７）を表現するシミュレーション用コード（１２１）とオンチップデバッグ部（１１０）により抽出されたデータとを用いて切替段階における電子回路（４７）を再現した後、切替段階後の電子回路（４７）の動作をシミュレーションする。
2010095635.tif 000002
【特許請求の範囲】
【請求項１】
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグ部と、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーション部と、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出部と、を備え、
前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする回路設計支援装置。
【請求項２】
所定の記述レベルの回路記述に基づいて、前記集積回路に書き込むコンフィギュレーションコードを生成するコンフィギュレーションコード生成部と、
生成された前記コンフィギュレーションコードを前記集積回路に書き込むコンフィギュレーションコード書込部と、をさらに備え、
前記電子回路は、前記コンフィギュレーションコードが前記集積回路に書き込まれることで、前記集積回路上に実装される、
ことを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
所定の記述レベルの回路記述に基づいて、前記シミュレーション用コードを生成するシミュレーション用コード生成手段をさらに備える、
ことを特徴とする請求項１又は２に記載の回路設計支援装置。
【請求項４】
前記切替段階は、前記異常検出部により特定された時点の１サイクル前の時点である、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項５】
前記電子回路は、演算の実行に複数サイクルを要するとともに外部から参照されない演算途中の前記データを内部に有する複数サイクル演算器を含み、
前記切替段階は、前記異常検出部により特定された時点より前記複数サイクル分前の時点であり、
前記オンチップデバッグ部は、前記シミュレーション部により前記切替段階における前記電子回路の状態が再現されると、前記電子回路を１サイクル分動作させる処理と前記電子回路中のデータを抽出する処理とを、前記異常検出部により特定された時点に到達するまで繰り返し、
前記シミュレーション部は、前記電子回路が１サイクル分動作する度に、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて、前記電子回路の動作をシミュレーションする、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項６】
前記電子回路は、演算の実行に複数サイクルを要するとともに外部から参照されない演算途中の前記データを内部に有する複数サイクル演算器を含み、
前記切替段階は、前記異常検出部により特定された時点より前記複数サイクル分前の時点であり、
前記オンチップデバッグ部は、前記シミュレーション部により前記切替段階における前記電子回路の状態が再現されると、前記電子回路を１サイクル分動作させる処理と前記電子回路中のデータを抽出する処理とを、前記異常検出部により特定された時点に到達するまで繰り返し、
前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて、前記切替段階から前記特定された時点までの前記電子回路の動作をシミュレーションする、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項７】
前記シミュレーション部は、前記電子回路を表現する第１の回路記述を変換して得られる第１のシミュレーション用コードを用いて当該電子回路の動作をシミュレーションするとともに、当該第１の回路記述に基づいて生成された第２の回路記述を変換して得られる第２のシミュレーション用コードを用いて当該電子回路の動作をシミュレーションし、当該第１のシミュレーション用コードを用いたシミュレーションの結果と当該第２のシミュレーション用コードを用いたシミュレーションの結果とを比較することにより、前記コンフィギュレーションコードに異常があるか否かを判別する、
ことを特徴とする請求項２乃至４の何れか１項に記載の回路設計支援装置。
【請求項８】
前記シミュレーション部は、前記第１のシミュレーション用コードを用いたシミュレーションの結果と前記第２のシミュレーション用コードを用いたシミュレーションの結果とが同じである場合に、前記コンフィギュレーションコードに異常があると判別する。
ことを特徴とする請求項７に記載の回路設計支援装置。
【請求項９】
オンチップデバッグ部が、集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
シミュレーション部が、前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
異常検出部が、前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を備え、
前記オンチップデバッグステップにおいて、前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップにおいて、前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする回路設計支援方法。
【請求項１０】
コンピュータに、
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を実行させるためのプログラムであって、
前記オンチップデバッグステップでは、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップでは、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路のデバッグを効率的に行うのに好適な回路設計支援装置、回路設計支援方法、ならびに、これらをコンピュータ上で実現するためのプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
いわゆる回路シミュレータを用いて、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）などの再構成可能デバイスやＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｉｏｎ  Ｃｉｒｃｕｉｔ）の設計時のデバッグを実行する技術が知られている。回路シミュレータは、設計段階に応じたシミュレーションを実行することができる。
例えば、回路シミュレータは、Ｃ言語などにより記述された動作レベル記述については、Ｃレベルシミュレーションを実行する。また、回路シミュレータは、Ｃ言語などにより記述された動作レベル記述を動作合成して得られるＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ（レジスタ転送レベル））記述、もしくは、ＲＴＬ記述言語で直接記述されたＲＴＬ記述については、ＲＴＬシミュレーションを実行する。
また、回路シミュレータは、ＲＴＬ記述を論理合成あるいはテクノロジーマッピングして得られるネットリストについては、ブロックレベルシミュレーションを実行する。
さらに、回路シミュレータは、ネットリストに基づいて配置・配線設計することで得られるコンフィギュレーションコードについては、ハードウェアモデルシミュレーションを実行する。【０００３】
しかしながら、回路シミュレータを用いて複雑な回路をシミュレーションしたり、大きなテストデータを用いて回路をシミュレーションしたりする場合、シミュレーションに要する時間が膨大なものとなっていた。特に、回路シミュレータを用いてハードウェアモデルシミュレーションを実行する場合、細部までデバッグが可能である反面、デバッグに非常に多くの時間が費やされていた。【０００４】
一方、回路シミュレータを用いる代わりにオンチップデバッガを用いて、再構成可能デバイスやＡＳＩＣをデバッグする技術も知られている。オンチップデバッガは、再構成可能デバイスやＡＳＩＣそのものを動作させて、これらのデバイスが有する内部のレジスタやメモリの値をデバイスの外部へ出力させる。【０００５】
しかしながら、オンチップデバッガを用いたデバッグでは、回路シミュレータによるシミュレーションとは異なり、クロックエッジでレジスタやメモリなどに保存される信号以外の信号、例えば、演算途中に演算器に入力される信号や演算途中に演算器から出力される信号などは観測することができなかった。【０００６】
このような問題を解決するための技術として、例えば、特許文献１には、再構成可能デバイス内で使用されないレジスタ、メモリ、外部ポート、配線などのリソースを用いて、デバッグ対象の電子回路に停止条件回路を挿入するデータ処理システムが開示されている。このデータ処理システムでは、停止条件回路が、所望の停止条件に合致したと判別したときにデバッグ対象の電子回路の動作を停止させるなどして、観測したい信号をレジスタやメモリに保存したり、外部ポートへ出力したりすることが可能となる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−１７９５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に開示された手法は、レジスタ、メモリ、外部ポート、配線などのリソースが余っていない場合は利用できないという制限がある。また、再構成可能デバイス中の電子回路は、最適化により所定の位置に密集して配置されることが一般的である。従って、この電子回路から離れた位置に追加回路が生成されることが一般的である。このため、追加回路がクリティカルパスになり、再構成可能デバイスの動作速度を制限してしまう可能性があった。【０００９】
上述したように、回路シミュレータは詳細なデバッグが可能であるもののデバッグに要する時間が膨大であり、一方、オンチップデバッガはデバッグに要する時間は短いものの詳細なデバッグに不向きである。
このため、詳細なデバッグを可能としつつもデバッグに要する時間が少ない使い勝手の良い回路設計支援装置の開発が望まれていた。【００１０】
本発明は、上記問題に鑑みてなされたものであり、電子回路のデバッグを効率的に行うのに好適な回路設計支援装置等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明の第１の観点に係る回路設計支援装置は、
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグ部と、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーション部と、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出部と、を備え、
前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする。【００１２】
上記目的を達成するために、本発明のその他の観点に係る回路設計支援方法は、
オンチップデバッグ部が、集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
シミュレーション部が、前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
異常検出部が、前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を備え、
前記オンチップデバッグステップにおいて、前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップにおいて、前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする。【００１３】
上記目的を達成するために、本発明のその他の観点に係るコンピュータ読み取り可能な記録媒体は、
コンピュータに、
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を実行させるためのプログラムであって、
前記オンチップデバッグステップでは、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップでは、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とするプログラムを記録している。
【発明の効果】
【００１４】
本発明によれば、電子回路のデバッグを効率的に行うのに好適な回路設計支援装置等を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１〜４の実施形態に係る回路設計支援装置の構成を示すブロック図である。
【図２】ターゲット基板の構成を示すブロック図である。
【図３】データ読み出し部が取得可能なデータと取得不可能なデータとを説明するための図である。
【図４】本発明の第１〜４の実施形態に係る回路設計支援装置の機能を説明するための図である。
【図５】本発明の第１〜４の実施形態に係る回路設計支援装置が実行するコード生成処理を示すフローチャートである。
【図６】本発明の第１の実施形態に係る回路設計支援装置が実行する回路設計支援処理を示すフローチャートである。
【図７】多サイクル演算器の動作を説明するための図である。
【図８】本発明の第２の実施形態に係る回路設計支援装置が実行する回路設計支援処理を示すフローチャートである。
【図９】本発明の第３の実施形態に係る回路設計支援装置が実行する回路設計支援処理を示すフローチャートである。
【図１０】本発明の第４の実施形態に係る回路設計支援装置が実行する回路設計支援処理を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態に係る回路設計支援装置について図面を参照して説明する。ここで、回路設計支援装置は、ＤＲＰやＦＰＧＡなどの集積回路上に実装される電子回路に存在する設計上のバグを検出するための装置である。具体的には、回路設計支援装置は、集積回路に実装された電子回路を実際に動作させながら電子回路が有するレジスタやメモリの値を読み出すことによりユーザの電子回路のデバッグを可能とするオンチップデバッガとしての機能を有する。さらに、回路設計支援装置は、集積回路に実装された電子回路を表現するプログラム（シミュレーション用コード）をコンピュータ上で実行することにより電子回路をシミュレートするシミュレータとしての機能を有する。
【００１７】
（第１の実施形態）
まず、図１を参照して本発明の第１の実施形態に係る回路設計支援装置の構成について説明する。ここで、本実施形態に係る回路設計支援装置は、所定の記述レベルの回路記述（ソースプログラム）をコンパイルすることにより集積回路に書き込むコンフィギュレーションコードを生成するコンパイル機能と、生成したコンフィギュレーションコードを集積回路に書き込むライタ機能と、所定の記述レベルの回路記述を変換することによりシミュレーション用コードを生成するシミュレーション用コード生成機能と、をさらに備える。
【００１８】
図１に示すように、回路設計支援装置１００は、物理的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ハードディスク装置１４と、表示制御部１５と、インターフェース１６と、を備える。回路設計支援装置１００が備える各構成要素はバス１０を介して接続される。なお、回路設計支援装置１００は、パーソナルコンピュータやワークステーションなどにより構成することができる。また、図１に示すように、回路設計支援システム１０００は、回路設計支援装置１００と、表示装置２０と、入力装置３０と、ターゲット基板４０と、を備える。なお、回路設計支援装置１００が、表示装置２０、入力装置３０、ならびに、ターゲット基板４０などを備える構成であってもよい。
【００１９】
ＣＰＵ１１は、ハードディスク装置１４に記憶された制御プログラムに従って回路設計支援装置１００全体の動作を制御する。ＣＰＵ１１は、バス１０を介して各構成要素と制御信号やデータのやりとりをする。
【００２０】
ＲＯＭ１２は、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記憶する。ＩＰＬが実行された後、ＣＰＵ１１は、ハードディスク装置１４に記憶された制御プログラムをＲＡＭ１３に読み出して実行する。
【００２１】
ＲＡＭ１３は、制御プログラムやデータを一時的に記憶する。ＲＡＭ１３は、ハードディスク装置１４から読み出された制御プログラムや、後述するコード生成処理や回路設計支援処理に必要なデータ等を一時記憶する。
【００２２】
ハードディスク装置１４は、コード生成処理や回路設計支援処理などを実現するための制御プログラムを記憶する。また、ハードディスク装置１４は、集積回路に実装される電子回路を表現する回路記述を記憶する。回路記述は、その記述レベルによって、Ｃ言語レベル記述、ＲＴＬ記述、ブロックレベル記述、ハードウェアレベル記述、などに分類される。
例えば、Ｃ言語レベル記述は、集積回路に実装される電子回路をＣ言語により表現したものである。例えば、ＲＴＬ記述は、集積回路に実装される電子回路をＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）により表現したものである。
例えば、ブロックレベル記述は、集積回路に実装される電子回路をネットリストにより表現したものである。
例えば、ハードウェアレベル記述は、集積回路に実装される電子回路をコンフィギュレーションコードにより表現したものである。さらに、ハードディスク装置１４は、各記述レベルの回路記述を変換して得られるシミュレーション用コードを記憶する。
【００２３】
表示制御部１５は、ＣＰＵ１１の制御のもと、表示装置２０に表示させる画像信号を生成して、表示装置２０に供給する。表示装置２０は、表示制御部１５から供給された画像信号に従って、画像を表示する。例えば、表示装置２０には、各記述レベルの回路記述を示す画面、オンチップデバッグの結果を示す画面、シミュレーションの結果を示す画面などが表示される。表示装置２０は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）やＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などから構成される。
【００２４】
インターフェース１６は、回路設計支援装置１００が備える各構成要素と、外部の入力装置３０もしくはターゲット基板４０との間のデータのやりとりを中継する。入力装置３０は、ＣＰＵ１１による制御のもと、ユーザからの操作入力を受け付ける。入力装置３０は、例えば、キーボードやマウスから構成される。ターゲット基板４０は、オンチップデバッグのターゲットとなるＤＲＰを備える基板である。ターゲット基板４０については、図２を参照して詳細に説明する。
【００２５】
図２に示すように、ターゲット基板４０は、インターフェース４１と、コード書き込み部４２と、回路制御部４３と、データ書き込み部４４と、データ読み出し部４５と、ＤＲＰ４６と、を備える。
【００２６】
インターフェース４１は、ターゲット基板４０が備える各構成要素と、回路設計支援装置１００が備える各要素との間のデータのやりとりを中継する。
【００２７】
コード書き込み部４２は、インターフェース４１を介して回路設計支援装置１００から供給されたコンフィギュレーションコードをＤＲＰ４６に書き込むことにより、ＤＲＰ４６上に電子回路４７を実装する。
【００２８】
回路制御部４３は、ＤＲＰ４６上に実装された電子回路４７の動作を制御する。具体的には、回路制御部４３は、電子回路４７を１サイクル分動作させることにより電子回路４７の動作を１サイクル分進めたり、電子回路４７を複数のサイクル分連続して動作させることにより電子回路４７の動作を複数のサイクル分進めたりする。１サイクルをどの程度にするか、例えば、何クロック分程度にするかは適宜調整が可能である。
【００２９】
データ書き込み部４４は、インターフェース４１を介して回路設計支援装置１００から供給されたデータを電子回路４７中のレジスタ、メモリ、ポートなどに書き込む。データ読み出し部４５は、電子回路４７中のレジスタ、メモリ、ポートなどに格納されているデータを読み出して、インターフェース４１を介して回路設計支援装置１００に供給する。データ書き込み部４４によるデータの書き込みやデータ読み出し部４５によるデータの読み出しは、例えば、電子回路４７が動作していない間に実行される。
【００３０】
ここで、図３を参照して、データ読み出し部４５が取得可能なデータと取得不可能なデータとについて説明する。図３に示すように、演算器６０は、加算器６１と加算器６２とを備える。図３において、レジスタ５１はデータＡを格納するレジスタであり、レジスタ５２はデータＢを格納するレジスタであり、レジスタ５３はデータＣを格納するレジスタである。加算器６１は、レジスタ５１から供給されたデータＡとレジスタ５２から供給されたデータＢとの和を求め、その結果を示すデータを加算器６２に供給する。加算器６２は、加算器６１から供給されたデータとレジスタ５３から供給されたデータＣとの和を求め、その結果を示すデータＸをレジスタ５４に供給する。すなわち、演算器６０は、供給された３つの値の和を求めて出力する、すなわち、Ｘ＝Ａ＋Ｂ＋Ｃの演算を実行する。
【００３１】
ここで、加算器６１による加算と加算器６２による加算とは同一のサイクルにおいて実行され、加算器６１から加算器６２に供給されるデータがレジスタに格納されないものとする。このとき、データ読み出し部４５は、データＡ、データＢ、データＣ、ならびに、データＸは、取得することができるが、加算器６１から加算器６２に供給されるデータは取得することができない。このように、オンチップデバッグによってはデータが取得できず、結果として詳細なデバッグができない場合がある。なお、後述するように、回路設計支援装置１００によれば、オンチップデバッグによって取得できないデータは、シミュレーションにより解析することが可能である。
【００３２】
次に、図４を参照して、本実施形態に係る回路設計支援装置１００の機能を説明する。
【００３３】
図４に示すように、回路設計支援装置１００は、機能的には、オンチップデバッグ部１１０と、記憶部１２０と、シミュレーション部１３０と、を備える。
【００３４】
オンチップデバッグ部１１０は、ＤＲＰ４６上に実装された電子回路４７を動作させるとともに電子回路４７中のデータを抽出する。ここで、オンチップデバッグ部１１０は、電子回路４７が、後述する切替段階に至るまでは電子回路４７を動作させる。そして、オンチップデバッグ部１１０は、電子回路４７が切替段階に至ると電子回路４７の動作を停止させて電子回路４７中のデータを読み出してシミュレーション部１３０に供給する。また、オンチップデバッグ部１１０は、例えば、抽出したデータを表示する画面（オンチップデバッグ用の画面）を表示装置２０に表示させるための画像信号を生成して表示装置２０に供給することにより、抽出したデータをユーザに提示する。オンチップデバッグ部１１０は、例えば、ＣＰＵ１１、表示制御部１５、インターフェース１６などから構成される。
【００３５】
記憶部１２０は、電子回路４７をコンピュータ上でシミュレーションするためのシミュレーション用コード１２１を記憶する。シミュレーション用コード１２１は、どのような記述レベルの回路記述を変換して得られるものであってもよい。記憶部１２０は、例えば、ハードディスク装置１４により構成される。
【００３６】
シミュレーション部１３０は、記憶部１２０に記憶されているシミュレーション用コード１２１を用いて、電子回路４７の動作をコンピュータ上でシミュレーションする。ここで、シミュレーション部１３０は、オンチップデバッグ部１１０から供給されたデータを用いて、切替段階後の電子回路４７の動作をシミュレーションする。すなわち、ユーザは、切替段階までは、オンチップデバッグ部１１０を用いてデバッグを行い、切替段階後は、シミュレーション部１３０を用いてデバッグを行う。また、シミュレーション部１３０は、例えば、シミュレーション用の画面を表示するための画像信号を生成して表示装置２０に供給する。シミュレーション部１３０は、例えば、ＣＰＵ１１、表示制御部１５、インターフェース１６などから構成される。
【００３７】
次に、図５に示すフローチャートを用いて、回路設計支援装置１００が実行するコード生成処理について説明する。コード生成処理は、Ｃ言語レベル記述からコンフィギュレーションコードを生成し、生成したコンフィギュレーションコードをＤＲＰ４６に書き込むことによりＤＲＰ４６上に電子回路４７を実装し、さらに、何れかの回路記述を変換してシミュレーション用コードを生成する処理である。コード生成処理は、後述する回路設計支援処理に先立って実行される。
【００３８】
まず、ＣＰＵ１１は、Ｃ言語レベル記述の入力をユーザから受け付ける（ステップＳ１０１）。ＣＰＵ１１は、ユーザが、入力装置３０を介して新規に入力して生成したＣ言語レベル記述を受け付けてもよい。あるいは、ユーザに指定された、ハードディスク装置１４若しくは回路設計支援装置１００の図示しない外部の記憶装置などにあらかじめ記憶されているＣ言語レベル記述を受け付けてもよい。ＣＰＵ１１は、受け付けたＣ言語レベル記述をハードディスク装置１４に記憶する。
【００３９】
次に、ＣＰＵ１１は、ステップＳ１０１で受け付けたＣ言語レベル記述を動作合成することによりＲＴＬ記述を生成する（ステップＳ１０２）。ＣＰＵ１１は、生成したＲＴＬ記述をハードディスク装置１４に記憶する。
【００４０】
そして、ＣＰＵ１１は、ステップＳ１０２で生成したＲＴＬ記述に基づいてブロックレベル記述を生成する（ステップＳ１０３）。ここで、ブロックレベル記述は、例えば、ネットリストに相当する。ＣＰＵ１１は、生成したブロックレベル記述をハードディスク装置１４に記憶する。
【００４１】
さらに、ＣＰＵ１１は、ステップＳ１０３で生成したブロックレベル記述に基づいてハードウェアレベル記述を生成する（ステップＳ１０４）。具体的には、ＣＰＵ１１は、ネットリスト上に記述されている各リソースの配置及び配線設計を行うことにより、ハードウェアレベル記述（即ち、コンフィギュレーションコード）を生成する。ＣＰＵ１１は、生成したハードウェアレベル記述をハードディスク装置１４に記憶する。
【００４２】
そして、ＣＰＵ１１は、ステップＳ１０４で生成したハードウェアレベル記述をＤＲＰ４６に書き込む（ステップＳ１０５）。すなわち、ＣＰＵ１１は、ステップＳ１０４で生成したコンフィギュレーションコードをＤＲＰ４６に書き込むことにより、ＤＲＰ４６上に電子回路４７を実装する。
【００４３】
さらに、ＣＰＵ１１は、何れかの回路記述を変換してシミュレーション用コードを生成する（ステップＳ１０６）。ＣＰＵ１１に、どの記述レベルの回路記述を変換してシミュレーション用コードを生成させるかは任意である。例えば、ＣＰＵ１１は、ステップＳ１０２で生成したＲＴＬ記述を変換してシミュレーション用コードを生成する。ＣＰＵ１１は、回路記述を変換してシミュレーション用コードを生成する処理（ステップＳ１０６）を終了すると、コード生成処理を終了する。
【００４４】
次に、図６に示すフローチャートを用いて、本実施形態に係る回路設計支援装置１００が実行する回路設計支援処理について説明する。なお、回路設計支援処理は、オンチップデバッグ機能とシミュレーション機能とを適宜切り替えてユーザに提供することにより、ユーザの電子回路の設計を支援する処理である。
【００４５】
まず、ＣＰＵ１１は、異常を検出するまで電子回路４７の動作を進める（ステップＳ２０１）。具体的には、ＣＰＵ１１は、ＤＲＰ４６上に実装された電子回路４７をユーザにオンチップデバッグさせるために、電子回路４７を動作させるとともに電子回路４７中のデータを抽出する。ＣＰＵ１１は、抽出したデータ内容を表示装置２０に表示させる等して、ユーザに提示する。
【００４６】
そして、ＣＰＵ１１は、オンチップデバッグで異常が検出されたか否かを判別する（ステップＳ２０２）。例えば、ＣＰＵ１１は、電子回路４７から抽出されたデータがあらかじめ定められたデータと一致しない場合に、異常が検出されたと判別する。また、ＣＰＵ１１は、異常を検出したことを示す操作入力がユーザからなされた場合に、異常が検出されたと判別してもよい。ＣＰＵ１１は、オンチップデバッグで異常が検出されていないと判別すると（ステップＳ２０２：ＮＯ）、回路設計支援処理を終了する。
【００４７】
一方、ＣＰＵ１１は、オンチップデバッグで異常が検出されたと判別すると（ステップＳ２０２：ＹＥＳ）、異常が検出された時点を特定する（ステップＳ２０３）。例えば、ＣＰＵ１１は、電子回路４７を所定のサイクル数分動作させた場合に電子回路４７から抽出されたデータがあらかじめ定められたデータと一致しない場合に、当該所定のサイクル数を異常が検出された時点として特定する。また、ＣＰＵ１１は、ユーザから受け付けたサイクル数を異常が検出された時点特定しても良い。
【００４８】
ＣＰＵ１１は、異常が検出された時点の特定処理（ステップＳ２０３）を終了すると、電子回路４７を再動作させて、異常が検出された時点の１サイクル前まで電子回路４７の動作を進める（ステップＳ２０４）。具体的には、先ず、ＣＰＵ１１は、電子回路４７が実装されたＤＲＰ４６にリセット信号を供給して電子回路４７を初期状態にする。そして、ＣＰＵ１１は、当該ＤＲＰ４６にクロック信号を供給してステップＳ２０３で特定した時点の１サイクル前まで電子回路４７の動作を進める。本実施形態では、異常が検出された時点の１サイクル前の時点を、デバッグ手法をオンチップデバッグからシミュレーションに切り替える切替段階とする。
【００４９】
次に、ＣＰＵ１１は、電子回路４７中のデータを取得する（ステップＳ２０５）。なお、ＣＰＵ１１が取得するデータは、電子回路４７中のレジスタ、メモリ、ポートなどに格納されているデータである。
【００５０】
次に、ＣＰＵ１１は、ステップＳ２０５で取得したデータを用いて、電子回路４７の状態を再現する（ステップＳ２０６）。具体的には、ＣＰＵ１１は、図５のステップＳ１０６で生成したシミュレーション用コードとステップＳ２０５で取得したデータとを用いて、ＤＲＰ４６上に実装されている電子回路４７の上述した切替段階における状態をコンピュータ上で再現する。
【００５１】
次に、ＣＰＵ１１は、シミュレーション用コードを用いて、コンピュータ上で電子回路４７の当該切替段階後の動作をシミュレーションする（ステップＳ２０７）。
【００５２】
ユーザは、このシミュレーションの結果に基づいて、異常のある箇所を詳細に調べることができる。その後、ユーザは、必要に応じて、電子回路４７を現在の状態（切替段階）から再動作させて、次の異常箇所までオンチップデバッグすることもできる。
【００５３】
本実施形態に係る回路設計支援装置１００によれば、ユーザが電子回路４７のデバッグを効率的に行うことを支援できる。例えば、回路設計支援装置１００は、異常を検出するまではオンチップデバッグ機能により電子回路４７を動作させることで、デバッグ時間の短縮化が図れる。そして、異常が検出された時点の直前からの電子回路４７の動作をシミュレーション機能によりシミュレーションすることで、詳細なデバッグを可能とする。本実施形態に係る回路設計支援装置１００によれば、加算器６１から加算器６２に供給されるデータのように、オンチップデバッグでは確認することが困難なデータをシミュレーションで確認することができる。
【００５４】
（第２の実施形態）
第１の実施形態では、１サイクルで演算が完了する演算器から構成される電子回路のデバッグを支援する例について説明した。しかし、本発明によれば、データが供給されてからデータが出力されるまで複数のサイクルを要する複数サイクル演算器を含む電子回路のデバッグを支援することもできる。複数サイクル演算器には、例えば、多サイクル演算器やパイプライン演算器などがある。ここでは、図７を参照して、多サイクル演算器について説明する。
【００５５】
図７に示すように、多サイクル演算器７０は、フリップフロップ７１と、フリップフロップ７２とを備える。まず、第１サイクルにおいて外部レジスタ７３からフリップフロップ７１にデータが供給される。そして、第２サイクルにおいてフリップフロップ７１からフリップフロップ７２にデータが供給される。さらに、第３サイクルにおいてフリップフロップ７２から外部レジスタ７４にデータが供給される。このように、多サイクル演算器７０は演算を実行するのに３サイクルを要する。図示はしないが、パイプライン演算器も多サイクル演算器と同様に、演算に多サイクルを要する。
【００５６】
このように、演算に多サイクルを要する演算器が、集積回路に実装された電子回路４７に含まれている場合、オンチップデバッグでは当該演算器中に含まれるデータを直ちに参照することができない。しかしながら、集積回路に実装された電子回路４７の動作をシミュレーションするには、このような演算器中に含まれるデータについても正確に把握する必要がある。本実施形態に係る回路設計支援装置１００では、電子回路４７中のデータを数サイクルにわたって取得することにより、電子回路４７の動作の正確なシミュレーションを可能とする。以下、図８に示すフローチャートを参照して、本実施形態に係る回路設計支援装置１００が実行する回路設計支援処理について説明する。なお、本実施形態に係る回路設計支援装置１００の構成は、第１の実施形態に係る回路設計支援装置１００と同様であるため説明を省略する。
【００５７】
まず、ＣＰＵ１１は、異常を検出するまで電子回路４７の動作を進める（ステップＳ３０１）。そして、ＣＰＵ１１は、オンチップデバッグで異常が検出されたか否かを判別する（ステップＳ３０２）。ＣＰＵ１１は、オンチップデバッグで異常が検出されていないと判別すると（ステップＳ３０２：ＮＯ）、回路設計支援処理を終了する。
【００５８】
一方、ＣＰＵ１１は、オンチップデバッグで異常が検出されたと判別すると（ステップＳ３０２：ＹＥＳ）、異常が検出された時点を特定する（ステップＳ３０３）。ＣＰＵ１１は、異常が検出された時点を特定すると、電子回路４７を再動作させて、異常が検出された時点の所定サイクル数前まで電子回路４７の動作を進める（ステップＳ３０４）。本実施形態では、異常が検出された時点の所定サイクル数前の時点を、デバッグ手法をオンチップデバッグからシミュレーションに切り替える切替段階とする。また、ここでのサイクル数は、電子回路４７に含まれる各多サイクル演算器の演算実行に要するサイクル数のうちの最も大きい数とする。次に、ＣＰＵ１１は、電子回路４７中のデータを取得する（ステップＳ３０５）。
【００５９】
次に、ＣＰＵ１１は、ステップＳ３０５で取得したデータを用いて電子回路４７の状態を再現する（ステップＳ３０６）。次に、ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めたか否かを判別する（ステップＳ３０７）。
【００６０】
ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めていないと判別すると（ステップＳ３０７：ＮＯ）、電子回路４７の動作を１サイクル分進め（ステップＳ３０８）、電子回路４７中のデータを取得する（ステップＳ３０９）。さらに、ＣＰＵ１１は、ステップＳ３０９で取得したデータを用いて、コンピュータ上で１サイクル分のシミュレーションを実行する（ステップＳ３１０）。
【００６１】
一方、ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めたと判別すると（ステップＳ３０７：ＹＥＳ）、回路設計支援処理を終了する。ユーザは、以上のシミュレーションの結果に基づいて、異常箇所を詳細に調べることができる。
【００６２】
本実施形態に係る回路設計支援装置１００によれば、デバッグしようとする電子回路４７に多サイクル演算器もしくはパイプライン演算器が含まれている場合であっても、オンチップデバッグにより取得したデータを用いて正確にシミュレーションをすることができる。従って、本実施形態に係る回路設計支援装置１００によれば、第１の実施形態に係る回路設計支援装置１００と同様、ユーザが電子回路４７のデバッグを効率的に行うことを支援できる。
【００６３】
（第３の実施形態）
第２の実施形態では、取得したデータを用いてコンピュータ上で電子回路４７の状態を再現した後、電子回路４７の動作を１サイクル分進めるたびに、１サイクル分のシミュレーションを実行する例を示した。しかし、取得したデータを用いてコンピュータ上で電子回路４７の状態を再現した後、電子回路４７の動作を多サイクル演算器の演算に要するサイクル数分進めた後に、当該サイクル数分のシミュレーションをまとめて実行してもよい。以下、図９に示すフローチャートを参照して、本実施形態に係る回路設計支援装置１００が実行する回路設計支援処理について説明する。なお、本実施形態に係る回路設計支援装置１００の構成は、第１、２の実施形態に係る回路設計支援装置１００と同様であるため説明を省略する。
【００６４】
まず、ＣＰＵ１１は、異常を検出するまで電子回路４７の動作を進める（ステップＳ４０１）。そして、ＣＰＵ１１は、オンチップデバッグで異常が検出されたか否かを判別する（ステップＳ４０２）。ＣＰＵ１１は、オンチップデバッグで異常が検出されていないと判別すると（ステップＳ４０２：ＮＯ）、回路設計支援処理を終了する。
【００６５】
一方、ＣＰＵ１１は、オンチップデバッグで異常が検出されたと判別すると（ステップＳ４０２：ＹＥＳ）、異常が検出された時点を特定する（ステップＳ４０３）。ＣＰＵ１１は、異常が検出された時点を特定すると、電子回路４７を再動作させて、異常が検出された時点の所定サイクル数前まで電子回路４７の動作を進める（ステップＳ４０４）。本実施形態では、第２の実施形態と同様、異常が検出された時点の所定サイクル数前の時点を、デバッグ手法をオンチップデバッグからシミュレーションに切り替える切替段階とする。また、ここでのサイクル数は、電子回路４７に含まれる各多サイクル演算器の演算実行に要するサイクル数のうちの最も大きい数とする。次に、ＣＰＵ１１は、電子回路４７中のデータを取得する（ステップＳ４０５）。
【００６６】
次に、ＣＰＵ１１は、ステップＳ４０５で取得したデータを用いて電子回路４７の状態を再現する（ステップＳ４０６）。次に、ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めたか否かを判別する（ステップＳ４０７）。
【００６７】
ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めていないと判別すると（ステップＳ４０７：ＮＯ）、電子回路４７の動作を１サイクル分進め（ステップＳ４０８）、電子回路４７中のデータを取得する（ステップＳ４０９）。そして、ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めたか否かを判別する処理（ステップＳ４０７：ＮＯ）に処理を戻す。
【００６８】
一方、ＣＰＵ１１は、電子回路４７の動作を異常が検出された時点まで進めたと判別すると（ステップＳ４０７：ＹＥＳ）、ステップＳ４０９で取得したデータを用いて、動作を進めたサイクル数分のシミュレーションを実行する（ステップＳ４１０）。ユーザは、以上のシミュレーションの結果に基づいて、異常箇所を詳細に調べることができる。
【００６９】
本実施形態に係る回路設計支援装置１００によれば、第２の実施形態に係る回路設計支援装置１００と同様に、デバッグしようとする電子回路４７に多サイクル演算器もしくはパイプライン演算器が含まれている場合であっても、オンチップデバッグにより取得したデータを用いて正確にシミュレーションをすることができる。従って、本実施形態に係る回路設計支援装置１００によれば、第１、第２の実施形態に係る回路設計支援装置１００と同様、ユーザが電子回路４７のデバッグを効率的に行うことを支援できる。
【００７０】
（第４の実施形態）
第１〜３の実施形態では、何れか１つの記述レベルの回路記述を変換して得られたシミュレーション用コードを用いて電子回路４７をシミュレーションする例を示した。しかし、複数の記述レベルの回路記述のそれぞれを変換して得られたシミュレーション用コードのそれぞれを用いて電子回路４７をシミュレーションすることもできる。かかる構成によれば、シミュレーション結果を比較することにより、検出した異常が、ＤＲＰ４６に書き込んだコンフィギュレーションコードの不具合によるものか、あるいは、それ以外の不具合によるものかを切り分けることが可能となる。以下、図１０に示すフローチャートを参照して、本実施形態に係る回路設計支援装置１００が実行する回路設計支援処理について説明する。なお、本実施形態に係る回路設計支援装置１００の構成は、第１〜３の実施形態に係る回路設計支援装置１００と同様であるため説明を省略する。
【００７１】
まず、ＣＰＵ１１は、異常を検出するまで電子回路４７の動作を進める（ステップＳ５０１）。そして、ＣＰＵ１１は、オンチップデバッグで異常が検出されたか否かを判別する（ステップＳ５０２）。ＣＰＵ１１は、オンチップデバッグで異常が検出されていないと判別すると（ステップＳ５０２：ＮＯ）、回路設計支援処理を終了する。
【００７２】
一方、ＣＰＵ１１は、オンチップデバッグで異常が検出されたと判別すると（ステップＳ５０２：ＹＥＳ）、異常が検出された時点を特定する（ステップＳ５０３）。ＣＰＵ１１は、異常が検出された時点の特定処理を終了すると、電子回路４７を再動作させて、異常が検出された時点の１サイクル前まで電子回路４７の動作を進める（ステップＳ５０４）。次に、ＣＰＵ１１は、電子回路４７中のデータを取得する（ステップＳ５０５）。
【００７３】
次に、ＣＰＵ１１は、Ｃレベルシミュレーションを実行する（ステップＳ５０６）。具体的には、ＣＰＵ１１は、ステップＳ５０５で取得したデータとＣ言語レベル記述を変換して得られたシミュレーション用コードとを用いてシミュレーションを実行する。また、ＣＰＵ１１は、ＲＴＬシミュレーションを実行する（ステップＳ５０７）。具体的には、ＣＰＵ１１は、ステップＳ５０５で取得したデータとＲＴＬ記述を変換して得られたシミュレーション用コードとを用いてシミュレーションを実行する。
【００７４】
そして、ＣＰＵ１１は、各記述レベルのシミュレーション結果が同じであるか否かを判別する（ステップＳ５０８）。
【００７５】
ＣＰＵ１１は、各記述レベルのシミュレーション結果が同じであると判別すると（ステップＳ５０８：ＹＥＳ）、ＤＲＰ４６に書き込んだコンフィギュレーションコードに不具合があると判別する（ステップＳ５０９）。そして、ＣＰＵ１１は、その旨のメッセージ等を表示装置２０に表示させる等してユーザに提示し、回路設計支援処理を終了する。
【００７６】
一方、ＣＰＵ１１は、各記述レベルのシミュレーション結果が同じではないと判別すると（ステップＳ５０８：ＮＯ）、コンフィギュレーションコード以外に不具合があると判別する（ステップＳ５１０）。そして、ＣＰＵ１１は、その旨のメッセージ等を表示装置２０に表示させる等してユーザに提示し、回路設計支援処理を終了する。
【００７７】
本実施形態に係る回路設計支援装置１００によれば、複数の記述レベルのシミュレーション結果を比較することにより、異常が検出された場合、それが、ＤＲＰ４６に書き込んだコンフィギュレーションコードの不具合によるものか、あるいは、それ以外の不具合によるものかを判別することができる。従って、本実施形態に係る回路設計支援装置１００によれば、ユーザが電子回路４７のデバッグを効率的に行うことを支援できる。
【００７８】
なお、本発明に係る回路設計支援装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータシステムに、上記動作を実行するためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する回路設計支援装置を構成しても良い。
【００７９】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータシステムにダウンロード等することで、回路設計支援装置を構成しても良い。
【００８０】
本出願は、２００９年２月１８日に出願された日本国特許出願特願２００９−３４８６７に基づく。本明細書中に、その明細書、特許請求の範囲、図面全体を参照して取り組むものとする。
【産業上の利用可能性】
【００８１】
本発明は、例えば、電子回路の回路設計を支援する回路設計支援装置に利用することができる。
【符号の説明】
【００８２】
１０  バス
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ハードディスク装置
１５  表示制御部
１６  インターフェース
２０  表示装置
３０  入力装置
４０  ターゲット基板
４１  インターフェース
４２  コード書き込み部
４３  回路制御部
４４  データ書き込み部
４５  データ読み出し部
４６  ＤＲＰ
４７  電子回路
５１、５２、５３、５４  レジスタ
６０  演算器
６１、６２  加算器
７０  多サイクル演算器
７１、７２  フリップフロップ
７３、７４  外部レジスタ
１００  回路設計支援装置
１１０  オンチップデバッグ部
１２０  記憶部
１２１  シミュレーション用コード
１３０  シミュレーション部
１０００  回路設計支援システム
【図１】
2010095635.tif 000003
【図２】
2010095635.tif 000004
【図３】
2010095635.tif 000005
【図４】
2010095635.tif 000006
【図５】
2010095635.tif 000007
【図６】
2010095635.tif 000008
【図７】
2010095635.tif 000009
【図８】
2010095635.tif 000010
【図９】
2010095635.tif 000011
【図１０】
2010095635.tif 000012
【手続補正書】
【提出日】平成23年8月11日(2011.8.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグ部と、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーション部と、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出部と、を備え、
前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする回路設計支援装置。
【請求項２】
所定の記述レベルの回路記述に基づいて、前記集積回路に書き込むコンフィギュレーションコードを生成するコンフィギュレーションコード生成部と、
生成された前記コンフィギュレーションコードを前記集積回路に書き込むコンフィギュレーションコード書込部と、をさらに備え、
前記電子回路は、前記コンフィギュレーションコードが前記集積回路に書き込まれることで、前記集積回路上に実装される、
ことを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
所定の記述レベルの回路記述に基づいて、前記シミュレーション用コードを生成するシミュレーション用コード生成手段をさらに備える、
ことを特徴とする請求項１又は２に記載の回路設計支援装置。
【請求項４】
前記切替段階は、前記異常検出部により特定された時点の１サイクル前の時点である、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項５】
前記電子回路は、演算の実行に複数サイクルを要するとともに外部から参照されない演算途中の前記データを内部に有する複数サイクル演算器を含み、
前記切替段階は、前記異常検出部により特定された時点より前記複数サイクル分前の時点であり、
前記オンチップデバッグ部は、前記シミュレーション部により前記切替段階における前記電子回路の状態が再現されると、前記電子回路を１サイクル分動作させる処理と前記電子回路中のデータを抽出する処理とを、前記異常検出部により特定された時点に到達するまで繰り返し、
前記シミュレーション部は、前記電子回路が１サイクル分動作する度に、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて、前記電子回路の動作をシミュレーションする、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項６】
前記電子回路は、演算の実行に複数サイクルを要するとともに外部から参照されない演算途中の前記データを内部に有する複数サイクル演算器を含み、
前記切替段階は、前記異常検出部により特定された時点より前記複数サイクル分前の時点であり、
前記オンチップデバッグ部は、前記シミュレーション部により前記切替段階における前記電子回路の状態が再現されると、前記電子回路を１サイクル分動作させる処理と前記電子回路中のデータを抽出する処理とを、前記異常検出部により特定された時点に到達するまで繰り返し、
前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて、前記切替段階から前記特定された時点までの前記電子回路の動作をシミュレーションする、
ことを特徴とする請求項１乃至３の何れか１項に記載の回路設計支援装置。
【請求項７】
前記シミュレーション部は、前記電子回路を表現する第１の回路記述を変換して得られる第１のシミュレーション用コードを用いて当該電子回路の動作をシミュレーションするとともに、当該第１の回路記述に基づいて生成された第２の回路記述を変換して得られる第２のシミュレーション用コードを用いて当該電子回路の動作をシミュレーションし、当該第１のシミュレーション用コードを用いたシミュレーションの結果と当該第２のシミュレーション用コードを用いたシミュレーションの結果とを比較することにより、前記コンフィギュレーションコードに異常があるか否かを判別する、
ことを特徴とする請求項２乃至４の何れか１項に記載の回路設計支援装置。
【請求項８】
前記シミュレーション部は、前記第１のシミュレーション用コードを用いたシミュレーションの結果と前記第２のシミュレーション用コードを用いたシミュレーションの結果とが同じである場合に、前記コンフィギュレーションコードに異常があると判別する、
ことを特徴とする請求項７に記載の回路設計支援装置。
【請求項９】
オンチップデバッグ部が、集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
シミュレーション部が、前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
異常検出部が、前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を備え、
前記オンチップデバッグステップにおいて、前記オンチップデバッグ部は、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップにおいて、前記シミュレーション部は、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする回路設計支援方法。
【請求項１０】
コンピュータに、
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を実行させるためのプログラムであって、
前記オンチップデバッグステップでは、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップでは、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とするプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、電子回路のデバッグを効率的に行うのに好適な回路設計支援装置、回路設計支援方法、ならびに、これらをコンピュータ上で実現するためのプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
上記目的を達成するために、本発明のその他の観点に係るプログラムは、
コンピュータに、
集積回路上に実装された電子回路を当該集積回路上で動作させるとともに当該電子回路中のデータを抽出するオンチップデバッグステップと、
前記電子回路を表現するシミュレーション用コードを用いて前記電子回路の動作をシミュレーションするシミュレーションステップと、
前記電子回路の動作異常を検出し、該動作異常を検出した時点を特定する異常検出ステップと、を実行させるためのプログラムであって、
前記オンチップデバッグステップでは、前記動作異常が検出されると、前記特定された時点より所定サイクル数前の時点である切替段階まで当該電子回路を再動作させ、さらに、当該電子回路中の前記データを抽出し、
前記シミュレーションステップでは、前記シミュレーション用コードと前記オンチップデバッグ部により抽出された前記データとを用いて前記切替段階における前記電子回路の状態を再現した後、当該切替段階後の当該電子回路の動作をシミュレーションする、
ことを特徴とする。
【国際調査報告】
2010095635.tif 000013
2010095635.tif 000014
2010095635.tif 000015