(57)【特許請求の範囲】
【請求項１】
互いに同期して動作する、回路構成が等価な複数の制御回路と、前記制御回路に対応する、同一の命令を処理するハードウェアとを含むシステムの論理検証を、前記複数の制御回路のいずれか一つの制御回路の機能をモデル化した制御回路モデルと、前記各ハードウェアの機能をモデル化した複数のハードウェアモデルとを含む前記システムの検証モデルを用いて実行するコンピュータに、
前記制御回路モデルにより、前記複数のハードウェアモデルからの命令を受け付けさせる受付工程と、
前記制御回路モデルにより、前記受付工程によって受け付けた命令群の中から、前記ハードウェアモデルが処理する命令を決定させる決定工程と、
前記制御回路モデルにより、当該制御回路モデルと前記複数のハードウェアモデルとを直接接続する論理検証用の信号線を用いて、前記決定工程によって決定された命令の処理要求を、前記複数のハードウェアモデルに通知させる通知工程と、
を実行させることを特徴とする検証支援プログラム。
【請求項２】
前記ハードウェアモデルは、前記ハードウェア内のＣＰＵおよび主記憶装置の機能をそれぞれモデル化したＣＰＵモデルおよび主記憶装置モデルを含み、
前記通知工程は、
前記制御回路モデルにより、前記検証モデル内のいずれかの主記憶装置モデルに記憶されているデータを、前記各ハードウェアモデル内の前記ＣＰＵモデルがキャッシュしているか否かを問い合わせるスヌープ要求を、前記複数のハードウェアモデルに通知させることを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記コンピュータに、
前記制御回路モデルにより、前記通知工程（以下、「第１の通知工程」）によって前記スヌープ要求が通知された結果得られる前記各ハードウェアモデルのスヌープ応答を、前記複数のハードウェアモデルに通知させる第２の通知工程を実行させることを特徴とする請求項２に記載の検証支援プログラム。
【請求項４】
前記第１の通知工程は、
前記制御回路モデルにより、当該制御回路モデルと前記複数のハードウェアモデルとを直接接続する論理検証用の信号線を用いて、前記スヌープ要求を通知させることを特徴とする請求項３に記載の検証支援プログラム。
【請求項５】
前記第２の通知工程は、
前記制御回路モデルにより、当該制御回路モデルと前記複数のハードウェアモデルとを直接接続する論理検証用の信号線を用いて、前記スヌープ応答を通知させることを特徴とする請求項３〜４のいずれか一つに記載の検証支援プログラム。
【請求項６】
前記検証モデルは、前記複数のハードウェアモデルのうち前記一つの制御回路に直接接続されたハードウェアの機能をモデル化したハードウェアモデルを検証対象とすることを特徴とする請求項１〜５のいずれか一つに記載の検証支援プログラム。
【請求項７】
前記検証モデルは、レジスタ転送レベルで記述されることを特徴とする請求項１〜６のいずれか一つに記載の検証支援プログラム。
【請求項８】
前記検証モデルは、ゲートレベルで記述されることを特徴とする請求項１〜６のいずれか一つに記載の検証支援プログラム。
【請求項９】
互いに同期して動作する、回路構成が等価な複数の制御回路と、前記制御回路に対応する、同一の命令を処理するハードウェアとを含むシステムの論理検証を実行する論理検証装置において、
前記複数の制御回路のいずれか一つの制御回路の機能をモデル化した制御回路モデルにより、前記各ハードウェアの機能をモデル化した複数のハードウェアモデルからの命令を受け付ける受付手段と、
前記制御回路モデルにより、前記受付手段によって受け付けた命令群の中から、前記ハードウェアモデルが処理する命令を決定する決定手段と、
前記制御回路モデルにより、当該制御回路モデルと前記複数のハードウェアモデルとを直接接続する論理検証用の信号線を用いて、前記決定手段によって決定された命令の処理要求を、前記複数のハードウェアモデルに通知する通知手段と、
を備えることを特徴とする論理検証装置。
【請求項１０】
互いに同期して動作する、回路構成が等価な複数の制御回路と、前記制御回路に対応する、同一の命令を処理するハードウェアとを含むシステムの論理検証を、前記複数の制御回路のいずれか一つの制御回路の機能をモデル化した制御回路モデルと、前記各ハードウェアの機能をモデル化した複数のハードウェアモデルとを含む前記システムの検証モデルを用いて実行するコンピュータが、
前記制御回路モデルにより、前記複数のハードウェアモデルからの命令を受け付ける受付工程と、
前記制御回路モデルにより、前記受付工程によって受け付けた命令群の中から、前記ハードウェアモデルが処理する命令を決定する決定工程と、
前記制御回路モデルにより、当該制御回路モデルと前記複数のハードウェアモデルとを直接接続する論理検証用の信号線を用いて、前記決定工程によって決定された命令の処理要求を、前記複数のハードウェアモデルに通知する通知工程と、
を実行することを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証対象回路の論理検証を支援する検証支援プログラム、論理検証装置、および検証支援方法に関する。
【背景技術】
【０００２】
従来から、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｌｅ  Ｐｒｏｃｅｓｓｏｒ）構成の大型サーバシステムの論理検証では、シミュレータ上に構築する回路量を抑えるために、システムの一部を検証対象とする検証モデルを構築する。具体的には、例えば、システム内の複数のシステムボードのうち一部のシステムボードを検証対象として検証モデルを構築する。また、大型サーバシステムの検証モデルを構成する従来技術として、一部のシステムボードをビヘイビア・レベルで記述した動作モデルで設計してモデルの抽象度を高くすることで、回路量を削減するものがある。論理検証に関する技術を開示する文献としては、例えば下記特許文献１，２を参照のこと。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１０１２４７号公報
【特許文献２】特開２００７−４０８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、互いに同期して動作させる複数のハードウェアを検証対象回路が含む場合、検証モデルの回路量を削減することが難しいという問題がある。具体的には、例えば、複数のハードウェアを同期して動作させる場合、各ハードウェアを等価な論理で構成する。このため、同期して動作させる複数のハードウェアについては、回路構成を簡略化することが難しく、検証モデルの回路量を削減することが難しい。
【０００５】
また、動作モデルにクロックの概念がない場合、レジスタ転送レベルで記述されたモデルに結合させるためにインターフェース変換器が必要となる。このため、実機には搭載されないインターフェース変換器の設計や検証が別途必要となるという問題がある。また、ビヘイビア・レベルで記述された動作モデルでは、実際の回路動作をレジスタ転送レベルで正確に検証することが難しいという問題がある。
【０００６】
本発明は、上述した従来技術による問題点を解消するため、検証対象回路の検証モデルの回路量を削減することができる検証支援プログラム、論理検証装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、開示の検証支援プログラム、論理検証装置、および検証支援方法は、互いに同期して動作する、回路構成が等価な複数の制御回路と、前記制御回路に対応する、同一の命令を処理するハードウェアとを含むシステムの論理検証を実行する際に、前記複数の制御回路のいずれか一つの制御回路の機能をモデル化した制御回路モデルにより、前記各ハードウェアの機能をモデル化した複数のハードウェアモデルからの命令を受け付け、受け付けた命令群の中から、前記ハードウェアモデルが処理する命令を決定し、決定された命令の処理要求を、前記複数のハードウェアモデルに通知することを要件とする。
【発明の効果】
【０００８】
本検証支援プログラム、論理検証装置、および検証支援方法によれば、検証対象回路の検証モデルの回路量を削減することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる検証対象回路の一例を示す説明図である。
【図２】実施の形態１にかかる検証対象回路の検証モデルの一例を示す説明図である。
【図３】検証対象のハードウェアモデルの一例を示す説明図である。
【図４】検証対象以外のハードウェアモデルの一例を示す説明図である。
【図５】実施の形態１にかかる論理検証装置のハードウェア構成を示すブロック図である。
【図６】実施の形態１にかかる検証モデルの動作例を示すシーケンス図である。
【図７】実施の形態２にかかる検証対象回路の一例を示す説明図である。
【図８】プライオリティ制御部の待ち行列の構成例を示す説明図である。
【図９】メモリ要求の決定例を示す説明図である。
【図１０】実施の形態２にかかるＳＭＰシステムの動作例を示すシーケンス図（その１）である。
【図１１】動作指示テーブルの記憶内容の一例を示す説明図である。
【図１２】実施の形態２にかかるＳＭＰシステムの検証モデルの一例を示す説明図である。
【図１３】疑似システムボードモデルの一例を示す説明図である。
【図１４】プライオリティ制御部モデルの機能的構成を示すブロック図である。
【図１５】プライオリティ制御部モデルの通知部の具体的な処理内容を示す説明図である。
【図１６】プライオリティ制御部モデルの動作手順の一例を示すフローチャートである。
【図１７】疑似ＣＰＵモデルの具体例を示す説明図である。
【図１８】疑似主記憶装置モデルの具体例を示す説明図である。
【図１９】疑似Ｉ／Ｏモデルの具体例を示す説明図である。
【図２０】実施の形態２にかかる検証対象回路の変形例を示す説明図である。
【図２１】実施の形態２にかかるＳＭＰシステムの動作例を示すシーケンス図（その２）である。
【図２２】実施の形態２にかかる検証対象回路の変形例の検証モデルを示す説明図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、論理検証装置、および検証支援方法の好適な実施の形態を詳細に説明する。
【００１１】
（実施の形態１）
図１は、実施の形態１にかかる検証対象回路の一例を示す説明図である。図１において、システム１００は、複数のハードウェアＨ１〜Ｈｎと、複数の制御回路Ｃ１〜Ｃｎと、スイッチ装置Ｓとを含む構成である。システム１００において、複数の制御回路Ｃ１〜Ｃｎ同士は、スイッチ装置Ｓを介して接続されている。また、ハードウェアＨ１〜Ｈｎと対応する制御回路Ｃ１〜Ｃｎは直接接続されている。
【００１２】
ここで、システム１００は、論理検証の対象となる検証対象回路である。論理検証とは、論理設計段階の検証であり、仕様をもとに記述した回路が、仕様通りに動作するかを確認する作業である。システム１００は、例えば、ＳＭＰ構成のスーパーコンピュータやデータセンタ・サーバなどの大型サーバシステムである。
【００１３】
ハードウェアＨ１〜Ｈｎは、検証対象となるハードウェアであり、システムボードやＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）などである。ハードウェアＨ♯は、例えば、複数のＣＰＵ１１♯と主記憶装置１２♯を含む構成である（♯＝１，２，…，ｎ）。ＣＰＵ１１♯は、各種命令を処理する。主記憶装置１２♯は、ＣＰＵ１１♯がアクセス可能なＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置である。
【００１４】
制御回路Ｃ１〜Ｃｎは、互いに同期して動作する、回路構成が等価なハードウェアである。制御回路Ｃ♯は、例えば、スイッチ装置Ｓを介して、複数のハードウェアＨ１〜Ｈｎを発行元とする命令を受け付ける。命令は、例えば、システム１００内のいずれかの主記憶装置１２♯にアクセスするためのメモリ要求である。制御回路Ｃ♯が受け付けた命令は、例えば、制御回路Ｃ♯の待ち行列に登録される。制御回路Ｃ♯は、命令の発行元や命令の種類などに応じて複数の待ち行列を有する。待ち行列は、例えば、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリを並列に組むことで実現される。
【００１５】
制御回路Ｃ♯は、複数のハードウェアＨ１〜Ｈｎを発行元とする命令群の中から、制御回路Ｃ♯に直接接続されているハードウェア♯が処理する命令を決定する。具体的には、例えば、制御回路Ｃ♯は、制御回路Ｃ♯の回路構成に基づく決定アルゴリズムに基づいて、待ち行列に登録されている命令群の中から処理対象となる命令を決定する。
【００１６】
スイッチ装置Ｓは、制御回路Ｃ１〜Ｃｎ間のデータを中継する中継装置である。スイッチ装置Ｓは、例えば、制御回路Ｃ１〜Ｃｎ間でデータをやり取りする際に、経路を動的に選択するクロスバースイッチである。
【００１７】
システム１００において、複数のハードウェアＨ１〜Ｈｎから発行される命令は、スイッチ装置Ｓを介して全制御回路Ｃ１〜Ｃｎにブロードキャストされ、各制御回路Ｃ♯の待ち行列に登録される。また、複数の制御回路Ｃ１〜Ｃｎの回路構成は等価なため、各制御回路Ｃ♯の命令を決定する決定アルゴリズムは同じである。
【００１８】
したがって、システム１００では、制御回路Ｃ１〜Ｃｎがクロックにより同期して動作することで、各制御回路Ｃ♯の待ち行列に登録されている命令群が同じ順序で処理されることになる。なお、図面では、各ハードウェアＨ♯と各制御回路Ｃ♯とが別体に設けられる構成としたが、ハードウェアＨ♯上に制御回路Ｃ♯が搭載される構成としてもよい。
【００１９】
（検証モデルの一例）
図２は、実施の形態１にかかる検証対象回路の検証モデルの一例を示す説明図である。図２において、検証モデル２００は、複数のハードウェアモデルＨＭ１〜ＨＭｎと、制御回路モデルＣＭと、スイッチ装置モデルＳＭとを含む構成である。
【００２０】
検証モデル２００は、図１に示したシステム１００の論理検証を行うためのモデルである。検証モデル２００は、例えば、Ｖｅｒｉｌｏｇ  ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）やＶＨＤＬ（ＶＨＳＩＣ  ＨＤＬ）などのハードウェア記述言語を用いて記述される。
【００２１】
ハードウェアモデルＨＭ♯は、ハードウェアＨ♯（図１参照）の機能をモデル化したものである。制御回路モデルＣＭは、複数の制御回路Ｃ１〜Ｃｎ（図１参照）のうちいずれか一つの制御回路Ｃ♯（ここでは、制御回路Ｃ１）の機能をモデル化したものである。スイッチ装置モデルＳＭは、スイッチ装置Ｓの機能をモデル化したものである。
【００２２】
検証モデル２００において、制御回路モデルＣＭは、いずれか一つのハードウェアモデルＨＭ♯（ここでは、ハードウェアモデルＨＭ１）と直接接続されている。ハードウェアモデルＨＭ１は、制御回路Ｃ１に直接接続されているハードウェアＨ１の機能をモデル化したものである。また、制御回路モデルＣＭは、スイッチ装置モデルＳＭを介して、ハードウェアモデルＨＭ２〜ＨＭｎと接続されている。ハードウェアモデルＨＭ２〜ＨＭｎは、制御回路Ｃ１以外の各制御回路Ｃ２〜Ｃｎに直接接続されている各ハードウェアＨ２〜Ｈｎの機能をモデル化したものである。
【００２３】
さらに、制御回路モデルＣＭは、信号線２１０を介して、ハードウェアモデルＨＭ２〜ＨＭｎと直接接続されている。信号線２１０は、実際の回路上（図１のシステム１００上）では物理的な制約により結線できない信号線であり、検証モデル２００上のみに存在する信号線である。信号線２１０は、例えば、検証対象回路を記述するハードウェア記述言語を用いて、実際の設計記述と同様に記述される。
【００２４】
ここで、ハードウェアモデルＨＭ♯の一例について説明する。大型サーバシステムなどの大規模なシステム１００の論理検証では、シミュレータ上に構築できる検証モデルの回路容量が限られているため、システム１００の一部を検証対象とする検証モデル２００を構築する。
【００２５】
このため、ハードウェアＨ１〜Ｈｎのうち検証対象となるもの以外のハードウェアは、論理検証に必要となる機能のみをモデル化すればよく、このようなモデル化によって検証モデルを構成する回路量を削減することができる。以下、ハードウェアＨ１〜ＨｎのうちハードウェアＨ１を検証対象とした場合を例に挙げて、検証対象および検証対象以外のハードウェアモデルの一例について説明する。
【００２６】
図３は、検証対象のハードウェアモデルの一例を示す説明図である。図３において、ハードウェアモデルＨＭ１は、複数のＣＰＵモデル２１１と、主記憶装置モデル２２１とを含む構成である。ＣＰＵモデル２１１および主記憶装置モデル２２１は、制御回路モデルＣＭと直接接続されている。
【００２７】
ＣＰＵモデル２１１は、ハードウェアＨ１内のＣＰＵ１１１（図１参照：♯＝１）と同一の機能をモデル化したものである。主記憶装置モデル２２１は、ハードウェアＨ１内の主記憶装置１２１（図１参照：♯＝１）と同一の機能をモデル化したものである。
【００２８】
図４は、検証対象以外のハードウェアモデルの一例を示す説明図である。図４において、ハードウェアモデルＨＭ♯は、疑似制御回路モデルＳＣＭ♯と、疑似ＣＰＵモデル２１♯と、疑似主記憶装置モデル２２♯とを含む構成である（ただし、♯＝２，３，…，ｎ）。疑似制御回路モデルＳＣＭ♯は、制御回路モデルＣＭおよびスイッチ装置モデルＳＭと直接接続されている。
【００２９】
疑似制御回路モデルＳＣＭ♯は、制御回路Ｃ♯（図１参照：♯＝２，３，…，ｎ）の機能のうち論理検証に必要となる機能のみをモデル化したものである。疑似ＣＰＵモデル２１♯は、ＣＰＵ１１♯（図１参照：♯＝２，３，…，ｎ）の機能のうち論理検証に必要となる機能のみをモデル化したものである。疑似主記憶装置モデル２２♯は、主記憶装置１２♯（図１参照：♯＝２，３，…，ｎ）の機能のうち論理検証に必要となる機能のみをモデル化したものである。
【００３０】
（論理検証装置のハードウェア構成）
図５は、実施の形態１にかかる論理検証装置のハードウェア構成を示すブロック図である。図５において、論理検証装置５００は、ＣＰＵ５０１と、ＲＯＭ５０２と、ＲＡＭ５０３と、磁気ディスクドライブ５０４と、磁気ディスク５０５と、光ディスクドライブ５０６と、光ディスク５０７と、ディスプレイ５０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）５０９と、キーボード５１０と、マウス５１１と、スキャナ５１２と、プリンタ５１３とを備えている。また、各構成部はバス５２０によってそれぞれ接続されている。
【００３１】
ここで、ＣＰＵ５０１は、論理検証装置５００の全体の制御を司る。ＲＯＭ５０２は、ブートプログラム、論理検証用のテストプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。磁気ディスクドライブ５０４は、ＣＰＵ５０１の制御にしたがって磁気ディスク５０５に対するデータのリード／ライトを制御する。磁気ディスク５０５は、磁気ディスクドライブ５０４の制御で書き込まれたデータを記憶する。
【００３２】
光ディスクドライブ５０６は、ＣＰＵ５０１の制御にしたがって光ディスク５０７に対するデータのリード／ライトを制御する。光ディスク５０７は、光ディスクドライブ５０６の制御で書き込まれたデータを記憶したり、光ディスク５０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３３】
ディスプレイ５０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ５０８は、例えば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３４】
Ｉ／Ｆ５０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク５１４に接続され、このネットワーク５１４を介して他の装置に接続される。そして、Ｉ／Ｆ５０９は、ネットワーク５１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ５０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３５】
キーボード５１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス５１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３６】
スキャナ５１２は、画像を光学的に読み取り、論理検証装置５００内に画像データを取り込む。なお、スキャナ５１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ５１３は、画像データや文書データを印刷する。プリンタ５１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。なお、上述した構成部５０１〜５１３のうち一部の構成部（例えば、スキャナ５１２、プリンタ５１３など）を論理検証装置５００から省略することにしてもよい。
【００３７】
（検証モデル２００の動作例）
図６は、実施の形態１にかかる検証モデルの動作例を示すシーケンス図である。以下に説明する検証モデル２００の動作例は、検証モデル２００の記述データやテストパターンを、図５に示した論理検証装置５００に入力して論理検証を実行することで実現される。
【００３８】
図６のシーケンス図において、（１）制御回路モデルＣＭは、スイッチ装置モデルＳＭを介して、複数のハードウェアモデルＨＭ１〜ＨＭｎからの命令を受け付ける。
【００３９】
（２）制御回路モデルＣＭは、受け付けた命令を制御回路モデルＣＭの待ち行列に登録する。
【００４０】
（３）制御回路モデルＣＭは、待ち行列に登録されている命令群の中から、ハードウェアモデルＨＭ１が処理する命令を決定する。なお、ハードウェアモデルＨＭ１は、制御回路モデルＣＭのモデル元となる制御回路Ｃ１に直接接続されているハードウェアＨ１の機能をモデル化したものである。具体的には、例えば、制御回路モデルＣＭは、制御回路Ｃ♯の回路構成に基づく決定アルゴリズムに基づいて、処理対象となる命令を決定する。
【００４１】
（４）制御回路モデルＣＭは、決定された命令の処理要求を、ハードウェアモデルＨＭ１〜ＨＭｎに通知する。具体的には、例えば、制御回路モデルＣＭは、命令の処理要求を、ハードウェアモデルＨＭ１内のＣＰＵモデル２１１に通知するとともに、ハードウェアモデルＨＭ２〜ＨＭｎ内の疑似制御回路モデルＳＣＭ２〜ＳＣＭｎに通知する。各疑似制御回路モデルＳＣＭ２〜ＳＣＭｎに通知された命令の実行要求は、各疑似制御回路モデルＳＣＭ２〜ＳＣＭｎから各ハードウェアモデルＨＭ２〜ＨＭｎに通知される。
【００４２】
（５）各ハードウェアモデルＨＭ１〜ＨＭｎは、制御回路モデルＣＭから要求された命令を処理する。具体的には、ハードウェアモデルＨＭ１内のＣＰＵモデル２１１が命令を処理するとともに、各ハードウェアモデルＨＭ２〜ＨＭｎ内の各疑似ＣＰＵモデル２１２〜２１ｎが命令を処理する。なお、上記（４）において、制御回路モデルＣＭは、各擬似制御回路モデルＳＣＭ２〜ＳＣＭｎを介すことなく、各ハードウェアモデルＨＭ２〜ＨＭｎ内の各疑似ＣＰＵモデル２１２〜２１ｎに命令の処理要求を直接通知することにしてもよい。
【００４３】
以上説明したように、実施の形態１にかかる検証モデル２００によれば、制御回路モデルＣＭにより、システム１００上には存在しない検証モデル２００上の信号線２１０を介して、全ハードウェアモデルＨＭ１〜ＨＭｎに命令の処理要求を通知することができる。これにより、処理対象となる命令を決定して各ハードウェアモデルＨＭ１〜ＨＭｎに処理対象命令を通知する各制御回路Ｃ１〜Ｃｎの機能を一つにまとめることができ、検証モデル２００の回路量を削減することができる。
【００４４】
また、検証モデル２００によれば、レジスタ転送レベルやゲートレベルで検証モデル２００を記述することで、制御回路モデルＣＭをクロックに同期して動作させることができる。この結果、クロックに同期して制御回路モデルＣＭから命令の処理要求を通知でき、ハードウェアモデルＨＭ１〜ＨＭｎをクロック精度で同期して動作させることができる。これにより、クロック精度で同期して動作させるためのインターフェース変換器などを検証モデル２００内に設ける必要がない。
【００４５】
また、検証モデル２００によれば、制御回路モデルＣＭとハードウェアモデルＨＭ２〜ＨＭｎとを直接接続する信号線２１０を介して、命令の処理要求を制御回路モデルＣＭから各ハードウェアモデルＨＭ２〜ＨＭｎに通知することができる。これにより、ハードウェアモデルＨＭ♯内の疑似制御回路モデルＳＣＭ♯と、疑似ＣＰＵモデル２１♯、疑似主記憶装置モデル２２♯との間に中継回路を持たせる必要がなくなり、ハードウェアモデルＨＭ♯を簡略化して設計することができる。
【００４６】
（実施の形態２）
つぎに、実施の形態２にかかる検証対象回路について説明する。実施の形態１で説明した箇所と同様の箇所については、図示および説明を省略する。また、以下の説明では、制御回路Ｃ１〜Ｃｎを「プライオリティ制御回路Ｐ１〜Ｐｎ」、制御回路モデルＣＭを「プライオリティ制御回路モデルＰＭ」、疑似制御回路モデルＳＣＭを「疑似プライオリティ制御回路ＳＰＭ」と表記する。
【００４７】
図７は、実施の形態２にかかる検証対象回路の一例を示す説明図である。図７において、ＳＭＰシステム７００は、複数のシステムボードＳ１〜Ｓｎと、クロスバースイッチＢとを含む構成である。ＳＭＰシステム７００において、複数のシステムボードＳ１〜Ｓｎは、クロスバースイッチＢを介して接続されている。
【００４８】
ここで、ＳＭＰシステム７００は、論理検証の対象となるシステムボードＳ１〜Ｓｎを含む検証対象回路である。ＳＭＰシステム７００は、システムボードＳ１〜Ｓｎ内の複数のＣＰＵ１１♯（♯＝１，２，…，ｎ）が同等な立場で処理を分担するＳＭＰ構成のシステムである。
【００４９】
システムボードＳ♯は、システムコントローラ７１♯と、複数のＣＰＵ１１♯と、主記憶装置１２♯とを含む構成である。システムコントローラ７１♯は、プライオリティ制御部Ｐ♯と、ＣＰＵ制御部７２♯と、主記憶装置制御部７３♯と、クロスバースイッチ制御部７４♯と、Ｉ／Ｏ制御部７５♯とを含む構成である。システムボードＳ♯は、図１に示したハードウェアＨ♯に相当する。
【００５０】
プライオリティ制御部Ｐ１〜Ｐｎは、互い同期して動作する、回路構成が等価な回路である。プライオリティ制御部Ｐ♯は、クロスバースイッチＢを介して、複数のシステムボードＳ１〜Ｓｎを発行元とするメモリ要求を受け付ける。ここで、メモリ要求は、ＳＭＰシステム７００において複数のＣＰＵ１１１〜１１ｎが、メモリ（主記憶装置１２１〜１２ｎ）を共有するためのものである。すなわち、メモリ要求は、ＳＭＰシステム７００におけるコヒーレンシを確保するためのものである。
【００５１】
メモリ要求は、例えば、要求先のメモリの物理アドレス、要求元のＣＰＵ番号、データの要求タイプ（共有型、排他型）、パケット番号などを含む情報である。プライオリティ制御部Ｐ♯が受け付けたメモリ要求は、例えば、プライオリティ制御部Ｐ♯の待ち行列に登録される。プライオリティ制御部Ｐ♯の待ち行列の具体例については、図８を用いて後述する。
【００５２】
プライオリティ制御部Ｐ♯は、特定の決定アルゴリズムに基づいて、待ち行列に登録されているメモリ要求群の中から、システムボードＳ♯が処理するメモリ要求を決定する。メモリ要求の決定例については、図９を用いて後述する。
【００５３】
ＣＰＵ制御部７２♯は、複数のＣＰＵ１１♯を制御する。主記憶装置制御部７３♯は、主記憶装置１２♯を制御する。クロスバースイッチ制御部７４♯は、クロスバースイッチＢを制御する。Ｉ／Ｏ制御部７５♯は、プライオリティ制御部Ｐ♯に対するデータの入出力を制御する。
【００５４】
クロスバースイッチＢは、プライオリティ制御部Ｐ１〜Ｐｎ間でデータをやり取りする際に、経路を動的に選択する。具体的には、例えば、クロスバースイッチＢは、クロスバースイッチ制御部７４♯の制御にしたがって、データをやり取りする経路を選択する。なお、クロスバースイッチＢは、図１に示したスイッチ装置Ｓに相当する。
【００５５】
（プライオリティ制御部Ｐ♯の待ち行列）
図８は、プライオリティ制御部の待ち行列の構成例を示す説明図である。ここでは、メモリ要求の発行元として、ＣＰＵ＿Ｘ，ＣＰＵ＿Ｙ，ＣＰＵ＿Ｚを例に挙げて説明する。ＣＰＵ＿Ｘ，ＣＰＵ＿Ｙ，ＣＰＵ＿Ｚは、ＳＭＰシステム７００内のいずれかのＣＰＵである。
【００５６】
図８において、プライオリティ制御部Ｐ♯は、メモリ要求の発行元となるＣＰＵ＿Ｘ，ＣＰＵ＿Ｙ，ＣＰＵ＿Ｚごとに、待ち行列８１０，８２０，８３０を有している。待ち行列８１０，８２０，８３０には、対応するＣＰＵ＿Ｘ，ＣＰＵ＿Ｙ，ＣＰＵ＿Ｚからの新規のメモリ要求のほか、再実行するメモリ要求が登録される。
【００５７】
プライオリティ制御部Ｐ♯は、特定の決定アルゴリズムに基づいて、待ち行列８１０，８２０，８３０に登録されているメモリ要求が効率よくかつ必要に応じて均等に処理されるように、処理対象となるメモリ要求を決定する。また、プライオリティ制御部Ｐ♯は、決定されたメモリ要求をスヌープパイプライン８４０に投入する。
【００５８】
スヌープパイプライン８４０は、プライオリティ制御部Ｐ♯がパイプライン処理を実行するためのものであり、複数のステージｓ０〜ｓ７を含む構成である。各ステージｓ０〜ｓ７で実行される処理は予め決まっており、ｓ０→ｓ１→ｓ２→ｓ３→ｓ４→ｓ５→ｓ６→ｓ７の順に実行される。スヌープパイプライン８４０は、例えば、複数のＦＦ（ＦｌｉｐＦｌｏｐ）などの記憶装置により実現される。
【００５９】
図９は、メモリ要求の決定例を示す説明図である。図９において、ＣＰＵ＿Ｘに対応する待ち行列８１０には、メモリ要求Ａ０，Ａ１，Ａ２が登録されている。ＣＰＵ＿Ｙに対応する待ち行列８２０には、メモリ要求Ｂ０，Ｂ１，Ｂ２が登録されている。ＣＰＵ＿Ｚに対応する待ち行列８３０には、メモリ要求Ｃ０，Ｃ１，Ｃ２が登録されている。
【００６０】
ここでは、プライオリティ制御部Ｐ♯は、各待ち行列８１０，８２０，８３０の先頭のメモリ要求のうち、リトライ回数（図９中、「ｒｅｔｒｙ」）が最大のメモリ要求を処理対象に決定する。リトライ回数は、主記憶装置１２♯の使用状況などにより、スヌープパイプライン８４０に投入されたメモリ要求が、再実行するメモリ要求として待ち行列８１０，８２０，８３０に差し戻された回数である。
【００６１】
また、プライオリティ制御部Ｐ♯は、先頭のメモリ要求のうちリトライ回数が同一のメモリ要求があった場合、待ち行列８１０，８２０，８３０の優先順位に基づいて、処理対象となるメモリ要求を決定する。ここでは、待ち行列８１０の優先順位が最も高く、待ち行列８３０の優先順位が最も低く設定されているとする。
【００６２】
図９の（ａ）では、各待ち行列８１０，８２０，８３０の先頭のメモリ要求Ａ０，Ｂ０，Ｃ０は、いずれもリトライ回数が「０」である。この場合、プライオリティ制御部Ｐ♯は、優先順位が最も高い待ち行列８１０の先頭のメモリ要求Ａ０を処理対象として決定して、スヌープパイプライン８４０に投入する。
【００６３】
図９の（ｂ）では、待ち行列８１０，８３０の先頭のメモリ要求Ａ０，Ｃ０のリトライ回数は「０」であり、待ち行列８２０の先頭のメモリ要求Ｂ０のリトライ回数は「１」である。この場合、プライオリティ制御部Ｐ♯は、リトライ回数が最大のメモリ要求Ｂ０を処理対象として決定して、スヌープパイプライン８４０に投入する。
【００６４】
（ＳＭＰシステム７００の動作例）
図１０は、実施の形態２にかかるＳＭＰシステムの動作例を示すシーケンス図（その１）である。ここでは、ＳＭＰシステム７００内のシステムボードＳ♯とクロスバースイッチＢとの間の動作シーケンスについて説明する。図１０のシーケンス図において、（１）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、Ｉ／Ｏ制御部７５♯を介して、ＣＰＵ１１♯から発行されたメモリ要求をクロスバースイッチＢに送信する。
【００６５】
（２）クロスバースイッチＢは、システムボードＳ♯からのメモリ要求を受信して、該メモリ要求をシステムボードＳ１〜Ｓｎにブロードキャストする。すなわち、クロスバースイッチＢから、各プライオリティ制御部Ｐ１〜Ｐｎに同一のクロックと同一のメモリ要求が入力される。この結果、全プライオリティ制御部Ｐ１〜Ｐｎが同期して動作する。
【００６６】
（３）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、クロスバースイッチＢからのメモリ要求を受け付けて、待ち行列にメモリ要求を登録する。
【００６７】
（４）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、待ち行列に登録されているメモリ要求群の中から、システムボードＳ♯に搭載されたＣＰＵ１１♯の処理対象となるメモリ要求を決定する。（４）の処理は、プライオリティ制御部Ｐ♯のスヌープパイプライン８４０のステージｓ０の処理に相当する。
【００６８】
（５）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、決定されたメモリ要求に関するスヌープ処理を実行する。具体的には、まず、プライオリティ制御部Ｐ♯が、要求先のメモリのデータをキャッシュしているか否かを問い合わせるスヌープ要求を、ＣＰＵ１１♯に送信する。そして、プライオリティ制御部Ｐ♯が、ＣＰＵ１１♯のキャッシュ状態を表すスヌープ応答をＣＰＵ１１♯から受信する。（５）の処理は、スヌープパイプライン８４０のステージｓ１の処理に相当する。なお、ＣＰＵ１１♯のキャッシュ状態としては、例えば、ＭＥＳＩプロトコルに基づく以下の４つの状態がある。
【００６９】
・Ｍ（Ｍｏｄｉｆｉｅｄ）：ＣＰＵ１１♯のキャッシュだけに存在し、キャッシュ上の値は主記憶装置１２♯上の値から変更されている。
・Ｅ（Ｅｘｃｌｕｓｉｖｅ）：ＣＰＵ１１♯のキャッシュだけに存在するが、キャッシュ上の値は主記憶装置１２♯上の値と一致している。
・Ｓ（Ｓｈａｒｅｄ）：ＳＭＰシステム７００内の他のＣＰＵのキャッシュにも同じキャッシュラインが存在している。
・Ｉ（Ｉｎｖａｌｉｄ）：キャッシュラインは無効である。
【００７０】
（６）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、システムボードＳ♯内のＣＰＵ１１♯のキャッシュ状態をクロスバースイッチＢに報告する。（６）の処理は、スヌープパイプライン８４０のステージｓ２の処理に相当する。
【００７１】
（７）クロスバースイッチＢは、各システムボードＳ１〜Ｓｎから報告されたキャッシュ状態をマージする。なお、マージとは、例えば、各システムボードＳ１〜Ｓｎからのキャッシュ状態を組み合わせて、ＳＭＰシステム７００のシステム全体のキャッシュ状態として集約することである。
【００７２】
（８）クロスバースイッチＢは、システム全体のキャッシュ状態をシステムボードＳ１〜Ｓｎにブロードキャストする。
【００７３】
（９）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、クロスバースイッチＢからのシステム全体のキャッシュ状態を受信する。（９）においてシステム全体のキャッシュ状態を受信するまで待つ処理は、スヌープパイプライン８４０のステージｓ３〜ｓ５の処理に相当する。また、（９）においてシステム全体のキャッシュ状態を受信する処理は、スヌープパイプライン８４０のステージｓ６の処理に相当する。
【００７４】
（１０）システムボードＳ♯内のプライオリティ制御部Ｐ♯は、システム全体のキャッシュ状態と、ＣＰＵ１１♯のキャッシュ状態とに基づいて、ユニットに指示する動作指示を決定する。具体的には、例えば、プライオリティ制御部Ｐ♯が、図１１に示す動作指示テーブル１１００を参照して、ＣＰＵ１１♯に指示する動作指示を決定する。（１０）の処理は、スヌープパイプライン８４０のステージｓ７の処理に相当する。
【００７５】
図１１は、動作指示テーブルの記憶内容の一例を示す説明図である。図１１において、動作指示テーブル１１００は、キャッシュ状態（システム全体／自ＳＢ）、物理アドレス、要求タイプおよび動作指示のフィールドを有している。各フィールドに情報を設定することで、動作指示情報１１００−１〜１１００−１０がレコードとして記憶されている。
【００７６】
動作指示テーブル１１００は、例えば、各システムボードＳ♯内の各プライオリティ制御部Ｐ♯が保持している。キャッシュ状態（システム全体）は、ＳＭＰシステム７００のシステム全体のキャッシュ状態である。キャッシュ状態（自ＳＢ）は、ＣＰＵ１１♯のキャッシュ状態である。すなわち、プライオリティ制御部Ｐ♯と同一のシステムボードＳ♯内のＣＰＵ１１♯のキャッシュ状態がキャッシュ状態（自ＳＢ）となる。
【００７７】
物理アドレスおよび要求タイプは、メモリ要求に含まれている要求先のメモリ（主記憶装置１２１〜１２ｎ）の物理アドレスおよびデータの要求タイプである。動作指示は、各ユニットに指示する動作指示である。なお、ユニットは、例えば、システムボードＳ♯上のＣＰＵ１１♯、主記憶装置１２♯、Ｉ／Ｏ制御部７５♯などである。
【００７８】
ここで、動作指示情報１１００−１を例に挙げると、システム全体および自ＳＢのキャッシュ状態が「Ｍ」で、要求タイプが「共有型」の場合、プライオリティ制御部Ｐ♯が、キャッシュしているデータを他のシステムボードＳ♯に送信する動作指示（「ＣＰＵキャッシュデータを送信」）をＣＰＵ１１♯に行う。
【００７９】
（検証モデルの一例）
図１２は、実施の形態２にかかるＳＭＰシステムの検証モデルの一例を示す説明図である。図１２において、検証モデル１２００は、システムボードモデルＳＭと、プライオリティ制御部モデルＰＭと、疑似システムボードモデルＳＳＭ２〜ＳＳＭｎと、疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎと、を含む構成である。
【００８０】
システムボードモデルＳＭは、システムボードＳ１（図７参照）と同一の機能をモデル化したものである。プライオリティ制御部モデルＰＭは、システムボードＳ１内のプライオリティ制御部Ｐ１と同一の機能をモデル化したものである。なお、図示は省略するが、システムボードモデルＳＭには、システムボードＳ１内のシステムコントローラ７１１、ＣＰＵ１１１および主記憶装置１２１と同一の機能をモデル化したものも含まれている。
【００８１】
疑似システムボードモデルＳＳＭ♯は、システムボードＳ♯（図７参照）の機能を簡略化してモデル化したものである（ただし、♯＝２，３，…，ｎ）。疑似プライオリティ制御部モデルＳＰＭ♯は、システムボードＳ♯内のプライオリティ制御部Ｐ♯の機能を簡略化してモデル化したものである（ただし、♯＝２，３，…，ｎ）。クロスバースイッチモデルＢＭは、クロスバースイッチＢ（図７参照）と同一の機能をモデル化したものである。
【００８２】
検証モデル１２００において、プライオリティ制御部モデルＰＭおよび疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎは、クロスバースイッチモデルＢＭを介して接続されている。また、プライオリティ制御部モデルＰＭは、信号線１２１０を介して、疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎと直接接続されている。信号線１２１０は、実際の回路上（ＳＭＰシステム７００上）では物理的な制約により結線できない信号線であり、検証モデル１２００上のみに存在する信号線である。
【００８３】
図１３は、疑似システムボードモデルの一例を示す説明図である。図１３において、疑似システムボードモデルＳＳＭ♯は、疑似プライオリティ制御部モデルＳＰＭ♯と、疑似ＣＰＵモデル１３１♯と、疑似主記憶装置モデル１３２♯と、クロスバースイッチ制御部モデル１３３♯と、疑似Ｉ／Ｏモデル１３４♯と、を含む構成である（ただし、♯＝２，３，…，ｎ）。
【００８４】
疑似プライオリティ制御部モデルＳＰＭ♯は、プライオリティ制御部Ｐ♯の機能のうち論理検証に必要となる機能のみをモデル化したものである。疑似ＣＰＵモデル１３１♯は、ＣＰＵ１１♯の機能のうち論理検証に必要となる機能のみをモデル化したものである。疑似主記憶装置モデル１３２♯は、主記憶装置１２♯の機能のうち論理検証に必要となる機能のみをモデル化したものである。
【００８５】
クロスバースイッチ制御部モデル１３３♯は、クロスバースイッチ制御部７４♯と同一の機能をモデル化したものである。疑似Ｉ／Ｏモデル１３４♯は、Ｉ／Ｏ制御部７５♯の機能のうち論理検証に必要となる機能のみをモデル化したものである。なお、疑似ＣＰＵモデル１３１♯、疑似主記憶装置モデル１３２♯および疑似Ｉ／Ｏモデル１３４♯の具体例は、図１７〜図１９を用いて後述する。
【００８６】
疑似システムボードモデルＳＳＭ♯では、疑似プライオリティ制御部モデルＳＰＭ♯と疑似ＣＰＵモデル１３１♯、疑似主記憶装置モデル１３２♯、疑似Ｉ／Ｏモデル１３４♯とを直接接続する。これにより、図７に示したシステムボードＳ♯をそのままモデル化した場合に比べて、疑似システムボードモデルＳＳＭ♯を簡略化して設計することができる。この結果、検証モデル１２００の論理規模を削減し、検証モデル１２００の設計および検証の省力化を図ることができる。
【００８７】
（プライオリティ制御部モデルＰＭの機能的構成）
図１４は、プライオリティ制御部モデルの機能的構成を示すブロック図である。図１４において、プライオリティ制御部モデルＰＭは、受付部１４０１と、決定部１４０２と、通知部１４０３と、送信部１４０４と、受信部１４０５と、を含む構成である。
【００８８】
受付部１４０１は、クロスバースイッチモデルＢＭを介して、システムボードモデルＳＭおよび疑似システムボードモデルＳＳＭ２〜ＳＳＭｎを発行元とするメモリ要求を受け付ける。受け付けたメモリ要求は、プライオリティ制御部モデルＰＭの待ち行列に登録される。プライオリティ制御部モデルＰＭの待ち行列は、例えば、図８に示した待ち行列８１０，８２０，８３０をモデル化したものである。
【００８９】
決定部１４０２は、待ち行列に登録されているメモリ要求群の中からシステムボードモデルＳＭが処理するメモリ要求を決定する。具体的には、例えば、決定部１４０２が、プライオリティ制御部Ｐ♯と同一の決定アルゴリズムに基づいて、処理対象となるメモリ要求を決定する。決定されたメモリ要求は、スヌープパイプラインモデル１５１０（図１５参照）に投入される。
【００９０】
通知部１４０３は、決定されたメモリ要求をシステムボードモデルＳＭおよび疑似システムボードモデルＳＳＭ２〜ＳＳＭｎに通知する。具体的には、例えば、通知部１４０３が、プライオリティ制御部モデルＰＭのスヌープパイプラインモデル１５１０および疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎのスヌープパイプラインモデル１５２０（図１５参照）にメモリ要求を投入する。なお、通知部１４０３の具体的な処理内容については、図１５を用いて後述する。
【００９１】
送信部１４０４は、メモリ要求をシステムボードモデルＳＭに通知した結果得られるシステムボードモデルＳＭ内のＣＰＵモデルのキャッシュ状態を、クロスバースイッチモデルＢＭに送信する。なお、ＣＰＵモデルは、システムボードＳ１内のＣＰＵ１１１と同一の機能をモデル化したものである。
【００９２】
受信部１４０５は、ＣＰＵモデルのキャッシュ状態を送信した結果、検証モデル１２００のシステム全体のキャッシュ状態をクロスバースイッチモデルＢＭから受信する。また、通知部１４０３は、受信したシステム全体のキャッシュ状態をシステムボードモデルＳＭおよび疑似システムボードモデルＳＳＭ２〜ＳＳＭｎに通知する。
【００９３】
具体的には、例えば、通知部１４０３が、プライオリティ制御部モデルＰＭのスヌープパイプラインモデル１５１０および疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎのスヌープパイプラインモデル１５２０（図１５参照）にシステム全体のキャッシュ状態を投入する。この結果、プライオリティ制御部モデルＰＭおよび疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎにおいて動作指示が決定されて、各ユニットに動作指示が送信される。
【００９４】
（通知部１４０３の具体的処理内容）
図１５は、プライオリティ制御部モデルの通知部の具体的な処理内容を示す説明図である。図１５において、プライオリティ制御部モデルＰＭが有するスヌープパイプラインモデル１５１０と、疑似プライオリティ制御部モデルＳＰＭ♯が有するスヌープパイプラインモデル１５２０とが示されている。
【００９５】
スヌープパイプラインモデル１５１０は、プライオリティ制御部Ｐ♯が有するスヌープパイプライン８４０と同一の機能をモデル化したものである。具体的には、スヌープパイプラインモデル１５１０は、ステージｓ０〜ｓ７を含む構成である。スヌープパイプラインモデル１５１０の各ステージｓ０〜ｓ７は、スヌープパイプライン８４０の各ステージｓ０〜ｓ７にそれぞれ対応している。
【００９６】
スヌープパイプラインモデル１５２０は、プライオリティ制御部Ｐ♯が有するスヌープパイプライン８４０の機能を簡略化してモデル化したものである。具体的には、スヌープパイプラインモデル１５２０は、ステージｓ１’，ｓ２’，ｓ７’を含む構成である。スヌープパイプラインモデル１５２０の各ステージｓ１’，ｓ２’，ｓ７’は、スヌープパイプライン８４０の各ステージｓ１，ｓ２，ｓ７にそれぞれ対応している。
【００９７】
ここで、スヌープパイプラインモデル１５１０のステージｓ０と、スヌープパイプラインモデル１５２０のステージｓ１’は、論理検証用の信号線１２１０を介して接続されている。また、スヌープパイプラインモデル１５１０のステージｓ６と、スヌープパイプラインモデル１５２０のステージｓ７’は、論理検証用の信号線１２１０を介して接続されている。具体的には、例えば、検証モデル１２００の記述データにおいて、スヌープパイプラインモデル１５１０とスヌープパイプラインモデル１５２０とのステージ間の接続関係および入出力関係をハードウェア記述言語で定義することで、信号線１２１０を実現できる。
【００９８】
通知部１４０３は、スヌープパイプラインモデル１５１０のステージｓ０にメモリ要求が投入されると、信号線１２１０を介して、スヌープパイプラインモデル１５１０のステージｓ１とスヌープパイプラインモデル１５２０のステージｓ１’にメモリ要求を投入する。なお、ステージｓ０に投入されるメモリ要求は、上記決定部１４０２によって決定された処理対象となるメモリ要求である。
【００９９】
また、通知部１４０３は、スヌープパイプラインモデル１５１０のステージｓ６でシステム全体のキャッシュ状態を受信すると、スヌープパイプラインモデル１５１０のステージｓ７とスヌープパイプラインモデル１５２０のステージｓ７’にシステム全体のキャッシュ状態を投入する。
【０１００】
なお、スヌープパイプラインモデル１５１０において、各ステージｓ０〜ｓ６の処理結果は、以降のステージにも投入される。同様に、スヌープパイプラインモデル１５２０において、各ステージｓ１’，ｓ２’の処理結果は、以降のステージにも投入される。例えば、スヌープパイプラインモデル１５１０のステージｓ０に投入されたメモリ要求はステージｓ１にも投入される。すなわち、後続の処理に必要となる情報が、以降のステージに投入される。
【０１０１】
このように、スヌープパイプラインモデル１５１０とスヌープパイプラインモデル１５２とのステージ間を接続することで、メモリ要求やシステム全体のキャッシュ状態を通知することができる。これにより、疑似プライオリティ制御部モデルＳＰＭ♯は、待ち行列を持たなくてもスヌープ動作を行うことができる。また、疑似プライオリティ制御部モデルＳＰＭ♯のスヌープパイプラインモデル１５２０では、スヌープパイプラインモデル１５１０のステージｓ０およびステージｓ３〜ｓ６に対応するステージが不要となる。
【０１０２】
なお、疑似システムボードモデルＳＳＭ♯がレジスタ転送レベルで記述される回路の場合、多くの論理シミュレータで階層をまたいで信号を参照することが可能なため、実際の回路に変更を加えなくても論理検証用の結線（信号線１２１０）を行うことができる。
【０１０３】
（プライオリティ制御部モデルＰＭの動作手順）
図１６は、プライオリティ制御部モデルの動作手順の一例を示すフローチャートである。図１６において、決定部１４０２により、待ち行列に登録されているメモリ要求群の中から、システムボードモデルＳＭが処理するメモリ要求を決定する（ステップＳ１６０１）。
【０１０４】
そして、通知部１４０３により、決定されたメモリ要求をシステムボードモデルＳＭおよび疑似システムボードモデルＳＳＭ２〜ＳＳＭｎに通知する（ステップＳ１６０２）。つぎに、送信部１４０４により、メモリ要求をシステムボードモデルＳＭに通知した結果得られるシステムボードモデルＳＭ内のＣＰＵモデルのキャッシュ状態を、クロスバースイッチモデルＢＭに送信する（ステップＳ１６０３）。
【０１０５】
このあと、受信部１４０５により、検証モデル１２００のシステム全体のキャッシュ状態をクロスバースイッチモデルＢＭから受信したか否かを判断する（ステップＳ１６０４）。ここで、受信部１４０５により、システム全体のキャッシュ状態を受信するのを待つ（ステップＳ１６０４：Ｎｏ）。
【０１０６】
そして、検証モデル１２００のシステム全体のキャッシュ状態を受信した場合（ステップＳ１６０４：Ｙｅｓ）、通知部１４０３により、受信したシステム全体のキャッシュ状態をシステムボードモデルＳＭおよび疑似システムボードモデルＳＳＭ２〜ＳＳＭｎに通知して（ステップＳ１６０５）、本フローチャートによる一連の動作を終了する。
【０１０７】
（疑似ＣＰＵモデル１３１♯の具体例）
図１７は、疑似ＣＰＵモデルの具体例を示す説明図である。図１７において、疑似ＣＰＵモデル１３１♯は、複数のＣＰＵコアモデル１７１♯と、バスコントローラモデル１７２♯と、キャッシュモデル１７３♯と、を含む構成である。疑似ＣＰＵモデル１３１♯は、図７に示したシステムコントローラ７１♯内のＣＰＵ制御部７２♯の機能を統合した設計である。
【０１０８】
ＣＰＵコアモデル１７１♯は、メモリ要求を生成して、バスコントローラモデル１７２♯にメモリ要求を通知する。バスコントローラモデル１７２♯は、疑似プライオリティ制御部モデルＳＰＭ♯に対してメモリ要求を出力する。また、バスコントローラモデル１７２♯は、疑似プライオリティ制御部モデルＳＰＭ♯を介して、スヌープ要求を受信する。そして、バスコントローラモデル１７２♯は、スヌープ動作を行って、疑似プライオリティ制御部モデルＳＰＭ♯に対してスヌープ応答を出力する。
【０１０９】
疑似ＣＰＵモデル１３１♯は、論理検証に必要ない要素、例えば、電源制御回路、テスト回路、高速化回路を削除した設計となっている。また、疑似ＣＰＵモデル１３１♯では、ＣＰＵコアモデル１７１♯から演算機、レジスタを削減した設計とすることで、実際のＣＰＵ１１♯より簡略化することができる。また、複数のＣＰＵコアモデル１７１♯のキャッシュモデルをキャッシュモデル１７３♯として集約することで、回路量を削減することができる。
【０１１０】
（疑似主記憶装置モデル１３２♯の具体例）
図１８は、疑似主記憶装置モデルの具体例を示す説明図である。図１８において、疑似主記憶装置モデル１３２♯は、メモリコントローラモデル１８１♯と、ＲＡＭモデル１８２♯と、を含む構成である。疑似主記憶装置モデル１３２♯は、図７に示したシステムコントローラ７１♯の主記憶装置制御部７３♯の機能を統合した設計である。
【０１１１】
メモリコントローラモデル１８１♯は、疑似プライオリティ制御部モデルＳＰＭ♯を介して、ＲＡＭモデル１８２♯のリード・ライト要求を受信して、ＲＡＭモデル１８２♯のリード・ライトを行う。
【０１１２】
疑似主記憶装置モデル１３２♯は、論理検証に必要ない要素、例えば、電源制御回路、テスト回路、ＤＩＩＭコントローラ機能を削除した設計となっている。また、疑似主記憶装置モデル１３２♯では、論理検証に必要な最低限の容量に記憶容量を制限することで、実際の主記憶装置１２♯より簡略化して、回路量を削減することができる。
【０１１３】
（疑似Ｉ／Ｏモデル１３４♯の具体例）
図１９は、疑似Ｉ／Ｏモデルの具体例を示す説明図である。図１９において、疑似Ｉ／Ｏモデル１３４♯は、Ｉ／Ｏアドレス空間テスト用ＲＡＭモデル１９１♯と、Ｉ／Ｏバスコントローラモデル１９２♯と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）テスト用ＲＡＭモデル１９３♯と、を含む構成である。
【０１１４】
疑似Ｉ／Ｏモデル１３４♯は、図７に示したシステムコントローラ７１♯のＩ／Ｏ制御部７５♯の機能を統合した設計である。Ｉ／Ｏバスコントローラモデル１９２♯は、ＤＭＡリード・ライト要求を生成し、このＤＭＡリード・ライト要求をメモリ要求として疑似プライオリティ制御部モデルＳＰＭ♯に対して出力する。
【０１１５】
また、Ｉ／Ｏバスコントローラモデル１９２♯は、疑似プライオリティ制御部モデルＳＰＭ♯を介して、ＰＩＯ（Ｐｒｏｇｒａｍｍｅｄ  Ｉ／Ｏ）リード・ライト要求を受信する。そして、Ｉ／Ｏバスコントローラモデル１９２♯は、Ｉ／Ｏアドレス空間テスト用ＲＡＭモデル１９１♯からＰＩＯリードデータを読み出し、Ｉ／Ｏアドレス空間テスト用ＲＡＭモデル１９１♯にＰＩＯライトデータを書き込む。
【０１１６】
また、Ｉ／Ｏバスコントローラモデル１９２♯は、ＤＭＡテスト用ＲＡＭモデル１９３♯からＤＭＡライトデータを出力し、ＤＭＡリードデータが到着した際にはＤＭＡテスト用ＲＡＭモデル１９３♯に書き込む。疑似Ｉ／Ｏモデル１３４♯では、論理検証に必要ない要素、例えば、電源制御回路、テスト回路、シリアル・パラレル変換回路を削除することで、実際のＩ／Ｏ制御部７５♯より簡略化して、回路量を削減することができる。
【０１１７】
（検証対象回路の変形例）
図２０は、実施の形態２にかかる検証対象回路の変形例を示す説明図である。図２０において、システムボード２０００は、プライオリティ制御部Ｐ１，Ｐ２と、複数のＣＰＵ１１１，１１２と、主記憶装置１２１，１２２と、を含む構成である。システムボード２０００は、クロスバースイッチＢを用いることなく、物理的に１枚の基板上に同期して動作する複数のプライオリティ制御部Ｐ１，Ｐ２を含むＳＭＰ構成のシステムである。
【０１１８】
図２１は、実施の形態２にかかるＳＭＰシステムの動作例を示すシーケンス図（その２）である。ここでは、システムボード２０００内のプライオリティ制御部Ｐ１がメモリ要求を発行する場合について説明する。ただし、以下に説明する（２）〜（７）の動作は、プライオリティ制御部Ｐ１，Ｐ２が同期して行う。
【０１１９】
図２１のシーケンス図において、（１）プライオリティ制御部Ｐ１は、メモリ要求をプライオリティ制御部Ｐ２に送信する。
（２）プライオリティ制御部Ｐ１，Ｐ２はそれぞれ、待ち行列にメモリ要求を登録する。
（３）プライオリティ制御部Ｐ１，Ｐ２は、待ち行列に登録されているメモリ要求群の中から処理対象となるメモリ要求を決定する。
（４）プライオリティ制御部Ｐ１，Ｐ２は、決定されたメモリ要求に関するスヌープ処理を実行する。
（５）プライオリティ制御部Ｐ１，Ｐ２は、ＣＰＵ１１１，１１２のキャッシュ状態を相互に報告する。
（６）プライオリティ制御部Ｐ１，Ｐ２は、ＣＰＵ１１１，１１２のキャッシュ状態をマージする。
（７）プライオリティ制御部Ｐ１，Ｐ２は、マージしたＣＰＵ１１１，１１２のキャッシュ状態に基づいて、ユニットに指示する動作指示を決定する。
【０１２０】
図２２は、実施の形態２にかかる検証対象回路の変形例の検証モデルを示す説明図である。図２２において、システムボードモデル２２００は、システムボード２０００の検証モデルである。システムボードモデル２２００は、プライオリティ制御部モデルＰＭと、疑似プライオリティ制御部モデルＳＰＭ２と、複数のＣＰＵモデル２２０１と、主記憶装置モデル２２０２と、疑似ＣＰＵモデル１３１２と、疑似主記憶装置モデル１３２２と、を含む構成である。
【０１２１】
システムボードモデル２２００において、プライオリティ制御部モデルＰＭと疑似プライオリティ制御部モデルＳＰＭ２は、論理検証用の信号線２２１０を介して接続されている。なお、プライオリティ制御部Ｐ♯を含む多数の論理回路が同一のＬＳＩ（物理チップ）に内蔵されるが、内部の距離が長いために実回路では直結できないような場合も本手法を適用可能である。
【０１２２】
以上説明したように、実施の形態２にかかる検証モデル１２００によれば、プライオリティ制御部モデルＰＭにより、検証モデル１２００上の信号線１２１０を介して、疑似システムボードモデルＳＳＭ２〜ＳＳＭｎにメモリ要求を通知することができる。これにより、システムボードＳ１〜Ｓｎごとに処理対象となるメモリ要求を決定するプライオリティ制御部Ｐ１〜Ｐｎの機能を一つにまとめることができ、検証モデル１２００の回路量を削減することができる。例えば、ｎ枚のシステムボードＳ１〜Ｓｎを含む大規模システムの論理検証において、プライオリティ制御部Ｐ１〜Ｐｎに関するモデルの回路量を１／ｎに削減することができる。
【０１２３】
また、検証モデル１２００によれば、各疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎは、プライオリティ制御部モデルＰＭから信号線１２１０を介してメモリ要求を受信することで、待ち行列を持たなくてもスヌープ動作を行うことができる。
【０１２４】
また、検証モデル１２００によれば、各疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎは、プライオリティ制御部モデルＰＭから信号線１２１０を介してシステム全体のキャッシュ状態を受信することができる。これにより、各疑似プライオリティ制御部モデルＳＰＭ２〜ＳＰＭｎは、スヌープパイプラインモデル１５１０のステージｓ３〜ｓ６に相当する中間ステージを持たなくても各ユニットの動作指示を決定することができる。
【０１２５】
また、検証モデル１２００によれば、システムボードモデルＳＭからクロックに同期して動作する順序回路の出力を分配して疑似システムボードモデルＳＳＭ♯に結線することで、クロックレベルの精度で疑似システムボードモデルＳＳＭ♯を動作させることができる。
【０１２６】
また、検証モデル１２００によれば、検証対象以外のシステムボードＳ２〜Ｓｎ上の構成を簡略化してモデル化することにより、検証モデル１２００の回路量を削減することができる。例えば、疑似ＣＰＵモデル１３１♯、疑似主記憶装置モデル１３２♯および疑似Ｉ／Ｏモデル１３４♯を、実際のＣＰＵ１１♯、主記憶装置１２♯およびＩ／Ｏ制御部７５♯より簡略化して、検証モデル１２００の回路量を削減することができる。
【０１２７】
これらのことから、本検証支援プログラム、論理検証装置、および検証支援方法によれば、既存の計算機システム上に、大型サーバシステムの検証モデルを構成して、クロックレベルの精度で大型システムの論理検証を行うことができる。具体的には、例えば、上述した検証モデルをシミュレータに搭載し、テストパターンの印加、テストプログラムの走行といった検証手法を実施することによって、従来は困難であったクロックレベルの精度で大規模システムの論理検証を行うことが可能となる。
【０１２８】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本検証支援プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本検証支援プログラムは、インターネット等のネットワークを介して配布して、コンピュータにダウンロードしてもよい。
【符号の説明】
【０１２９】
１００  システム
１３１♯  疑似ＣＰＵモデル
１３２♯  疑似主記憶装置モデル
１３４♯  疑似Ｉ／Ｏモデル
５００  論理検証装置
８１０，８２０，８３０  待ち行列
８４０  スヌープパイプライン
１１００  動作指示テーブル
１４０１  受付部
１４０２  決定部
１４０３  通知部
１４０４  送信部
１４０５  受信部
１５１０，１５２０  スヌープパイプラインモデル
Ｂ  クロスバースイッチ
ＢＭ  クロスバースイッチモデル
Ｃ１〜Ｃｎ，Ｃ♯  制御回路
ＣＭ  制御回路モデル
Ｈ１〜Ｈｎ，Ｈ♯  ハードウェア
ＨＭ１〜ＨＭｎ，ＨＭ♯  ハードウェアモデル
Ｐ１〜Ｐｎ，Ｐ♯  プライオリティ制御部
ＰＭ  プライオリティ制御部モデル
Ｓ  スイッチ装置
Ｓ１〜Ｓｎ，Ｓ♯  システムボード
ＳＭ  スイッチ装置モデル
ＳＰＭ２〜ＳＰＭｎ，ＳＰＭ♯  疑似プライオリティ制御部モデル
ＳＳＭ２〜ＳＳＭｎ，ＳＳＭ♯  疑似システムボードモデル
【図１】
0005471841.tif 000002
【図２】
0005471841.tif 000003
【図３】
0005471841.tif 000004
【図４】
0005471841.tif 000005
【図５】
0005471841.tif 000006
【図６】
0005471841.tif 000007
【図７】
0005471841.tif 000008
【図８】
0005471841.tif 000009
【図９】
0005471841.tif 000010
【図１０】
0005471841.tif 000011
【図１１】
0005471841.tif 000012
【図１２】
0005471841.tif 000013
【図１３】
0005471841.tif 000014
【図１４】
0005471841.tif 000015
【図１５】
0005471841.tif 000016
【図１６】
0005471841.tif 000017
【図１７】
0005471841.tif 000018
【図１８】
0005471841.tif 000019
【図１９】
0005471841.tif 000020
【図２０】
0005471841.tif 000021
【図２１】
0005471841.tif 000022
【図２２】
0005471841.tif 000023