(57)【特許請求の範囲】
【請求項１】
検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出させる抽出工程と、
前記抽出工程によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索させる探索工程と、
前記探索工程によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成させる作成工程と、
前記作成工程によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力させる出力工程と、
をコンピュータに実行させることを特徴とする検証シナリオ作成プログラム。
【請求項２】
前記作成工程は、
さらに、前記探索工程によって複数のパスが探索された場合、前記パスごとの検証シナリオを組み合わせることにより、前記アドレス範囲への競合アクセスが発生した場合における検証シナリオを作成させることを特徴とする請求項１に記載の検証シナリオ作成プログラム。
【請求項３】
前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとが同一のハードウェアブロックとからなるパスの検証シナリオを削除させる削除工程を前記コンピュータに実行させ、
前記出力工程は、
前記削除工程によって削除された結果、残余の検証シナリオを当該検証シナリオに対応するパスと関連付けて出力させることを特徴とする請求項１または２に記載の検証シナリオ作成プログラム。
【請求項４】
前記バスシステム内の同一のバス系統に属するアクセス元およびアクセス先のハードウェアブロックを検出させる検出工程と、
前記探索工程によって探索されたパスのうち、前記検出工程によって検出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでの間に前記バス系統とは異なる他のバス系統を経由するパスを検索させる検索工程と、
前記検索工程によって検索されたパス内のアクセス先のハードウェアブロックが前記他のバス系統に属するか否かを判定させる判定工程と、を前記コンピュータに実行させ、
前記削除工程は、
前記判定工程によって前記他のバス系統に属していないと判定された場合、前記検索工程によって検索されたパスに関連付けられている検証シナリオを削除することを特徴とする請求項３に記載の検証シナリオ作成プログラム。
【請求項５】
前記バスシステム内の異なるバス系統を接続するブリッジと前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとがノード化された有向グラフを生成させる生成工程を前記コンピュータに実行させ、
前記抽出工程は、
前記生成工程によって生成された有向グラフから任意のアクセス先のハードウェアブロックを抽出させ、
前記探索工程は、
前記有向グラフ内のノード間を接続する有向エッジに従って、前記抽出工程によって抽出されたアクセス元のハードウェアブロックから当該アクセス先のハードウェアブロックにアクセス可能なアクセス元のハードウェアブロックまでのパスを探索することを特徴とする請求項１〜３のいずれか一つに記載の検証シナリオ作成プログラム。
【請求項６】
請求項１〜５のいずれか一つに記載の検証シナリオ作成プログラムを記録したコンピュータに読み取り可能な記録媒体。
【請求項７】
検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する抽出手段と、
前記抽出手段によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する探索手段と、
前記探索手段によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する作成手段と、
前記作成手段によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力する出力手段と、
を備えることを特徴とする検証シナリオ作成装置。
【請求項８】
コンピュータを用いて検証シナリオを作成する方法であって、
抽出手段が、検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する抽出工程と、
探索手段が、前記抽出工程によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する探索工程と、
作成手段が、前記探索工程によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する作成工程と、
出力手段が、前記作成工程によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力する出力工程と、
を含んだことを特徴とする検証シナリオ作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、システムＬＳＩのバスシステムを検証するための検証シナリオを作成する検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法に関する。
【背景技術】
【０００２】
一般に、システムＬＳＩのバスシステムの検証では、メモリマップに基づいて、相互にアクセス可能なアクセス元のハードウェアブロックとアクセス先のハードウェアブロックとの間のデータ通信が正常に動作するか否かを確認する。しかし、近年では、システムＬＳＩの大規模化、複雑化により、バスシステムの検証が困難となってきている。このため、検証作業にかかる作業労力および作業期間が増大しており、検証期間の短縮による作業効率化が要求されている。
【０００３】
検証作業の効率化を図るために、たとえば、ＣＰＵ、メモリおよびＣＰＵとメモリとを接続するバスからなるシステムＬＳＩの検証を、ＣＰＵに備えられた命令キューのループキュー動作によって実現する手法が提供されている（たとえば、下記特許文献１参照。）。これによれば、同じテストプログラムを繰り返し実行可能にするため分岐命令が不要となり、メモリチップに対するテスト効率を向上させることができる。
【０００４】
【特許文献１】国際公開第２００２／０７３４１１号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術によれば、アクセス元からアクセス先までの経路を特定するための十分な情報がメモリマップに定義されていないため、検証シナリオの作成に必要となる経路をメモリマップから特定することができなかった。このため、アクセス先に対する複数のアクセスが発生した場合のデータ破壊の検証が不十分となり、検証品質が低下してしまうという問題があった。
【０００６】
一方で、システムＬＳＩの設計仕様書を検証者が理解するなどして、設計仕様書から経路情報を抽出することも考えられる。しかし、設計仕様書の記述内容は設計する観点からまとまっているため、経路情報の抽出作業が困難なものとなってしまう場合があり、検証者にかかる負担の増大化を招くという問題があった。
【０００７】
また、システムＬＳＩの大規模化、複雑化により、特定のアクセス先に接続される経路の数が増大化し、すべての経路を手作業で網羅することが難しくなっているという問題があった。さらには、検証漏れにともなう回路設計の手戻りが生じてしまい、設計者にかかる負担の増大化および設計期間の長期化を招くという問題があった。
【０００８】
この発明は、上述した従来技術による問題点を解消するため、バスシステムの検証に必要となる検証シナリオを効率的かつ網羅的に作成することにより、検証者の負担軽減および設計期間の短縮化を図ることができる検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、この発明にかかる検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法は、検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出し、アクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する。そして、探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成し、その検証シナリオを当該検証シナリオに対応するパスと関連付けて出力することを特徴とする。
【００１０】
この発明によれば、特定のアクセス先のハードウェアブロックに対してアクセスが発生した場合における、アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを網羅的に作成することができる。
【００１１】
また、上記発明において、複数のパスが探索された場合、前記パスごとの検証シナリオを組み合わせることにより、前記アドレス範囲への競合アクセスが発生した場合における検証シナリオを作成することとしてもよい。
【００１２】
この発明によれば、特定のアクセス先のハードウェアブロックに対して複数のアクセスが発生した場合における、データ破壊を検証するための検証シナリオを網羅的に作成することができる。
【００１３】
また、上記発明において、前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとが同一のハードウェアブロックとからなるパスの検証シナリオを削除し、残余の検証シナリオを当該検証シナリオに対応するパスと関連付けて出力することとしてもよい。
【００１４】
この発明によれば、アクセス元のハードウェアブロックが自分自身にトランザクションを発生させる無駄な検証シナリオを削除することができる。
【００１５】
また、上記発明において、前記バスシステム内の同一のバス系統に属するアクセス元およびアクセス先のハードウェアブロックを検出し、探索されたパスのうち、検出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでの間に前記バス系統とは異なる他のバス系統を経由するパスを検索し、検索されたパス内のアクセス先のハードウェアブロックが前記他のバス系統に属するか否かを判定する。その結果、前記他のバス系統に属していないと判定された場合、前記検索されたパスに関連付けられている検証シナリオを削除することとしてもよい。
【００１６】
この発明によれば、バスシステムの構成上、物理的に存在し得ないパスについての無駄な検証シナリオを削除することができる。
【００１７】
また、上記発明において、前記バスシステム内の異なるバス系統を接続するブリッジと前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとがノード化された有向グラフを生成し、この有向グラフから任意のアクセス先のハードウェアブロックを抽出し、前記有向グラフ内のノード間を接続する有向エッジに従って、抽出されたアクセス元のハードウェアブロックから当該アクセス先のハードウェアブロックにアクセス可能なアクセス元のハードウェアブロックまでのパスを探索することとしてもよい。
【００１８】
この発明によれば、バスシステム内のハードウェアブロック間の論理的な接続関係を表わす有向グラフを利用して、相互にアクセス可能なアクセス元のハードウェアブロックからアクセス先のハードウェアブロックまでのパスを探索することができる。
【発明の効果】
【００１９】
本発明にかかる検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法によれば、バスシステムの検証に必要となる検証シナリオを効率的かつ網羅的に作成することにより、検証者の負担軽減および設計期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかる検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法の好適な実施の形態を詳細に説明する。
【００２１】
（検証シナリオ作成装置のハードウェア構成）
まず、この発明の実施の形態にかかる検証シナリオ作成装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる検証シナリオ作成装置のハードウェア構成を示す説明図である。
【００２２】
図１において、検証シナリオ作成装置１００は、コンピュータ本体１１０と、入力装置１２０と、出力装置１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１４０に接続可能である。
【００２３】
コンピュータ本体１１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、検証シナリオ作成装置１００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００２４】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１およびフラッシュメモリはコンピュータ本体１１０に対し着脱自在である。インターフェースは、入力装置１２０からの入力、出力装置１３０への出力、ネットワーク１４０に対する送受信の制御をおこなう。
【００２５】
また、入力装置１２０としては、キーボード１２１、マウス１２２、スキャナ１２３などがある。キーボード１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１０内のメモリに格納される。なお、スキャナ１２３にＯＣＲ機能を持たせてもよい。
【００２６】
また、出力装置１３０としては、ディスプレイ１３１、スピーカ１３２、プリンタ１３３などがある。ディスプレイ１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ１３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ１３３は、画像データや文書データを印刷する。
【００２７】
（検証対象の一例）
【００２８】
つぎに、この発明の実施の形態にかかる検証対象について説明する。図２は、この発明の実施の形態にかかる検証対象となるバスシステムの一例を示す構成図である。図面では、バスシステムの一部を抜粋して表示している。図２において、バスシステム２００は、ＣＰＵ２０１、デバイスＡ２０２と、デバイスＢ２０３と、メインバスコントローラ２０４と、サブバスコントローラ２０５と、から構成されている。
【００２９】
ＣＰＵ２０１は、バスシステム２００全体の制御を司るハードウェアブロックである。デバイスＡ２０２およびデバイスＢ２０３は、外部とのデータ通信を制御するインターフェースや画像処理などの機能を有するハードウェアブロックである。メインバスコントローラ２０４は、メインバス上のデータ通信を制御するハードウェアブロックである。サブバスコントローラ２０５は、サブバス上のデータ通信を制御するハードウェアブロックである。
【００３０】
上記ハードウェアブロック（２０１〜２０４）は、メインバス２０６、サブバス２０７およびブリッジ２０８を介して接続されている。ここで、デバイスＢ２０３にアクセス可能なアクセス元のハードウェアブロックをＣＰＵ２０１およびデバイスＡ２０２として、アクセス元のハードウェアブロックからアクセス先のハードウェアブロックまでのパスについて説明する。
【００３１】
図３は、バスシステム内のパスの一例を示す説明図である。図３において、パスＰａはＣＰＵ２０１からデバイスＢ２０３に直接アクセスする経路であり、パスＰｂはＣＰＵ２０１からブリッジ２０８（図２参照）を経由してデバイスＢ２０３にアクセスする経路である。また、パスＰｃはデバイスＡ２０２からデバイスＢ２０３に直接アクセスする経路であり、パスＰｄはデバイスＡ２０２からブリッジ２０８を経由してデバイスＢ２０３にアクセスする経路である。
【００３２】
このように、デバイスＢ２０３にアクセスするパスが複数存在する場合には、デバイスＢ２０３への競合アクセスが発生した際のデータ破壊の有無を検証するために、パスＰａ〜Ｐｄごとの検証シナリオ（単体シナリオ）を組み合わせた検証シナリオ（並列シナリオ）を作成する必要がある。
【００３３】
本実施の形態では、バスシステム２００内において相互に通信可能なアクセス元のハードウェアブロックからアクセス先のハードウェアブロックまでのパスを自動探索し、探索されたパスごとの検証シナリオを自動作成する。これにより、バスシステムの検証に必要となる検証シナリオの効率的かつ網羅的な作成を実現する。
【００３４】
（検証シナリオ作成装置１００の機能的構成）
つぎに、この発明の実施の形態にかかる検証シナリオ作成装置１００の機能的構成について説明する。図４は、この発明の実施の形態にかかる検証シナリオ作成装置の機能的構成を示すブロック図である。図４において、検証シナリオ作成装置１００は、抽出部４０１と、探索部４０２と、生成部４０３と、作成部４０４と、出力部４０５と、削除部４０６と、検出部４０７と、検索部４０８と、判定部４０９と、から構成されている。
【００３５】
これら各機能４０１〜４０９は、メモリに格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能４０１〜４０９からの出力データはメモリに保持される。また、図４中矢印で示した接続先の機能的構成は、接続元の機能からの出力データをメモリから読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００３６】
まず、抽出部４０１は、検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する機能を有する。具体的には、複数のハードウェアブロックの中からアクセス先となり得る任意のハードウェアブロックを抽出し、そのアクセス先のハードウェアブロックにアクセス可能なアクセス元のハードウェアブロックを抽出することとしてもよい。
【００３７】
バスシステムは、ＬＳＩを構成するハードウェアブロック間のデータ通信を実現するための通信網であり、たとえば、図２に示したバスシステム２００である。また、ハードウェアブロックとしては、バスコントローラ、プロセッサ（ＣＰＵ）、メモリおよび専用ハードウェアなどが挙げられる。なお、ハードウェアブロック間は、バスによってそれぞれ接続されている。
【００３８】
探索部４０２は、抽出部４０１によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する機能を有する。ここでは、アクセス元のハードウェアブロックからアクセス先のハードウェアブロックに直接アクセスするパスと、バスシステム内の異なるバス系統を接続するブリッジを経由して、アクセス元のハードウェアブロックからアクセス先のハードウェアブロックにアクセスするパスとを探索することとなる。
【００３９】
このとき、バスシステム上に物理的に存在するパスであるか否かにかかわらず、論理的に想定し得るすべてのパスを探索する。具体的には、ハードウェアブロック間の論理的な接続関係を表わす有向グラフを用いて、アクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索することとしてもよい。
【００４０】
生成部４０３は、バスシステム内の異なるバス系統を接続するブリッジとアクセス元のハードウェアブロックとアクセス先のハードウェアブロックとがノード化された有向グラフを生成する機能を有する。有向グラフとは、アクセス元のハードウェアブロックとアクセス先のハードウェアブロックとブリッジとが、方向性を有するエッジによって接続された図表である。
【００４１】
有向グラフを用いてパスを探索する場合、まず、抽出部４０１により、生成部４０３によって生成された有向グラフから任意のアクセス先のハードウェアブロックを抽出する。このあと、探索部４０２により、有向グラフ内のノード間を接続する有向エッジに従って、抽出部４０１によって抽出されたアクセス元のハードウェアブロックから当該アクセス先のハードウェアブロックにアクセス可能なアクセス元のハードウェアブロックまでのパスを探索する。
【００４２】
作成部４０４は、探索部４０２によって探索されたパスごとに、アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する機能を有する。
【００４３】
検証シナリオの作成には、たとえば、ＲＯＭやＲＡＭなどの記憶領域に予め保持されているシナリオテンプレートを利用する。図５は、シナリオテンプレートの一例を示す説明図である。図５において、シナリオテンプレート５００は、特定のアクセス先のハードウェアブロックへのアクセスが発生した場合における、アクセス元のハードウェアブロックのトランザクションを検証する検証シナリオを作成するためのテンプレートである。
【００４４】
このシナリオテンプレート５００には、所定の文字列を挿入するための挿入位置５１０〜５４０が設けられている。ここで、挿入位置５１０は、検証シナリオを識別するシナリオ名を挿入するための挿入位置である。挿入位置５２０は、アクセス元のハードウェアブロックの名称を挿入するための挿入位置である。
【００４５】
挿入位置５３０は、アクセス先のハードウェアブロックに割り当てられているアドレス範囲を挿入するための挿入位置である。挿入位置５４０は、アクセス元のハードウェアブロックのトランザクションの種類を挿入するための挿入位置である。作成部４０４は、これら挿入位置５１０〜５４０にそれぞれ対応する文字列を挿入することによりパスごとの検証シナリオを作成する。
【００４６】
また、作成部４０４は、探索部４０２によって複数のパスが探索された場合、パスごとの検証シナリオを組み合わせることにより、アクセス先のハードウェアブロックに割り当てられたアドレス範囲への競合アクセスが発生した場合における検証シナリオを作成する機能を有する。
【００４７】
検証シナリオの組み合わせとは、特定のアクセス先のハードウェアブロックへのアクセスが発生した際の検証シナリオを、並列にアクセス可能となるように組み合わせたものである。このとき、並列に動作する検証シナリオ（単体シナリオ）の組み合わせをすべて網羅することにより、競合アクセスを考慮した検証シナリオ（並列シナリオ）を作成する。
【００４８】
たとえば、同一のアクセス先のハードウェアブロックへのアクセスが発生した場合の検証シナリオが３つ（シナリオ名：シナリオＡ、シナリオＢ、シナリオＣ）あるとする。この場合、並列に動作する検証シナリオの組み合わせは、「シナリオＡとシナリオＢ」、「シナリオＡとシナリオＣ」、「シナリオＢとシナリオＣ」、「シナリオＡとシナリオＢとシナリオＣ」の４つとなる。
【００４９】
このように、複数のパスが存在する場合には、各パスの検証シナリオ（単体シナリオ）を組み合わせて、競合アクセスを考慮した検証シナリオ（並列シナリオ）を自動作成する。以下、検証シナリオの組み合わせを、シナリオ名（たとえば、シナリオＡ、シナリオＢ）を並列に列挙して『シナリオＡ‖シナリオＢ』と表現する。
【００５０】
出力部４０５は、作成部４０４によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力する機能を有する。出力部４０５による出力形式は、ディスプレイ１３１での画面表示、プリンタ１３３での印刷出力、メモリへのデータ出力（保存）、外部のコンピュータ装置への送信のいずれであってもよい。具体的には、検証シナリオと当該検証シナリオに対応するパスとを関連付けて示す関連付けテーブルを出力することとしてもよい。なお、関連付けテーブルの具体例は図１３を用いて後述する。
【００５１】
削除部４０６は、アクセス元のハードウェアブロックとアクセス先のハードウェアブロックとが同一のハードウェアブロックとからなるパスの検証シナリオを削除する機能を有する。具体的には、アクセス元のハードウェアブロックが自分自身にトランザクションを発生させる検証シナリオを削除する。これは、実際のバスシステムではあり得ないトランザクションを検証するための検証シナリオである。
【００５２】
また、バスシステムの構成をモデル化して表わす構成モデルを参照して、物理的に存在し得ないパスの検証シナリオを削除することとしてもよい。ここで、図２に示したバスシステム２００の構成をモデル化して表わす構成モデルについて説明する。図６は、構成モデルの一例を示す説明図である。
【００５３】
図６において、構成モデル６００は、ＣＰＵモデル６０１と、デバイスＡモデル６０２と、デバイスＢモデル６０３と、メインバスモデル６０４と、サブバスモデル６０５と、ブリッジモデル６０６と、から構成されている。この構成モデル６００は、バスシステム２００内のハードウェアブロック、ブリッジおよびバスをノードとしてグラフ化し、物理的に接続されているノード間を接続することによって生成することができる。
【００５４】
ここでは、構成モデル６００を参照して、探索部４０２によって探索されたパスのうち、物理的に存在しないパスを特定する。具体的には、探索部４０２によって探索された論理的に想定し得るパスのうち物理的には存在しないパスを、構成モデル６００内のノード間の接続関係を参照することによって判断する。
【００５５】
ここで、物理的に存在しないパスの検証シナリオを削除する削除処理の具体的手法について説明する。まず、検出部４０７により、構成モデル内（たとえば、構成モデル６００）のノード間の接続関係を参照して、バスシステム内の同一のバス系統に属するアクセス元およびアクセス先のハードウェアブロックを検出する。
【００５６】
このあと、検索部４０８により、探索部４０２によって探索されたパスのうち、検出部４０７によって検出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでの間に上記バス系統とは異なる他のバス系統を経由するパスを検索する。
【００５７】
そして、判定部４０９により、検索部４０８によって検索されたパス内のアクセス先のハードウェアブロックが他のバス系統に属するか否かを判定する。この結果、他のバス系統に属していないと判定された場合、削除部４０６により、検索部４０８によって検索されたパスに関連付けられている検証シナリオを削除する。
【００５８】
また、出力部４０５は、削除部４０６によって検証シナリオが削除された場合、残余の検証シナリオを当該検証シナリオに対応するパスと関連付けて出力することとなる。なお、上記機能部４０１〜４０９による各種処理は、検証対象となるバスシステムのメモリマップや回路情報などに基づいて実行される。メモリマップに基づく各種処理は、後述する実施例において説明する。
【００５９】
（検証シナリオ作成装置の検証シナリオ作成処理手順）
つぎに、この発明の実施の形態にかかる検証シナリオ作成装置１００の検証シナリオ作成処理手順について説明する。図７は、この発明の実施の形態にかかる検証シナリオ作成装置の検証シナリオ作成処理手順を示すフローチャートである。
【００６０】
図７のフローチャートにおいて、まず、抽出部４０１により、検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する（ステップＳ７０１）。このあと、探索部４０２により、抽出部４０１によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する（ステップＳ７０２）。
【００６１】
このあと、作成部４０４により、探索部４０２によって探索されたパスごとに、アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する（ステップＳ７０３）。
【００６２】
このあと、ステップＳ７０２において複数のパスが探索されたか否かを判断して（ステップＳ７０４）、複数のパスが探索された場合（ステップＳ７０４：Ｙｅｓ）、作成部４０４により、パスごとの検証シナリオを組み合わせることにより、アドレス範囲への競合アクセスが発生した場合における検証シナリオを作成する（ステップＳ７０５）。
【００６３】
このあと、削除部４０６により、不要な検証シナリオを削除する削除処理を実行する（ステップＳ７０６）。最後に、出力部４０５により、作成部４０４によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力して（ステップＳ７０７）、本フローチャートによる一連の処理を終了する。また、ステップＳ７０４において、複数のパスが探索されなかった場合には（ステップＳ７０４：Ｎｏ）、ステップＳ７０６に移行する。
【００６４】
つぎに、図７に示したステップＳ７０６における削除処理の処理手順について説明する。図８は、削除処理の処理手順を示すフローチャートである。図８のフローチャートにおいて、まず、探索部４０２によって探索されたパスのうち、アクセス元のハードウェアブロックとアクセス先のハードウェアブロックとが同一のハードウェアブロックとからなるパスが検出されたか否かを判断する（ステップＳ８０１）。
【００６５】
ここで、パスが検出された場合（ステップＳ８０１：Ｙｅｓ）、削除部４０６により、検出されたパスの検証シナリオを削除する（ステップＳ８０２）。このあと、検出部４０７により、バスシステム内の同一のバス系統に属するアクセス元およびアクセス先のハードウェアブロックが検出されたか否かを判断する（ステップＳ８０３）。
【００６６】
ここで、アクセス元およびアクセス先のハードウェアブロックが検出された場合（ステップＳ８０３：Ｙｅｓ）、検索部４０８により、探索部４０２によって探索されたパスのうち、検出部４０７によって検出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでの間にバス系統とは異なる他のバス系統を経由するパスを検索する（ステップＳ８０４）。
【００６７】
このあと、判定部４０９により、検索部４０８によって検索されたパス内のアクセス先のハードウェアブロックが他のバス系統に属するか否かを判定する（ステップＳ８０５）。ここで、他のバス系統に属していないと判定された場合（ステップＳ８０５：Ｎｏ）、削除部４０６により、検索部４０８によって検索されたパスの検証シナリオを削除して（ステップＳ８０６）、図７に示したステップＳ７０７に移行する。
【００６８】
また、ステップＳ８０１において、パスが検出されなかった場合（ステップＳ８０１：Ｎｏ）、ステップＳ８０３に移行する。また、ステップＳ８０５においてアクセス元およびアクセス先のハードウェアブロックが検出されなかった場合（ステップＳ８０３：Ｎｏ）、およびステップＳ８０５において他のバス系統に属していると判定された場合（ステップＳ８０５：Ｙｅｓ）、図７に示したステップＳ７０７に移行する。
【００６９】
この発明の実施の形態によれば、検証対象となるバスシステム内の特定のアクセス先のハードウェアブロックに対してアクセスが発生した場合における、アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを網羅的に自動作成することができる。これにより、アクセス元のハードウェアブロックのトランザクションを検証する際の検証漏れを防ぐことができ、検証品質の向上を図ることができる。
【００７０】
さらに、パスごとの検証シナリオを組み合わせることにより、特定のアクセス先のハードウェアブロックに対して複数のアクセスが発生した場合におけるデータ破壊を検証するための検証シナリオを網羅的に自動作成することができる。これにより、並列アクセス時のデータ破壊を検証する際の検証漏れを防ぐことができ、検証品質の向上を図ることができる。
【００７１】
また、アクセス元のハードウェアブロックが自分自身にトランザクションを発生させる無駄な検証シナリオを削除することができる。さらに、バスシステムの構成上、物理的に存在し得ないパスに関する無駄な検証シナリオを削除することができる。この結果、無駄な検証処理を削減することができ、検証作業の効率化を図ることができる。
【００７２】
また、バスシステム内のハードウェアブロック間の論理的な接続関係を表わす有向グラフを利用して、相互にアクセス可能なアクセス元のハードウェアブロックからアクセス先のハードウェアブロックまでのパスを探索することができる。さらに、バスシステムの構成モデルを利用して、探索されたパスのうち物理的に存在し得ないパスを削除することで、検証に必要となるパスを効率的かつ正確に特定することができる。
【実施例】
【００７３】
つぎに、上述した実施の形態の実施例について説明する。実施例では、メモリマップに定義されているデータ通信に関する仕様情報に基づいて、上記機能部４０１〜４０９による各種処理を実行する。まず、メモリマップについて説明する。なお、本実施例では、バスシステム全体として、唯一のメモリマップを各ハードウェアブロックが共有することとする。
【００７４】
（メモリマップの具体例）
図９は、メモリマップの一例を示す説明図である。図９において、メモリマップ９００は、アドレスごとに、バスシステム２００（図２参照）内のデータ通信に関する仕様情報９００−１〜９００−３を有している。ここで、符号９１０は、アクセス先のハードウェアブロックにアクセスするためのアドレス範囲を表わしている。
【００７５】
また、符号９２０は、アクセス先のハードウェアブロックの名称を表わしている。また、符号９３０は、アクセス元のハードウェアブロックが利用可能なトランザクションの種類（アクセスパターン）を表わしている。また、符号９４０は、アクセス元のハードウェアブロックの名称を表わしている。ここでは、９２０，９４０に表記されているハードウェアブロックの組み合わせによって、相互にアクセス可能なアクセス元およびアクセス先のハードウェアブロックの組み合わせを表わしている。
【００７６】
ここで、仕様情報９００−２を例に挙げると、アドレス範囲「０ｘ２０００＿００００〜０ｘ２０００＿ＦＦＦＦ」が割り当てられたアクセス先のデバイスＡ２０２にアクセス可能なアクセス元のハードウェアブロックとして、ＣＰＵ２０１およびブリッジ２０８が定義されている。また、トランザクションの種類を示すアクセスパターンとして、シングルまたはバースト転送が定義されている。
【００７７】
ここでは、ブリッジを、アクセス元のハードウェアブロックから送信されるデータをアクセス先のハードウェアブロックに中継する機能を有したハードウェアブロックとして扱う。このメモリマップ９００は、たとえば、図１に示したキーボード１２１やマウス１２２などの入力装置１２０をユーザが操作することで、検証シナリオ作成装置１００に入力される。
【００７８】
（生成処理の具体例）
つぎに、このメモリマップ９００に定義されている仕様情報９００−１〜９００−３に基づいて、有向グラフを生成する生成部４０３による生成処理の具体例について説明する。図１０〜図１２は、有向グラフの生成過程を示す説明図である。
【００７９】
まず、図１０に示すように、メモリマップ９００内の９２０，９４０に基づいて、バスシステム２００内のアクセス元となり得るすべてのハードウェアブロックおよびアクセス先となり得るすべてのハードウェアブロックをノードＮ１〜Ｎ６としてそれぞれ異なる列１０１０，１０２０に配置する。このとき、アクセス元およびアクセス先の双方になり得るハードウェアブロックは、アクセス元およびアクセス先の両列に配置する。
【００８０】
このあと、図１１に示すように、ブリッジ２０８に該当するノードＮ３，Ｎ６を識別するためにマークＭを付す。ここでは、ブリッジ２０８に該当するノードＮ３，Ｎ６を丸点線で囲うこととする。つぎに、仕様情報９００−１〜９００−３に基づいて、アクセス先のハードウェアブロックに対してアクセス可能なアクセス元のハードウェアブロックから該アクセス先のハードウェアブロックに有向エッジを接続する。
【００８１】
ここで、仕様情報９００−１を例に挙げると、アクセス先のノードＮ６（ブリッジ２０８）に対してアクセス可能なアクセス元のノードＮ１（ＣＰＵ２０１）およびノードＮ２（デバイスＡ２０２）から有向エッジＥ３，Ｅ５をそれぞれ接続する。さらに、アクセス先のノードＮ５（デバイスＢ２０３）に対してアクセス可能なアクセス元のノードＮ１（ＣＰＵ２０１）、ノードＮ２（デバイスＡ２０２）およびノードＮ３（ブリッジ２０８）から有向エッジＥ２，Ｅ４，Ｅ７をそれぞれ接続する。
【００８２】
このあと、図１２に示すように、ブリッジ２０８に該当するノードＮ３，Ｎ６を１つのノードＮ７に集約する。具体的には、ブリッジ２０８に該当するノードＮ７を、列１０１０，１０２０とは異なる列１２１０に配置する。さらに、自己ループとなっているノード間の有向エッジを削除する。つまり、アクセス元とアクセス先とが同一のハードウェアブロックとなっているノード間を接続する有向エッジを削除する。
【００８３】
さらに、バスシステム２００の構成上、物理的に接続不能なノード間が有向エッジによって接続されている場合、その有向エッジを削除することとしてもよい。具体的には、たとえば、図６に示した構成モデル６００を用いて、バスシステム２００内のパスを探索する探索アルゴリズムを利用することにより、物理的に接続不能なノード間が有向エッジを検出する。
【００８４】
より詳しく説明すると、あるアクセス先のハードウェアブロックに着目し、アクセス先のハードウェアブロックからアクセス元のハードウェアブロックまでのパスを探索する。その結果、パスを探索することができなければ、それらハードウェアブロックを表わすノード間を接続する有向エッジを削除する。ここでは、自己ループおよび接続不能となる有向エッジは存在しない。
【００８５】
このように、上述した一連の処理を実行することにより、バスシステム２００内のアクセス元のハードウェアブロックとアクセス先のハードウェアブロックとブリッジとがノード化された有向グラフ１２００を生成することができる。
【００８６】
（抽出処理および探索処理の具体例）
つぎに、この有向グラフ１２００を用いて、抽出部４０１による抽出処理および探索部４０２による探索処理の具体例について説明する。まず、抽出部４０１により、有向グラフ１２００から任意のアクセス先のハードウェアブロックを表わすノードＮ４，Ｎ５のいずれか一方を抽出する。このあと、探索部４０２により、有向エッジに従って、抽出部４０１によって抽出されたノードからアクセス元のハードウェアブロックを表わすノードに辿り着くまでのパスを探索する。
【００８７】
たとえば、有向グラフ１２００からノードＮ４が抽出された場合、ノードＮ４に接続されている有向エッジＥ１，Ｅ６を辿ることにより、アクセス元のＣＰＵ２０１およびデバイスＡ２０２を表わすノードＮ１，Ｎ２からアクセス先のデバイスＡ２０２を表わすノードＮ４に辿り着くまでのパスを探索する。なお、上述で説明したように、ここで探索されるパスは論理的に想定し得るパスであり、物理的に存在するパスとは限らない。
【００８８】
ここでは、アクセス元のＣＰＵ２０１からアクセス先のデバイスＡ２０２に直接アクセスするパスＰ１（ノードＮ１→ノードＮ４）と、アクセス元のＣＰＵ２０１からブリッジ２０８を経由してアクセス先のデバイスＡ２０２にアクセスするパスＰ２（ノードＮ１→ノードＮ７→ノードＮ４）と、アクセス元のデバイスＡ２０２からブリッジ２０８を経由してアクセス先のデバイスＡ２０２にアクセスするパスＰ３（ノードＮ２→ノードＮ７→ノードＮ４）とが探索される。
【００８９】
また、有向グラフ１２００からノードＮ５が抽出された場合には、ノードＮ５に接続されている有向エッジＥ２，Ｅ４，Ｅ７を辿ることにより、アクセス元のＣＰＵ２０１およびデバイスＡ２０２を表わすノードＮ１，Ｎ２からアクセス先のデバイスＢ２０３を表わすノードＮ５に辿り着くまでのパスを探索することとなる。
【００９０】
この結果、アクセス元のＣＰＵ２０１からアクセス先のデバイスＢ２０３に直接アクセスするパスＰ４（ノードＮ１→ノードＮ５）と、アクセス元のＣＰＵ２０１からブリッジ２０８を経由してアクセス先のデバイスＢ２０３にアクセスするパスＰ５（ノードＮ１→ノードＮ７→ノードＮ５）と、アクセス元のデバイスＡ２０２からアクセス先のデバイスＢ２０３に直接アクセスするパスＰ６（ノードＮ２→ノードＮ５）と、アクセス元のデバイスＡ２０２からブリッジ２０８を経由してアクセス先のデバイスＢ２０３にアクセスするパスＰ７（ノードＮ２→ノードＮ７→ノードＮ５）と、が探索される。
【００９１】
（作成処理の具体例）
つぎに、作成部４０４による作成処理の具体例について説明する。ここでは、作成部４０４は、探索部４０２によって探索されたパスＰ１〜Ｐ７ごとの検証シナリオを作成することとなる。ここで、図５に示したシナリオテンプレート５００を利用して、パスＰ１の検証シナリオを作成する場合について説明する。パスＰ１は、アクセス元のＣＰＵ２０１からアクセス先のデバイスＡ２０２に直接アクセスする経路である。
【００９２】
この場合、メモリマップ９００内の仕様情報９００−２に基づいて、シナリオテンプレート５００の各挿入位置５１０〜５４０に所定の文字列を挿入する。具体的には、シナリオ名『Ｓｃｅｎａｒｉｏ１』を挿入位置５１０に挿入し、アクセス元のハードウェアブロックの名称『ＣＰＵ』を挿入位置５２０に挿入する。
【００９３】
さらに、アクセス先のハードウェアブロックに割り当てられているアドレス『０ｘ２０００＿００００から０ｘ２０００＿ＦＦＦＦ』を挿入位置５３０に挿入し、トランザクションの種類『シングル転送またはバースト転送』を挿入位置５４０に挿入する。これにより、パスＰ１の検証シナリオを作成することができる。
【００９４】
なお、挿入位置５１０には、検証シナリオの作成順序に従って「Ｓｃｅｎａｒｉｏ１→Ｓｃｅｎａｒｉｏ２→…」の順にシナリオ名が挿入されることとする。また、ブリッジは、アクセス元のハードウェアブロックとして扱わないこととする。以下、パスＰ１〜Ｐ３の検証シナリオを表１〜表３に示す。
【００９５】
表１は、パスＰ１の検証シナリオである。これは、ＣＰＵ２０１がデバイスＡ２０２に直接トランザクションを発生する検証シナリオである。
【００９６】
【表１】
0005125385.tif 000002
【００９７】
表２は、パスＰ２の検証シナリオである。これは、ＣＰＵ２０１がブリッジ２０８を介してデバイスＡ２０２にトランザクションを発生する検証シナリオである。
【００９８】
【表２】
0005125385.tif 000003
【００９９】
表３は、パスＰ３の検証シナリオである。これは、デバイスＡ２０２がブリッジ２０８を介してデバイスＡ２０２にトランザクションを発生する検証シナリオである。
【０１００】
【表３】
0005125385.tif 000004
【０１０１】
このあと、作成部４０４により、パスＰ１〜Ｐ３の検証シナリオ（以下、「単体シナリオ」という）の組み合わせ（以下、「並列シナリオ」という）を作成する。ここで、シナリオ名がＳｃｅｎａｒｉｏ１、Ｓｃｅｎａｒｉｏ２およびＳｃｅｎａｒｉｏ３の３つの単体シナリオの組み合わせからなる並列シナリオを示す。
【０１０２】
（１）２つの単体シナリオの組み合わせからなる並列シナリオ
『Ｓｃｅｎａｒｉｏ１‖Ｓｃｅｎａｒｉｏ２，Ｓｃｅｎａｒｉｏ１‖Ｓｃｅｎａｒｉｏ３，Ｓｃｅｎａｒｉｏ２‖Ｓｃｅｎａｒｉｏ３』
【０１０３】
（２）３つの単体シナリオの組み合わせからなる並列シナリオ
『Ｓｃｅｎａｒｉｏ１‖Ｓｃｅｎａｒｉｏ２‖Ｓｃｅｎａｒｉｏ３』
【０１０４】
このあと、作成部４０４によって作成された検証シナリオ（単体シナリオ、並列シナリオ）のうち不要な検証シナリオを削除する。具体的には、図８に示した削除処理を実行する。ここでは、単体シナリオＳｃｅｎａｒｉｏ３が、デバイスＡ２０２が自分自身にトランザクションを発生させる検証シナリオとなっているため不要となる。
【０１０５】
また、単体シナリオＳｃｅｎａｒｉｏ２が、ＣＰＵ２０１がブリッジ２０８を介してデバイスＡ２０２にトランザクションを発生するものとなっており、物理的には存在し得ないパスの検証シナリオとなっているため不要となる。したがって、これら２つの単体シナリオと、これらの単体シナリオを含む並列シナリオを削除する。この結果、作成部４０４によって作成された検証シナリオのうち単体シナリオＳｃｅｎａｒｉｏ１のみが残ることとなる。
【０１０６】
同様にして、仕様情報９００−１に基づいて、所定の文字列を挿入位置５１０〜５４０に挿入することにより、パスＰ４〜Ｐ７の検証シナリオを作成する。以下、パスＰ４〜Ｐ７の検証シナリオを表４〜表７に示す。
【０１０７】
表４は、パスＰ４の検証シナリオである。これは、ＣＰＵ２０１がデバイスＢ２０３に直接トランザクションを発生する検証シナリオである。
【０１０８】
【表４】
0005125385.tif 000005
【０１０９】
表５は、パスＰ５の検証シナリオである。これは、ＣＰＵ２０１がブリッジ２０８を介してデバイスＢ２０３にトランザクションを発生する検証シナリオである。
【０１１０】
【表５】
0005125385.tif 000006
【０１１１】
表６は、パスＰ６の検証シナリオである。これは、デバイスＡ２０２がデバイスＢ２０３に直接トランザクションを発生する検証シナリオである。
【０１１２】
【表６】
0005125385.tif 000007
【０１１３】
表７は、パスＰ７の検証シナリオである。これは、デバイスＡ２０２がブリッジ２０８を介してデバイスＢ２０３にトランザクションを発生する検証シナリオである。
【０１１４】
【表７】
0005125385.tif 000008
【０１１５】
このあと、作成部４０４により、パスＰ４〜Ｐ７の単体シナリオを組み合わせて、並列シナリオを作成する。ここで、シナリオ名がＳｃｅｎａｒｉｏ４、Ｓｃｅｎａｒｉｏ５、Ｓｃｅｎａｒｉｏ６およびＳｃｅｎａｒｉｏ７の４つの単体シナリオの組み合わせからなる並列シナリオを示す。
【０１１６】
（３）２つの単体シナリオの組み合わせからなる並列シナリオ
『Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５，Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ６，Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ７，Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ６，Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ７，Ｓｃｅｎａｒｉｏ６‖Ｓｃｅｎａｒｉｏ７』
【０１１７】
（４）３つの単体シナリオの組み合わせからなる並列シナリオ
『Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ６，Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ７，Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ６‖Ｓｃｅｎａｒｉｏ７，Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ６‖Ｓｃｅｎａｒｉｏ７』
【０１１８】
（５）４つの単体シナリオの組み合わせからなる並列シナリオ
『Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ６‖Ｓｃｅｎａｒｉｏ７』
【０１１９】
このあと、作成部４０４によって作成された検証シナリオ（単体シナリオ、並列シナリオ）のうち不要な検証シナリオを削除する。ここでは、不要となる検証シナリオは存在しない。なお、単体シナリオＳｃｅｎａｒｉｏ５およびＳｃｅｎａｒｉｏ７は、ブリッジ２０８を介して同一バス系統へのトランザクションが発生している。
【０１２０】
しかし、図６に示した構成モデル６００から、パスＰ５およびパスＰ７の経路が実在することがわかる。このため、パスＰ５およびパスＰ７の単体シナリオＳｃｅｎａｒｉｏ５およびＳｃｅｎａｒｉｏ７は必要となる。この結果、作成部４０４によって作成された検証シナリオのすべてが残ることとなる。
【０１２１】
最後に、出力部４０５により、検証シナリオとその検証シナリオに対応するパスとを関連付けて示す関連付けテーブルを出力する。図１３は、関連付けテーブルの一例を示す説明図である。図１３において、関連付けテーブル１３００は、検証シナリオのシナリオ名とその検証シナリオに対応するパスのパス名とを関連付けて示すテーブル表である。
【０１２２】
具体的には、たとえば、パスＰ１と関連付けて単体シナリオ「Ｓｃｅｎａｒｉｏ１」が表記されており、パスＰ４およびパスＰ５と関連付けて並列シナリオ「Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５」が表記されており、パスＰ４、パスＰ５、パスＰ６およびパスＰ７と関連付けて並列シナリオ「Ｓｃｅｎａｒｉｏ４‖Ｓｃｅｎａｒｉｏ５‖Ｓｃｅｎａｒｉｏ６‖Ｓｃｅｎａｒｉｏ７」が表記されている。
【０１２３】
なお、実際にバスシステム２００の検証をおこなう場合には、関連付けテーブル１３００を参照することにより、パスＰ１〜Ｐ７ごとの単体シナリオをそれぞれ実行するとともに、並列アクセス時における各トランザクションの発生順序に従って並列シナリオを実行することとなる。
【０１２４】
（生成処理の具体的処理手順）
つぎに、生成部４０３による生成処理の具体的処理手順について説明する。図１４は、生成処理の具体的処理手順を示すフローチャートである。図１４のフローチャートにおいて、まず、バスシステム内のアクセス元およびアクセス先となり得るすべてのハードウェアブロックをノードとしてそれぞれ異なる列に配置する（ステップＳ１４０１）。
【０１２５】
このあと、ブリッジに該当するノードを識別するためにマークを付し（ステップＳ１４０２）、アクセス先のハードウェアブロックに対してアクセス可能なアクセス元のハードウェアブロックから該アクセス先のハードウェアブロックに有向エッジを接続する（ステップＳ１４０３）。
【０１２６】
このあと、ブリッジに該当するノードが複数存在するか否かを判断し（ステップＳ１４０４）、複数存在する場合（ステップＳ１４０４：Ｙｅｓ）、それら複数のノードを１つのノードに集約する（ステップＳ１４０５）。そして、自己ループとなっているノード間の有向エッジを削除し（ステップＳ１４０６）、物理的に接続不能なノード間の有向エッジを削除する（ステップＳ１４０７）。
【０１２７】
最後に、生成された有向グラフを出力して（ステップＳ１４０８）、本フローチャートによる一連の処理を終了する。また、ステップＳ１４０４において、ブリッジに該当するノードが複数存在しない場合（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０６に移行する。
【０１２８】
（検証シナリオ作成処理の具体的処理手順）
つぎに、検証シナリオ作成処理の具体的処理手順について説明する。図１５は、検証シナリオ作成処理の具体的処理手順を示すフローチャートである。図１５のフローチャートにおいて、まず、抽出部４０１により、生成部４０３によって生成された有向グラフから任意のアクセス先のハードウェアブロックを表わすノードを抽出する（ステップＳ１５０１）。
【０１２９】
このあと、探索部４０２により、有向グラフ内ノード間を接続する有向エッジに従って、抽出部４０１によって抽出されたノードからアクセス元のハードウェアブロックを表わすノードに辿り着くまでのパスを探索する（ステップＳ１５０２）。つぎに、作成部４０４により、探索部４０２によって探索されたパスごとの単体シナリオを作成する（ステップＳ１５０３）。
【０１３０】
このあと、ステップＳ１５０２において複数のパスが探索されたか否かを判断し（ステップＳ１５０４）、複数のパスが探索された場合（ステップＳ１５０４：Ｙｅｓ）、作成部４０４により、ステップＳ１５０３において作成されたパスごとの単体シナリオを組み合わせて並列シナリオを作成する（ステップＳ１５０５）。
【０１３１】
このあと、削除部４０６により、不要な検証シナリオを削除し（ステップＳ１５０６）、つぎに、未抽出のアクセス先のハードウェアブロックを表わすノードがあるか否かを判断（ステップＳ１５０７）。ここで、未抽出のアクセス先のハードウェアブロックを表わすノードがある場合（ステップＳ１５０７：Ｙｅｓ）、ステップＳ１５０１に戻り、一連の処理を繰り返す。
【０１３２】
一方、未抽出のアクセス先のハードウェアブロックを表わすノードがない場合（ステップＳ１５０７：Ｎｏ）、出力部４０５により、検証シナリオと該検証シナリオに対応するパスとを関連付けて示す関連付けテーブルを出力して（ステップＳ１５０８）、本フローチャートによる一連の処理を終了する。なお、ステップＳ１５０４において複数のパスが探索されていない場合には（ステップＳ１５０４：Ｎｏ）、ステップＳ１５０６に移行する。
【０１３３】
実施例によれば、メモリマップ９００に基づいて、バスシステム２００を検証するために必要となるパスごとの単体シナリオ、およびそれらの単体シナリオを組み合わせた並列シナリオを網羅的に自動作成することができる。これにより、設計仕様書から経路情報を抽出するなどの検証者による面倒な作業が不要となり、検証作業にかかる作業負担を軽減するとともに検証品質の向上を図ることができる。
【０１３４】
特に、複数のバス系統がブリッジよって接続されている複雑化したバスシステムでは、必要となる検証シナリオが膨大な数となるため、手作業でおこなう場合に比べて、より効率的かつ網羅的に検証シナリオを作成することができる。また、バスシステム２００の検証に不要となる検証シナリオは削除されるため、無駄な検証作業を削減し検証期間の短縮化を図ることができる。
【０１３５】
以上説明したように、検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法によれば、バスシステムの検証に必要となる検証シナリオを効率的かつ網羅的に作成することにより、検証者の負担軽減および設計期間の短縮化を図ることができる。
【０１３６】
なお、本実施の形態で説明した検証シナリオ作成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１３７】
また、本実施の形態で説明した検証シナリオ作成装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した検証シナリオ作成装置１００の機能的構成４０１〜４０９をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、検証シナリオ作成装置１００を製造することができる。なお、上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３８】
（付記１）検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出させる抽出工程と、
前記抽出工程によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索させる探索工程と、
前記探索工程によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成させる作成工程と、
前記作成工程によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力させる出力工程と、
をコンピュータに実行させることを特徴とする検証シナリオ作成プログラム。
【０１３９】
（付記２）前記作成工程は、
さらに、前記探索工程によって複数のパスが探索された場合、前記パスごとの検証シナリオを組み合わせることにより、前記アドレス範囲への競合アクセスが発生した場合における検証シナリオを作成させることを特徴とする付記１に記載の検証シナリオ作成プログラム。
【０１４０】
（付記３）前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとが同一のハードウェアブロックとからなるパスの検証シナリオを削除させる削除工程を前記コンピュータに実行させ、
前記出力工程は、
前記削除工程によって削除された結果、残余の検証シナリオを当該検証シナリオに対応するパスと関連付けて出力させることを特徴とする付記１または２に記載の検証シナリオ作成プログラム。
【０１４１】
（付記４）前記バスシステム内の同一のバス系統に属するアクセス元およびアクセス先のハードウェアブロックを検出させる検出工程と、
前記探索工程によって探索されたパスのうち、前記検出工程によって検出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでの間に前記バス系統とは異なる他のバス系統を経由するパスを検索させる検索工程と、
前記検索工程によって検索されたパス内のアクセス先のハードウェアブロックが前記他のバス系統に属するか否かを判定させる判定工程と、を前記コンピュータに実行させ、
前記削除工程は、
前記判定工程によって前記他のバス系統に属していないと判定された場合、前記検索工程によって検索されたパスに関連付けられている検証シナリオを削除することを特徴とする付記３に記載の検証シナリオ作成プログラム。
【０１４２】
（付記５）前記バスシステム内の異なるバス系統を接続するブリッジと前記アクセス元のハードウェアブロックと前記アクセス先のハードウェアブロックとがノード化された有向グラフを生成させる生成工程を前記コンピュータに実行させ、
前記抽出工程は、
前記生成工程によって生成された有向グラフから任意のアクセス先のハードウェアブロックを抽出させ、
前記探索工程は、
前記有向グラフ内のノード間を接続する有向エッジに従って、前記抽出工程によって抽出されたアクセス元のハードウェアブロックから当該アクセス先のハードウェアブロックにアクセス可能なアクセス元のハードウェアブロックまでのパスを探索することを特徴とする付記１〜３のいずれか一つに記載の検証シナリオ作成プログラム。
【０１４３】
（付記６）前記生成工程は、
前記バスシステム内のハードウェアブロックにアクセスするためのアドレス範囲、および相互にアクセス可能なアクセス元およびアクセス先のハードウェアブロックの組み合わせを定義するメモリマップに基づいて、前記有向グラフを生成させることを特徴とする付記５に記載の検証シナリオ作成プログラム。
【０１４４】
（付記７）前記作成工程は、
前記バスシステム内のハードウェアブロックが利用可能なトランザクションを定義する前記メモリマップに基づいて、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成させることを特徴とする付記６に記載の検証シナリオ作成プログラム。
【０１４５】
（付記８）付記１〜７のいずれか一つに記載の検証シナリオ作成プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１４６】
（付記９）検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する抽出手段と、
前記抽出手段によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する探索手段と、
前記探索手段によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する作成手段と、
前記作成手段によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力する出力手段と、
を備えることを特徴とする検証シナリオ作成装置。
【０１４７】
（付記１０）検証対象となるバスシステムを構成する複数のハードウェアブロックの中から、相互にアクセス可能な任意のアクセス元およびアクセス先のハードウェアブロックを抽出する抽出工程と、
前記抽出工程によって抽出されたアクセス元のハードウェアブロックからアクセス先のハードウェアブロックに辿り着くまでのパスを探索する探索工程と、
前記探索工程によって探索されたパスごとに、前記アクセス先のハードウェアブロックに割り当てられたアドレス範囲へのアクセスが発生した場合における、前記アクセス元のハードウェアブロックのトランザクションを検証するための検証シナリオを作成する作成工程と、
前記作成工程によって作成された検証シナリオを当該検証シナリオに対応するパスと関連付けて出力する出力工程と、
を含んだことを特徴とする検証シナリオ作成方法。
【産業上の利用可能性】
【０１４８】
以上のように、本発明にかかる検証シナリオ作成プログラム、該プログラムを記録した記録媒体、検証シナリオ作成装置、および検証シナリオ作成方法は、複数のバス系統がブリッジよって接続されているバスシステムの検証に有用である。
【図面の簡単な説明】
【０１４９】
【図１】この発明の実施の形態にかかる検証シナリオ作成装置のハードウェア構成を示す説明図である。
【図２】この発明の実施の形態にかかる検証対象となるバスシステムの一例を示す構成図である。
【図３】バスシステム内のパスの一例を示す説明図である。
【図４】この発明の実施の形態にかかる検証シナリオ作成装置の機能的構成を示すブロック図である。
【図５】シナリオテンプレートの一例を示す説明図である。
【図６】構成モデルの一例を示す説明図である。
【図７】この発明の実施の形態にかかる検証シナリオ作成装置の検証シナリオ作成処理手順を示すフローチャートである。
【図８】削除処理の処理手順を示すフローチャートである。
【図９】メモリマップの一例を示す説明図である。
【図１０】有向グラフの生成過程を示す説明図（その１）である。
【図１１】有向グラフの生成過程を示す説明図（その２）である。
【図１２】有向グラフの生成過程を示す説明図（その３）である。
【図１３】関連付けテーブルの一例を示す説明図である。
【図１４】生成処理の具体的処理手順を示すフローチャートである。
【図１５】検証シナリオ作成処理の具体的処理手順を示すフローチャートである。
【符号の説明】
【０１５０】
１００  検証シナリオ作成装置
２０１  ＣＰＵ
２０２  デバイスＡ
２０３  デバイスＢ
２０４  メインバスコントローラ
２０５  サブバスコントローラ
２０６  メインバス
２０７  サブバス
２０８  ブリッジ
４０１  抽出部
４０２  探索部
４０３  生成部
４０４  作成部
４０５  出力部
４０６  削除部
４０７  検出部
４０８  検索部
４０９  判定部
５００  シナリオテンプレート
５１０，５２０，５３０，５４０  挿入位置
６００  構成モデル
９００  メモリマップ
９００−１，９００−２，９００−３  仕様情報
１２００  有向グラフ
１３００  関連付けテーブル
【図１】
0005125385.tif 000009
【図２】
0005125385.tif 000010
【図３】
0005125385.tif 000011
【図４】
0005125385.tif 000012
【図５】
0005125385.tif 000013
【図６】
0005125385.tif 000014
【図７】
0005125385.tif 000015
【図８】
0005125385.tif 000016
【図９】
0005125385.tif 000017
【図１０】
0005125385.tif 000018
【図１１】
0005125385.tif 000019
【図１２】
0005125385.tif 000020
【図１３】
0005125385.tif 000021
【図１４】
0005125385.tif 000022
【図１５】
0005125385.tif 000023