(57)【特許請求の範囲】
【請求項１】
コンピュータを、
種別が同一かつ前記種別内で分類されるタイプが同一の複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路に置換する置換手段、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段、
前記生成手段によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成手段によって作成された情報を出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【請求項２】
前記コンピュータを、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証結果を取得する取得手段、
前記作成手段によって作成された情報を用いて、前記取得手段によって取得された単一モジュールを有する設計対象システムの検証結果から、前記モジュールごとの検証結果を抽出する抽出手段として機能させ、
前記出力手段は、
前記抽出手段によって抽出されたモジュールごとの検証結果を出力することを特徴とする請求項１に記載の検証支援プログラム。
【請求項３】
前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記生成手段は、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、からなる単一モジュールを構築することを特徴とする請求項１または２に記載の検証支援プログラム。
【請求項４】
コンピュータを、
種別が同一かつ前記種別内で分類されるタイプが同一の複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路に置換する置換手段、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証中に、前記生成手段によって生成された制御回路により前記順序回路素子群を時分割動作させた結果、前記順序回路素子から出力される信号の値を当該順序回路素子ごとに保持する保持手段、
として機能させることを特徴とする検証支援プログラム。
【請求項５】
前記コンピュータを、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証期間のうち任意の検証時刻の指定を受け付ける指定手段、
前記保持手段によって保持された保持結果の中から、前記指定手段によって指定された検証時刻における前記順序回路素子群の信号の値を抽出する抽出手段、
前記入力手段によって入力された設計データと、前記抽出手段によって抽出された前記順序回路素子群の信号の値とを用いて検証された前記多重化モジュールを有する設計対象システムの検証結果を取得する取得手段、
前記取得手段によって取得された検証結果を出力する出力手段として機能させることを特徴とする請求項４に記載の検証支援プログラム。
【請求項６】
前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記生成手段は、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、からなる単一モジュールを構築することを特徴とする請求項４または５に記載の検証支援プログラム。
【請求項７】
コンピュータを、
種別が同一かつ前記種別内で分類されるタイプが同一の複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路に置換する置換手段、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する第１の生成手段、
前記設計対象システムに入力される複数の信号の中から、任意の信号の指定を受け付ける指定手段、
前記第１の生成手段によって生成された制御回路により時分割動作させた結果、前記順序回路素子群から出力される前記指定手段によって指定された信号の値を前記各順序回路素子が存在するモジュールごとに出力する部分回路を生成する第２の生成手段、
前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路と、前記第１および第２の生成手段によって生成された制御回路および部分回路と、からなる単一モジュールを構築する構築手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データを出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【請求項８】
前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記第１の生成手段は、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、前記部分回路と、からなる単一モジュールを構築することを特徴とする請求項７に記載の検証支援プログラム。
【請求項９】
種別が同一かつ前記種別内で分類されるタイプが同一の複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路に置換する置換手段と、
前記置換手段によって置換された多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段と、
前記生成手段によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成手段と、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成手段によって作成された情報を出力する出力手段と、
を備えることを特徴とする検証支援装置。
【請求項１０】
コンピュータが備える入力手段により、種別が同一かつ前記種別内で分類されるタイプが同一の複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力工程と、
前記コンピュータが備える置換手段により、前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路に置換する置換工程と、
前記コンピュータが備える生成手段により、前記置換工程によって置換された多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成工程と、
前記コンピュータが備える構築手段により、前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換工程によって置換された多重化回路と、前記生成工程によって生成された制御回路と、からなる単一モジュールを構築する構築工程と、
前記コンピュータが備える作成手段により、前記生成工程によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成工程と、
前記コンピュータが備える出力手段により、前記構築工程によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成工程によって作成された情報を出力する出力工程と、
を含んだことを特徴とする検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、大規模な設計対象回路の検証を支援する検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法に関する。
【背景技術】
【０００２】
ＬＳＩ設計時には、設計対象回路が意図したとおりに動作するかどうかをシミュレーションによって確認する。ソフトウェアによる実行では、設計対象回路が大規模になればなるほどシミュレーションに時間がかかる。このため、大規模な設計対象回路ではＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などのハードウェア上に載せることにより、シミュレーションをおこなう手法が用いられている。
【０００３】
また、下記特許文献１には、ソフトウェアシミュレータとハードウェアエミュレータを併用して設計対象回路の検証をおこなう技術が記載されている。具体的には、記録媒体から論理情報を読み込み、その論理情報のうち構造レベルまで確定している部分についてハードウェアエミュレータで検証を実行し、その他の部分についてはソフトウェアシミュレータで検証を実行する。
【０００４】
【特許文献１】特開２０００−２１５２２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＦＰＧＡを使ったシミュレーションは、ソフトウェアによるシミュレーションより高速であるが、シミュレートできる回路規模に限度がある。特に、高速化のためにマルチプロセッサで構成されている設計対象システムの動作をシミュレートしようとすると、複数のコアを入れるための回路規模が大きくなりすぎ、ＦＰＧＡに載りきらないという問題が発生する。
【０００６】
例えば、マルチプロセッサ構成の設計対象システムでは、同一のＣＰＵが複数存在し、それがバスなどを通じて通信しながら動作する。従来では、ｎ個のＣＰＵが接続する設計対象システムをシミュレートしようとすると、回路量はｎ倍になっていた。このように、設計対象回路が大規模になればなるほど、ソフトウェアによるシミュレーションに頼らざるを得なくなり、設計期間の長期化を招くという問題があった。
【０００７】
一方、マルチプロセッサ構成の設計対象システムのような大規模回路については、動作確認しようとする実プロセッサ以外の部分で、回路量を削減した擬似プロセッサを使うなどの工夫により、この問題を回避することができる。
【０００８】
しかしながら、実設計対象システムと動作が一致しないためシミュレーションに漏れが生じることとなり、設計精度が低減するという問題があった。さらに、擬似プロセッサを作るための工数が必要となり、結果的に設計期間の長期化を招くという問題があった。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、多重化モジュールを有する設計対象システムのシミュレーションの高精度化およびデバッグ作業の効率化を図ることにより、設計期間の短縮化を実現することができる検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法は、同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付け、入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換し、置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成し、入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、置換された多重化回路群と、生成された制御回路と、からなる単一モジュールを構築し、生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成し、構築された単一モジュールを有する設計対象システムに関する設計データおよび作成された情報を出力することを要件とする。
【００１１】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、多重化モジュールを、多重化モジュールと等価でかつ回路データ量の少ない単一モジュールに変換することができる。また、制御回路の時分割のタイミングと当該タイミングで動作するモジュールとを関連付けることができる。
【００１２】
また、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法において、構築された単一モジュールを有する設計対象システムの検証結果を取得し、作成された情報を用いて、取得された単一モジュールを有する設計対象システムの検証結果から、前記モジュールごとの検証結果を抽出し、抽出されたモジュールごとの検証結果を出力することとしてもよい。
【００１３】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、制御回路の時分割のタイミングと当該タイミングで動作するモジュールとを関連付けることにより、変換後の設計対象システムの検証結果から変換前の設計対象システムの各信号の信号波形を生成することができる。
【００１４】
また、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法において、さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、置換された各多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、前記一の組み合わせ回路と、前記多重化回路群と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、からなる単一モジュールを構築することとしてもよい。
【００１５】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、モジュールごとに有する入力ピンおよび出力ピンを単一の入力Ｉ／Ｆおよび出力Ｉ／Ｆに集約することができ、回路データ量を削減することができる。
【００１６】
また、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法は、同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付け、入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換し、置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成し、入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、置換された多重化回路群と、生成された制御回路と、からなる単一モジュールを構築し、構築された単一モジュールを有する設計対象システムの検証中に、生成された制御回路により前記順序回路素子群を時分割動作させた結果、前記順序回路素子から出力される信号の値を当該順序回路素子ごとに保持することを要件とする。
【００１７】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、変換後の設計対象システムの検証中に、各順序回路素子の出力値を、区切りとなるクロック到達のタイミングごとに保持することができる。
【００１８】
また、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法において、構築された単一モジュールを有する設計対象システムの検証期間のうち任意の検証時刻の指定を受け付け、保持された保持結果の中から、指定された検証時刻における前記順序回路素子群の信号の値を抽出し、入力された設計データと、抽出された前記順序回路素子群の信号の値とを用いて検証された前記多重化モジュールを有する設計対象システムの検証結果を取得し、取得された検証結果を出力することとしてもよい。
【００１９】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、各順序回路素子の出力値を用いて組み合わせ回路の値を再計算することにより、任意のクロックにおける変換前の設計対象システムの各信号の信号波形を生成することができる。
【００２０】
また、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法は、同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付け、入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換し、置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成し、前記設計対象システムに入力される複数の信号の中から、任意の信号の指定を受け付け、生成された制御回路により時分割動作させた結果、前記順序回路素子群から出力される指定された信号の値を前記各順序回路素子が存在するモジュールごとに出力する部分回路を生成し、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、置換された多重化回路群と、生成された制御回路および部分回路と、からなる単一モジュールを構築し、構築された単一モジュールを有する設計対象システムに関する設計データを出力することを要件とする。
【００２１】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、部分回路が追加された変換後の設計対象システムの設計データを用いて検証することにより、特定の信号の信号波形をモジュールごとに出力することができる。
【発明の効果】
【００２２】
この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、多重化モジュールを有する設計対象システムのシミュレーションの高精度化およびデバッグ作業の効率化を図ることにより、設計期間の短縮化を実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法の好適な実施の形態を詳細に説明する。本実施の形態では、大規模な設計対象システムの回路規模を削減し、ハードウェアによる検証を可能とする。また、検証結果として変換前の設計対象システムの各信号の信号波形を参照可能とすることで、デバッグ作業の効率化を図る。
【００２４】
（実施の形態１）
まず、実施の形態１について説明する。図１は、実施の形態１の概要を示す説明図である。図１において、設計対象システムの共通部分を共有化する回路変換をおこなうことにより、設計対象システムの回路量を削減する。つぎに、変換後の設計対象システムの設計データを用いて、設計対象システムの動作検証をおこなう。
【００２５】
このとき、回路変換による回路量の削減により、大規模な設計対象システムであってもＦＰＧＡなどのハードウェア上に載せることができ、検証時間を短縮することができる。一方で、変換後の設計対象システムの検証結果は、複数のモジュール（ここでは、モジュールａ〜ｃ）の信号（ここでは、信号Ｘ）が１つの信号波形として表現されるため、バグが見つかったときのデバッグが難しい。
【００２６】
そこで、変換後の設計対象システムの検証結果から、変換前の設計対象システムの信号波形（ここでは、モジュールａ〜ｃごとの信号波形）を生成するための信号生成用データを作成する。つぎに、検証が終了したあと、設計対象システムの検証結果と信号生成用データとを用いて、モジュールａ〜ｃごとの信号波形を生成する。そして、モジュールａ〜ｃごとの信号波形を検証結果として提示することにより、ユーザによるデバッグ作業の効率化を図ることができる。
【００２７】
（検証支援装置のハードウェア構成）
つぎに、実施の形態１にかかる検証支援装置のハードウェア構成について説明する。図２は、実施の形態１にかかる検証支援装置のハードウェア構成を示す説明図である。
【００２８】
図２において、検証支援装置２００は、コンピュータ本体２１０と、入力装置２２０と、出力装置２３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ），ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどのネットワーク２４０に接続可能である。
【００２９】
コンピュータ本体２１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ），メインメモリ，インターフェースなどを有する。ＣＰＵは、検証支援装置２００の全体の制御を司る。メインメモリには、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などが用いられる。また、補助記憶装置としてＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ），光ディスク２１１，フラッシュメモリなどが備えられる。ただし、必ずしもコンピュータ本体２１０内に構成する必要はない。メインメモリはＣＰＵのワークエリアとして使用される。
【００３０】
また、ＨＤＤには各種プログラムが格納されており、ＣＰＵからの命令に応じてメインメモリにロードされる。光ディスク２１１は光ディスクドライブによりデータのリード／ライトが制御される。インターフェースは、入力装置２２０からの入力、出力装置２３０への出力、ネットワーク２４０に対する送受信の制御をおこなう。
【００３１】
また、入力装置２２０としては、キーボード２２１、マウス２２２、スキャナ２２３などがある。キーボード２２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス２２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ２２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体２１０内のメモリに格納される。なお、スキャナ２２３にＯＣＲ機能を持たせてもよい。
【００３２】
また、出力装置２３０としては、ディスプレイ２３１、スピーカ２３２、プリンタ２３３などがある。ディスプレイ２３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ２３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ２３３は、画像データや文書データを印刷する。
【００３３】
（設計対象システムの一例）
つぎに、実施の形態１にかかる設計対象システムの一例について説明する。実施の形態１にかかる設計対象システムとは、同種かつ同一タイプの複数のモジュール（ＣＰＵ、メモリ、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）など）を有する設計対象システムである。
【００３４】
また、実施の形態１では、複数のモジュールを多重化モジュールと称す。以降、多重化モジュールとして、同種かつ同一タイプの複数のＣＰＵが並列動作するマルチプロセッサを実装したマルチプロセッサシステムを例に挙げて説明する。
【００３５】
図３は、設計対象システムの一例を示す説明図である。図３において、設計対象システム３００は、ｎ（ｎ＝１，２，・・・）個のＣＰＵ３０１−１，・・・，３０１−ｉ，・・・，３０１−ｎからなる多重化モジュール３０１を実装するマルチプロセッサシステムである。
【００３６】
ＣＰＵ３０１−ｉは、クロック端子３０２−ｉと入力ピン３０３−ｉと出力ピン３０４−ｉとを備えており、それぞれクロック線３１０とバス３２０に接続されている。また、この設計対象システム３００には、さらに、一例としてメモリ３０５、ＤＭＡＣ３０６、エンコーダ３０７、デコーダ３０８などの各種モジュールがバス３２０に接続されている。
【００３７】
つぎに、図３に示した多重化モジュール３０１を構成する任意のＣＰＵ３０１−ｉ内部の回路構成について説明する。図４は、多重化モジュールを構成する任意のＣＰＵ内部の回路構成を示す説明図である。図４において、ＣＰＵ３０１−ｉは、組み合わせ回路４０１−ｉと順序回路４０２−ｉと入力ピン３０３−ｉと出力ピン３０４−ｉとを備えている。
【００３８】
組み合わせ回路４０１−ｉは、入力ピン３０３−ｉや順序回路４０２−ｉからデータを取り込み、順序回路４０２−ｉや出力ピン３０４−ｉに出力する。組み合わせ回路４０１−ｉは、他のＣＰＵ３０１−１〜３０１−（ｉ−１），３０１−（ｉ＋１）〜３０１−ｎの組み合わせ回路４０１−１〜４０１−（ｉ−１），４０１−（ｉ＋１）〜４０１−ｎと同一構成である。組み合わせ回路４０１−ｉは、例えば、ＣＰＵ３０１−ｉのシーケンサに相当する回路である。
【００３９】
順序回路４０２−ｉは、ＦＦやＲＡＭなどの膨大な数の順序回路素子が接続されて構成されている。図では、説明を簡略化するため、ＦＦ４２１−ｉ〜４２４−ｉ、ＲＡＭ４２５−ｉ〜４２７−ｉなどの順序回路素子により表現している。順序回路４０２−ｉは、他のＣＰＵ３０１−１〜３０１−（ｉ−１），３０１−（ｉ＋１）〜３０１−ｎの順序回路４０２−１〜４０２−（ｉ−１），４０２−（ｉ＋１）〜４０２−ｎと同一構成であるが、ＣＰＵ３０１−ｉごとに保持される値が異なる。順序回路４０２−ｉは、例えば、ＣＰＵ３０１−ｉのレジスタに相当する回路である。
【００４０】
入力ピン３０３−ｉは、バス３２０からのデータを取り込んで組み合わせ回路４０１−ｉに出力する。出力ピン３０４−ｉは、組み合わせ回路４０１−ｉからのデータをバス３２０に出力する。
【００４１】
（ライブラリの記憶内容）
つぎに、検証支援装置２００に用いられるライブラリの記憶内容について説明する。図５は、ライブラリの記憶内容を示す説明図である。図５において、ライブラリ５００には、各種回路データ（モジュールやセル）が名称および種別およびタイプごとに分類されて記憶されている。
【００４２】
名称とは、モジュールやセルを一意に特定する名称であり、例えば、実際の製品名や型番と対応する。種別とは、モジュール／セルが属する種別（ＣＰＵ、順序回路、・・・）をあらわす。タイプとは、同一種内で分類された型である。例えば、種別がＣＰＵであっても、製造メーカやクロック周波数によりタイプが異なる。また、種別が順序回路であっても、ＦＦやＲＡＭなどのように順序回路の種類によりタイプが異なる。
【００４３】
より具体的には、ＣＰＵとＦＦのように、設計対象システム３００内のある２つのモジュールの種別が異なる場合は、同種のモジュールとはいえない。同様に、「ｍｏｄｕｌｅ＿ｃｐｕ＿ａ」と「ｍｏｄｕｌｅ＿ｃｐｕ＿ｂ」のように、種別が同じＣＰＵであっても、タイプが異なれば、同一のモジュールとはいえない。図３に示した設計対象システム３００では、ＣＰＵ３０１−１〜３０１−ｎは同一種別、同一タイプ（例えば、「ｍｏｄｕｌｅ＿ｃｐｕ＿ａ」）のモジュールである。
【００４４】
なお、このライブラリ５００は、例えば、ＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部を用いてその機能を実現する。ライブラリ５００は、検証支援装置２００に実装されてもよく、また、ネットワークを介して通信可能な外部サーバに実装されていてもよい。
【００４５】
（置換ＤＢの記憶内容）
つぎに、検証支援装置２００に用いられる置換ＤＢの記憶内容について説明する。図６は、置換ＤＢの記憶内容を示す説明図である。図６において、置換ＤＢ６００は、順序回路、入力Ｉ／Ｆ、出力Ｉ／Ｆごとに、置換モジュール６０１〜６０３を記憶している。置換モジュール６０１〜６０３は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）記述のテキストデータにより表現される。
【００４６】
置換モジュール６０１は、各ＣＰＵ３０１−１〜３０１−ｎに存在する複数の順序回路４０２−１〜４０２−ｎを、複数の順序回路４０２−１〜４０２−ｎのそれぞれに存在する共通の順序回路素子群（例えば、ＦＦ４２１−１〜４２１−ｎ）を多重化した多重化回路である。他の共通の順序回路素子群（ＦＦ４２２−１〜４２２−ｎ），・・・，（ＦＦ４２４−１〜４２４−ｎ）にとっても同様である。
【００４７】
ここで、共通の順序回路素子群とは、種別が同一（ＦＦ同士、ＲＡＭ同士）であることのほか、その接続位置が同一であることも含む。図６では、順序回路素子群（ＦＦ４２１−１〜４２１−ｎ），・・・，（ＦＦ４２４−１〜４２４−ｎ）の多重化回路のみを表現しているが、順序回路素子群（ＲＡＭ４２５−１〜４２５−ｎ），・・・，（ＲＡＭ４２７−１〜４２７−ｎ）の多重化回路（不図示）も記憶されている。
【００４８】
また、多重化回路を表現する置換モジュール６０１は、任意の状態ｉのときに、ＣＰＵ３０１−ｉの順序回路素子（例えば、ＦＦ４２１−ｉ）の出力データが出力ピン３０４−ｉから出力されるという条件を満たしていればよく、その回路構成は問わない。
【００４９】
このように、共通の順序回路素子群（例えば、ＦＦ４２１−１〜４２１−ｎ）を置換モジュール６０１により置換することにより、複数のＣＰＵ３０１−１〜３０１−ｎに分散されている共通の順序回路素子群を単一の多重化回路で多重化することができる。
【００５０】
また、置換モジュール６０２は、ＣＰＵ３０１−１〜３０１−ｎへ入力されるデータを内部に選択的に取り込むｎ入力１出力の入力Ｉ／Ｆである。このように、置換モジュール６０２に置換することにより、複数のＣＰＵ３０１−１〜３０１−ｎに分散されている共通の入力ピンを単一の入力Ｉ／Ｆで多重化することができる。
【００５１】
また、置換モジュール６０３は、各ＣＰＵ３０１−１〜３０１−ｎの組み合わせ回路４０１−１〜４０１−ｎからの出力データを選択的に出力する出力Ｉ／Ｆである。このように、置換モジュール６０３に置換することにより、複数のＣＰＵ３０１−１〜３０１−ｎに分散されている共通の出力ピンを単一の出力Ｉ／Ｆで多重化することができる。
【００５２】
なお、この置換ＤＢ６００は、例えば、ＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部を用いてその機能を実現する。置換ＤＢ６００は、検証支援装置２００に実装されていてもよく、また、ネットワークを介して通信可能な外部サーバに実装されていてもよい。
【００５３】
（検証支援装置の機能的構成）
つぎに、実施の形態１にかかる検証支援装置２００の機能的構成について説明する。図７は、実施の形態１にかかる検証支援装置の機能的構成を示すブロック図である。図７において、検証支援装置２００は、入力部７０１と、解析部７０２と、生成部７０３と、置換部７０４と、構築部７０５と、作成部７０６と、出力部７０７と、取得部７０８と、抽出部７０９と、を備えている。
【００５４】
これら各機能７０１〜７０９は、検証支援装置２００のＨＤＤに記憶された当該機能７０１〜７０９に関するプログラムをＣＰＵに実行させることにより、または、入出力Ｉ／Ｆを介して、当該機能を実現することができる。また、各機能７０１〜７０９からの出力データはＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部に保持される。また、図７中矢印で示した接続先の機能は、接続元の機能からの出力データを上記記憶部から読み込んで、当該機能に関するプログラムをＣＰＵに実行させるものとする。
【００５５】
まず、入力部７０１は、設計対象システム３００に関する設計データの入力を受け付ける機能を有する。設計データとは、例えば、論理合成後における設計対象システム３００のネットリストである。ネットリストには、設計対象システム３００を構成するＣＰＵ３０１−ｉやその内部のセル（ＦＦやＲＡＭなど）の名称を用いてこれらの接続関係が記述されている。
【００５６】
解析部７０２は、入力部７０１によって入力された設計データを解析する機能を有する。具体的には、例えば、図５に示したライブラリ５００を参照することにより、ネットリストに記述されている名称を手掛かりとして、設計対象システム３００の接続関係、モジュールの種別やタイプ、モジュール内の接続関係、組み合わせ回路、順序回路の種別やタイプ、入力ピン、出力ピンを特定する。
【００５７】
また、同種かつ同一タイプのモジュールの個数も特定する。さらに、解析部７０２では、ネットリストに記述されている名称を手掛かりとして、各ＣＰＵ３０１−ｉに共通の組み合わせ回路を特定し、共有化する。
【００５８】
図８は、組み合わせ回路の共有関係を示す説明図である。図８において、組み合わせ回路４０１−１〜４０１−ｎは、ＣＰＵ３０１−１〜３０１−ｎで同一構成であるため、いずれか１つの組み合わせ回路４０１−ｉで共有することができる。共有化されたいずれか１つの組み合わせ回路４０１−ｉを、以降、共有組み合わせ回路８００と表記する。
【００５９】
共有組み合わせ回路８００は、組み合わせ回路４０１−ｉのＨＤＬ記述のテキストデータをコピーすることにより得られる。これにより、シミュレーションを実行するための組み合わせ回路の回路データ量を１／ｎに削減することができる。
【００６０】
図７の説明に戻り、生成部７０３は、解析部７０２による解析結果に基づいて制御回路を生成する機能を有する。ここで、制御回路とは、検証支援装置２００からの出力結果となるモジュールまたは設計対象システム３００を時分割動作させる回路である。この制御回路は、例えば、インクリメントするカウンタにより構成される。
【００６１】
制御回路がカウンタにより構成される場合、生成部７０３は、解析部７０２から同種かつ同一タイプのＣＰＵ３０１−ｉの数を検出することで、カウンタ数を設定する。具体的には、そのＣＰＵ３０１−ｉの数がｎである場合、カウント値１を初期値とし、クロックが到達するたびにｎ＋１までインクリメントして、ｎ＋１になると１にリセットするように設定された制御回路を生成する。
【００６２】
カウンタへのクロックの到達タイミングは、他のＦＦにクロックが到達するタイミングと同時とする。なお、カウント値ｉのカウンタからの出力信号をＣ（ｉ）と表記する。すなわち、カウント値１〜ｎまでのクロックでは、共通の順序回路素子群（例えば、ＦＦ４２１−１〜４２１−ｎ）を時分割動作させ、カウント値ｎ＋１のクロックでは、共通Ｉ／Ｆを動作させる。共通Ｉ／Ｆについては後述する。
【００６３】
置換部７０４は、解析部７０２によって解析・特定された順序回路４０２―ｉ、入力ピン３０３−ｉ、および出力ピン３０４−ｉを、置換モジュール６０１〜６０３に置換する機能を有する。ここで、順序回路４０２―ｉ、入力ピン３０３−ｉ、および出力ピン３０４−ｉの置換例について説明する。
【００６４】
図９は、順序回路の置換例を示す説明図である。図９は、同種かつ同一タイプであるｎ個のＣＰＵ３０１−１〜３０１−ｎの各順序回路４０２−１〜４０２−ｎに共通の順序回路素子群（ｎ個のＦＦ４２１−１〜４２１−ｎ）を置換モジュール６０１に置換する例を示している。
【００６５】
置換モジュール６０１は、ｎ個の回路ブロック９１０−１〜９１０−ｎと、いずれか一つの回路ブロック９１０−ｉからの出力データを共有組み合わせ回路８００に選択出力するマルチプレクサ９２０とから構成される。置換モジュール６０１は、制御回路９００に接続される。回路ブロック９１０−ｉは、セレクタ９１１−ｉとＦＦ４２１−ｉとが直接接続された構成であり、ＦＦ４２１−ｉからの出力データがセレクタ９１１−ｉに帰還入力される。
【００６６】
ＦＦ４２１−ｉは、カウント値ｉのとき、保持しているデータＱをマルチプレクサ９２０に出力する。セレクタ９１１−ｉは、共有組み合わせ回路８００からの出力データとＦＦ４２１−ｉからの出力データを入力する。そして、カウント値がｉのとき、データＤを取り込んでＦＦ４２１−ｉに出力する。
【００６７】
これ以外のカウント値では、セレクタ９１１−ｉは、帰還入力されたデータＱを出力する。これにより、ＦＦ４２１−ｉは、常にＣＰＵ３０１−ｉの対応するＦＦの値を保持することが保証される。マルチプレクサ９２０は、カウント信号Ｃ（ｉ）を取り込んだ場合、回路ブロック９１０−１〜９１０−ｎのうち回路ブロック９１０−ｉからのデータＱを選択して共有組み合わせ回路８００に出力する。
【００６８】
なお、Ｖｅｒｉｌｏｇを用いて置換する場合、置換元のＦＦ（ＣＬＫ，Ｄ，Ｑ）のＨＤＬ記述をＤＵＭＭＹＦＦ（ＣＬＫ，Ｄ，Ｑ，ｃｏｕｎｔｅｒ）に置き換えることにより、単純テキスト処理で置換処理を実現することができる。
【００６９】
図１０は、入力ピンの置換例を示す説明図である。図１０は、同種かつ同一タイプであるｎ個のＣＰＵ３０１−１〜３０１−ｎの各入力ピン３０３−１〜３０３−ｎを置換モジュール６０２に置換する例を示している。
【００７０】
置換モジュール６０２は、ｎ入力１出力のマルチプレクサ１０００で構成される。マルチプレクサ１０００は、制御回路９００に接続され、カウント信号Ｃ（ｉ）を取り込んだ場合、ＣＰＵ３０１−１〜３０１−ｎの入力データＩＮ１〜ＩＮｎのうちＣＰＵ３０１−ｉの入力データＩＮｉを選択して共有組み合わせ回路８００に出力する。
【００７１】
図１１は、出力ピンの置換例を示す説明図である。図１１は、同種かつ同一タイプであるｎ個のＣＰＵ３０１−１〜３０１−ｎの各出力ピン３０４−１〜３０４−ｎを置換モジュール６０３に置換する例を示している。
【００７２】
置換モジュール６０３は、ｎ個の回路ブロック１１１０−１〜１１１０−ｎから構成される。回路ブロック１１１０−１〜１１１０−ｎは、制御回路９００に接続され、カウント信号Ｃ（ｉ）を取り込む。回路ブロック１１１０−ｉは、セレクタ１１１１−ｉとＦＦ１１１２−ｉとが直接接続された構成であり、ＦＦ１１１２−ｉからの出力データがセレクタ１１１１−ｉに帰還入力される。
【００７３】
なお、ＣＰＵ３０１−ｉから出た信号がバスを通って１クロック内に他のＣＰＵ３０１−ｊに届く場合が存在するならば、出力ピンの値を計算するために追加の処理が必要になる。具体的には、カウンタの値が２ｎ＋２まで増加することとして、カウンタがｎ＋１＋ｉのときにＣＰＵ３０１−ｉの組み合わせ回路の状態をシミュレートして、得られる出力ピンの値をＦＦ１１１２−ｉに記憶しておく。この処理により、カウンタが１〜ｎのときに、次サイクルの出力ピンの値があらかじめ計算されているので、１サイクルで届く信号が存在しても正しい値が入力されることになる。一般的には１クロック内に他のＣＰＵ３０１−ｊに信号が届く例は多くないので、本置換例では、そのような信号はないものとして記述している。
【００７４】
ＦＦ１１１２−ｉは、カウント値ｉのとき、保持しているデータＱをバス３２０に出力する。セレクタ１１１１−ｉは、共有組み合わせ回路８００からの出力データＤとＦＦ４２１−ｉからの出力データＱを入力する。そして、カウント値がｉのとき、データＤを取り込んでＦＦ１１１２−ｉに出力する。これ以外のカウント値では、帰還入力されたデータＱを出力する。
【００７５】
なお、Ｖｅｒｉｌｏｇを用いて置換する場合、ｓｔｕｂモジュールを用意して置き換えれば単純な置き換えと追加のみで実現することができる。
【００７６】
図１２は、Ｉ／Ｆ変換処理を示す模式図である。（Ａ）において、ＣＰＵ３０１−１〜ＣＰＵ３０１−ｎをコピーして、（Ｂ）に示したようにダミーＣＰＵ１２０１−１〜１２０１−ｎを作り出す。ダミーＣＰＵ１２０１−１〜１２０１−ｎとバス３２０との接続関係（点線で囲った領域）は、ＣＰＵ３０１−１〜ＣＰＵ３０１−ｎとバス３２０との接続関係と変化はないため、これまでのネットリストをそのまま適用することができる。
【００７７】
そして、（Ｃ）において、このダミーＣＰＵ１２０１−１〜１２０１−ｎと共有組み合わせ回路８００の置換された各入出力ピン（置換モジュール６０２，６０３）との間にＩ／Ｆ回路１２０２を接続することにより、共通Ｉ／Ｆ１２００を構築することができる。これにより、多重化前の各ＣＰＵ３０１−ｉの入出力信号がダミーＣＰＵ１２０１−ｉを素通りすることとなり、置換処理を簡単に実現することができる。
【００７８】
図７の説明に戻り、構築部７０５は、置換モジュール６０１〜６０３と共有組み合わせ回路８００と制御回路９００とを接続することにより単一モジュールを構築する機能を有する。図１３は、構築部によって構築された単一モジュールを示す説明図である。
【００７９】
図１３において、単一モジュール１３０１は、ＣＰＵ３０１−１〜３０１−ｎからなる多重化モジュール３０１から置き換わったモジュールである。すなわち、ｎ個の組み合わせ回路４０１−１〜４０１−ｎが共有組み合わせ回路８００に置き換わっており、ｎ個の順序回路４０２−１〜４０２−ｎが多重化回路（置換モジュール６０１）群からなる多重化順序回路１３１０に置き換わっており、ｎ個の入力ピン３０３−１〜３０３―ｎおよびｎ個の出力ピン３０４−１〜３０４−ｎが単一の入力Ｉ／Ｆ（置換モジュール６０２）および出力Ｉ／Ｆ（置換モジュール６０３）からなる共通Ｉ／Ｆ１２００に置き換わっている。
【００８０】
制御回路９００は、多重化順序回路１３１０および共通Ｉ／Ｆ１２００に接続されている。制御回路から出力されるカウント信号Ｃ（１）〜Ｃ（ｎ＋１）のうち、カウント信号Ｃ（１）〜Ｃ（ｎ）は多重化順序回路１３１０に出力されて、各状態（カウント値）ｉの順序回路素子（ＦＦやＲＡＭ）が時分割動作する。また、カウント信号Ｃ（ｎ＋１）は共通Ｉ／Ｆ１２００に出力されて、状態ｉ＋１において入出力動作する。
【００８１】
共通Ｉ／Ｆ１２００を状態ｉ＋１においてのみ入出力動作させるため、クロックゲートＣＧにカウント値Ｃ（ｎ＋１）が出力された場合にのみ、共通Ｉ／Ｆ１２００にクロックＣＬＫを供給するように構築される。
【００８２】
このように、多重化モジュール３０１を単一モジュール１３０１に置換することにより、変換後の設計対象システム１３００の回路規模を、変換前の設計対象システムの回路規模よりも小さくすることができ、回路データ量を大幅に削減することができる。
【００８３】
作成部７０６は、生成部７０３によって生成された制御回路により共通の順序回路素子群（ＦＦやＲＡＭ）が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュール（ＣＰＵやメモリ）とが関連付けられた情報を作成する機能を有する。
【００８４】
図１４は、作成部によって作成された対応テーブルの一例を示す説明図（その１）である。図１４において、対応テーブル１４００には、制御回路９００のカウント値１〜ｎと、そのカウント値１〜ｎで動作する順序回路素子（例えば、ＦＦ４２１−１〜４２１−ｎ）が存在するＣＰＵ３０１−１〜３０１−ｎとが関連付けられて記憶されている。
【００８５】
詳細は後述するが、対応テーブル１４００は、変換後の設計対象システム１３００の検証結果から、変換前の設計対象システム３００の各信号の信号波形を抽出するために用いられる。つまり、この対応テーブル１４００を参照することにより、各状態（カウント値）ｉにおいて時分割動作した順序回路素子が存在するＣＰＵ３０１−１〜３０１−ｎを特定することができる。対応テーブル１４００は、例えば、ＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部を用いてその機能を実現する。
【００８６】
出力部７０７は、構築部７０５によって構築された構築結果に関する設計データおよび作成部７０６によって作成された情報を出力する機能を有する。具体的には、図１３に示した変換後の単一モジュール１３０１を有するあらたな設計対象システム１３００に関する設計データ（ネットリスト）と、図１４に示した対応テーブル１４００とを出力する。
【００８７】
なお、出力部７０７による出力形式は、ディスプレイ２３１による画面表示やプリンタ２３３による印刷出力のほか、検証支援装置２００内のＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部へのデータ出力へのデータ書込みやシミュレータへの送信でもよい。
【００８８】
取得部７０８は、構築部７０５によって構築された単一モジュール１３０１を有する設計対象システム１３００の検証結果を取得する機能を有する。具体的には、検証支援装置２００において設計対象システム１３００のシミュレーションを実行し、そのシミュレーション結果を取得することとしてもよい。また、設計対象システム１３００に関する設計データをシミュレータに送信することで、そのシミュレータからシミュレーション結果を取得することとしてもよい。
【００８９】
抽出部７０９は、作成部７０６によって作成された対応テーブル１４００を用いて、取得部７０８によって取得された単一モジュール１３０１を有する設計対象システム１３００の検証結果から、ＣＰＵ３０１−１〜３０１−ｎごとの検証結果を抽出する機能を有する。
【００９０】
ここで、抽出部７０９による抽出処理の概要について説明する。図１５は、抽出部による抽出処理の概要を示す説明図である。図１５において、設計対象システム１３００の検証結果として、信号Ａの信号波形１５００が制御回路９００のカウント値と対応付けて示されている。この信号波形１５００は、多重化モジュール３０１（ＣＰＵ３０１−１〜３０１−ｎ）に関する信号Ａの波形を１つの信号波形として表現したものである。
【００９１】
抽出部７０９は、設計対象システム１３００の検証結果（信号波形１５００）と、図１４に示した対応テーブル１４００とを用いて、ＣＰＵ３０１−１〜３０１−ｎごとの信号Ａの値を抽出する。例えば、対応テーブル１４００を参照して、カウント値１と対応付けられている信号Ａの値を検証時刻の経過に沿って抽出することで、ＣＰＵ３０１−１の検証結果（信号波形１５１０）を抽出する。
【００９２】
同様に、ＣＰＵ３０１−２〜３０１−ｎについて、各カウント値２〜ｎと対応付けられている信号Ａの値を抽出することで、ＣＰＵ３０１−２〜３０１−ｎの検証結果を抽出することができる。
【００９３】
出力部７０７は、抽出部７０９によって抽出されたＣＰＵ３０１−１〜３０１−ｎごとの検証結果を出力する機能を有する。例えば、ＣＰＵ３０１−１の検証結果として、図１５に示した信号波形１５１０を出力する。これにより、変換前の設計対象システム３００の各信号の信号波形をモジュール（ＣＰＵ３０１−１〜３０１−ｎ）ごとに参照可能とし、デバッグ作業の効率化を図ることができる。
【００９４】
（検証支援処理手順）
つぎに、実施の形態１にかかる検証支援装置２００の検証支援処理手順について説明する。図１６は、実施の形態１にかかる検証支援装置の検証支援処理手順を示すフローチャート（その１）である。図１６において、まず、入力部７０１により、設計対象システム３００に関する設計データ（ネットリスト）の入力を受け付けたか否かを判断する（ステップＳ１６０１）。
【００９５】
ここで、設計対象システム３００に関する設計データ（ネットリスト）が入力されるのを待って（ステップＳ１６０１：Ｎｏ）、入力された場合（ステップＳ１６０１：Ｙｅｓ）、解析部７０２により設計対象システム３００に関する設計データを解析する（ステップＳ１６０２）。
【００９６】
そして、置換部７０４により、解析部７０２によって解析・特定された順序回路４０２−ｉ、入力ピン３０３−ｉ、および出力ピン３０４−ｉを、置換モジュール６０１〜６０３に置換する（ステップＳ１６０３）。つぎに、生成部７０３により、解析部７０２による解析結果から得られる同種かつ同一構成のＣＰＵの個数ｎに１加算したｎ＋１周期で計数する制御回路９００を生成する（ステップＳ１６０４）。
【００９７】
このあと、構築部７０５により、図１３に示したように、変換後の単一モジュール１３０１を構築する（ステップＳ１６０５）。つぎに、作成部７０６により、制御回路９００のカウンタ値と、当該カウンタ値で動作する順序回路素子が存在するＣＰＵ３０１−１〜３０１−ｎとが関連付けられた対応テーブル１４００を作成する（ステップＳ１６０６）。
【００９８】
最後に、出力部７０７により、変換後の単一モジュール１３０１を有するあらたな設計対象システム１３００に関する設計データおよび対応テーブル１４００を出力して（ステップＳ１６０７）、本フローチャートによる一連の処理を終了する。
【００９９】
つぎに、変換後の設計対象システム１３００の検証結果から、変換前の設計対象システム３００の各ＣＰＵ３０１−１〜３０１−ｎの信号波形を抽出する処理手順について説明する。図１７は、実施の形態１にかかる検証支援装置の検証支援処理手順を示すフローチャート（その２）である。
【０１００】
図１７において、まず、取得部７０８により、単一モジュール１３０１を有する設計対象システム１３００の検証結果を取得したか否かを判断する（ステップＳ１７０１）。
【０１０１】
ここで、設計対象システム１３００の検証結果を取得するのを待って（ステップＳ１７０１：Ｎｏ）、取得した場合（ステップＳ１７０１：Ｙｅｓ）、抽出部７０９により、図１６のステップＳ１６０６において作成された対応テーブル１４００を用いて、設計対象システム１３００の検証結果から、ＣＰＵ３０１−１〜３０１−ｎごとの検証結果を抽出する（ステップＳ１７０２）。
【０１０２】
最後に、出力部７０７により、ＣＰＵ３０１−１〜３０１−ｎごとの検証結果を出力して（ステップＳ１７０３）、本フローチャートによる一連の処理を終了する。
【０１０３】
このように実施の形態１によれば、各ＣＰＵ３０１−１〜３０１−ｎを、組み合わせ回路４０１−１〜４０１−ｎと順序回路４０２−１〜４０２−ｎにわけ、組み合わせ回路４０１−１〜４０１−ｎのいずれかの組み合わせ回路４０１−ｉにより、すべてのＣＰＵ３０１−１〜３０１−ｎで共有する。
【０１０４】
また、設計対象システム３００の動作をシミュレートする場合、ｉ（１〜ｎ）番目のクロックＣＬＫでＣＰＵ３０１−ｉ内部の動作をシミュレートし、ｎ＋１個目のクロックＣＬＫで、共通Ｉ／Ｆ１２００の動作をシミュレートするように制御する制御回路９００を生成する。
【０１０５】
これにより、ｎ＋１回分のクロックＣＬＫで、元の設計対象システム３００のクロック１回分の動作をシミュレートすることになる。変換後の単一モジュール１３０１は、変換前の設計対象システム３００の多重化モジュール３０１と比較してｎ＋１倍遅くなるが、組み合わせ回路４０１−１〜４０１−ｎが共有されているため、回路規模が小さくなっている。
【０１０６】
このため、従来はシミュレータで扱える規模を超えていてシミュレーションが不可能だった設計対象システム３００のシミュレーションが可能になるという利点がある。このように、データ量が削減された単一モジュール１３０１を有する設計対象システム１３００に関する設計データをシミュレータに与えることで、設計者は、元の設計対象システム３００の動作を漏れなく確認することができる。
【０１０７】
また、制御回路９００のカウンタ値と、当該カウンタ値で動作する順序回路素子（例えば、ＦＦ４２１−１〜４２１−ｎ）が存在するＣＰＵ３０１−１〜３０１−ｎとが関連付けられた対応テーブル１４００を作成する。そして、この対応テーブル１４００を用いて、設計対象システム１３００の検証結果から、元の設計対象システム３００の各信号の信号波形をＣＰＵ３０１−１〜３０１−ｎごとに抽出する。
【０１０８】
これにより、設計対象システム１３００の検証結果として、ＣＰＵ３０１−１〜３０１−ｎごとの信号波形を参照可能とすることができ、バグが見つかったときのユーザによるデバッグ作業の効率化を図ることができる。
【０１０９】
なお、本実施の形態１では、１種類の多重化モジュール３０１を有する設計対象システム３００を設計対象とした場合について説明したが、複数種類の多重化モジュールを有する設計対象システムを設計対象としてもよい。
【０１１０】
図１８は、複数の多重化モジュールを有する設計対象システムの一例を示す説明図である。図１８において、設計対象システム１８００は、同種かつ異なるタイプのＣＰＵからなる２つの多重化モジュール３０１ａ，３０１ｂを有する。すなわち、多重化モジュール３０１ａはｎ個のＣＰＵ３０１ａ−１〜３０１ａ−ｎを有し、多重化モジュール３０１ｂは、ｍ（ｎ＞ｍ）個のＣＰＵ３０１ｂ−１〜３０１ｂ−ｍを有する。
【０１１１】
なお、多重化モジュール３０１ａの構成要素には、符号の末尾にａを付し、多重化モジュール３０１ｂの構成要素には、符号の末尾にｂを付す。例えば、上述したように多重化モジュール３０１ａの任意のＣＰＵは、ＣＰＵ３０１ａ−ｉと表記する。
【０１１２】
この設計対象システム１８００においては、解析部７０２により、多重化モジュール３０１ａ，３０１ｂとそのＣＰＵの個数ｎ，ｍが特定される。この場合、生成部７０３では、ｎおよびｍの大小を比較し、制御回路９００であるカウンタの上限カウント値を、ｍよりも大きいｎを基準として、ｎ＋１に設定する。
【０１１３】
図１９は、構築部によって構築された設計対象システムを示す説明図である。図１９において、設計対象システム１９００は、変換後の単一モジュール１９０１ａ，１９０１ｂと、制御回路９００と、クロックゲートＣＧとからなる複合モジュール１９０１を有する。複合モジュール１９０１は、変換元の２つの多重化モジュール３０１ａ，３０１ｂから置き換わったモジュールである。
【０１１４】
単一モジュール１９０１ａは、共有組み合わせ回路８００ａ、多重化順序回路１３１０ａ、および共通Ｉ／Ｆ１２００ａを有し、単一モジュール１９０１ｂは、共有組み合わせ回路８００ｂ、多重化順序回路１３１０ｂ、および共通Ｉ／Ｆ１２００ｂを有する。制御回路９００およびクロックゲートＣＧは変換後の単一モジュール１９０１ａ，１９０１ｂにおいて共通である。
【０１１５】
この場合、制御回路９００は、カウント値１〜ｎ＋１まで計数し、ｎ＋１のあとは１にリセットされる。これにより、単一モジュール１９０１ａでは、カウント値１〜ｎまでは多重化順序回路１３１０ａを時分割動作させ、カウント値ｎ＋１で共通Ｉ／Ｆ１２００ａを動作させる。
【０１１６】
一方、単一モジュール１９０１ｂでは、カウント値１〜ｍまでは多重化順序回路１３１０ｂを時分割動作させ、カウント値ｍ＋１〜ｎまでは何も動作されない。そして、カウント値ｎ＋１になると、共通Ｉ／Ｆ１２００ｂを動作させる。
【０１１７】
このように、複数の多重化モジュールがある場合、一番ＣＰＵ数が多い多重化モジュールのＣＰＵ数を基準として制御回路９００の上限カウント値を設定することで、回路データ量の削減とともにシミュレーション時間の短縮化を図ることができる。なお、ここでは、ｎ＞ｍとしたが、ｎ＝ｍでも同様に実現することができる。
【０１１８】
図２０は、作成部によって作成された対応テーブルの一例を示す説明図（その２）である。図２０において、対応テーブル２０００には、制御回路９００のカウント値１〜ｎと、そのカウント値１〜ｎで動作する順序回路素子が存在するＣＰＵ３０１ａ−１〜３０１ａ−ｎ、ＣＰＵ３０１ｂ−１〜３０１ｂ−ｍとが関連付けられて記憶されている（ｎ＞ｍ）。
【０１１９】
この対応テーブル２０００を参照することで、各状態（カウント値）において時分割動作した順序回路素子が存在するＣＰＵ３０１ａ−１〜３０１ａ−ｎ、ＣＰＵ３０１ｂ−１〜３０１ｂ−ｍを特定することができる。
【０１２０】
これにより、設計対象システム１９００の検証結果として、ＣＰＵ３０１ａ−１〜３０１ａ−ｎ、ＣＰＵ３０１ｂ−１〜３０１ｂ−ｍごとの信号波形を提示可能となり、バグが見つかったときのユーザによるデバッグ作業の効率化を図ることができる。
【０１２１】
さらに、設計対象システム３００をシステムボードとして複数実装する多重化設計対象システムを設計対象とすることとしてもよい。図２１は、多重化設計対象システムを示す説明図である。図２１において、多重化設計対象システム２１００は、図３に示した設計対象システム３００をシステムボードとして複数個実装したシステムである。すなわち、多重化設計対象システム２１００は、システムボード３００−１〜３００−Ｋがバス２１１０に接続されて並列実行する。
【０１２２】
図２２は、構築部によって構築された多重化設計対象システムを示す説明図である。多重化設計対象システム２２００において、各システムボード２２００−１〜２２００−Ｋは、図１３に示した構築後の設計対象システム１３００と同一構成である。この多重化設計対象システム２２００に関する設計データ（ネットリスト）をシミュレートする場合、図２１に示したように、各システムボード３００−ｋのＣＰＵ数がｎ個で、システムボード数がＫ個であるため、カウント数は、（ｎ＋１）×Ｋとなる。
【０１２３】
図２３は、作成部によって作成された対応テーブルの一例を示す説明図（その３）である。ここでは、各システムボード２２００−ｋが有するモジュールをＣＰＵ３０１−ｋ−１〜３０１−ｋ−ｎと表記する。
【０１２４】
図２３において、対応テーブル２３００には、制御回路９００のカウント値１〜（ｎ＋１）×Ｋと、そのカウント値１〜（ｎ＋１）×Ｋで動作する順序回路素子が存在するＣＰＵ３０１−１−１〜３０１−１−ｎ、・・・、ＣＰＵ３０１−ｋ−１〜３０１−ｋ−ｎ、・・・、ＣＰＵ３０１−Ｋ−１〜３０１−Ｋ−ｎとが関連付けられて記憶されている。
【０１２５】
この対応テーブル２３００を参照することで、各状態（カウント値）において時分割動作した順序回路素子が存在するＣＰＵ３０１−１−１〜３０１−１−ｎ、・・・、ＣＰＵ３０１−ｋ−１〜３０１−ｋ−ｎ、・・・、ＣＰＵ３０１−Ｋ−１〜３０１−Ｋ−ｎを特定することができる。
【０１２６】
これにより、多重化設計対象システム２２００の検証結果として、ＣＰＵ３０１−１−１〜３０１−１−ｎ、・・・、ＣＰＵ３０１−ｋ−１〜３０１−ｋ−ｎ、・・・、ＣＰＵ３０１−Ｋ−１〜３０１−Ｋ−ｎごとの信号波形を提示可能となり、バグが見つかったときのユーザによるデバッグ作業の効率化を図ることができる。
【０１２７】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態１では、対応テーブル１４００を用いて、変換前の設計対象システム３００の各信号の信号波形を生成する場合について説明したが、実施の形態２では、変換後の設計対象システム１３００の検証中に保持される順序回路の出力値を用いて、変換前の設計対象システム３００の各信号の信号波形を生成する。
【０１２８】
以降において、実施の形態２では、順序回路として、複数の順序回路４０２−１〜４０２−ｎのそれぞれに存在する共通の順序回路素子群（ＦＦ４２１−１〜４２１−ｎ）を多重化した多重化回路（置換モジュール６０１）を例に挙げて説明する。また、実施の形態１と相違する点のみについて説明する。なお、実施の形態１で示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１２９】
図２４は、実施の形態２の概要を示す説明図である。図２４において、多重化回路２４００は、図１３に示した設計対象システム１３００の多重化順序回路１３１０を構成する多重化回路（置換モジュール６０１）である。多重化回路２４００において、ＦＦ４２１−ｉは、カウント値ｉのとき、保持しているデータＱをマルチプレクサ９２０に出力することとなる。
【０１３０】
実施の形態２では、設計対象システム１３００の検証中に、区切りとなるクロック到達のタイミング（制御回路９００のカウント値がｎ＋１）で、多重化回路２４００の各ＦＦ４２１−１〜４２１−ｎから出力されるデータＱを保持する。検証終了後に、ユーザから任意のクロックの指定を受け付け、保持結果の中から、指定されたクロックにおけるＦＦ４２１−１〜４２１−ｎの値を読み出す。そして、読み出した値を用いて、それぞれ対応する組み合わせ回路４０１−１〜４０１−ｎの値を計算し、その計算結果を検証結果として出力する。
【０１３１】
（検証支援装置の機能的構成）
つぎに、実施の形態２にかかる検証支援装置２５００の機能的構成について説明する。図２５は、実施の形態２にかかる検証支援装置の機能的構成を示すブロック図である。図２５において、検証支援装置２５００は、入力部７０１と、解析部７０２と、生成部７０３と、置換部７０４と、構築部７０５と、出力部７０７と、保持部２５０１と、指定部２５０２と、抽出部２５０３と、取得部２５０４と、を備えている。
【０１３２】
保持部２５０１は、構築部７０５によって構築された単一モジュール１３０１を有する設計対象システム１３００の検証中に、制御回路９００により順序回路素子群（例えば、ＦＦ４２１−１〜４２１−ｎ）を時分割動作させた結果、順序回路素子から出力される信号の値を当該順序回路素子ごとに保持する機能を有する。
【０１３３】
図２６は、保持部による保持結果の一例を示す説明図である。図２６において、保持テーブル２６００には、変換前の設計対象システム３００のクロックの区切りごとに、該クロックにおける各順序回路素子（ここでは、ＦＦ４２１−１〜４２１−ｎ）の信号（ここでは、「信号Ｘ」とする）の値（データＱ）が記憶されている。
【０１３４】
具体的には、区切りとなるクロックの到達タイミング（カウント値ｎ＋１）で、カウント値ｉのときに時分割動作することでＦＦ４２１−ｉから出力されたデータＱが記憶されている。例えば、変換前の設計対象システム３００のクロック１について、各カウント値１〜ｎのときに各ＦＦ４２１−１〜４２１−ｎから出力されたそれぞれのデータＱ１−１〜Ｑ１−ｎが記憶されている。
【０１３５】
なお、図２６では、信号Ｘの値のみを表現しているが、設計対象システム３００に入力される他の信号の値も記憶されている。また、図２６では、ＦＦ４２１−１〜４２１−ｎのみの出力値を表現しているが、順序回路素子群（ＦＦ４２２−１〜４２２−ｎ），・・・，（ＦＦ４２４−１〜４２４−ｎ），（ＲＡＭ４２５−１〜４２５−ｎ），・・・，（ＲＡＭ４２７−１〜４２７−ｎ）の値（不図示）も記憶されている。この保持テーブル２６００は、例えば、ＨＤＤや光ディスク２１１、フラッシュメモリなどの記憶部へのデータ出力を用いてその機能を実現する。
【０１３６】
図２５の説明に戻り、指定部２５０２は、設計対象システム１３００の検証期間のうち任意の検証時刻の指定を受け付ける機能を有する。具体的には、例えば、図２に示したキーボード２１１やマウス２２２などの入力装置２２０をユーザが操作することで、任意の検証時刻の指定を受け付ける。より詳細に説明すると、例えば、設計対象システム１３００の検証結果（各信号の信号波形）を表示する画面を呼び出して、複数の入力信号の中から任意の信号を指定するとともに、検証期間の中から任意のクロックを指定する。
【０１３７】
抽出部２５０３は、保持部２５０１によって保持された保持結果（保持テーブル２４００）の中から、指定部２５０２によって指定されたクロックにおける順序回路素子群（ＦＦ４２１−１〜４２１−ｎ）の信号の値を抽出する機能を有する。例えば、指定部２５０２によりクロック１が指定された場合、保持テーブル２４００の中から、ＦＦ４２１−１〜４２１−ｎから出力されたそれぞれのデータＱ１−１〜Ｑ１−ｎを抽出する。
【０１３８】
取得部２５０４は、入力部７０１によって入力された設計対象システム３００の設計データと、抽出部２５０３によって抽出された順序回路素子群の信号の値とを用いて検証された設計対象システム３００の検証結果を取得する機能を有する。具体的には、抽出された値を用いて、指定されたクロックにおける１サイクル分の組み合わせ回路４０１−１〜４０１−ｎの値を計算した計算結果を取得する。
【０１３９】
なお、組み合わせ回路４０１−１〜４０１−ｎの計算結果は、検証支援装置２５００において設計対象システム３００のシミュレーションを実行することで取得することとしてもよく、また、シミュレータによるシミュレーション結果を取得することとしてもよい。
【０１４０】
また、出力部７０７は、取得部２５０４によって取得された検証結果を出力する機能を有する。具体的には、例えば、指定された信号Ｘの指定クロックにおける信号波形をディスプレイ２３１に表示する。これにより、任意の信号Ｘの信号波形を提示可能となり、ユーザによるデバッグ作業の効率化を図ることができる。
【０１４１】
（検証支援処理手順）
つぎに、実施の形態２にかかる検証支援装置２５００の検証支援処理手順について説明する。なお、設計データを変更（設計対象システム３００→設計対象システム１３００）する処理手順については、実施の形態１で説明した手順と同様のため図示および説明を省略する。ここでは、任意のクロックにおける信号の信号波形を検証結果として表示する場合の検証支援処理手順について説明する。
【０１４２】
図２７は、実施の形態２にかかる検証支援装置の検証支援処理手順を示すフローチャートである。図２７のフローチャートにおいて、まず、指定部２５０２により、単一モジュール１３０１を有する設計対象システム１３００の検証期間のうち任意の検証時刻、および複数の入力信号のうち任意の信号（以下、「指定信号」という）の指定を受け付けたか否かを判断する（ステップＳ２７０１）。
【０１４３】
ここで、任意の検証時刻（以下、「指定クロック」という）および信号（以下、「指定信号」という）の指定を受け付けるのを待って（ステップＳ２７０１：Ｎｏ）、受け付けた場合（ステップＳ２７０１：Ｙｅｓ）、抽出部２５０３により、保持テーブル２６００の中から、指定クロックにおける順序回路素子群の指定信号の値を抽出する（ステップＳ２７０２）。
【０１４４】
このあと、取得部２５０４により、設計対象システム３００の設計データと、抽出部２５０３によって抽出された順序回路素子群の指定信号の値とを用いて検証された指定クロックにおける設計対象システム１３００の検証結果を取得する（ステップＳ２７０３）。
【０１４５】
最後に、出力部７０７により、取得部２５０４によって取得された検証結果を出力して（ステップＳ２７０４）、本フローチャートによる一連の処理を終了する。
【０１４６】
このように実施の形態２によれば、設計対象システム１３００の検証中に、順序回路素子（例えば、ＦＦ４２１−１〜４２１−ｎ）から出力される信号の値を当該順序回路素子ごとに保持テーブル２６００に保持する。そして、保持テーブル２６００の記憶内容を用いて、指定クロックにおける組み合わせ回路４０１−１〜４０１−ｎの値を求める。これにより、設計対象システム１３００の検証結果として、指定クロックにおける指定信号の信号波形を提示可能となり、バグが見つかったときのデバッグ作業の効率化を図ることができる。
【０１４７】
また、保持テーブル２６００の記憶内容を用いて組み合わせ回路４０１−１〜４０１−ｎの値を再計算するため、組み合わせ回路４０１−１〜４０１−ｎの出力値を保持する必要がなく、記憶部に保持する記憶量を削減することができる。なお、再計算にかかる計算時間が必要となるが、数サイクル分の計算のため、検証作業全体に占める割合は小さい。
【０１４８】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態１では、対応テーブル１４００を用いて、変換前の設計対象システム３００の各信号の信号波形を生成する場合について説明したが、実施の形態３では、予め指定された信号については、回路変換時に、変換前の設計対象システム３００の値を反映した値を出力する部分回路を生成する。以降、実施の形態１と相違する点のみについて説明する。なお、実施の形態１で示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１４９】
実施の形態３では、検証前に、設計対象システム３００に入力される複数の入力信号の中から、任意の信号（以下、「指定信号」という）の指定を受け付ける。具体的には、例えば、図２に示したキーボード２１１やマウス２２２などの入力装置２２０をユーザが操作することで、任意の信号の指定を受け付ける。
【０１５０】
そして、変換後の設計対象システム１３００の検証中に、制御回路９００により時分割動作させた結果、順序回路素子群（例えば、ＦＦ４２１−１〜４２１−ｎ）から出力される指定信号の値をＣＰＵ３０１−１〜３０１−ｎごとに出力する部分回路を生成する。そして、この部分回路が追加された設計対象システム１３００を検証する。
【０１５１】
図２８は、部分回路の一例を示す説明図である。図２８において、部分回路２８００は、設計対象システム１３００の検証中に、順序回路素子群（ここでは、ＦＦ４２１−１〜４２１−ｎ）から出力される信号Ａの値をＣＰＵ３０１−１〜３０１−ｎごとに出力する回路である。この部分回路２８００を設計対象システム１３００に追加することで、指定信号（ここでは、信号Ａ）の信号波形を出力することができる。なお、部分回路２８００は、ＨＤＬ記述のテキストデータにより表現される。
【０１５２】
このように、実施の形態３によれば、指定信号の値を出力する部分回路２８００を追加することで、設計対象システム１３００の検証結果として任意の信号Ａの信号波形を提示可能となり、デバッグ作業の効率化を図ることができる。なお、部分回路２８００を追加することで回路規模は大きくなるが、設計対象システム３００の回路変更により回路量が削減されるため、全体として回路規模が小さくなっている。
【０１５３】
以上説明したしたように、本実施の形態によれば、設計対象システムの回路規模を小さくすることができ、ＦＰＧＡを使ったシミュレーションを実行することができる。したがって、シミュレーション時間の短縮化を図ることができる。
【０１５４】
また、回路規模が大きい多重化モジュールと回路規模の小さい単一モジュールは等価であるため、従来のような擬似プロセッサを作成する必要がなく、設計者の設計負担の低減を図ることができる。また、多重化モジュールと単一モジュールは等価であるため、従来のような擬似プロセッサを使用する必要もなく、漏れのない高速なシミュレーションを実現することができる。
【０１５５】
また、設計対象システムの検証結果として、任意の信号の信号波形をモジュールごとに提示することができるため、デバッグ作業にかかる作業負担および作業時間を削減することができる。
【０１５６】
以上のことから、この検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法によれば、多重化モジュールを有する設計対象システムのシミュレーションの高精度化およびデバッグ作業の効率化を図ることにより、設計期間の短縮化を実現することができる。
【０１５７】
なお、本実施の形態で説明した検証支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１５８】
また、本実施の形態で説明した検証支援装置２００，２５００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した検証支援装置２００，２５００の機能７０１〜７０９，２５０１〜２５０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、検証支援装置２００，２５００を製造することができる。
【０１５９】
なお、本実施の形態で説明した設計対象システム１３００に関する設計データを記録した記録媒体を用意してもよい。ここで、設計対象システム１３００に関する設計データとは、設計対象システム１３００を、ＨＤＬで記述されたＲＴＬ記述や、論理合成後のネットリストにより表現したコンピュータ読取可能な電子データである。このような設計データを、テストツールがインストールされたコンピュータ装置上で展開することにより、製造前において遅延テストを実行することができる。また、このような設計データをＦＰＧＡなどのＰＬＤに書き込み可能に加工した上でＰＬＤにダウンロードすることにより、上述した設計対象システム１３００を製造することもできる。
【０１６０】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６１】
（付記１）コンピュータを、
同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段、
前記生成手段によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成手段によって作成された情報を出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【０１６２】
（付記２）前記コンピュータを、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証結果を取得する取得手段、
前記作成手段によって作成された情報を用いて、前記取得手段によって取得された単一モジュールを有する設計対象システムの検証結果から、前記モジュールごとの検証結果を抽出する抽出手段として機能させ、
前記出力手段は、
前記抽出手段によって抽出されたモジュールごとの検証結果を出力することを特徴とする付記１に記載の検証支援プログラム。
【０１６３】
（付記３）前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記生成手段は、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路群と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、からなる単一モジュールを構築することを特徴とする付記１または２に記載の検証支援プログラム。
【０１６４】
（付記４）コンピュータを、
同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証中に、前記生成手段によって生成された制御回路により前記順序回路素子群を時分割動作させた結果、前記順序回路素子から出力される信号の値を当該順序回路素子ごとに保持する保持手段、
として機能させることを特徴とする検証支援プログラム。
【０１６５】
（付記５）前記コンピュータを、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証期間のうち任意の検証時刻の指定を受け付ける指定手段、
前記保持手段によって保持された保持結果の中から、前記指定手段によって指定された検証時刻における前記順序回路素子群の信号の値を抽出する抽出手段、
前記入力手段によって入力された設計データと、前記抽出手段によって抽出された前記順序回路素子群の信号の値とを用いて検証された前記多重化モジュールを有する設計対象システムの検証結果を取得する取得手段、
前記取得手段によって取得された検証結果を出力する出力手段として機能させることを特徴とする付記４に記載の検証支援プログラム。
【０１６６】
（付記６）前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記生成手段は、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路群と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、からなる単一モジュールを構築することを特徴とする付記４または５に記載の検証支援プログラム。
【０１６７】
（付記７）コンピュータを、
同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する第１の生成手段、
前記設計対象システムに入力される複数の信号の中から、任意の信号の指定を受け付ける指定手段、
前記第１の生成手段によって生成された制御回路により時分割動作させた結果、前記順序回路素子群から出力される前記指定手段によって指定された信号の値を前記各順序回路素子が存在するモジュールごとに出力する部分回路を生成する第２の生成手段、
前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記第１および第２の生成手段によって生成された制御回路および部分回路と、からなる単一モジュールを構築する構築手段、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データを出力する出力手段、
として機能させることを特徴とする検証支援プログラム。
【０１６８】
（付記８）前記置換手段は、
さらに、前記各モジュールに存在する入力ピン群を、前記各モジュールへの入力を前記一の組み合わせ回路に選択出力する入力Ｉ／Ｆに置換するとともに、前記各モジュールに存在する出力ピン群を、前記一の組み合わせ回路からの出力を前記複数のモジュールを選択出力する出力Ｉ／Ｆに置換し、
前記生成手段は、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群と前記入力Ｉ／Ｆと前記出力Ｉ／Ｆとを時分割動作させる制御回路を生成し、
前記構築手段は、
前記一の組み合わせ回路と、前記多重化回路群と、前記入力Ｉ／Ｆと、前記出力Ｉ／Ｆと、前記制御回路と、前記部分回路と、からなる単一モジュールを構築することを特徴とする付記７に記載の検証支援プログラム。
【０１６９】
（付記９）付記１〜８のいずれか一つに記載の検証支援プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１７０】
（付記１０）付記１〜８のいずれか一つに記載の単一モジュールを有する設計対象システムの設計データを記録したコンピュータに読み取り可能な記録媒体。
【０１７１】
（付記１１）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段と、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段と、
前記生成手段によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成手段と、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成手段によって作成された情報を出力する出力手段と、
を備えることを特徴とする検証支援装置。
【０１７２】
（付記１２）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段と、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記生成手段によって生成された制御回路と、からなる単一モジュールを構築する構築手段と、
前記構築手段によって構築された単一モジュールを有する設計対象システムの検証中に、前記生成手段によって生成された制御回路により前記順序回路素子群を時分割動作させた結果、前記順序回路素子から出力される信号の値を当該順序回路素子ごとに保持する保持手段と、
を備えることを特徴とする検証支援装置。
【０１７３】
（付記１３）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力手段と、
前記入力手段によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換手段と、
前記置換手段によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する第１の生成手段と、
前記設計対象システムに入力される複数の信号の中から、任意の信号の指定を受け付ける指定手段と、
前記第１の生成手段によって生成された制御回路により時分割動作させた結果、前記順序回路素子群から出力される前記指定手段によって指定された信号の値を前記各順序回路素子が存在するモジュールごとに出力する部分回路を生成する第２の生成手段と、
前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換手段によって置換された多重化回路群と、前記第１および第２の生成手段によって生成された制御回路および部分回路と、からなる単一モジュールを構築する構築手段と、
前記構築手段によって構築された単一モジュールを有する設計対象システムに関する設計データを出力する出力手段と、
を備えることを特徴とする検証支援装置。
【０１７４】
（付記１４）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力工程と、
前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換工程と、
前記置換工程によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成工程と、
前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換工程によって置換された多重化回路群と、前記生成工程によって生成された制御回路と、からなる単一モジュールを構築する構築工程と、
前記生成工程によって生成された制御回路により前記共通の順序回路素子群が時分割動作する時分割のタイミングと、当該タイミングで動作する順序回路素子が存在するモジュールとが関連付けられた情報を作成する作成工程と、
前記構築工程によって構築された単一モジュールを有する設計対象システムに関する設計データおよび前記作成工程によって作成された情報を出力する出力工程と、
を含んだことを特徴とする検証支援方法。
【０１７５】
（付記１５）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力工程と、
前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換工程と、
前記置換工程によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する生成工程と、
前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換工程によって置換された多重化回路群と、前記生成工程によって生成された制御回路と、からなる単一モジュールを構築する構築工程と、
前記構築工程によって構築された単一モジュールを有する設計対象システムの検証中に、前記生成工程によって生成された制御回路により前記順序回路素子群を時分割動作させた結果、前記順序回路素子から出力される信号の値を当該順序回路素子ごとに保持する保持工程と、
を含んだことを特徴とする検証支援方法。
【０１７６】
（付記１６）同種かつ同一タイプの複数のモジュールが並列動作する多重化モジュールを有する設計対象システムに関する設計データの入力を受け付ける入力工程と、
前記入力工程によって入力された設計データに基づいて、前記各モジュールに存在する複数の順序回路を、当該複数の順序回路のそれぞれに存在する共通の順序回路素子群を多重化した多重化回路群に置換する置換工程と、
前記置換工程によって置換された各多重化回路により多重化された前記共通の順序回路素子群を時分割動作させる制御回路を生成する第１の生成工程と、
前記設計対象システムに入力される複数の信号の中から、任意の信号の指定を受け付ける指定工程と、
前記第１の生成工程によって生成された制御回路により時分割動作させた結果、前記順序回路素子群から出力される前記指定工程によって指定された信号の値を前記各順序回路素子が存在するモジュールごとに出力する部分回路を生成する第２の生成工程と、
前記各モジュールに存在する複数の組み合わせ回路の中から選ばれた一の組み合わせ回路と、前記置換工程によって置換された多重化回路群と、前記第１および第２の生成工程によって生成された制御回路および部分回路と、からなる単一モジュールを構築する構築工程と、
前記構築工程によって構築された単一モジュールを有する設計対象システムに関する設計データを出力する出力工程と、
を含んだことを特徴とする検証支援方法。
【図面の簡単な説明】
【０１７７】
【図１】実施の形態１の概要を示す説明図である。
【図２】実施の形態１にかかる検証支援装置のハードウェア構成を示す説明図である。
【図３】設計対象システムの一例を示す説明図である。
【図４】多重化モジュールを構成する任意のＣＰＵ内部の回路構成を示す説明図である。
【図５】ライブラリの記憶内容を示す説明図である。
【図６】置換ＤＢの記憶内容を示す説明図である。
【図７】実施の形態１にかかる検証支援装置の機能的構成を示すブロック図である。
【図８】組み合わせ回路の共有関係を示す説明図である。
【図９】順序回路の置換例を示す説明図である。
【図１０】入力ピンの置換例を示す説明図である。
【図１１】出力ピンの置換例を示す説明図である。
【図１２】Ｉ／Ｆ変換処理を示す模式図である。
【図１３】構築部によって構築された単一モジュールを示す説明図である。
【図１４】作成部によって作成された対応テーブルの一例を示す説明図（その１）である。
【図１５】抽出部による抽出処理の概要を示す説明図である。
【図１６】実施の形態１にかかる検証支援装置の検証支援処理手順を示すフローチャート（その１）である。
【図１７】実施の形態１にかかる検証支援装置の検証支援処理手順を示すフローチャート（その２）である。
【図１８】複数の多重化モジュールを有する設計対象システムの一例を示す説明図である。
【図１９】構築部によって構築された設計対象システムを示す説明図である。
【図２０】作成部によって作成された対応テーブルの一例を示す説明図（その２）である。
【図２１】多重化設計対象システムを示す説明図である。
【図２２】構築部によって構築された多重化設計対象システムを示す説明図である。
【図２３】作成部によって作成された対応テーブルの一例を示す説明図（その３）である。
【図２４】実施の形態２の概要を示す説明図である。
【図２５】実施の形態２にかかる検証支援装置の機能的構成を示すブロック図である。
【図２６】保持部による保持結果の一例を示す説明図である。
【図２７】実施の形態２にかかる検証支援装置の検証支援処理手順を示すフローチャートである。
【図２８】部分回路の一例を示す説明図である。
【符号の説明】
【０１７８】
２００，２５００  検証支援装置
３００，１３００  設計対象システム
７０１  入力部
７０２  解析部
７０３  生成部
７０４  置換部
７０５  構築部
７０６  作成部
７０７  出力部
７０８，２５０４  取得部
７０９，２５０３  抽出部
２５０１  保持部
２５０２  指定部
【図１】
0005056511.tif 000002
【図２】
0005056511.tif 000003
【図３】
0005056511.tif 000004
【図４】
0005056511.tif 000005
【図５】
0005056511.tif 000006
【図６】
0005056511.tif 000007
【図７】
0005056511.tif 000008
【図８】
0005056511.tif 000009
【図９】
0005056511.tif 000010
【図１０】
0005056511.tif 000011
【図１１】
0005056511.tif 000012
【図１２】
0005056511.tif 000013
【図１３】
0005056511.tif 000014
【図１４】
0005056511.tif 000015
【図１５】
0005056511.tif 000016
【図１６】
0005056511.tif 000017
【図１７】
0005056511.tif 000018
【図１８】
0005056511.tif 000019
【図１９】
0005056511.tif 000020
【図２０】
0005056511.tif 000021
【図２１】
0005056511.tif 000022
【図２２】
0005056511.tif 000023
【図２３】
0005056511.tif 000024
【図２４】
0005056511.tif 000025
【図２５】
0005056511.tif 000026
【図２６】
0005056511.tif 000027
【図２７】
0005056511.tif 000028
【図２８】
0005056511.tif 000029