(57)【要約】【課題】、小さいデータ量で経路を一意的に特定する経路データを提供することを目的とする。【解決手段】経路管理方法は、計算機シミュレーションにおいてテストベンチが検証対象に対して行なう操作をタスクとし、一連のタスクから構成される複数の経路がタスクの実行フローとして与えられたときに、実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を計算機により求めメモリに格納し、複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として計算機により求めメモリに格納し、第１の整数値に基づく第２の整数値により複数の経路の各々を計算機により一意に特定する各段階を含むことを特徴とする。【選択図】図８
2010026810.tif 000002
【特許請求の範囲】
【請求項１】
計算機シミュレーションにおいてテストベンチが検証対象に対して行なう操作をタスクとし、一連のタスクから構成される複数の経路がタスクの実行フローとして与えられたときに、
前記実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を計算機により求めメモリに格納し、
前記複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として計算機により求めメモリに格納し、
前記第１の整数値に基づく第２の整数値により前記複数の経路の各々を計算機により一意に特定する
各段階を含むことを特徴とする経路管理方法。
【請求項２】
前記第１の整数値を求める段階は、前記実行フロー中の全ての分岐の全ての枝に対して前記第１の整数値を求めることを特徴とする請求項１記載の経路管理方法。
【請求項３】
前記一意に特定する段階は、一の経路に含まれる枝を特定する前記第１の整数値の総和を前記第２の整数値として求め、該総和により前記一の経路を一意に特定することを特徴とする請求項１又は２に記載の経路管理方法。
【請求項４】
前記一意に特定する段階は、前記第２の整数値として一の整数が与えられると、該一の整数と前記メモリに格納された前記第１の整数値とに基づいて前記複数の経路の１つを特定することを特徴とする請求項１乃至３のいずれか一項に記載の経路管理方法。
【請求項５】
前記複数の経路の各々に割り振られた優先度をメモリに格納し、
前記メモリに格納された前記優先度の順番に従って、前記テストベンチにより前記複数の経路を前記検証対象に対して実行し、
実行済みの経路を前記第２の整数値により特定してメモリに記録する
各段階を更に含むことを特徴とする請求項１乃至４のいずれか一項に記載の経路管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の開示は、一般に計算機利用設計に関し、詳しくは回路等の設計対象の動作検証に関する。
【背景技術】
【０００２】
集積回路の設計においては、一般に、まずＲＴＬ（Register Transfer Level：レジスタ転送レベル）の抽象度でハードウェアを記述する。このレベルでは、レジスタとその間の論理機能及び信号伝達として、所望の論理を表現する。ＲＴＬ記述ができると、計算機シミュレーションにより、ＲＴＬ記述された回路の論理的な動作の妥当性を検証する。その後論理合成ツールにより、ＲＴＬ記述からゲートレベル記述を生成する。このレベルでは、各種論理ゲートとその間の接続により所望の回路図を表現する。ゲートレベル記述においてもまた、計算機シミュレーションにより、ゲートレベル記述された回路の論理的な動作の妥当性を検証する。
【０００３】
このような計算機シミュレーションによる検証においては、テストベンチが用いられる。テストベンチとは、検証対象の回路に入力信号を印加し、その結果として現れる回路の出力を観測するためのシミュレーション上での記述である。より一般的に言えば、テストベンチは、ＬＳＩ（大規模集積回路）等の検証対象の動作に影響を与える何らかの操作を検証対象に対して行う。例えば、検証対象がＬＳＩであれば、レジスタに対してデータを書き込んだり（パリティを偶数に設定する、割り込み動作を許可する、等）、割り込み信号を入力したり、リセットをかけたりする等の操作を行う。このようにテストベンチが検証対象に対して行う操作を以降においてタスクと呼ぶ。検証対象に対する検証動作は、一連のタスクからなる実行フローとして表現することができる。
【０００４】
図１は、一連のタスクからなる実行フローの一例を概念的に示す図である。図１において、Ａ、Ｂ、Ｃ、Ｄ、・・、Ｊの各々のノードが１つのタスクを表している。開始点Ｓｔａｒｔから終了点Ｅｎｄまでを、一連のノードとノード間の矢印とで結ぶ経路は、検証対象を実運用する時に検証対象に対して実行されうるタスクの実行フローを表している。この実行フローは、検証担当者が検証対象（ＬＳＩ回路等）の仕様を考慮して作成する。図１の開始点Ｓｔａｒｔから終了点Ｅｎｄへ至る全ての経路を実行し、どの経路を通っても検証対象が仕様通りに動作することを確認することにより、検証が行なわれる。検証対象の動作が仕様通りであるか否かの判断は、検証対象から出力されるデータを、所望の論理を示すリファレンスモデルから得た期待値データと比較する。出力データと期待値データとが等しければ、検証対象の動作が妥当であると判断することができる。
【０００５】
図２は、従来の経路実行方法の一例を示すフローチャートである。ステップＳ１において、経路をランダムに生成する。例えば図１に示す実行フローの例の場合、開始点Ｓｔａｒｔから終了点Ｅｎｄへ至る複数の経路のうちの１つをランダムに生成する。例えば生成した経路がＡＣＤＨＩであるとする。即ち、タスクＡ、Ｃ、Ｄ、Ｈ、Ｉをこの順番に実行する経路が生成されたとする。
【０００６】
ステップＳ２で、ステップＳ１で生成した経路が記憶領域に存在するか否かを判断する。即ち、生成した経路を示すデータが記憶領域に格納されているか否かを判断する。初期状態では、この記憶領域に格納されている経路データは無い。また既に幾つかの経路を実行した後の状態であれば、この記憶領域には、それまでに実行した経路を示すデータが格納されている。生成した経路を示すデータが既に記憶領域に格納されている場合には、既にこの経路は実行済みであるので、ステップＳ１に戻り再度経路をランダムに生成する。生成した経路を示すデータが記憶領域に格納されていない場合には、ステップＳ３に進む。
【０００７】
ステップＳ３で、生成された経路を実行する。即ち、テストベンチにより、当該経路に指定されるタスクを指定される順番で、検証対象に対して実行する。上記の例の場合であれば、テストベンチにより検証対象に対してタスクＡ、Ｃ、Ｄ、Ｈ、Ｉをこの順番で実行する。ステップＳ４で、実行した生成経路を記憶領域に格納する。即ち、実行した経路を示すデータを記憶領域に格納する。上記の例の場合、経路で実行した各タスクの識別子を順番に一列に並べたデータ「ＡＣＤＨＩ」を記憶領域に格納する。
【０００８】
ステップＳ５で、経路が全て実行されたか否かを判断する。例えば図１に示す実行フローの例の場合、開始点Ｓｔａｒｔから終了点Ｅｎｄへ至る複数の経路の全てが実行されたか否かを判断する。全ての経路が実行されていない場合、即ち未実行の経路がまだ有る場合には、ステップＳ１に戻り再度経路をランダムに生成し、以降の処理を繰り返す。全ての経路が実行された場合には、経路実行方法の処理を終了する。なお通常は、順次ランダム生成された経路を実行している最中に出力データと期待値データとの不一致が検出された場合には、回路設計に問題有りとして、計算機シミュレーションによる経路実行及び試験動作を中止する。
【０００９】
上記のような従来の経路実行方法においては、実行した経路に含まれる各タスクの識別子を順番に一列に並べて記憶領域に格納することにより、実行した経路を示すデータを記録していく。そして、記憶領域に格納されたタスクの識別子を一列に並べたデータを参照することにより、ランダムに生成した経路が既に実行した経路であるか否かを判断している。
【００１０】
図３は、記憶領域に記憶されるデータの内容を示す図である。図３に示すのは、経路「ＡＣＤＨＩ」、経路「ＡＢＨＪ」、経路「ＡＥＦＧＨＩ」、経路「ＡＢＨＩ」、及び経路「ＡＥＦＧＨＪ」をこの順番に実行した後に、記憶領域に格納される経路を示すデータである。このように経路を示すデータが記憶領域に記録されている状態で、新たにランダムに生成した経路が「ＡＢＨＪ」である場合、「ＡＢＨＪ」を記憶領域中の各経路のデータと比較することにより、生成した経路が既に実行した経路であるか否かを判断することができる。
【００１１】
このように検証動作において、一度実行した経路は再び実行することがないようにし、また重要度の高い経路を優先的に実行するように実行経路を決定すれば、効率的な検証が可能となる。しかしながら、経路を管理する手段として経路に含まれる全てのタスクの識別子を記憶するという上記のような管理方式では、全ての経路に含まれるタスクの総数に相当する量の記憶領域が必要となる。また記憶領域が大きくなることから、記憶領域から経路情報を検索するのに時間がかかるという問題がある。
【特許文献１】特開平９−１２８２６６号公報
【特許文献２】特開平１１−２３２１３７号公報
【特許文献３】特開平１０−３２０１９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
以上を鑑みると、小さいデータ量で経路を一意的に特定する経路データを提供することが望まれる。
【課題を解決するための手段】
【００１３】
経路管理方法は、計算機シミュレーションにおいてテストベンチが検証対象に対して行なう操作をタスクとし、一連のタスクから構成される複数の経路がタスクの実行フローとして与えられたときに、前記実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を計算機により求めメモリに格納し、前記複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として計算機により求めメモリに格納し、前記第１の整数値に基づく第２の整数値により前記複数の経路の各々を計算機により一意に特定する各段階を含むことを特徴とする。
【発明の効果】
【００１４】
少なくとも１つの実施例によれば、整数値により各経路を一意に特定するので、小さいデータ量で経路を一意的に特定する経路データを提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１６】
図４は、計算機シミュレーションにより検証対象の動作を検証する環境を示す図である。図４において、テストベンチ１０により、ＬＳＩ等の検証対象１１の動作の検証を行なう。
例えば、検証対象１１がＬＳＩであれば、レジスタに対してデータを書き込んだり（パリティを偶数に設定する、割り込み動作を許可する、等）、割り込み信号を入力したり、リセットをかけたりする等の操作を行う。このような計算機シミュレーションにおいてテストベンチ１０が検証対象１１に対して行なう操作をタスクとし、一連のタスクから構成される複数の経路がタスクの実行フローとして与えられる。具体的には、検証担当者が検証対象１１（ＬＳＩ回路等）の仕様を考慮して所望の動作を検証するように、例えば図１に示すような実行フローを作成する。
【００１７】
以下に説明する実施例においては、１つの整数値により１つの経路を一意に特定する。この際、例えば図３に「Ｎｏ．」として示すように１つの整数値を１つの経路を一意に特定するように割り当てたとしても、この整数値と経路を示すデータ（タスクの識別子を一列に並べたデータ）とを一対一に対応付けてメモリに格納するのでは意味がない。何故ならば、タスクの識別子を一列に並べたデータのサイズが大きく、大きなメモリ格納領域が必要になるからである。図１に示すような実行フローの構成を規定するデータ、即ちタスクをノード（節点又は頂点）としてタスク実行の順番をエッジ（枝又は辺）として示した木の構成を規定するデータは、検証対象１１を検証するために必要なデータである。そこで、そのような実行フローのデータを利用することにより、１つの整数値により１つの経路を一意に特定する。
【００１８】
具体的には、実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を求める。そして、複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として求める。この第１の整数値を求める処理を、実行フロー中の全ての分岐の全ての枝に対して実行する。更に、第１の整数値に基づいて求まる第２の整数値により複数の経路の各々を一意に特定する。以下に、これらの処理について詳細に説明する。
【００１９】
図５は、経路総数値を割り当てる処理の流れを示すフローチャートである。このフローチャートを計算機により実行することにより、１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を求める。求めた経路の総数は、メモリに格納されることになる。
【００２０】
ステップＳ１において、実行フローの終了点Ｅｎｄに経路総数値１を割り当てる。ステップＳ２において、経路総数値が未割り当てで、且つ接続先のタスク全ての経路総数値が割り当て済のタスクを検索する。図１に示す実行フローの例では、タスクＩ及びタスクＪが、経路総数値が未割り当てであり且つ接続先のタスク全て（即ち終了点Ｅｎｄ）の経路総数値（１）が割り当て済である。従って、ステップＳ２においては、まずタスクＩ及びタスクＪが検索結果として抽出される。
【００２１】
ステップＳ３において、検索したタスクの接続先タスクの経路総数値の合計を自身の経路総数値とする。図１に示す実行フローの例では、タスクＩの接続先タスク（即ち終了点Ｅｎｄ）の経路総数値の合計（即ち１）を、タスクＩの経路総数値とする。同様に、タスクＪの接続先タスク（即ち終了点Ｅｎｄ）の経路総数値の合計（即ち１）を、タスクＪの経路総数値とする。
【００２２】
ステップＳ４で、全てのタスクに経路総数値を割り当てたか否かを判定する。全てのタスクに経路総数値を割り当て済みであれば、処理を終了する。まだ経路総数値を未割り当てのタスクが有れば、ステップＳ２に戻る。上記の例の場合、タスクＩ及びタスクＪ以外のタスクについては経路総数値を未割り当てであるので、ステップＳ２に戻る。
【００２３】
ステップＳ２において、経路総数値が未割り当てで、且つ接続先のタスク全ての経路総数値が割り当て済のタスクを検索する。上記の例の場合、タスクＨが、経路総数値が未割り当てであり且つ接続先のタスク全て（即ちタスクＩ及びＪ）の経路総数値（１）が割り当て済である。従って、タスクＨが検索結果として抽出される。
【００２４】
ステップＳ３において、検索したタスクの接続先タスクの経路総数値の合計を自身の経路総数値とする。上記の例では、タスクＨの接続先タスク（即ちタスクＩ及びＪ）の経路総数値の合計（即ち２）を、タスクＨの経路総数値とする。その後、ステップＳ４の判定の結果、ステップＳ２に戻る。
【００２５】
再度実行されるステップＳ２において、タスクＢ、Ｄ、及びＧが、経路総数値が未割り当てであり且つ接続先のタスク全て（即ちタスクＨ）の経路総数値（２）が割り当て済である。従って、タスクＢ、Ｄ、及びＧが検索結果として抽出される。ステップＳ３において、タスクＢの接続先タスク（即ちタスクＨ）の経路総数値の合計（即ち２）を、タスクＢの経路総数値とする。タスクＤ及びＧについても同様である。その後、ステップＳ４の判定の結果、ステップＳ２に戻る。以降同様にして、実行フローを上流（開始点Ｓｔａｒｔ）に向かい検索していくことにより、各タスクについての経路総数値が求められる。
【００２６】
図６は、各タスクについて求めた経路総数値を示す図である。図６に示されるように、実行フローの中で１つのノードから分岐する複数の枝の各々においては、その枝に含まれるタスクの経路総数値は同一である。即ち例えば、タスクＡから分岐するＡ→Ｃ→Ｄ→Ｈの枝において、その枝に含まれるタスクＣ及びＤの経路総数値は同一である。言葉を換えて言えば、経路総数値は、実行フローの中で１つのノードから分岐する複数の枝の各々に割り当てられる値であると言える。また図６から分かるように、経路総数値は、実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数に対応する。即ち例えばタスクＢを含む枝（Ａ→Ｂ→Ｈの枝）においては、この枝の先に存在する経路は、Ｈ→Ｉ→ＥｎｄとＨ→Ｊ→Ｅｎｄの２つである。従って、このタスクＢを含む枝の経路総数値は２である。また例えばタスクＣを含む枝（Ａ→Ｃ→Ｄ→Ｈの枝）においても、この枝の先に存在する経路は、Ｈ→Ｉ→ＥｎｄとＨ→Ｊ→Ｅｎｄの２つである。従って、このタスクＣを含む枝の経路総数値も２である。
【００２７】
図７は、経路構成値を割り当てる処理の流れを示すフローチャートである。このフローチャートを計算機により実行することにより、複数の枝を順番に並べたときのｎ番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値（経路構成値）として求める。求めた経路構成値はメモリに格納される。
【００２８】
ステップＳ１において、経路構成値が未割り当てのタスクを探す。このタスクの検索の順番は任意でよい。例えば図１及び図６に示す実行フローの例では、上流（開始点Ｓｔａｒｔ側）から下流（終了点Ｅｎｄ側）に向かい、所定の順番で各タスクをチェックしていってよい。
【００２９】
ステップＳ２において、ステップＳ１で抽出されたタスクが分岐直後のタスクか否かを判定する。例えば図１及び図６に示す実行フローの例では、タスクＢ、Ｃ、Ｅ、Ｉ、及びＪが分岐直後のタスクに相当する。分岐直後のタスクでない場合には、ステップＳ４に進み、０を経路構成値として割り当てる。即ち、抽出されたタスクが、Ｂ、Ｃ、Ｅ、Ｉ、及びＪの何れでも無い場合には、このタスクの経路構成値は０となる。
【００３０】
ステップＳ２の判定の結果、抽出されたタスクが分岐直後のタスクである場合には、ステップＳ３に進む。ステップＳ３では、自身より左に存在する分岐タスクの経路総数値の合計を経路構成値として割り当てる。例えば、タスクＢの場合、自身より左に分岐タスクは存在しないので、自身より左に存在する分岐タスクの経路総数値の合計は０である。従って、タスクＢには経路構成値０が割り当てられる。また例えばタスクＣの場合、自身より左に存在する分岐タスクＢの経路総数値の合計は２である。従って、タスクＣには経路構成値２が割り当てられる。また例えばタスクＥの場合、自身より左に存在する分岐タスクＢ及びＣの経路総数値の合計は４である。従って、タスクＥには経路構成値４が割り当てられる。
【００３１】
その後ステップＳ５において、全てのタスクに経路構成値を割り当てたか否かを判定する。全てのタスクに経路構成値を割り当て済みであれば、処理を終了する。まだ経路構成値を未割り当てのタスクが有れば、ステップＳ１に戻る。以上の処理により、各タスクについての経路構成値が求められる。
【００３２】
図８は、各タスクについて求めた経路構成値を示す図である。図６に示されるように、実行フローの中で１つのノードから分岐する直後のタスクに経路構成値が割り当てられており、これは、実行フローの中で１つのノードから分岐する複数の枝の各々に経路構成値が割り当てられると考えても同じである。即ち例えば、タスクＡから分岐するＡ→Ｃ→Ｄ→Ｈの枝に対して経路構成値２が割り当てられていると考えてよい。なおこの例では経路構成値の割り当ては左から順番に増加するように割り当てたが、右から順番に割り当てるようにしてもよい。即ち例えば、タスクＢ（又は分岐枝Ａ→Ｂ→Ｈ）に０、タスクＣ（又は分岐枝Ａ→Ｃ→Ｄ→Ｈ）に２、タスクＥ（又は分岐枝Ａ→Ｅ→Ｆ→Ｇ→Ｈ）に４を割り当てる代わりに、タスクＢに４、タスクＣに２、タスクＥに０を割り当ててもよい。なおこの場合各タスク（各分岐枝）の経路総数が同一の値２であるので（図６参照）、左から順番に割り当てても右から順番に割り当てても、０、２、４である。しかし例えばタスクＢの経路総数４であれば、左から順番に割り当てると０、４、６になり、右から順番に割り当てると４、２、０となることに注意する必要がある。
【００３３】
左から順番又は右から順番に割り当てるのでなくとも、各タスク（又は分岐枝）を特定する順番があるのであれば、その順番に上記の０、２、４を割り当ててもよい。これを定式化すれば、複数の枝を順番に並べたときのｎ番目の枝を特定する経路構成値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する経路構成値として求めることになる。なおここでいう順番とは、ランダムに１つずつ選んで並べた順番であってもよい。
【００３４】
上記のようにして求めた経路構成値により求まる整数値により複数の経路の各々を一意に特定することができる。例えば、経路Ｓｔａｒｔ→Ａ→Ｂ→Ｈ→Ｊ→Ｅｎｄは、その経路上の全ての経路構成値を足し合わせることにより（即ちこの経路に含まれる枝を特定する経路構成値の総和を求めることにより）求めた値１（＝０＋１）により特定することができる。また例えば経路Ｓｔａｒｔ→Ａ→Ｅ→Ｆ→Ｇ→Ｈ→Ｉ→Ｅｎｄは、その経路上の全ての経路構成値を足し合わせることにより求めた値４（＝４＋０）により特定することができる。
【００３５】
上記のように経路上の全ての経路構成値の総和により１つの経路を一意に特定できることは以下のように考えると分かる。隣り合う２つの分岐枝（ｎ番目とｎ＋１番目）に着目し、これらの２つの分岐枝から派生する全ての経路（２つの分岐枝の開始点より下流にある経路）を特定する場合を考える。２つの分岐枝より上流については考えない。ｎ番目の分岐枝の先に存在する経路の総数をｓとし、ｎ番目の分岐枝を特定する経路構成値をｍとする。ｎ番目の分岐枝の先に存在する全ての経路をｓ個の連続する整数値で特定するようにすれば、上記のように経路上の経路構成値の総和を用いて、ｎ番目の分岐枝を通る全ての経路は、整数値ｍからｍ＋ｓ−１で特定することができる。このとき、ｎ＋１番目の分岐枝には整数値ｍ＋ｓを割り当てるようにすれば、ｎ＋１番目の分岐枝を通る全ての経路はｍ＋ｓ以上の整数値で特定される。従って、ｎ番目の分岐枝を通る経路を特定する連続する整数値とｎ＋１番目の分岐枝を通る経路を特定する連続する整数値とは、互いに重複しない連続した整数値となる。
【００３６】
図９は、図１に示す各経路に対して一意に割り当てられる整数値を示す図である。これらの整数値は、前述のように各経路上の全ての経路構成値を足し合わせることにより求めた値である。この例では図１に示される６個の経路が、０〜５の６個の整数により一意に特定されている。
【００３７】
図９に示される整数値に基づいて、図１の複数の経路の１つを特定することができる。即ち、０〜５のうちの１つの整数値が与えられると、この整数値に一意に対応する経路を特定することができる。この特定作業においては、与えられた整数値と図８に示されるような経路構成値とが用いられる。なお図８に示されるような経路構成値はメモリに格納されているとする。
【００３８】
整数値ｋ（０以上且つ５以下）が与えられると、図８の開始点Ｓｔａｒｔから最初の分岐点までそのまま下流に進む。分岐点に到達すると（即ちタスクＡの分岐点に到達すると）、ｋ以下の経路構成値で最大のものを有する分岐枝を選択し、選択した分岐枝に進む。例えばｋが４の場合には、一番右の分岐枝（タスクＥの分岐枝）に進む。また例えばｋが３の場合には、真ん中の分岐枝（タスクＣの分岐枝）に進む。その後選択した分岐枝をそのまま下流に進む。更に分岐点に到達すると（即ちタスクＨの分岐点に到達すると）、ｋ−Ｍ以下の経路構成値で最大のものを有する分岐枝を選択し、選択した分岐枝に進む。ここで整数値Ｍは、これまで選択して進んできた分岐枝の経路構成値の総和である。例えばｋが４の場合には経路構成値４の一番右の分岐枝を選択したので、この場合、０（＝４−４）以下での経路構成値で最大のものを有する分岐枝、即ちタスクＩの分岐枝に進む。また例えばｋが３の場合には経路構成値２の真ん中の分岐枝を選択したので、この場合、１（＝３−２）以下での経路構成値で最大のものを有する分岐枝、即ちタスクＪの分岐枝に進む。このようにして、例えば整数値ｋが４の時には、経路Ｓｔａｒｔ→Ａ→Ｅ→Ｆ→Ｇ→Ｈ→Ｉ→Ｅｎｄを特定することができる。また整数値ｋが３の時には、経路Ｓｔａｒｔ→Ａ→Ｃ→Ｄ→Ｈ→Ｊ→Ｅｎｄを特定することができる。
【００３９】
なお図９に示す経路特定用の整数値の開始値は、必ずしも０である必要はない。図５及び図７に示すアルゴリズムで計算すれば、整数値の開始値は０となるが、例えば、図８に示す実行フローの最下段の２つの分岐枝（タスクＩとタスクＪとに対応する２つの分岐枝）には、それぞれ１と２を割り当ててもよい。この場合には、経路を特定する整数値は１〜６の６個の整数となる。但しこの場合、１〜６のうちの１つの整数値が与えられたときに、この整数値に一意に対応する経路を特定する作業が若干複雑になる。具体的には、最後の分岐点でない分岐点ではｋ−Ｍより小さい経路構成値で最大のものを有する分岐枝を選択するようにし、最後の分岐点ではｋ−Ｍ以下の経路構成値で最大のものを有する分岐枝を選択すればよい。同様に、開始点を例えば１００にして、１００〜１０５の整数値により経路を特定するようにしてもよい。この場合、この整数値に一意に対応する経路を特定する作業が更に複雑になるが、経路構成値の割り当てのルールさえ分かっていれば、容易に経路を特定することができる。整数値の開始値が０である構成が最も単純で簡便であるが、そのような構成に限定されるものではない。
【００４０】
また上記実施例では、図５のアルゴリズムにより、下流から上流に遡りながら（即ち終了点Ｅｎｄから開始点Ｓｔａｒｔに戻るようにして）経路総数値を割り当てたが、この構成に限定されるものではない。例えば、上流から下流に進みながら（即ち開始点Ｓｔａｒｔから終了点Ｅｎｄに進むようにして）経路総数値を割り当ててもよい。
【００４１】
図１０は、開始点Ｓｔａｒｔから終了点Ｅｎｄに進むようにして経路総数値を割り当てた場合の経路総数値の一例を示す図である。この場合、下流から上流に向かい１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を求めることになる。即ち、タスクＥのノードから分岐するタスクＢの枝については、その先（上流側）に存在する経路の総数は１であるので、経路総数値として１が割り当てられる。タスクＤの枝及びタスクＧの枝についても同様である。また終了点Ｅｎｄのノードから分岐するタスクＩの枝については、その先（上流側）に存在する経路の総数は３であるので、経路総数値として３が割り当てられる。タスクＪの枝についても同様である。
【００４２】
図１１は、図１０の経路総数値に対して求めた経路構成値の一例を示す図である。この場合であっても、複数の枝を順番に並べたときのｎ番目の枝を特定する経路構成値をｍとしたときに、ｎ番目の枝に対する経路の総数（経路総数値）とｍとの和をｎ＋１番目の枝を特定する経路構成値として求めることになる。
【００４３】
また図７に示すアルゴリズムでは、分岐直後のタスクに経路構成値を割り当てているが、分岐直前のタスクに経路構成値を割り当ててもよい。図１２は、図６の経路総数値に基づいて分岐直前のタスクに経路構成値を割り当てた場合の結果を示す図である。図１３は、図１０の経路総数値に基づいて分岐直前のタスクに経路構成値を割り当てた場合の結果を示す図である。分岐直前のタスクとは、言い方を変えれば、合流直前のタスクのことである。
【００４４】
上記に示す場合において、実行フローの中で１つのノードから分岐する直前のタスクに経路構成値が割り当てられており、これは、実行フローの中で１つのノードから分岐する複数の枝の各々に経路構成値が割り当てられると考えても同じである。即ちこの場合であっても定式化すれば、複数の枝を順番に並べたときのｎ番目の枝を特定する経路構成値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する経路構成値として求めていることになる。
【００４５】
図１４は、優先度を示す配列の一例を示す図である。図４に示す検証対象１１を検証する際に、各実行経路について優先度を設け、優先順位に従って経路を実行することが好ましい場合がある。このように優先順位に従って経路を実行することにより、重要なタスク実行パターンを優先的に検証し、重要なタスク実行パターンに対する設計不良を早期に検出し修正することができる。図１４に示す例では、メモリ上に配列２０を用意する。配列のインデックスを、複数の経路を一意に特定する整数値に対応させ、配列の格納値を、対応するインデックスが示す経路の優先度とする。即ち例えば配列インデックス３の格納値３は、整数値３により特定される経路（例えば図９に示すＳｔａｒｔ→Ａ→Ｃ→Ｄ→Ｈ→Ｊ→Ｅｎｄ）の優先度が３であることを示す。この例の場合、例えば優先度の値が大きいほど、優先度が高いことを示す。
【００４６】
図１５は、優先度の順番に従って経路を実行する処理のフローチャートである。このフローチャートの処理を計算機により実行することにより、優先度に従った検証が可能となる。
【００４７】
ステップＳ１で、配列に格納された優先度の最大値を求める。図１４の例の場合、初期状態では優先度の最大値は３である。ステップＳ２で、経路値をランダムに生成する。即ち、経路を一意に特定する整数値（例えば０〜５の６個の整数値のうちの１つ）をランダムに生成する。ステップＳ３で、生成した経路値の優先度が最大値であるか否かを判定する。例えば生成した経路値が２である場合、図１４の配列２０を参照して、この生成した経路の優先度が２であり、最大値３ではないことが分かる。生成した経路値の優先度が最大値でない場合、ステップＳ２に戻り経路値のランダム生成を繰り返す。生成した経路値の優先度が最大値である場合、ステップＳ４に進む。
【００４８】
ステップＳ４において、経路値に対応した経路を生成して、その経路を実行する。即ち、例えば優先度３に対応する経路値３の場合には、この経路値３に基づいて経路Ｓｔａｒｔ→Ａ→Ｃ→Ｄ→Ｈ→Ｊ→Ｅｎｄを生成（特定）し、テストベンチ１０により検証対象１１に対してこの経路を実行する。ステップＳ５で、経路値に対応する配列の格納値を０にする。例えば実行した経路の経路値が３である場合には、図１４の配列２０のインデックス３に対応する配列格納値３を０に書き替える。
【００４９】
ステップＳ６で、配列格納値全てが０か否かを判定する。即ち、例えば配列２０の６個の配列格納値が全て０であるか否かを判定する。全て０である場合には、全ての経路を実行したことになるので、処理を終了する。０でない配列格納値がある場合には、ステップＳ１に戻り、その後の処理を繰り返す。
【００５０】
図１６は、経路実行にともなう配列格納値の変化の様子を示す図である。（ａ）は、入れ値２０の処理状態を示し、配列格納値は図１４に示す値と同一である。この状態において、最大優先度３に対応する経路値３に対応する経路を実行し、この経路値３の配列格納値を０に変更する。（ｂ）は、経路値３の配列格納値を０にした後の配列２０の状態を示す。この状態において、最大優先度２に対応するのは経路値０と経路値２とがあり、ランダムに選択された経路値２に対応する経路を実行し、この経路値２の配列格納値を０に変更する。（ｃ）は、経路値２の配列格納値を０にした後の配列２０の状態を示す。この状態において、最大優先度２に対応する経路値０に対応する経路を実行し、この経路値０の配列格納値を０に変更する。（ｄ）は、経路値０の配列格納値を０にした後の配列２０の状態を示す。この状態において、最大優先度１に対応するのは経路値１、４、及び５があり、ランダムに選択された経路値４に対応する経路を実行し、この経路値４の配列格納値を０に変更する。（ｅ）は、経路値４の配列格納値を０にした後の配列２０の状態を示す。この状態において、最大優先度１に対応するのは経路値１及び５があり、ランダムに選択された経路値１に対応する経路を実行し、この経路値１の配列格納値を０に変更する。（ｆ）は、経路値１の配列格納値を０にした後の配列２０の状態を示す。この状態において、最大優先度１に対応する経路値５に対応する経路を実行し、この経路値５の配列格納値を０に変更する。（ｇ）は、経路値５の配列格納値を０にした後の配列２０の状態を示す。（ｇ）に示すように配列２０の配列格納値が全て０になると、全ての経路の実行が終了したことになるので、経路実行処理を終了する。
【００５１】
図１７は、本発明による経路管理方法を実行する装置の構成を示す図である。
【００５２】
図１７に示されるように、本発明による経路管理方法を実行する装置は、例えばパーソナルコンピュータやエンジニアリングワークステーション等のコンピュータにより実現される。図１７の装置は、コンピュータ（計算機）５１０と、コンピュータ５１０に接続されるディスプレイ装置５２０、通信装置５２３、及び入力装置よりなる。入力装置は、例えばキーボード５２１及びマウス５２２を含む。コンピュータ５１０は、ＣＰＵ５１１、ＲＡＭ５１２、ＲＯＭ５１３、ハードディスク等の二次記憶装置５１４、可換媒体記憶装置５１５、及びインターフェース５１６を含む。
【００５３】
キーボード５２１及びマウス５２２は、ユーザとのインターフェースを提供するものであり、コンピュータ５１０を操作するための各種コマンドや要求されたデータに対するユーザ応答等が入力される。ディスプレイ装置５２０は、コンピュータ５１０で処理された結果等を表示すると共に、コンピュータ５１０を操作する際にユーザとの対話を可能にするために様々なデータ表示を行う。通信装置５２３は、遠隔地との通信を行なうためのものであり、例えばモデムやネットワークインターフェース等よりなる。
【００５４】
本発明による経路管理方法は、コンピュータ５１０が実行可能なコンピュータプログラムとして提供される。このコンピュータプログラムは、可換媒体記憶装置５１５に装着可能な記憶媒体Ｍに記憶されており、記憶媒体Ｍから可換媒体記憶装置５１５を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。或いは、このコンピュータプログラムは、遠隔地にある記憶媒体（図示せず）に記憶されており、この記憶媒体から通信装置５２３及びインターフェース５１６を介して、ＲＡＭ５１２或いは二次記憶装置５１４にロードされる。
【００５５】
キーボード５２１及び／又はマウス５２２を介してユーザからプログラム実行指示があると、ＣＰＵ５１１は、記憶媒体Ｍ、遠隔地記憶媒体、或いは二次記憶装置５１４からプログラムをＲＡＭ５１２にロードする。ＣＰＵ５１１は、ＲＡＭ５１２の空き記憶空間をワークエリアとして使用して、ＲＡＭ５１２にロードされたプログラムを実行し、適宜ユーザと対話しながら処理を進める。なおＲＯＭ５１３は、コンピュータ５１０の基本動作を制御するための制御プログラムが格納されている。
【００５６】
上記コンピュータプログラムを実行することにより、コンピュータ５１０が、上記各実施例で説明されたように経路管理方法を実行する。具体的には、コンピュータ５１０による計算機シミュレーションを実行することにより、図４に示すようにテストベンチ１０による検証対象１１に対する検証動作が実行される。また検証動作の実行に際して、１つの経路値により１つの経路を一意に特定する形で、実行対象の経路の管理を行なう。
【００５７】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００５８】
なお本発明は以下の内容を含むものである。
（付記１）
計算機シミュレーションにおいてテストベンチが検証対象に対して行なう操作をタスクとし、一連のタスクから構成される複数の経路がタスクの実行フローとして与えられたときに、
前記実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を計算機により求めメモリに格納し、
前記複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として計算機により求めメモリに格納し、
前記第１の整数値に基づく第２の整数値により前記複数の経路の各々を計算機により一意に特定する
各段階を含むことを特徴とする経路管理方法。
（付記２）
前記第１の整数値を求める段階は、前記実行フロー中の全ての分岐の全ての枝に対して前記第１の整数値を求めることを特徴とする付記１記載の経路管理方法。
（付記３）
前記一意に特定する段階は、一の経路に含まれる枝を特定する前記第１の整数値の総和を前記第２の整数値として求め、該総和により前記一の経路を一意に特定することを特徴とする付記１又は２に記載の経路管理方法。
（付記４）
前記一意に特定する段階は、前記第２の整数値として一の整数が与えられると、該一の整数と前記メモリに格納された前記第１の整数値とに基づいて前記複数の経路の１つを特定することを特徴とする付記１乃至３のいずれか一項に記載の経路管理方法。
（付記５）
前記複数の経路の各々に割り振られた優先度をメモリに格納し、
前記メモリに格納された前記優先度の順番に従って、前記テストベンチにより前記複数の経路を前記検証対象に対して実行し、
実行済みの経路を前記第２の整数値により特定してメモリに記録する
各段階を更に含むことを特徴とする付記１乃至４のいずれか一項に記載の経路管理方法。
（付記６）
検証対象を記述するデータと、計算機シミュレーションにおいて前記検証対象に対してタスクを実行するテストベンチと、一連のタスクから構成される複数の経路を示すタスクの実行フローを規定するデータとを格納するメモリと、
前記メモリに格納された前記検証対象を記述するデータと、前記テストベンチと、前記実行フローを規定するデータとに基づいて、前記検証対象の動作を検証する計算機シミュレーションを実行する演算処理ユニットを含み、該演算処理ユニットは、
前記実行フローの中で１つのノードから分岐する複数の枝の各々に対して、各枝の先に存在する経路の総数を求め前記メモリに格納し、
前記複数の枝を順番に並べたときのｎ（ｎ：整数）番目の枝を特定する第１の整数値をｍとしたときに、ｎ番目の枝に対する前記経路の総数とｍとの和をｎ＋１番目の枝を特定する第１の整数値として求め前記メモリに格納し、
前記第１の整数値に基づく第２の整数値により前記複数の経路の各々を一意に特定する
各段階を実行することを特徴とする検証装置。
【図面の簡単な説明】
【００５９】
【図１】一連のタスクからなる実行フローの一例を概念的に示す図である。
【図２】従来の経路実行方法の一例を示すフローチャートである。
【図３】記憶領域に記憶されるデータの内容を示す図である。
【図４】計算機シミュレーションにより検証対象の動作を検証する環境を示す図である。
【図５】経路総数値を割り当てる処理の流れを示すフローチャートである。
【図６】各タスクについて求めた経路総数値を示す図である。
【図７】経路構成値を割り当てる処理の流れを示すフローチャートである。
【図８】各タスクについて求めた経路構成値を示す図である。
【図９】図１に示す各経路に対して一意に割り当てられる整数値を示す図である。
【図１０】開始点から終了点に進むようにして経路総数値を割り当てた場合の経路総数値の一例を示す図である。
【図１１】図１０の経路総数値に対して求めた経路構成値の一例を示す図である。
【図１２】図６の経路総数値に基づいて分岐直前のタスクに経路構成値を割り当てた場合の結果を示す図である。
【図１３】図１０の経路総数値に基づいて分岐直前のタスクに経路構成値を割り当てた場合の結果を示す図である。
【図１４】優先度を示す配列の一例を示す図である。
【図１５】優先度の順番に従って経路を実行する処理のフローチャートである。
【図１６】経路実行にともなう配列格納値の変化の様子を示す図である。
【図１７】本発明による経路管理方法を実行する装置の構成を示す図である。
【符号の説明】
【００６０】
１０  テストベンチ
１１  検証対象
２０  配列
５１０  コンピュータ
５１１  ＣＰＵ
５１２  ＲＡＭ
５１３  ＲＯＭ
５１４  二次記憶装置
５１５  可換媒体記憶装置
５１６  インターフェース
５２０  ディスプレイ装置
５２１  キーボード
５２２  マウス
５２３  通信装置
【図１】
2010026810.tif 000003
【図２】
2010026810.tif 000004
【図３】
2010026810.tif 000005
【図４】
2010026810.tif 000006
【図５】
2010026810.tif 000007
【図６】
2010026810.tif 000008
【図７】
2010026810.tif 000009
【図８】
2010026810.tif 000010
【図９】
2010026810.tif 000011
【図１０】
2010026810.tif 000012
【図１１】
2010026810.tif 000013
【図１２】
2010026810.tif 000014
【図１３】
2010026810.tif 000015
【図１４】
2010026810.tif 000016
【図１５】
2010026810.tif 000017
【図１６】
2010026810.tif 000018
【図１７】
2010026810.tif 000019