(57)【要約】      （修正有）【課題】ソフトウェアプログラムによるハードウェアのテスト時の効率化と高品質化を目的とする。【解決手段】実際に使用するハードウエア駆動用プログラムを利用し、任意の箇所でアイドルサイクルを挿入できるようにして、様々な状態における論理機能の挙動を確かめることができるようにし、設定パラメータの変更が可能であることを示すコメントを挿入したり、プログラムの行数を指示詞にしてパラメータ範囲を記述することにより、設定パラメータを無作為に変更できるようにし、また、プログラムの行数を指示詞にして実行順序を記述することにより、プログラムの実行順序を無作為に変更できるようにすることにより、ソフトウエア資源の再利用を図り、ハードウエア検証の効率化を実現した。【選択図】図１
2007094529.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアを駆動するプログラムにおいて、アイドルサイクルを挿入できる位置を自動的に検出し、適宜挿入を行い、プログラムを実行することを特徴とするハードウェア機能検証方式。
【請求項２】
プログラム実行時に、実際にデータ転送を行う際に、転送間に無作為にアイドルサイクルを挿入できることを特徴とするハードウェア機能検証方式。
【請求項３】
プログラムに、その行の設定パラメータが変更可能であることを示すコメントを挿入することにより、設定パラメータを無作為に変更することが可能であることを特徴とするハードウェア機能検証方式。
【請求項４】
プログラムの行数を指示詞にしてパラメータ範囲を記述することにより、設定パラメータを無作為に変更することが可能であることを特徴とするハードウェア機能検証方式。
【請求項５】
プログラムの行数を指示詞にして実行順序を記述することにより、プログラムシーケンスの実行順序を任意に変更することが可能であることを特徴とするハードウェア機能検証方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアによるハードウェア論理回路の機能検証方式に関する。
【背景技術】
【０００２】
従来、ＣＰＵ等のソフトウェアを実行することができる論理回路を有するハードウェアの機能検証は、特開平５−５３８５２に記載されているように、必要十分なテストを用意し、それらを実行することによってハードウェアの正当性を確認するという手法が採られていた。
【特許文献１】特開平５−５３８５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上記従来の技術例ではハードウェアが十分動作すると考えられるだけのテストを用意しなければならず、テストシーケンスが冗長であったり、シミュレーションに時間がかかったりといった問題があった。
【０００４】
また、処理の流れが似通ったソフトウェアプログラムによるハードウェアの動作は、ハードウェアにアクセスするタイミングや、プログラムシーケンス、ハードウェアに対するパラメータの設定が似通っており、やはり特定の動作しかせず、ハードウェア論理機能の挙動を十分にテストすることができないといった課題があった。
【０００５】
本発明は、上述したようなソフトウェアプログラムによるハードウェアのテスト時の効率化と高品質化を目的とする。また、ソフトウェア・ハードウェアを協調して開発することを容易にすることも目的とする。
【課題を解決するための手段】
【０００６】
前述の課題を解決する為、
第１の手段たる本発明の請求項１に記載したソフトウェアによるハードウェア機能検証方式は、ハードウェア駆動用プログラムを解析して、ハードウェアに対するアクセスを遅らせることができるwait関数を挿入できる箇所を抽出し、実行するテストに応じてwait関数を挿入する手段を有することを特徴とし、また本発明の請求項２に記載したソフトウェアによるハードウェア機能検証方式は、ハードウェア駆動プログラム実行時に実際にデータ転送を行うバスＩ／Ｆ機構において、何らかの手法で転送間に無作為にアイドルサイクルを挿入できることを特徴とする。
【０００７】
よって、ハードウェアに対するアクセスのタイミングに冗長度を持たせることができるようになり、ハードウェアの様々な状態における論理機能の挙動を確かめることができるようになる。
【０００８】
また、第２の手段たる請求項３に記載したソフトウェアによるハードウェア機能検証方式は、ハードウェア駆動プログラムにおいて、ハードウェアに対する変更可能なパラメータの設定を行っている箇所において、そのパラメータが変更可能である旨のコメントをあらかじめ埋め込んでおくことによって、テストプログラム生成装置がテストパラメータ変更コメントを解釈し、テスト実行時のパラメータを変更したプログラムを作成する手段を有することを特徴とする。また、請求項４に記載したソフトウェアによるハードウェア機能検証方式は、プログラムに、テストパラメータ変更コメントを埋め込む代わりに、プログラムの行数を指示詞にして、パラメータ変更指示を別のプログラムとして記述することを特徴とする。
【０００９】
また、第３の手段たる請求項５に記載したソフトウェアによるハードウェア機能検証方式は、ハードウェア駆動プログラムにおいて、プログラムの行数を指示詞にして、プログラムシーケンスの実行順序の指示を別のプログラムとして記述し、任意にプログラムシーケンスの実行順序を変更することができることを特徴とする。
【００１０】
よって、ハードウェアテスト用に、多くのテストプログラムを用意したり、冗長なテストプログラムを複数流したりする必要が無く、ハードウェアの検証作業を効率化することが出来る。
【発明の効果】
【００１１】
本願の請求項１に記載した発明によれば、代表的なテストプログラムより、ハードウェアに対して様々な動作を起こすシーケンスを自動的に作り出すことができ、テスト記述の削減、および無駄なテストを流すことを抑制することにより、ハードウェア機能検証期間の短縮が実現される。また、実際のハードウェアで使用するソフトウェアを利用することにより、テスト用に新たにプログラムを開発する必要が無く、システム開発全体の効率も向上する。
【発明を実施するための最良の形態】
【００１２】
（実施例１）
図１は、本発明の第１の実施例を表し、本発明の第１の手段であるテストプログラムに対しアイドルサイクルを挿入する処理の流れを表す。まず、テストプログラムの元のプログラムとなるハードウェア駆動用プログラムを用意する。次に、そのプログラムを構文解析しアイドルサイクルを挿入できる個所を抽出する。その個所を抽出する方法としては、例えば、まずハードウェアとのアクセスを行うシステムコール呼出しを含む関数を抽出し、その関数が呼ばれているシーケンスの前後行を挿入ポイントと定める方法や、システムコール呼出しを含む関数自体にアイドルサイクルを挿入する方法などがある。アイドルサイクル挿入個所の抽出を行った後に、自動挿入するかどうかを何らかの形で選択し、自動挿入の場合は、抽出した挿入個所に任意のサイクル数プログラムの実行を遅らせるシーケンスを任意の個所に挿入する。また、自動挿入しない場合は、何らかの形で挿入できる箇所をユーザーに通知し、ユーザーはその挿入箇所リストから、挿入したい箇所および挿入アイドルサイクル数を選択および入力することにより、アイドルサイクルの挿入を行う。その結果、その結果得られたプログラムにより、冗長度の増したさまざまな状態でのハードウェア機能検証を行うことができる。図２は、図１の処理に対する入力プログラムとしてのＣ言語によるハードウェア駆動プログラムの例と、処理によって得られたテストプログラムを示す。この例では、プログラムの実行を遅らせるシーケンスを、遅らせるサイクル数を引数とする関数を用意し、その関数を呼び出すことによって実現している。
【００１３】
（実施例２）
図３は、本発明の第２の実施例を表し、本発明の第１の手段であるテストプログラムに対しアイドルサイクルを挿入する処理を別の手段で実現する場合を表す。この方法では、元になるハードウェア駆動用プログラムにアイドルサイクルを挿入するのではなく、そのプログラムを実際にハードウェアシミュレータを用いて実行する際に、プログラムの命令をハードウェアのバス上の転送として出力するＢＦＭ（Bus Functional Model）などのＩ／Ｆ部において、アイドルサイクルを挿入することにより実現する。このＩ／Ｆ部において、プログラムを実行形式に変換し得られたプログラムからバス上の転送を行う命令が呼び出された際に、任意のサイクル数コマンドの実行を遅らせることにより、第１の実施例と同様の効果を得ることができる。
【００１４】
（実施例３）
図４は、本発明の第３の実施例を表し、本発明の第２の手段であるハードウェアに対する変更可能なパラメータの設定を任意に変換する処理の流れを示す。まず、テストプログラムの元のプログラムとなるハードウェア駆動用プログラムを用意する。次に、そのプログラムにおいて、検証対象のハードウェアに対する動作モードなどの設定値を定義している箇所に、後段のパラメータ抽出処理において検出が容易になる特定のキーワード付きコメントを挿入する。その際、特定のキーワードと共に、そのパラメータに対する設定可能な値の範囲を記述する。次に、その結果得られたソースコードを用いてパラメータ設定値変更箇所を抽出し、更に、コメントに含まれるそのパラメータの設定範囲から、任意にパラメータを変更することにより、テストプログラムを生成する。この方式の利点は、ソースコードを一元管理できることと、コメント挿入後のプログラムも挿入前と変わらずに使用することができる点である。図５は、上記手法を用いてＣ言語による入力プログラムにパラメータ抽出処理において認識できる形で、パラメータ変更用のコメントを挿入した例である。ここで、"＃ＤＶＰＣ："を抽出用キーワードとし、その後に続く値がプログラム中の変更する値、そしてその後に、設定できる範囲を記述する形を採っている。
【００１５】
（実施例４）
図６は、本発明の第４の実施例を表し、本発明の第２の手段であるハードウェアに対する変更可能なパラメータの背定を任意に変換する手段と第３の手段であるテストシーケンスの実行順序を任意に指示することができる手段の処理の流れを示す。まず、テストプログラムの元のプログラムとなるハードウェア駆動用プログラムを用意する。次に、そのプログラムを参照し、変更したいハードウェアに対する設定パラメータの値が記述されている箇所の行数を抽出する。また、テストシーケンスの実行順序を変更したい箇所の先頭の行数を抽出する。それらを元のプログラムとは別のパラメータ設定ファイルとして保存する。次に元のプログラムとパラメータ設定ファイルを入力として、設定パラメータを変更する箇所と、プログラムシーケンスの順番の入れ替えを行う箇所の抽出を行う。そして、次にパラメータ設定ファイルに記述された条件を元に、設定パラメータの変更およびプログラムの実行順序の変換を行ったテストプログラムを生成する。図７に、上記手法を用いてＣ言語による入力プログラムとパラメータ設定ファイルの記述例を示す。ここで、パラメータの設定の仕方として、行数:変更対象値:変更範囲という形を取り、変更範囲の指定の仕方として、a, b, cといった変更可能な値の羅列、ａ．．ｂといった変更可能範囲の提示などが可能である。また、パラメータ間に依存がある場合は、(行数x->行数y):(a)->(h)という書式を採ることにより、行数xがaという値の場合、行数yはhという値を採るといった記述も可能である。次にプログラムシーケンス実行順序の変更の仕方として、(実行順序変更ポイントの先頭行の羅列):実行順序の羅列といった記述をすることにより、設定を行った実行順序の中から任意に選択することによりテストプログラムのシーケンスを変更することが可能である。この際、実行順序を何も指定しなければ、その実行順序変更ポインタ間の順番が、完全に任意な形で生成される。この方式の利点は、元のソースコードを編集する必要が無いので、元のソースコードの品質が保たれる。また、より詳細なパラメータの設定が行い易い点が上げられる。しかし、もとのソースコードが編集された際、パラメータファイルで指示している行数と編集後のプログラムの行数が異なってしまう可能性がある。但し、ソースコードのバージョン管理ツール等を用いることにより、プログラムとパラメータ設定ファイルの同時性を維持することが可能である。例えば、ソースコード変更による行数の変更は、バージョン管理ツールが出力するパッチ情報より更新することが可能である。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施の形態に係るアイドルサイクルをプログラムに自動的に付加する方法を説明する図である。
【図２】本発明の第１の実施の形態に係るアイドルサイクルをＣのプログラムに対して自動的に付加した結果を示す図である。
【図３】本発明の第２の実施の形態に係るアイドルサイクルをプログラム実行時に自動的に付加する方法を説明する図である。
【図４】本発明の第３の実施の形態に係るテストパラメータの変更を行う方法を説明する図である。
【図５】本発明の第３の実施の形態に係るテストパラメータの変更を行う際のプログラムに埋め込むコメントの例を示した図である。
【図６】本発明の第４の実施の形態に係るテストパラメータの変更を行う別の方法を説明する図である。
【図７】本発明の第４の実施の形態に係るテストパラメータの変更を行う別の方法において、テストパラメータの記述の仕方の例を示した図である。
【図１】
2007094529.tif 000003
【図２】
2007094529.tif 000004
【図３】
2007094529.tif 000005
【図４】
2007094529.tif 000006
【図５】
2007094529.tif 000007
【図６】
2007094529.tif 000008
【図７】
2007094529.tif 000009