(57)【要約】【課題】ソフトウェアプログラムによる論理回路のテスト時の効率化と高品質化し、又、ソフトウェア・ハードウェアを協調して開発することを容易にすること。【解決手段】論理回路ブロックを制御するためのソフトウェア（以降、デバイスソフトと呼ぶ）を含む論理回路の検証において、デバイスソフトを複数指定し、それらのプログラム内の関数を取得する工程と、それらの関数を無作為に呼び出し、実行する工程を有し、又、検証対象となる論理回路内ブロックを制御するデバイスソフトから取得され、呼び出される関数へ渡される引数を取得する工程と、上記工程において取得された関数と引数との情報によって構成されるデバイスソフト関数データベースを作成する工程を有する構成とする。【選択図】図１
2006268481.tif 000002
【特許請求の範囲】
【請求項１】
論理回路ブロックを制御するためのソフトウェア（以降、デバイスソフトと呼ぶ）を含む論理回路の検証において、デバイスソフトを複数指定し、それらのプログラム内の関数を取得する工程と、それらの関数を無作為に呼び出し、実行する工程を有することを特徴とする論理回路機能検証方法。
【請求項２】
検証対象となる論理回路内ブロックを制御するデバイスソフトから取得され、呼び出される関数へ渡される引数を取得する工程と、上記工程において取得された関数と引数との情報によって構成されるデバイスソフト関数データベースを作成する工程を有することを特徴とする請求項１記載の論理回路機能検証方法。
【請求項３】
前記デバイスソフト関数データベース内に、関数を無作為に呼び出す機構を一時停止させる関数のデータを挿入し、その機構が呼び出す関数のタイミングを変更する工程を有することを特徴とする請求項１記載の論理回路機能検証方法。
【請求項４】
関数を無作為に選択し、関数呼び出し時に引数をランダムに生成する工程と、その引数を渡す工程を実行する手段を複数生成する工程を有することを特徴とする請求項１記載の論理回路機能検証方法。
【請求項５】
検証対象となる論理回路内ブロックを制御するデバイスソフトを複数指定し、それらのプログラム内の関数を取得する工程と、その関数へ渡される引数を取得する工程と、その関数がアクセスする論理回路ブロック情報を取得する工程と、上記工程において取得された関数と引数とアクセスする論理回路ブロック情報から構成されるデバイスソフト関数データベースを作成する工程を有することを特徴とする請求項４記載の論理回路機能検証方法。
【請求項６】
論理回路ブロックに対するアクセス状態情報を公開し、上記プロセスが複数生成され、それぞれのプロセスにおいて呼び出された関数がアクセスする論理回路ブロックでの競合を回避する工程を有する請求項４記載の論理回路機能検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高級言語によって記述されたソフトウェアを使用する論理回路の機能検証方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵ等のソフトウェアを実行することができる論理回路を有する論理回路の機能検証には、ソフトウェアプログラム中でのシーケンスを変更したテストプログラムを作成し、それを実行することによってハードウェアの正当性を確認するという検証手法が採られ検証の効率化を図っていた。
【０００３】
【特許文献１】特開平６−２５９２４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術例では、複数の論理回路ブロックから構成された論理回路システムに対するテストを行う場合、論理回路ブロック単体ずつのテストでは論理回路全体としての挙動を十分に実現することができず、論理回路を十分にテストできないという問題点がある。又、複数の論理回路ブロックから構成される論理回路システムに対するテストを行う場合、複数のソフトウェアを介するシーケンス等を変更できないという問題点があった。
【０００５】
本発明は、上記問題に鑑みてなされたもので、その目的とする処は、ソフトウェアプログラムによる論理回路のテスト時の効率化と高品質化し、又、ソフトウェア・ハードウェアを協調して開発することを容易にすることである。
【課題を解決するための手段】
【０００６】
上記課題を達成するため、請求項１記載の発明は、論理回路ブロックを制御するためのソフトウェア（以降、デバイスソフトと呼ぶ）を含む論理回路の検証において、デバイスソフトを複数指定し、それらのプログラム内の関数を取得する工程と、それらの関数を無作為に呼び出し、実行する工程を有するよう構成する。
【０００７】
請求項２記載の発明は、請求項１記載の論理回路機能検証方法において、検証対象となる論理回路内ブロックを制御するデバイスソフトから取得され、呼び出される関数へ渡される引数を取得する工程と、上記工程において取得された関数と引数との情報によって構成されるデバイスソフト関数データベースを作成する工程を有するように構成する。
【０００８】
請求項３記載の発明は、請求項１記載の論理回路機能検証方法において、請求項２記載のデバイスソフト関数データベース内に、関数を無作為に呼び出す機構を一時停止させる関数のデータを挿入し、その機構が呼び出す関数のタイミングを変更する工程を有するように構成する。
【０００９】
請求項４記載の発明は、請求項１記載の論理回路機能検証方法において、関数を無作為に選択し、関数呼び出し時に引数をランダムに生成する工程とその引数を渡す工程を実行する手段を複数生成する工程を有するように構成する。
【００１０】
請求項５記載の発明は、請求項４記載の論理回路機能検証方法において、検証対象となる論理回路内ブロックを制御するデバイスソフトを複数指定し、それらのプログラム内の関数を取得する工程と、その関数へ渡される引数を取得する工程と、その関数がアクセスする論理回路ブロック情報を取得する工程と、上記工程において取得された関数と引数とアクセスする論理回路ブロック情報から構成されるデバイスソフト関数データベースを作成する工程を有するように構成する。
【００１１】
請求項６記載の発明は、請求項４記載の論理回路検証方法において、論理回路ブロックに対するアクセス状態情報を公開し、上記プロセスが複数生成され、それぞれのプロセスにおいて呼び出された関数がアクセスする論理回路ブロックでの競合を回避する工程を有するように構成する。
【発明の効果】
【００１２】
本発明によれば、デバイスソフト実行の順番とタイミングに冗長度を持たせることが可能となり、論理回路ブロック制御用のデバイスソフトをシステムテストに流用することができるので、ソフトウェア開発資産の再利用性が高まり、又、システムテスト作成の省力化に繋がる。このように、デバイステストをシステムテスト用いることで、実際に使用される状況に近いシミュレートを行うことが可能となるので、検証効率の向上に繋がる。
【発明を実施するための最良の形態】
【００１３】
本発明の実施形態について図面を用いて説明する。
図１は、本発明の実施形態による論理回路機能検証を行うシステム構成を表す。１９は検証対象となる複数の論理回路ブロックから構成される論理回路を示す。１９は１５のＣＰＵと１６、１７の複数の論理デバイスから構成されており、ＣＰＵと論理デバイスは１８のシステムバスで接続されている。
【００１４】
１３は１６、１７のような論理デバイスを制御するためのデバイスソフトである。デバイスソフト１３はＣＰＵ１５によって実行される。デバイスソフト１３の命令はシステムバス１８を介し、論理デバイス１６、１７に発行され、論理デバイス１６、１７が制御される。デバイスソフト１３は複数である構成も考えられる。
【００１５】
１２はデバイスソフト１３に記述された関数情報のデータベースである。１２は１３から関数情報を抽出することで生成される。
【００１６】
１１は関数データベース上の関数を参照し、ランダムに関数を呼び出し、実行する手段を有する機構である。ここでは、一実施例としてＯＳによって生成されるプロセスとして定義する（以降、関数データベース上の関数を参照し、ランダムに関数を呼び出し、実行する手段を有する機構をプロセスと呼ぶ）。プロセス１１は複数である構成も考えられる。
【００１７】
１４は論理デバイス１６，１７のソフトウェアから論理デバイスへのアクセス状態を表すデータである。１４はテストプロセス１１が論理デバイスにアクセスする関数を呼び出すときに参照、更新される。
【００１８】
本発明における論理回路機能検証手法は、デバイスソフト内の関数を無作為に呼び出すために、検証対象となる論理回路１９を構成する論理デバイス１６、１７を制御するデバイスソフト群１３から関数情報を取得する。この工程について、図２を用いて説明する。
【００１９】
デバイスソフトＡ、Ｂ、Ｃ（２１、２２、２３）に存在する関数はそれぞれ、引数を持たないｆｕｎｃＡ（）、複数引数を持つｆｕｎｃＢ（ａｄｄｒ、ｄａｔａ）、１つの引数を持つｆｕｎｃＣ（ｉｎｔ）である。これらのデバイスソフト内に記述された関数の宣言文等を検索する等して、全てのデバイスソフト内の関数を抽出し、各関数のエントリのメモリ上の番地をポインタ等を用いて取得し、これに配列のように整数値のインデックスを持たせ配列の要素としてリストを構築する。
【００２０】
更に、関数が引数を持つ場合は、それらも同様に抽出し、関数の場合と同様に引数の番地でリストを構築する。又、関数内に論理ブロックへのアクセスが含まれている場合は対象となる論理ブロック情報も併せて取得する必要がある。引数が複数の場合は、それらを構造体等のデータ構造にし、一要素とする。このようにして、関数のリストと引数のリストのインデックスが同じ値をとる構成等によって関数とその引数とを対応させ、関数情報データベース２４を作成する。
【００２１】
プロセス０、１、２（２６、２７、２８）はデバイスソフト内の関数を呼び出す。
【００２２】
先ず、単数プロセスの場合における工程を図４のフローチャートを用いて説明する。
【００２３】
ステージ５１でプロセスは関数データベース２４から呼び出す関数をランダムに選択する。選択の方法としては、関数リストのインデックス値をキーにしたランダム選択等が考えられる。このとき、予めリストにプロセスを一時停止させる関数、例えばｓｌｅｅｐ関数と停止時間引数をリストに登録しておくと、ランダムにプロセスが停止し、関数の実行シーケンスに冗長度を付加することが可能になる。
【００２４】
ステージ５２で、選択した関数が引数を持つかどうかを調べる。この実現方法としては、選択された関数に対応する引数をリストから検索する等の手法が考えられる。選択した関数に引数が存在した場合は、ステージ５３に進み、プロセスは関数に渡すべき引数をリストから引数の数や型の情報を得る等してランダムな引数を生成する。ステージ５４で関数の実行を行う。ステージ５５で関数の実行が終了してプロセスは終了する。このステージ５５からプロセスを終了せずに再度ステージ５１へ戻り、次の関数の実行を行うことも可能である。
【００２５】
次に、複数プロセスの場合における工程を図３のフローチャートを用いて説明する。
【００２６】
ステージ３１でプロセスは関数データベース２４から呼び出す関数をランダムに選択する。選択の方法としては、関数リストのインデックス値をキーにしたランダム選択等が考えられる。このとき、予めリストにプロセスを一時停止させる関数、例えばｓｌｅｅｐ関数と停止時間引数をリストに登録しておくとランダムにプロセスが停止し、関数の実行シーケンスに冗長度を付加することが可能になる。
【００２７】
ステージ３２で、選択した関数が引数を持つかどうかを調べる。この実現方法としては、選択された関数に対応する引数をリストから検索する等の手法が考えられる。選択した関数に引数が存在した場合は、ステージ３３に進み、プロセスは関数に渡すべき引数をリストから引数の数や型の情報を得る等してランダムな引数を生成する。ステージ３４でプロセスは選択した関数を準備された引数を渡し、実行する。ステージ３５で関数実行中にシステムコール等で論理ブロックへのアクセスが発生したときにプロセスは対象となる論理ブロックがアクセスできるかを確認する。もしも、アクセスできない場合は一定時間待ち、再度アクセス確認をするというフローを繰り返す。
【００２８】
このアクセス方法の実現方法を図１と図２を用いて説明する。
【００２９】
例えば、図１においてプロセスとCPUが複数有り、プロセスの呼び出した関数の命令をＣＰＵが実行し、命令が共に同じ論理ブロックへアクセスするものである場合は、競合が発生する可能性がある。そこで、論理ブロックのアクセス状態を表すデータテーブル２９を使用する。データテーブル１４は論理ブロックのアクセス状態を表すフラグやセマフォ等の集合である。
【００３０】
関数から論理ブロックへのアクセスが発生した場合、プロセスはその関数がアクセスする論理ブロックを関数情報データベース２４から判断し、その論理ブロックのアクセス状態を表すデータをデータテーブル２９から参照する。プロセスはこれらのアクセス状態データを関数内での論理ブロックアクセスの開始と終了のときにアクセス状態を更新する。このことで、競合発生の可能性のあるアクセスを制限することが可能になる。
【００３１】
ステージ３６で関数の実行が終了してプロセスは終了する。このステージ３６からプロセスを終了せずに再度ステージ３１へ戻り、次の関数の実行を行うことも可能である。このような排他的アクセス可能なプロセスを複数用意し、ランダムに関数を実行することで、検証対象となる論理回路に関係する複数のデバイスソフトを関数単位でランダム且つ同時に動作させることが可能となる。
【００３２】
ＣＰＵ１５は実行可能な形式にされた関数からの制御文を受け取り、実行する。例えば、関数がデバイス０（１６）からデバイス１（１７）へシステムバス１８を介してデータを1バイト転送する制御を実行する場合、デバイス０から1バイト読み取り、デバイス１へ書き込む。このとき、必要があるならば、プロセスはデバイス１へとアクセスし、値を読出し、デバイス０からデバイス１へ正しくデータが転送されているかを確認し、エラーであればエラーメッセージを表示する。この場合、この工程を関数呼び出しを行うプロセス内で実行するか、又は、別プロセスを呼び出し、実行することも可能である。
【００３３】
又、関数実行に依存関係がある場合、又は、依存関係を持たせたい場合は、関数データベースを生成から関数実行の順序や条件を関数リストのインデックス値等をキーにして制約し、その制約に従って関数を選択する工程をプロセスが持つことで検証者が意図した事象を起こし易くなる。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施例の構成を示すブロック図である。
【図２】本発明の一実施例におけるデバイスソフトとプロセスとの関係を示す図である。
【図３】本発明のプロセスのフローチャートである。
【図４】単数プロセスの場合における工程を示すフローチャートである。
【符号の説明】
【００３５】
１１、２６〜２８  プロセス
１２、２４        関数情報データベース
１３、２１〜２３  デバイスソフト
１４、２９        論理ブロックのアクセス状態データテーブル
１５              ＣＰＵ
１６、１７        論理ブロック
１８              システムバス
１９              論理回路
【図１】
2006268481.tif 000003
【図２】
2006268481.tif 000004
【図３】
2006268481.tif 000005
【図４】
2006268481.tif 000006