(57)【要約】【課題】不定値伝播による不具合検出を行うことができる再構成可能な論理デバイスのデバッグ装置を提供する。【解決手段】デバッグ装置は、設計回路により使用されないメモリブロックの未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する領域検出部２１４と、検出されたアクセスされない領域のための初期値を生成する初期値設定部２１５と、設定された初期値からその初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成部２１９と、論理デバイスの構成情報と未使用領域の構成情報とを結合して検証用構成情報を生成する構成情報結合部２１６と、生成された検証用構成情報を論理デバイスに読み込み、論理デバイスを動作させ、実行結果を出力するデバイス試験部２１７と、実行結果と実行期待値とが一致するか比較する出力結果判定部２１８と、を備える。【選択図】図２
2009245148.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能な論理デバイスのデバッグ装置であって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出手段と、
前記投機非アクセス検出手段によって検出された前記アクセスされない領域のための初期値を生成する初期値設定手段と、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成手段と、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成手段と、
前記構成情報結合生成手段によって生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験手段と、
前記論理デバイス実機試験手段によって出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較手段と、を備え、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験手段によって前記実行結果を出力し、前記実行結果比較手段によって当該実行結果と前記実行期待値とが一致しないときは、
不具合があったと判断し、当該不具合を自動で検出する
ことを特徴とするデバッグ装置。
【請求項２】
請求項１に記載のデバッグ装置であって、
前記論理デバイス実機試験手段によって前記論理デバイスを動作させ、動作後の前記未使用領域の値と、前記初期値とが一致するか比較する未使用領域比較手段を更に備え、
前記アクセスされない領域のための前記初期値を変更しながら、当該論理デバイスを動作させ、前記未使用領域比較手段によって当該未使用領域の値と前記初期値とが一致しないときは、
不具合があったと判断し、当該不具合を自動で検出する
ことを特徴とするデバッグ装置。
【請求項３】
請求項１又は２に記載のデバッグ装置であって、
前記初期値設定手段は、
前記投機非アクセス検出手段によって検出された前記アクセスされない領域のための初期値として所定の値を生成する
ことを特徴とするデバッグ装置。
【請求項４】
請求項１又は２に記載のデバッグ装置であって、
前記初期値設定手段は、
前記投機非アクセス検出手段によって検出された前記アクセスされない領域のための初期値として再現可能なランダムな値を生成する
ことを特徴とするデバッグ装置。
【請求項５】
請求項１乃至４の何れか１項に記載のデバッグ装置であって、
前記投機非アクセス検出手段は、
前記メモリアクセスの投機実行によってアクセスされる可能性がある領域を検出する投機領域検出手段と、
前記投機領域検出手段によって検出された前記アクセスされる可能性がある領域に、所定の値を前記初期値として設定するアクセス領域初期値設定手段と、
を含むことを特徴とするデバッグ装置。
【請求項６】
再構成可能な論理デバイスのデバッグ装置におけるデバッグ方法であって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出ステップと、
前記投機非アクセス検出ステップにおいて検出された前記アクセスされない領域のための初期値を生成する初期値設定ステップと、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成ステップと、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成ステップと、
前記構成情報結合生成ステップにおいて生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験ステップと、
前記論理デバイス実機試験ステップにおいて出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較ステップと、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験ステップによって前記実行結果を出力し、前記実行結果比較ステップによって当該実行結果と前記実行期待値とが一致しないときは、不具合があったと判断し、当該不具合を自動で検出する不具合検出ステップと、
を含むことを特徴とするデバッグ方法。
【請求項７】
請求項６に記載のデバッグ方法であって、
前記論理デバイス実機試験ステップによって前記論理デバイスを動作させ、動作後の前記未使用領域の値と、前記初期値とが一致するか比較する未使用領域比較ステップと、
前記アクセスされない領域のための前記初期値を変更しながら、当該論理デバイスを動作させ、前記未使用領域比較ステップによって当該未使用領域の値と前記初期値とが一致しないときは、
不具合があったと判断し、当該不具合を自動で検出する不具合検出ステップと、
を含むことを特徴とするデバッグ方法。
【請求項８】
請求項６又は７に記載のデバッグ方法であって、
前記初期値設定ステップは、
前記投機非アクセス検出ステップにおいて検出された前記アクセスされない領域のための初期値として所定の値を生成する初期値生成ステップ
を更に含むことを特徴とするデバッグ方法。
【請求項９】
請求項６又は７に記載のデバッグ方法であって、
前記初期値設定ステップは、
前記投機非アクセス検出ステップによって検出された前記アクセスされない領域のための初期値として再現可能なランダムな値を生成するランダム初期値生成ステップ
を更に含むことを特徴とするデバッグ方法。
【請求項１０】
請求項６乃至９の何れか１項に記載のデバッグ方法であって、
前記投機非アクセス検出ステップは、
前記メモリアクセスの投機実行によってアクセスされる可能性がある領域を検出する投機領域検出ステップと、
前記投機領域検出ステップによって検出された前記アクセスされる可能性がある領域に、所定の値を前記初期値として設定するアクセス領域初期値設定ステップと、
を含むことを特徴とするデバッグ方法。
【請求項１１】
再構成可能な論理デバイスのデバッグ装置におけるデバッグプログラムであって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出手順と、
前記投機非アクセス検出手順によって検出された前記アクセスされない領域のための初期値を生成する初期値設定手順と、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成手順と、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成手順と、
前記構成情報結合生成手順によって生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験手順と、
前記論理デバイス実機試験手順によって出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較手順と、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験手順によって前記実行結果を出力し、前記実行結果比較手順によって当該実行結果と前記実行期待値とが一致しないときは、不具合があったと判断し、当該不具合を自動で検出する不具合検出手順と、
をコンピュータに実行させることを特徴とするデバッグプログラム。
【請求項１２】
請求項１１に記載のデバッグプログラムであって、
前記論理デバイス実機試験手順によって前記論理デバイスを動作させ、動作後の前記未使用領域の値と、前記初期値とが一致するか比較する未使用領域比較手順と、
前記アクセスされない領域のための前記初期値を変更しながら、当該論理デバイスを動作させ、前記未使用領域比較手順によって当該未使用領域の値と前記初期値とが一致しないときは、不具合があったと判断し、当該不具合を自動で検出する不具合検出手順と、
を更にコンピュータに実行させることを特徴とするデバッグプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な論理デバイスのデバッグ装置、デバッグ方法及びデバッグプログラムに関する。
【背景技術】
【０００２】
近年、再構成可能な論理デバイスを用いたＬＳＩ（Large Scale Integration）開発において、ラピッド・プロトタイピング（Rapid Prototyping）方式の開発が盛んである。
【０００３】
そして、このラピッド・プロトタイピング方式により、ＬＳＩの設計・合成・実機試験の開発期間が短くなってきている。
【０００４】
また、論理回路の規模や実行サイクル数によっては、多少論理合成の時間が長くても、シミュレーションよりも実ハードウェアでデバッグを行う方が、ＴＡＴ（Turn Around Time）が短くなる場合がある。
【０００５】
また、ソフトウェアによるシミュレーションの場合と実ハードウェアにマッピングした場合とでは、論理的に異なる場合があり、最終的には実ハードウェアでの検証が必須である。
【０００６】
このため、より短ＴＡＴで正確なデバッグを行うため、低速なシミュレーションより、実ハードウェアにおけるデバッガの高機能化が期待されている。
【０００７】
ここで、例えば、デバッグに関するものが特許文献１に記載されている。
【特許文献１】特開２００２−４９５０６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、論理回路のデバッグは、論理シミュレータを用いて、不定値伝播を解析することが有効であることが知られている。
【０００９】
しかしながら、実ハードウェアでは不定というものは存在せず、"１"か"０"の２値のいずれかに固定されるため、不定値検出による回路デバッグを行うことが出来ない、という問題があった。
【００１０】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、論理デバイス自体に何ら付加回路を加えることなく、不定値伝播による不具合検出を行うことができる、再構成可能な論理デバイスのデバッグ装置、デバッグ方法及びデバッグプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明によれば、再構成可能な論理デバイスのデバッグ装置であって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出手段と、
前記投機非アクセス検出手段によって検出された前記アクセスされない領域のための初期値を生成する初期値設定手段と、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成手段と、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成手段と、
前記構成情報結合生成手段によって生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験手段と、
前記論理デバイス実機試験手段によって出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較手段と、を備え、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験手段によって前記実行結果を出力し、前記実行結果比較手段によって当該実行結果と前記実行期待値とが一致しないときは、
不具合があったと判断し、当該不具合を自動で検出する
ことを特徴とするデバッグ装置が提供される。
【００１２】
本発明によれば、再構成可能な論理デバイスのデバッグ装置におけるデバッグ方法であって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出ステップと、
前記投機非アクセス検出ステップにおいて検出された前記アクセスされない領域のための初期値を生成する初期値設定ステップと、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成ステップと、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成ステップと、
前記構成情報結合生成ステップにおいて生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験ステップと、
前記論理デバイス実機試験ステップにおいて出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較ステップと、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験ステップによって前記実行結果を出力し、前記実行結果比較ステップによって当該実行結果と前記実行期待値とが一致しないときは、不具合があったと判断し、当該不具合を自動で検出する不具合検出ステップと、
を含むことを特徴とするデバッグ方法が提供される。
【００１３】
本発明によれば、再構成可能な論理デバイスのデバッグ装置におけるデバッグプログラムであって、
前記論理デバイス内の１つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する投機非アクセス検出手順と、
前記投機非アクセス検出手順によって検出された前記アクセスされない領域のための初期値を生成する初期値設定手順と、
設定された前記初期値から当該初期値が記述された未使用領域の構成情報を生成する未使用領域構成情報生成手順と、
前記論理デバイスの構成情報と、生成された前記未使用領域の構成情報とを結合して、検証用構成情報を生成する構成情報結合生成手順と、
前記構成情報結合生成手順によって生成された前記検証用構成情報を前記論理デバイスに読み込み、当該論理デバイスを動作させ、実行結果を出力する論理デバイス実機試験手順と、
前記論理デバイス実機試験手順によって出力される前記実行結果と、実行期待値とが一致するか比較する実行結果比較手順と、
前記アクセスされない領域のための前記初期値を変更しながら、前記論理デバイス実機試験手順によって前記実行結果を出力し、前記実行結果比較手順によって当該実行結果と前記実行期待値とが一致しないときは、不具合があったと判断し、当該不具合を自動で検出する不具合検出手順と、
をコンピュータに実行させることを特徴とするデバッグプログラムが提供される。
【発明の効果】
【００１４】
本発明によれば、論理デバイス自体に何ら付加回路を加えることなく、不定値伝播による不具合検出を行うことができる、再構成可能な論理デバイスのデバッグ装置、デバッグ方法及びデバッグプログラムが提供される。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１６】
図１は、本実施の形態に係る再構成可能な論理デバイス１のデバッグ装置を示したものである。
図１に示すデバッグ装置１００は、計算部２００を備え、入力装置４００と、出力装置５００と、再構成可能な論理デバイス１と、に接続されている。
【００１７】
計算部２００は、デバッグ装置１００を統括制御するＣＰＵ２１０と、入力装置４００から入力を受付可能に接続するＩ／Ｏインターフェース部２２０と、主記憶部２４０を制御するメモリ制御Ｉ／Ｆ部２３０と、各種プログラムやデータを格納する主記憶部２４０と、データを格納するデータ蓄積部２６０と、データ蓄積部２６０を制御するメモリ制御Ｉ／Ｆ部２５０と、出力装置５００に接続されて結果を出力するＩ／Ｏインターフェース部２７０と、再構成可能な論理デバイス１と接続されるインターフェース部２８０とを備えている。
【００１８】
図２は、ＣＰＵ２１０の機能を示した機能ブロック図である。
【００１９】
図２に示すＣＰＵ２１０は、論理デバイス１内の1つ以上のメモリブロック内における、設計回路によって使用されない未使用領域において、メモリアクセスの投機実行によりアクセスされない領域を検出する領域検出部２１４（投機非アクセス検出手段）と、領域検出部２１４によって検出されたアクセスされない領域のための初期値を生成する初期値設定部２１５（初期値設定手段）と、設定された初期値からその初期値が記述された未使用領域の構成情報（以下、これを未使用領域構成情報ともいう。）を生成する未使用領域構成情報生成部２１９と、論理デバイス１の構成情報と未使用領域の構成情報とを結合して検証用構成情報を生成する構成情報結合部２１６（構成情報結合生成手段）と、構成情報結合部２１６によって生成された検証用構成情報を論理デバイス１に読み込み、その論理デバイス１を動作させ、実行結果を出力するデバイス試験部２１７（論理デバイス実機試験手段）と、デバイス試験部２１７によって出力される実行結果と実行期待値とが一致するかと、未使用領域の値と初期値設定部２１５によって設定された初期値とが一致するか比較する出力結果判定部２１８（実行結果比較手段及び未使用領域比較手段）と、を備えている。
【００２０】
そして、ＣＰＵ２１０は、アクセスされない領域のための初期値を変更しながら、デバイス試験部２１７によって実行結果を出力し、出力結果判定部２１８によって実行結果と実行期待値とが一致しないときは、不具合があったと判断し、その不具合を自動で検出する。また、ＣＰＵ２１０は、未使用領域の値と初期値とが一致しないときにも、不具合があったと判断し、その不具合を自動で検出するようになっている。
【００２１】
また、ＣＰＵ２１０は、コンパイルするＲＴＬ（Register Transfer Level）言語などの回路設計言語で記述されたソースコードや、コンパイル時に参照するファイルを管理するファイル管理部２１１と、回路設計言語で記述されたソースコードをコンパイルして、ゲートレベルのネットリスト（以下、ゲートレベルネットリストともいう。）を生成する論理合成部２１２と、ゲートレベルのネットリストから配置配線を行い、論理デバイス１に読み込み可能な構成情報を生成する構成情報生成部２１３と、を備えている。
【００２２】
入力装置４００は、キーボードやマウスなどの入力装置であり、設計者によって入力される機能を有している。
【００２３】
出力装置５００は、ディスプレイやプリンタなどの出力装置であり、出力結果判定部２１８の結果を出力する。
【００２４】
このように、デバッグ装置１００は、コンピュータ及びソフトウェアによって形成され、上記の各機能を実現している。
【００２５】
次に、再構成可能な論理デバイス１について、図面を用いて説明する。
【００２６】
図３は、一般的な再構成可能な論理デバイス１の構成を示す概略構成図である。
【００２７】
以下、再構成可能な論理デバイスの構成１を例にして説明するが、
本実施の形態では、再構成可能な論理デバイス（以下、これを単に論理デバイスということがある。）１を、部分再構成可能なデバイスや動的再構成可能な論理デバイスにも適用することができる。
【００２８】
図３に示す論理デバイス１は、レジスタ・メモリブロックなどの記憶素子または演算器からなるプロセッシングエレメント（図中では、ＰＥと表記する。）２と、配線３と、配線リソース、配線リソース間の接続を決めるスイッチ４と、論理デバイス１と外部回路（図示せず）との接続を行う入出力端子５と、論理デバイスの制御を行う制御器６と、を備えている。
【００２９】
制御器６は、論理デバイスを構成するレジスタ・メモリブロックなどの記憶素子（即ち、ＰＥである。）に値を書き込み・読み出しする機能を有している。
【００３０】
この論理デバイス１は、レジスタ・メモリブロックの初期値や、演算器の設定、或いは配線リソースのスイッチ４の設定、制御器６の設定等からなる構成情報を設定することにより、設計者が設計した回路を実現することができる。
【００３１】
次に、本実施の形態におけるメモリブロックの未使用領域について説明する。
【００３２】
図４は、使用するメモリブロック内の使用領域と、未使用領域との関係を示したものである。
【００３３】
論理デバイス１内のメモリブロックは、設計回路として記述されたメモリサイズと、論理デバイス１のメモリブロックのサイズの不一致により、全ての領域が使用されるとは限らないので、未使用領域が発生する場合がある。
【００３４】
例えば、図４の左側のメモリブロックの例では、上側が使用領域であり、下側が未使用領域となっていることを示している。
【００３５】
また、図４の右側のメモリブロックの例では、２つ以上の回路記述のメモリ領域を、１つのメモリブロックに割当て、メモリブロックを使用した例である。
【００３６】
この場合、アドレス計算の簡略化のため、メモリ領域の開始アドレスを２ｎにすることがあり、使用するメモリ領域の間に未使用領域が発生する場合がある。
【００３７】
また、論理デバイス１に特有の点として、多次元配列をメモリブロックに割当てる際にも同様に未使用領域が発生する。
【００３８】
つまり、多次元配列を１次元の深さを持つメモリブロックに割当てる際にアドレス生成器を付加するが、このアドレス生成に使用される乗算をシフタなどで代用し簡略化することが行なわれ、上述のような未使用領域が発生する。
【００３９】
本実施の形態では、このように、従来使用されていなかったこれらのメモリブロックの未使用領域を、デバッグ装置１００におけるデバッグ方法に利用することを特徴としている。
【００４０】
次に、図５は、メモリブロックの未使用領域を、デバッグ方法に利用したデバッグ装置の処理フローを示したフローチャートである。
【００４１】
図５に示すフローチャートでは、左側に通常フローを示し、右側に本実施の形態における検証フローを示している。
【００４２】
まず、図５に示す通常フロー（左側）について説明する。
【００４３】
ステップＳ１０において、ＣＰＵ２１０のファイル管理部２１１（図２）は、コンパイルするソースコード（例えば、Verilog-HDL言語やＶＨＤＬ言語）の抽出や、コンパイル時に参照する環境設定ファイルなどを準備する。
【００４４】
ステップＳ２０において、ＣＰＵ２１０の論理合成部２１２は、そのソースコードに対して論理合成を行い、例えば、Ｖｅｒｉｌｏｇ−ＨＤＬ言語で記載された回路から、ゲートレベルネットリストを生成する。
【００４５】
ここで、論理合成する際に、メモリやＦＩＦＯ（FirstIn-FirstOut）を使用する場合には、Word-bit構成のサイズを指定することができ、論理回路を始め、特殊セルなど、様々な回路構成を任意に設定できるものとする。
【００４６】
ステップＳ３０において、ＣＰＵ２１０の構成情報生成部２１３は、生成されたゲートレベルネットリストから配置配線を行い、構成情報（図中では、ユーザ設計構成情報と記載する。）を生成する。
【００４７】
ステップＳ４０において、ＣＰＵ２１０のデバイス試験部２１７は、生成された構成情報を再構成可能な論理デバイス１に読み込み、実機実行を行う。
【００４８】
ステップＳ５０において、ＣＰＵ２１０の出力結果判定部２１８は、予め用意された期待値（出力期待値ともいう。）と出力結果の比較を行い、出力期待値と異なる出力結果を得た実行結果に対して、不具合発生としてその結果を出力する。
【００４９】
次に、図５に示した本実施の形態に係る検証フロー（右側）について説明する。
【００５０】
本実施の形態では、ステップＳ２０の論理合成部２１２が論理合成を行う段階において、設計回路として記述されたメモリサイズと、論理デバイスのメモリブロックのサイズとの差から、メモリブロックの未使用領域情報と、設計回路を論理合成する際に判明する投機的メモリアクセスによって余分なアクセスが発生してしまう領域の情報を検出する機能を有している。
【００５１】
すなわち、ステップＳ２１において、ＣＰＵ２１０の領域検出部２１４は、設計回路として使用されない未使用領域と、余分なアクセスによって発生してしまう領域との情報を検出し、未使用・投機的メモリアクセス領域情報を生成する。
【００５２】
そして、ステップＳ２２において、ＣＰＵ２１０の初期値設定部２１５は、本来なら未使用である未使用・投機的メモリアクセス領域情報のための初期値を生成し、その値を未使用領域の初期値として生成する。
【００５３】
これにより、ステップＳ２３において、ＣＰＵ２１０の未使用領域構成情報生成部２１９は、生成された初期値に対応する未使用領域構成情報を生成する。
【００５４】
そして、ステップＳ３１において、ＣＰＵ２１０の構成情報結合部２１６は、ステップＳ３０において生成された構成情報と、ステップＳ２３において生成された未使用領域構成情報とをマージ（結合）する。
【００５５】
ステップＳ３２において、ＣＰＵ２１０の構成情報結合部２１６は、設計者によって設計された構成情報と、初期値が記述された未使用領域構成情報とがマージされた構成情報を用いて、論理デバイス１の検証用構成情報を生成する。
【００５６】
ステップＳ３３において、ＣＰＵ２１０のデバイス試験部２１７は、生成された検証用構成情報を、Ｉ／Ｏインターフェース部２８０を介して論理デバイス１に読み込み、実機実行を行う。
【００５７】
そして、ＣＰＵ２１０の出力結果判定部２１８は、論理デバイス１の実行結果に不一致が認められるか、或いは本来は未使用である未使用領域に変化が見られる場合には、設計回路に不具合があるものと判断し、設計者に出力装置５００を介して実機試験の結果を提示する。
【００５８】
これにより、設計者は、再構成可能な論理デバイス１に不具合が発生したことを知ることができるので、即座に不具合解析を実行することができる。
【００５９】
具体的には、ステップＳ３４において、ＣＰＵ２１０の出力結果判定部２１８は、実機試験によって論理デバイス１の出力結果が、出力期待値と一致するか否か判定を行う。
【００６０】
そして、出力結果が出力期待値と一致しない場合には（ステップＳ３４のｎｏ）、ステップＳ３７へ進み、設計者は不具合解析を行う。
【００６１】
一方、出力結果が出力期待値と一致する場合には（ステップＳ３４のｙｅｓ）、ステップＳ３５へ進み、未使用領域の初期値が一致するか判定を行う。
【００６２】
そして、未使用領域の初期値が一致しない場合には（ステップＳ３５のｎｏ）、ステップＳ３７へ進み、設計者は不具合解析を行う。
【００６３】
一方、未使用領域の初期値が一致する場合には（ステップＳ３５のｙｅｓ）、ステップＳ３６へ進み、実機試験を終了するか否か判定を行うようになっている。
【００６４】
ステップＳ３６において、実機試験を終了する場合には（ステップＳ３６のｙｅｓ）、ステップＳ３８へ進み、終了する。
【００６５】
一方、実機試験を終了しない場合には（ステップＳ３６のｎｏ）、ステップＳ２２に戻り、未使用領域の初期値生成から再度、実行するようになっている。
【００６６】
このように、本実施の形態では、「本来は未使用である未使用領域」の値を読み出して、その値を初期値として、検証用構成情報の生成を行い、未使用領域のための初期値を変更しながら実機検証を繰り返し行うことにより、設計回路の潜在的な不具合を検出することができる。
【００６７】
以上のように本実施の形態によれば、デバッグ装置１００は、論理デバイス１自体に何ら付加回路を加えることなく、不定値伝播による不具合検出を擬似的に行うことができる。
【００６８】
なお、本実施の形態で言う余分なメモリアクセスとは、以下のことをいう。
【００６９】
例えば、メモリアクセスを繰り返し行う繰り返し処理の最後において、高速化のためにアドレスの範囲を超えてメモりアクセスを行う回路を生成する場合があり、通常はこのメモリアクセスが発生しないように保護回路を付加する。
【００７０】
しかし、使用リソースを削減するためにこの保護回路を省略し、このメモリアクセスが発生することを許容することがある。
【００７１】
本実施の形態では、この保護回路を省略した場合に、その際に発生するこれらのアドレスにアクセスするものを、余分なメモリアクセスということにする。
【００７２】
なお、これらは、本来なら設計通りの動作であるが、不具合検出において擬似的にエラーとして検出されてしまうことを防ぐため、これらの余分なアクセスが発生してしまう領域の情報を生成し、未使用領域から除外するようにしている。
【００７３】
また、これらの余分なメモリアクセスは、本実施の形態ではこれに限定されるものではなく、設計者の意図する動作であっても不具合解析に支障を来すようなアクセスがあれば、それを余分なメモリアクセスとするようにしても良い。
【００７４】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００７５】
次に、更に詳細な実施例について、以下に説明する。
【００７６】
（第一実施例）
論理デバイス１は、設計回路を構成情報として読み込むことにより機能するが、本実施の形態のデバッグ装置１００は、メモリブロックにおける未使用領域であって、かつ投機的メモリアクセスによってもアクセスされない領域を検出し、その未使用領域のための初期値として所定の値を初期値として設定する。
【００７７】
ここで、この初期値は、所定の値に限定されるものではなく、初期値設定部２１５において再現可能なランダム値が任意に設定され、検証用構成情報を生成するようにしても良い。
【００７８】
そして、デバッグ装置１００は、生成された検証用構成情報を、Ｉ／Ｏインターフェース部２８０を介して論理デバイス１に読み込み、設計回路を動作させる。
【００７９】
そして、設計回路の構成情報に不具合が無ければ、論理デバイス１の「本来は未使用である未使用領域」に設定された内容（値）は、一切利用されることなく、設計者の期待する動作であって不一致のない実行結果を得ることができる。
【００８０】
これに対し、設計回路の構成情報に何らかの不具合が有れば、「本来は未使用である未使用領域」に設定された内容（値）が利用される可能性があり、設計者の期待しない動作であって未使用領域が利用された出力結果が得られる場合がある。
【００８１】
また、この未使用領域に設定された値（即ち、初期値である。）を変更しながら、実機試験を繰り返すことにより、設計回路の潜在的な不具合を自動的に検出することができる。
【００８２】
従って、設計者の意図しない作用を及ぼすメモリブロック及びそのアドレス情報が設計者に提示されるので、設計者は速やかに回路の問題箇所を把握し、不具合のある回路の修正を行うことができる。
【００８３】
（第二実施例）
第一実施例では、メモリブロックにおける未使用領域であって、かつ投機的メモリアクセスによってもアクセスされない領域（即ち、メモリブロックの未初期化部分）の値を設定し、設計回路を動作させた際の実行結果の変化を検出するようになっているが、第二実施例では、「本来は未使用である未使用領域」に所定の値を書き込んで、その値の変化を検出することによって、設計回路の意図しない動作を検出する。
【００８４】
具体的には、メモリブロックの未使用領域であって、かつ投機的メモリアクセスによってアクセスされない領域に、所定の値を書き込むことによって設定し、その後に論理デバイス１を動作させる。
【００８５】
そして、設計回路の構成情報に不具合が無ければ、論理デバイス１の「本来は未使用である未使用領域」に設定された所定の値は変化しない。
【００８６】
これに対し、設計回路の構成情報に何らかの不具合が有れば、未使用領域に設定された所定の値が変更される可能性があり、期待しない動作を検出できる場合がある。
【００８７】
この場合、例えば、未使用領域に設定する所定の値を少なくとも２種類（全て０、全て１）でよく、それぞれにおいて設計回路を動作させることにより、設計回路の潜在的な不具合を自動的に検出することができる。
【００８８】
そして、検出されたメモリブロック及びそのアドレス情報は設計者に提示され、設計者は速やかに回路の問題箇所を把握し、不具合のある回路の修正を行うことができる。
【００８９】
（第三実施例）
次に、第三の実施例では、未使用領域であって投機的メモリアクセスによってアクセスされる可能性がある領域に対してのみ、第一実施例、又は第二実施例で示した初期値の設定及び実機試験の不具合動作検出を行うことにより、投機的メモリアクセスを行なう回路に対して選択的に検査を行なう。
【００９０】
この場合、不具合箇所の特定にかかる繰り返し回数が、通常のデバッグにおける繰り返し回数よりも少ない回数で済むため、全体としてデバッグにかかる検証時間を短縮することができる、という更なる効果を有している。
【００９１】
更に、未使用領域の中の投機的メモリアクセスによってアクセスされる可能性がある領域のみ実機検証を行うことによって、不具合解析の精度を高めることができる、という更なる効果を有している。
【００９２】
（第四実施例）
次に、第四の実施例では、未使用領域に設定する初期値の設定値を工夫することにより、不具合発見の可能性を高める機構を示す。
【００９３】
図５のステップＳ２０の合成ステップにおいて、設計回路の記述であって、配列の宣言ビット幅、配列への読み書きの記述から、実効（実際に読み書きされる）ビット幅、また、それに初期値が付与されていれば取りうる値の範囲（値域）が分かり、メモリブロックに収められる値域が静的に求まる。
【００９４】
第四実施例では、これを正常な値域と定義する。一方、メモリブロックのビット幅で表現可能な値であって、正常な定義域ではない値の集合を、異常な値域と定義する。
【００９５】
そして、未使用領域に設定する値として、正常な閾値を採用した場合よりも異常な値域を採用する方が、異常な出力結果を引き起こす可能性が高い事が期待出来る。
【００９６】
つまり、第四実施例では、未使用領域情報に異常な値域が含まれる場合には、生成すべき初期値を未使用領域の異常な値域から選択することにより、より一層、不具合発見の可能性を高めることができる。
【図面の簡単な説明】
【００９７】
【図１】本実施の形態に係る再構成可能な論理デバイスのデバッグ装置を示したブロック図である。
【図２】本実施の形態に係るＣＰＵを構成する機能ブロック図である。
【図３】本実施の形態に係る再構成可能なデバイスの構成を示す概略構成図である。
【図４】本実施の形態に係るメモリブロックの使用領域と未使用領域との関係を示したメモリブロック構成図である。
【図５】本実施の形態に係るメモリブロックの未使用領域をデバッグに利用したデバッグ装置の処理フローを示したフローチャートである。
【符号の説明】
【００９８】
１    再構成可能な論理デバイス
２    レジスタ・メモリブロックなどの記憶素子または演算器からなるプロセッシングエレメント（ＰＥ）
３    配線
４    スイッチ
５    入出力端子
６    制御器
１００    デバッグ装置
２００    計算部
２１０    ＣＰＵ
２１１    ファイル管理部
２１２    論理合成部
２１３    構成情報生成部
２１４    領域検出部
２１５    初期値設定部
２１６    構成情報結合部
２１７    デバイス試験部
２１８    出力結果判定部
２１９    未使用領域構成情報生成部
２２０    Ｉ／Ｏインターフェース部
２３０    メモリ制御Ｉ／Ｆ部
２４０    主記憶部
２５０    メモリ制御Ｉ／Ｆ部
２６０    データ蓄積部
２７０    Ｉ／Ｏインターフェース部
２８０    Ｉ／Ｏインターフェース部
４００    入力装置
５００    出力装置
【図１】
2009245148.tif 000003
【図２】
2009245148.tif 000004
【図３】
2009245148.tif 000005
【図４】
2009245148.tif 000006
【図５】
2009245148.tif 000007