(57)【要約】【課題】  抽象度が異なる複数のモデルを管理する工数や、不具合が発生した場合に入力したモデルに戻って修正する工数を減少させることができる装置や方法を提供する。【解決手段】  この装置は、ハードウェアを記述することにより作成された、記述レベルである抽象度に依存しないハードウェアモデルの入力を受け付ける入力部２０と、抽象度が異なる複数の記述を含むファイルが格納されるファイル格納部２１と、ハードウェアモデルの記述または予め設定された設定値を参照して、該ハードウェアモデルをどの抽象度で実行すべきかを判断する抽象度判断部２２と、ファイル内の複数の記述から、判断された抽象度の記述を選択する選択部２３と、選択された記述を用いて、判断された抽象度で実行するためのハードウェアモデルを生成するモデル生成部２４とを含む。【選択図】  図２
2014048770.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアを記述することにより作成された、記述レベルである抽象度に依存しないハードウェアモデルの入力を受け付ける入力部と、
前記抽象度が異なる複数の記述を含むファイルが格納されるファイル格納部と、
前記ハードウェアモデルの記述または予め設定された設定値を参照して、該ハードウェアモデルをどの抽象度で実行すべきかを判断する抽象度判断部と、
前記ファイル内の前記複数の記述から、判断された前記抽象度の記述を選択する選択部と、
選択された前記記述を用いて、前記判断された抽象度で実行するためのハードウェアモデルを生成するモデル生成部とを含む、情報処理装置。
【請求項２】
前記抽象度は、ＵＴ(Un timed)、ＴＬ(transaction Level)、ＢＣＡ(Bus Cycle Accurate)の３つであり、前記抽象度判断部は、前記ＵＴ、前記ＴＬ、前記ＢＣＡの３つから実行すべき１つの抽象度を判断する、請求項１に記載の情報処理装置。
【請求項３】
前記判断された抽象度が、前記ＢＣＡであり、
前記情報処理装置は、前記ＢＣＡで実行するためのハードウェアモデルを、ＲＴＬ(Register Transfer Level)で実行するためのハードウェアモデルへ変換する動作合成部をさらに含む、請求項２に記載の情報処理装置。
【請求項４】
前記ファイルは、前記ハードウェアの実装に関する１つの記述に対して、前記抽象度が異なる複数の記述を含んでいて、
前記ハードウェアの実装に関する記述は、データの入出力に関する記述、タイミング制御に関する記述を含む、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ハードウェアの実装に関する記述は、さらに、レジスタに関する記述を含む、請求項４に記載の情報処理装置。
【請求項６】
前記ハードウェアの実装に関する記述は、さらに、デバッグに関する記述を含む、請求項４または５に記載の情報処理装置。
【請求項７】
ハードウェア設計において用いられる情報処理装置により実行される情報処理方法であって、
記述レベルである抽象度が異なる複数の記述を含むファイルをファイル格納部に格納するステップと、
ハードウェアを記述することにより作成された、前記抽象度に依存しないハードウェアモデルの入力を受け付けるステップと、
前記ハードウェアモデルの記述または予め設定された設定値を参照して、該ハードウェアモデルをどの抽象度で実行すべきかを判断するステップと、
前記ファイル内の前記複数の記述から、判断された前記抽象度の記述を選択するステップと、
選択された前記記述を用いて、前記判断された抽象度で実行するためのハードウェアモデルを生成するステップとを含む、情報処理方法。
【請求項８】
請求項７に記載の情報処理方法を実行するためのコンピュータ可読なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアを記述することにより作成されたハードウェアモデルを、指定された抽象度で実行することを可能にする情報処理装置、その方法およびその方法を実行するためのコンピュータ可読なプログラムに関する。
【背景技術】
【０００２】
ハードウェア（論理回路）の開発手法として、そのハードウェアのプロトタイプ（試作品）を作成してソフトウェア開発やハードウェア検証に利用する手法や、ＥＤＡ(Electronic Design Automation)ツールと呼ばれる設計作業を自動化し、支援するためのソフトウェアを利用する手法が用いられている。
【０００３】
プロトタイプは、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ等の高位言語を用いて、ハードウェアの動作を抽象度が高い記述で記述することによりハードウェアモデルとして作成される。ここで、抽象度が高いものとしては、実行する機能や動作を記述するだけで、時間的な概念がないＵＴ(Un Timed)や、データの流れを定義して時間的な概念を表現するが、ハードウェア内の各モジュール間の通信方法の詳細については記述しないＴＬ(Transaction Level)等が挙げられる。
【０００４】
ＥＤＡツールには、設計対象のハードウェアで処理したいアルゴリズムからそのハードウェアのレジスタ転送レベル(RTL)コードを生成する動作合成ツールが含まれる。この動作合成ツールを用いることによりＢＣＡ(Bus Cycle Accurate)からＲＴＬのハードウェア記述言語(HDL)を生成することができる。ここで、ＢＣＡは、ＴＬより低い抽象度を有し、各モジュール間の通信方法の詳細について記述したものである。ＲＴＬは、ＢＣＡよりさらに低い抽象度を有し、各クロックで実行すべき具体的な演算等について詳細に記述したものである。
【０００５】
また、ハードウェアとそのハードウェアのためのソフトウェアの開発を並行して整合性をとりつつ実施するために、高位言語で記述された単一の入力モデルから、検証用モデルや動作合成モデル等の異なる抽象化レベルの複数の等価なモデルを生成する手法も知られている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１に記載の手法は、効率的にハードウェアの開発を行うことができるが、生成された各抽象度のモデルと、入力モデルとの間の整合性の管理（例えばバージョン管理等）が必要となる。
【０００７】
また、生成されたモデルにおいて何らかの不具合が発生した場合、入力モデルに戻って修正しなければならないが、その修正も、生成されたモデルと入力モデルの対応を確認しながら行う必要がある。
【０００８】
このように複数のモデルを生成すると、その管理や不具合が発生した場合の修正にかかる工数が増大するという問題があった。
【課題を解決するための手段】
【０００９】
本発明は、上記課題に鑑みなされたものであり、ハードウェアを記述することにより作成され、記述レベルである抽象度に依存しないハードウェアモデルの入力を受け付ける入力部と、抽象度が異なる複数の記述を含むファイルが格納されるファイル格納部と、ハードウェアモデルの記述または予め設定された設定値を参照して、該ハードウェアモデルをどの抽象度で実行すべきかを判断する抽象度判断部と、ファイル内の複数の記述から、判断された抽象度の記述を選択する選択部と、選択された記述を用いて、判断された抽象度で実行するためのハードウェアモデルを生成するモデル生成部とを含む、情報処理装置が提供される。
【発明の効果】
【００１０】
本発明によれば、指定された抽象度からその抽象度で実行するのに必要とされる記述を選択し、それを用いて１つの実行モデルを生成するので、複数の異なる抽象度のモデルを生成することがなくなり、抽象度が異なる複数のモデルを管理する工数や、不具合が発生した場合に入力したモデルに戻って修正する工数を減少させることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態の情報処理装置のハードウェア構成を示した図。
【図２】本実施形態の情報処理装置の機能ブロック図。
【図３】情報処理装置のソフトウェア構成を示した図。
【図４】図３に示した抽象度選択ライブラリの記述例を示した図。
【図５】図３に示したモジュールの記述例を示した図。
【図６】情報処理装置が行う処理の流れを示したフローチャート。
【発明を実施するための形態】
【００１２】
図１は、本実施形態の情報処理装置のハードウェア構成を示した図である。この情報処理装置は、一般のコンピュータと同様、ＣＰＵ(Central Processing Unit)１０、ＲＡＭ(Random Access Memory)１１、ＲＯＭ(Read Only Memory)１２、ＨＤＤ(Hard Disk Drive)１３やＳＳＤ(Solid State Drive)等の補助記憶装置、入出力装置(I/O)１４等を含んで構成され、互いにバス１５により接続されている。
【００１３】
ＣＰＵ１０は、プログラムを実行して、様々な数値計算、情報処理、機器制御等を行う。このため、ＣＰＵ１０は、制御装置や演算装置を含み、また、データを一時的に記憶するレジスタ、ＲＡＭ１１やＲＯＭ１２やＨＤＤ１３とのインタフェース、Ｉ／Ｏ１４とのインタフェースを含む。
【００１４】
ＲＯＭ１２は、記録されている情報の読み出しのみが可能なメモリで、ハードウェアとの入出力を行うためのＢＩＯＳ(Basic Input/Output System)や、ハードウェアを制御するためのファームウェア等を記憶する。ＨＤＤ１３は、コンピュータシステム全体を制御するためのＯＳ(Operating System)、後述する抽象度を判断し、その抽象度の記述やファイルを選択し、それらを用いてその抽象度で実行するためのハードウェアモデルを生成するプログラム、その他のアプリケーションや各種データを記憶する。ＲＡＭ１１は、ＣＰＵ１０が上記プログラムやアプリケーション等を実行するために、それらを読み出す記憶領域を提供する。
【００１５】
Ｉ／Ｏ１４は、周辺機器やネットワーク等と接続し、データ等の入出力を管理し、制御する。周辺機器としては、ディスプレイ、キーボード、マウス、外付けＨＤＤ、ＣＤ−ＲＯＭドライブ、ＤＶＤドライブ、スキャナ装置、プリンタ等が挙げられる。
【００１６】
情報処理装置としては、ＰＣ、ワークステーション、タブレット端末、スマートフォン、ＰＤＡ(Personal Digital Assistance)等を用いることができる。また、ＣＰＵ１０、ＲＡＭ１１、ＲＯＭ１２、ＨＤＤ１３、Ｉ／Ｏ１４、バス１５を含むＭＦＰ(Multi Function Peripheral)であってもよい。
【００１７】
図２は、本実施形態の情報処理装置の機能ブロック図である。この情報処理装置は、ハードウェア、特に集積回路を設計するのに使用される装置であり、これを実現するために、図２に示すような各機能部を備える。以下、設計するハードウェアを集積回路として説明する。情報処理装置は、集積回路を記述することにより作成され、その記述レベルである抽象度に依存しないハードウェアモデルの入力を受け付ける入力部２０を備える。
【００１８】
ハードウェアモデルは、集積回路の構成や動作等を高位言語等により記述して作成されたシミュレーション等を行うために使用されるプログラムである。このハードウェアモデルは、その集積回路が決められた仕様を満足しているかどうかを確認するためのシミュレーション等に用いられる。ここで、高位言語とは、ＣＰＵ１０が直接理解し実行できる機械語、またはその機械語を人間にわかりやすい形式で記述したアセンブリ言語以外の高水準言語である。高位言語には、例えば、Ｃ、Ｃ＋＋、ＳｙｓｔｅｍＣ等がある。
【００１９】
抽象度は、集積回路の構成や動作等を記述する際のその記述レベルを表すもので、ＵＴ、ＴＬ、ＢＣＡ、ＲＴＬ等がある。ＵＴは、機能や動作だけを記述し、時間的な概念のない最も高いレベルの抽象度をもつ。ＴＬは、データの流れを定義して時間的な概念を表現するが、回路内の各部品間の通信方法の詳細については記述しない。ＢＣＡは、ＴＬより抽象度が低く、各部品間の通信方法の詳細について記述する。ＲＴＬは、ＢＣＡよりさらに抽象度が低く、各クロックで実行すべき具体的な演算等について詳細に記述する。
【００２０】
ＵＴは、機能や動作だけを記述するので、要求される仕様に適合しているかどうかを確認するハードウェア検証に利用することができる。要求される仕様を満足しているか否かの確認において、途中、どのようにデータが流れているかは必要ないためである。ＴＬは、どのようにデータが流れるかを定義するため、これを必要とするソフトウェア開発に利用することができる。ＢＣＡは、動作合成ツールの入力として利用し、ＲＴＬモデルを生成することができる。
【００２１】
ＲＴＬモデルは、ＲＴＬコードとも言い、ＲＴＬの抽象度で記述されたプログラムである。このＲＴＬモデルは、例えば、回路内のレジスタ、演算装置、制御装置、マルチプレクサ等の構造を定義し、クロックサイクル毎の動作を明確に割り当てたプログラムとされる。
【００２２】
入力部２０が受け付ける抽象度に依存しないハードウェアモデルの記述については後述するが、上述したＵＴ、ＴＬ、ＢＣＡ、ＲＴＬ等の抽象度で記述する形式以外の一般的な形式による記述である。
【００２３】
情報処理装置は、その抽象度が異なる複数の記述を含むファイルが格納されるファイル格納部２１を備える。このファイル格納部２１は、各抽象度につき作成される複数のファイルも格納することができる。抽象度が異なる複数の記述は、例えば、上記ＵＴ、ＴＬ、ＢＣＡという３つの抽象度のそれぞれに関わる記述である。各記述は、コードを構成し、抽象度が異なる複数の記述は、コードのまとまりであるライブラリとして提供することができる。ここでは、２種類のファイルを格納するために、それらを区別するべく、前者のファイルを第１ファイルとし、後者のファイルを第２ファイルとする。
【００２４】
各抽象度につき作成された第２ファイルは、その抽象度でハードウェアモデルを実行する際に使用される１以上のコードを含む。抽象度に関わる記述は、第１ファイルに含められるので、それ以外の必要な記述がコードとしてこの第２ファイルに含められる。第２ファイルも第１ファイルと同様、ライブラリとして提供することができる。
【００２５】
また、情報処理装置は、入力部２０が受け付けたハードウェアモデルの記述または予め設定された設定値を参照して、そのハードウェアモデルをどの抽象度で実行すべきかを判断する抽象度判断部２２を備える。ユーザは、抽象度に依存しないハードウェアモデルを、高位言語を用いて記述し、作成することができるが、その際、そのハードウェアモデル内に、どの抽象度でハードウェアモデルを実行するかを記述することができる。また、ユーザは、ハードウェアモデルの実行時に参照する設定値として、どの抽象度で実行するかという情報を与えることも可能である。
【００２６】
このため、抽象度判断部２２は、これらのいずれかを参照し、その参照して得られた情報から、どの抽象度で実行すべきかを判断することができる。なお、これらは一例であり、実行時にどの抽象度で実行するかを判断することができれば、その他の方法を用いることも可能である。
【００２７】
さらに、情報処理装置は、複数の記述および複数の第２ファイルから、判断された抽象度の記述および判断された抽象度につき作成された第２ファイルを選択する選択部２３と、選択された記述および第２ファイルを用いて、判断された抽象度で実行するためのハードウェアモデルを生成するモデル生成部２４とを含んで構成される。
【００２８】
選択部２３は、第１ファイル内の複数の記述から、判断された抽象度の記述を選択する。例えば、ＵＴと判断された場合、そのＵＴの記述を選択する。また、選択部２３は、複数の第２ファイルから、その判断された抽象度につき作成された第２ファイルを選択する。例えば、ＵＴと判断された場合、選択部２３は、ＵＴで実行する際に使用される第２ファイルを選択する。
【００２９】
モデル生成部２４は、選択部２３で選択された記述および第２ファイルを用い、抽象度に依存しないハードウェアモデルの記述を、その選択された記述に置き換え、第２ファイルの内容を追加する等して、判断された抽象度で実行するためのハードウェアモデルを生成する。
【００３０】
抽象度に依存しないハードウェアモデルは、１以上のモジュールとして、上記第１ファイルおよび複数の第２ファイルは、ライブラリとして実装することができる。実際にＰＣ等に実装する際の実装例を、図３に示す。図３は、情報処理装置のソフトウェア構成を例示した図である。
【００３１】
情報処理装置は、図１に示したように、ＣＰＵ１０を含み、ＲＡＭ１１等のメモリ１６を含む。ＣＰＵ１０およびメモリ１６は、バス１５に接続され、バス１５を介してプログラムやデータを読み出し、実行することができるようになっている。
【００３２】
バス１５には、複数のモジュール３０が接続され、複数のモジュール３０に抽象度選択ライブラリ３１が接続されている。抽象度選択ライブラリ３１は、上記第１ファイルに相当するものである。抽象度選択ライブラリ３１には、複数のライブラリ３２が接続される。複数のライブラリ３２は、上記複数の第２ファイルに相当するものである。これらは、例えば、ファイル格納部２１としてのＨＤＤ１３等に格納される。
【００３３】
ユーザは、作成した抽象度選択ライブラリ３１、複数のライブラリ３２を実装し、複数のモジュール３０を入力すると、情報処理装置は、メモリ１６内のプログラムを実行し、ＣＰＵ１０を、上記の入力部２０、抽象度判断部２２、選択部２３およびモデル生成部２４として機能させる。そして、各部が上述した各処理を実行する。
【００３４】
入力部２０がハードウェアモデルを複数のモジュール３０として受け付けると、各モジュール３０を互いに結線し、バス１５と接続する。そして、複数のモジュール３０と抽象度選択ライブラリ３１とを接続し、抽象度選択ライブラリ３１と複数のライブラリ３２とを接続する。これにより、プロトタイプを生成する際、あるいは動作合成を行う際、モジュール３０を抽象度の異なるモデルと差し替えることなく、抽象度選択ライブラリ３１から指定した抽象度に該当する記述や、複数のライブラリ３２から指定した抽象度に該当するライブラリ３２を選択する形で処理を行うことができる。
【００３５】
例えば、ハードウェアのプロトタイプを生成する場合、複数のモジュール３０、抽象度選択ライブラリ３１、複数のライブラリ３２を含む構成を入力として、コンパイラにより処理する。その際、予め指定した抽象度の記述やライブラリ３２が抽象度選択ライブラリ３１により選択されるので、選択された記述およびライブラリ３２を入力として処理することができる。
【００３６】
動作合成を行う場合は、複数のモジュール３０、その結線、抽象度選択ライブラリ３１、複数のライブラリ３２を入力として、動作合成ツールを用い、抽象度選択ライブラリ３１内の動作合成用の記述やライブラリ３２を選択し、動作合成を行う。この動作合成は、別途設けられる動作合成部により実行することができ、ＢＣＡで実行するためのハードウェアモデルを、ＲＴＬで実行するためのハードウェアモデルへ変換する。
【００３７】
動作合成ツールについて簡単に説明すると、このツールは、高位言語で記述された抽象度が高いモデルを変換して抽象度が低いＲＴＬモデルを生成するツールで、いくつかの機能を有している。例えば、ユーザが記述したアルゴリズム記述であるコードを理解するための解析機能、アルゴリズムにおける演算、データ保持等を行うクロックサイクルを決定するスケジューリング機能、演算装置やレジスタ等のリソースを共用させるためのリソース共用機能である。これらの機能を使用して、レジスタや演算装置等の構造を明確に定義し、クロックサイクル毎の動作を明確に記述することにより、ＲＴＬモデルを生成する。
【００３８】
図４を参照して、抽象度選択ライブラリ３１について詳細に説明する。図４では、高位言語としてＳｙｓｔｅｍＣを用い、抽象度が異なるＵＴ、ＴＬ、ＢＣＡという３つで記述されたコード、すなわちアルゴリズム記述を含んでいる。この抽象度選択ライブラリ３１は、実行する抽象度を１つ指定してコンパイルする際に、ライブラリ３２を選択するために使用される。
【００３９】
抽象度選択ライブラリ３１は、抽象度に関わる４つの実装に関する記述を含み、各実装につき、抽象度が異なる３つの記述が含まれる。１つ目の実装に関する記述は、データの入出力に関する記述である。ここでは、１つの例として、ポートを切り替える記述とされている。ポートに限らず、入出力インタフェースを切り替える記述等であってもよい。抽象度としてＴＬが指定された場合、ポートの記述として、tlm_target_socket<>が使用される。このポートは、プロトタイプの生成等に使用される。
【００４０】
なお、このポートは、動作合成では使用することができないので、動作合成においては、ahb_slave_port<>等の動作合成ツールで用意された構成可能なポートが使用される。
【００４１】
２つ目の実装に関する記述は、レジスタに関する記述である。ここでは、１つの例として、レジスタを切り替える記述とされている。動作合成が必要である場合、レジスタのビット幅を指定しなければならない。このビット幅を指定するためには、ＳｙｓｔｅｍＣのsc_unit<>型を使用する必要がある。その一方で、抽象度が高いＵＴやＴＬでは、このようなビット幅を指定する必要はなく、より高速に実行する必要があることから、例えばＣ＋＋のunsigned int型等が使用される。図４に示す例では、選択された型でregクラスのインスタンスを生成することで、指定された抽象度のレジスタを実装する。
【００４２】
３つ目の実装に関する記述は、タイミング制御に関する記述である。ここでは、１つの例として、スレッドを切り替える記述とされている。ＳｙｓｔｅｍＣでは、並列処理を表現することができ、その並列処理の単位がスレッドである。このスレッドの記述には、SC_THREAD、SC_CTHREAD、SC_METHODという３つが用いられる。SC_CTHREADは、クロックの同期動作を記述する際に利用され、SC_THREADおよびSC_METHODは、非同期動作を記述する際に利用される。
【００４３】
動作合成を行う場合、動作合成ツールにより定められた合成可能なスレッドを使用する必要がある。すなわち、クロック同期動作を記述することができるSC_CTHREADが使用される。ＴＬでは、一連の情報処理の単位であるトランザクションに応答して動作を実行させる必要がある。これを実現するためには、スレッド実行のトリガを指定するセンシティビティリストが必要であり、このリストをもつSC_THREADが使用される。ＵＴについては、時間的な概念がないため、これらのスレッドを使用する必要はなく、SC_METHODを使用することができる。しかしながら、SC_METHODに限定されるものではなく、SC_THREADを用いてもよい。
【００４４】
４つ目の実装に関する記述は、同じくタイミング制御に関する記述である。ここでは、別の例として、ＳｙｓｔｅｍＣにおけるwait()文の実装を切り替える記述とされている。動作合成が必要とされる場合、実行や停止のトリガとなるレジスタ値等を、クロックサイクル毎に確認する必要がある。このため、動作合成で使用される抽象度のＢＣＡでは、wait_unit()や、do{wait();}while();が使用される。これに対して、ＴＬやＵＴでは、トリガとなるレジスタ値等の変化のみを確認すればよいため、wait()が使用される。
【００４５】
この抽象度選択ライブラリ３１は、上記実装に関する記述以外に、実際に使用するライブラリ３２を切り替える記述も含まれる。この記述を含むことにより、各抽象度に合わせて、必要なライブラリ３２を選択することが可能となる。
【００４６】
図４では、抽象度がＢＣＡである場合、lib_aが割り当てられたライブラリ３２を選択し、それ以外の抽象度である場合、lib_bが割り当てられたライブラリ３２を選択するように記述されている。
【００４７】
また、図４では、一例として、入出力ポート、レジスタ、スレッド、wait()文の実装、ライブラリ３２の切り替えについてのみ記述し、説明してきたが、これらに限定されるものではなく、必要に応じて抽象度に関わる記述を追加することができる。例えば、ハードウェア内のバグや欠陥を発見し、それを修正して、仕様通りの動作とするデバッグのための記述等を含めることができる。
【００４８】
このような抽象度に関わる記述を、抽象度選択ライブラリ３１内に記述し、モジュール３０内にその実装を一般的な記述にて提供することにより、抽象度に依存しない記述が可能となり、これにより、抽象度に依存しないハードウェアモデルを作成することができる。
【００４９】
図５を参照して、モジュール３０について詳細に説明する。図５は、高位言語と、抽象度選択ライブラリ３１とを用いて記述したモジュール３０の記述例を示した図である。実装に関する記述として、入出力ポート、レジスタ、スレッド、wait()文が記述されている。
【００５０】
入出力ポートについては、図４に示した抽象度選択ライブラリ３１内の入力ポートに関する記述内の一般的な記述my_slave<A,B,C>を用いて、my_slave<trans,func,ioConfig,32>と記述している。レジスタについては、抽象度選択ライブラリ３１内のレジスタに関する記述内の一般的な記述reg_DTを用いて、reg<reg_DT> AAA、reg<reg_DT> BBB等と記述している。
【００５１】
スレッドについては、抽象度選択ライブラリ３１内のスレッドに関する記述内の一般的な記述my_thread(func,evnt)を用いて、my_thread(ex_proc)と記述している。Wait()文については、抽象度選択ライブラリ３１内のタイミング制御に関する記述内の一般的な記述my_wait(evnt)を用いて、my_wait(evnt1)と記述している。その他の記述については、高位言語の１つであるＳｙｓｔｅｍＣを用いて記述している。
【００５２】
図３および図４では、高位言語としてＳｙｓｔｅｍＣを用いて記述した例を示したが、これに限られるものではなく、Ｃ、Ｃ＋＋、Ｖｅｒｉｌｏｇ等を用いることも可能である。
【００５３】
実行する抽象度は、モジュール３０内に#defineを用いて指定することができるが、これに限られるものではなく、設定値として予め設定することも可能である。この設定値としては、例えば、コンパイラに設定された引数を挙げることができる。ハードウェアモデルを実行する際、情報処理装置は、コンパイルを最初に行うが、このコンパイル時にこれらを参照して抽象度を解釈し、指定された抽象度でコンパイルを実行し、その際、その抽象度に応じた記述およびライブラリ３２を選択することができる。
【００５４】
ライブラリ３２については詳述しないが、ライブラリ３２は、その抽象度で実行する際に必要とされる記述であれば、いかなる記述でもコードとして含めることができる。
【００５５】
情報処理装置は、このように指定された抽象度でハードウェアモデルを実行することができるため、ソフトウェア開発環境やハードウェア検証環境等、目的に応じた環境でハードウェアモデルを実行することができる。また、複数のモデルを生成しないので、生成したモデルを管理する工数を減らすことができ、実行時に不具合が発生した場合に入力したハードウェアモデルに戻ってする修正の工数も減らすことができる。
【００５６】
これまで、情報処理装置の構成および実装するモジュール等について説明してきた。この情報処理装置は、上述したように、汎用のＰＣ等に、ＣＰＵ１０を上記の入力部２０、抽象度判断部２２、選択部２３、モデル生成部２４として機能させるプログラムを実装したものとして構成することができる。このため、本発明では、このプログラムを提供することもでき、また、このプログラムが記録された記録媒体を提供することもできる。例えば、このプログラムは、ネットワークに接続されたサーバ装置等に実装し、ダウンロード要求に応じてネットワークを介して提供することができる。
【００５７】
情報処理装置により実行される処理の一例について、図６に示すフローチャートを参照して詳細に説明する。この処理は、ステップ６００から開始し、ステップ６１０では、入力部２０が、抽象度選択ライブラリ３１および高位言語を使用して記述された抽象度に依存しないハードウェアモデルの入力を受け付ける。すなわち、１以上のモジュール３０の入力を受け付ける。
【００５８】
ステップ６２０では、モジュール３０内に、#defineを用いて抽象度が記述されていれば、特に指定する必要はないが、抽象度を引数等により指定する場合は、その引数等の入力を受け付け、それを設定する。そして、抽象度判断部２２がその指定された抽象度を判断する。ステップ６３０では、まず、ＴＬであるかどうかを判断する。ＴＬである場合は、ステップ６４０へ進み、そうでない場合は、ステップ６５０へ進む。
【００５９】
ステップ６４０では、ＴＬの記述およびＴＬにつき作成されたライブラリ３２を選択する。ステップ６５０では、動作合成に使用するか、すなわち抽象度がＢＣＡであるかを判断する。ＢＣＡである場合は、ステップ６６０へ進み、そうでない場合は、ステップ６７０へ進む。
【００６０】
ステップ６６０では、ＢＣＡの記述およびＢＣＡにつき作成されたライブラリ３２を選択する。ステップ６７０では、ＵＴの記述およびＵＴにつき作成されたライブラリ３２を選択する。
【００６１】
ステップ６８０では、選択された記述およびライブラリ３２を用いて、その指定された抽象度で実行するためのハードウェアモデルを生成し、それを実行し、ステップ６９０でこの処理を終了する。なお、実行後に不具合が発生した場合は、ステップ６１０に戻り、モジュール３０を修正し、再度ステップ６２０〜６８０の処理を実行する。
【００６２】
これまで本発明を上述した実施の形態をもって説明してきたが、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００６３】
１０…ＣＰＵ、１１…ＲＡＭ、１２…ＲＯＭ、１３…ＨＤＤ、１４…入出力装置、１５…バス、１６…メモリ、２０…入力部、２１…ファイル格納部、２２…抽象度判断部、２３…選択部、２４…モデル生成部、３０…モジュール、３１…抽象度選択ライブラリ、３２…ライブラリ
【先行技術文献】
【特許文献】
【００６４】
【特許文献１】特表２００９−５２２６５２号公報
【図１】
2014048770.tif 000003
【図２】
2014048770.tif 000004
【図３】
2014048770.tif 000005
【図４】
2014048770.tif 000006
【図５】
2014048770.tif 000007
【図６】
2014048770.tif 000008