(57)【特許請求の範囲】
【請求項１】
ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する情報処理装置において、
前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成する第１の生成手段と、
前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成する第２の生成手段と
を備える情報処理装置。
【請求項２】
前記外部仕様情報に含まれる前記レジスタ情報の、前記レジスタ名、前記レジスタ幅、および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、前記ポートのビット幅を示すポート幅、前記ハードウェアブロックの接続関係においてマスタとなるハードウェアブロックの名前を示すマスタポートブロック名、および、前記ハードウェアブロックの接続関係においてスレーブとなるハードウェアブロックの名前を示すスレーブポートブロック名を用いて、前記ハードウェアモデルを構成する各ハードウェアブロックモデルのポートを定義するポート定義情報を生成する第３の生成手段をさらに備える
請求項１に記載の情報処理装置。
【請求項３】
前記ハードウェアの外部仕様情報に含まれる前記レジスタ情報の前記レジスタ名および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、前記ハードウェアブロックの接続関係においてマスタとなるハードウェアブロックの名前を示すマスタポートブロック名、および、前記ハードウェアブロックの接続関係においてスレーブとなるハードウェアブロックの名前を示すスレーブポートブロック名を用いて、前記システム記述言語で記述される、前記ハードウェアモデルのポート間の結合状態を定義するポート間接続定義情報を生成する第３の生成手段をさらに備える
請求項１に記載の情報処理装置。
【請求項４】
前記ハードウェアの外部仕様情報に含まれる前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、および前記ポートのビット幅を示すポート幅を用いて、各ハードウェアモデルにおいて起動される関数を定義するポート連動関数定義情報を生成する第３の生成手段をさらに備える
請求項１に記載の情報処理装置。
【請求項５】
ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する情報処理装置の情報処理方法であって、
前記情報処理装置の第１の生成手段が、前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成し、
前記情報処理装置の第２の生成手段が、前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成する
情報処理方法。
【請求項６】
ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する処理をコンピュータに行わせるプログラムにおいて、
前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成する第１の生成ステップと、
前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成する第２の生成ステップと
を含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、ハードウェアモデルの開発を効率的に行うことができるようにした情報処理装置および方法、並びにプログラムに関する。
【０００２】
【従来の技術】
近年、電子機器の小型化やコストの削減等を目的として、マイクロプロセッサ、チップセット、ビデオチップ、またはメモリ等のあらゆる機能を集積したSOC（System On a Chip）の開発が盛んになってきている。
【０００３】
SOCは、ハードウェアおよびソフトウェアを実装し、各種の機能を実現する。そのため、SOC開発においては、ハードウェア開発者によるハードウェアの開発と、ソフトウェア開発者によるソフトウェアの開発とが行われる。その際、開発期間短縮の為に、ハードウェア開発とソフトウェア開発を並行して行うのが望ましいが、開発したソフトウェアを検証する工程においては、少なくとも、ハードウェアの、ソフトウェアとのインタフェースに関するモデルが必要であり、そのためには、ソフトウェア検証の工程は、ハードウェアの仕様が決定し、ハードウェア記述言語等によるハードウェアのモデル設計が完了した後に行われる。（例えば、特許文献１参照）。
【０００４】
これに対して、さらなる開発期間の短縮のために、ハードウェアの仕様の開発と同時にソフトウェア開発を行う方法が考えられる。その場合、SOCの開発工程は、例えば、図１のように進められる。
【０００５】
最初に、ハードウェアの開発工程として、ハードウェア設計者は、ハードウェア記述言語等を用いて論理回路等の仕様を設計するハードウェア開発１１を開始する。ハードウェア開発１１が終了すると、ハードウェア開発者は、ハードウェア検証１２において、開発したハードウェアの仕様の検証を行い、それが完了すると、ハードウェアを含むSOCのモデルを検証するための評価ボードを作成する評価ボード開発１３を行う。
【０００６】
ハードウェア開発１１に並行して、ソフトウェアの開発工程として、ソフトウェア開発者は、Ｃ言語等のプログラム言語を用いてプログラム等を作成するソフトウェア開発２１を開始する。ハードウェア開発１１において、ハードウェアの外部仕様が決定されると、ソフトウェア開発者は、その外部仕様に基づいて、ソフトウェアの開発工程で利用するためのハードウェアモデルを、システム記述言語を用いて設計するハードウェアモデル開発３１を開始する。
【０００７】
そして、ソフトウェア開発２１およびハードウェアモデル開発３１が完了すると、ソフトウェア開発者は、ソフトウェアについて、ハードウェアモデルを用いて検証するソフトウェア検証２２を行う。
【０００８】
そして、評価ボード開発１３およびソフトウェア検証２２の工程が完了すると、ハードウェア設計者およびソフトウェア設計者は、設計したハードウェアとソフトウェアを統合させ、SOCの仕様として検証する工程である、ハードウェアとソフトウェアの統合検証４１を開始する。そして、ハードウェアとソフトウェアの統合検証４１が完了すると、図示は省略するが、実装するための設計工程が行われる。
【０００９】
【特許文献１】
特開平９−１５３０７７号公報（第９−１０ページ、図６および図７）
【００１０】
【発明が解決しようとする課題】
しかしながら、以上のような方法において、ハードウェアモデル開発者は、ハードウェアの仕様の開発中にハードウェアモデルを作成するために、ハードウェアの仕様変更に合わせて、ハードウェアモデルも正確に更新しなければならず、煩雑な作業を伴う場合があるという課題があった。特に、近年においては、ハードウェアの回路規模も増大しており、ハードウェアモデルとハードウェア仕様の整合性を取ることは困難になっている。
【００１１】
また、上述したハードウェアモデルを利用した場合、高速化を目的としてプロセッサモデルを利用しない場合、ハードウェアモデルへのアクセスはシステム記述言語に依存したものとなり、開発したソフトウェアを実ハードウェアで動作させるには、そのシステム記述言語依存部分を置き換える必要があるという課題もあった。
【００１２】
本発明はこのような状況に鑑みてなされたものであり、ハードウェアモデルの開発を効率的に行うことができるようにしたものである。
【００１３】
【課題を解決するための手段】
本発明の情報処理装置は、ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する情報処理装置において、前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成する第１の生成手段と、前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成する第２の生成手段とを備えることを特徴とする。
【００１４】
前記外部仕様情報に含まれる前記レジスタ情報の、前記レジスタ名、前記レジスタ幅、および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、前記ポートのビット幅を示すポート幅、前記ハードウェアブロックの接続関係においてマスタとなるハードウェアブロックの名前を示すマスタポートブロック名、および、前記ハードウェアブロックの接続関係においてスレーブとなるハードウェアブロックの名前を示すスレーブポートブロック名を用いて、前記ハードウェアモデルを構成する各ハードウェアブロックモデルのポートを定義するポート定義情報を生成する第３の生成手段をさらに備えることができる。
【００１５】
前記ハードウェアの外部仕様情報に含まれる前記レジスタ情報の前記レジスタ名および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、前記ハードウェアブロックの接続関係においてマスタとなるハードウェアブロックの名前を示すマスタポートブロック名、および、前記ハードウェアブロックの接続関係においてスレーブとなるハードウェアブロックの名前を示すスレーブポートブロック名を用いて、前記システム記述言語で記述される、前記ハードウェアモデルのポート間の結合状態を定義するポート間接続定義情報を生成する第３の生成手段をさらに備えることができる。
【００１６】
前記ハードウェアの外部仕様情報に含まれる前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプ、並びに、前記外部仕様情報に含まれる、前記ハードウェアブロックを接続するポートを定義するハードウェア間ポート情報の、前記ポートの名前を定義するポート名、前記ポートのタイプを示すポートタイプ、および前記ポートのビット幅を示すポート幅を用いて、各ハードウェアモデルにおいて起動される関数を定義するポート連動関数定義情報を生成する第３の生成手段をさらに備えることができる。
【００２０】
本発明の情報処理方法は、ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する情報処理装置の情報処理方法であって、前記情報処理装置の第１の生成手段が、前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成し、前記情報処理装置の第２の生成手段が、前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成することを特徴とする。
【００２１】
本発明のプログラムは、ハードウェアおよびソフトウェアにより構成されるSOCの開発に用いられる、前記ハードウェアに対応するハードウェアモデルを開発する処理をコンピュータに行わせるプログラムにおいて、前記ハードウェアの外部仕様情報に含まれる、前記ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、前記レジスタの名前を定義するレジスタ名、前記レジスタのビット幅を示すレジスタ幅、および、前記レジスタのタイプを示すレジスタタイプを用いて、前記ハードウェアブロックへのアクセス関数と、前記ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する前記ハードウェアブロックへのアクセス関数を定義する第１の定義記述を生成する第１の生成ステップと、前記レジスタ情報の前記レジスタ名、前記レジスタ幅、および前記レジスタタイプを用いて、前記ハードウェアモデル入出力関数定義情報の、前記レジスタ情報に対応する所定のシステム記述言語で記述される前記ハードウェアブロックモデルへのアクセス関数を定義する第２の定義記述を生成する第２の生成ステップとを含む処理をコンピュータに実行させることを特徴とする。
【００２２】
本発明の情報処理装置および方法、並びにプログラムにおいては、ハードウェアの外部仕様情報に含まれる、ハードウェアを構成するハードウェアブロックとして設定される各レジスタに関する情報であるレジスタ情報の、レジスタの名前を定義するレジスタ名、レジスタのビット幅を示すレジスタ幅、および、レジスタのタイプを示すレジスタタイプを用いて、ハードウェアブロックへのアクセス関数と、ハードウェアブロックのモデルであるハードウェアブロックモデルへのアクセス関数との対応関係を定義するハードウェアモデル入出力関数定義情報の、レジスタ情報に対応するハードウェアブロックへのアクセス関数を定義する第１の定義記述が生成され、レジスタ情報のレジスタ名、レジスタ幅、およびレジスタタイプを用いて、ハードウェアモデル入出力関数定義情報の、レジスタ情報に対応する所定のシステム記述言語で記述されるハードウェアブロックモデルへのアクセス関数が定義される。
【００２３】
【発明の実施の形態】
図２は、本発明を適用したハードウェアモデル開発支援装置の内部の構成例を表すブロック図である。
【００２４】
ハードウェアモデル開発支援装置５１のCPU（Central Processing Unit）６１は、ROM（Read Only Memory）６２に記憶されているプログラム、または記憶部９３からRAM（Random Access Memory）６３にロードされたプログラムに従って各種の処理を実行する。RAM６３にはまた、CPU６１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００２５】
CPU６１、ROM６２、およびRAM６３は、バス８０を介して相互に接続されている。このバス８０にはまた、後述するように、ハードウェアブロックのポートについて定義するポート定義ファイルを生成するポート定義ファイル生成部７１、ポート定義ファイルにおいて定義されているポート間の接続を定義するポート間接続定義ファイルを生成するポート間接続定義ファイル生成部７２、ハードウェアブロックの機能を表すポート連動関数を定義するポート連動関数定義ファイル７３、および、ハードウェアモデル入出力関数を生成するハードウェアモデル入出力関数生成部７４が接続されている。
【００２６】
ポート定義ファイル生成部７１、ポート間接続定義ファイル生成部７２、ポート連動関数定義ファイル７３、およびハードウェアモデル入出力関数生成部７４は、それぞれ、制御部、演算処理部、ROM、およびRAM等（いずれも図示せず）により構成され、CPU６１に制御され、後述するように、入力されたハードウェア外部仕様情報より所定の定義ファイルを生成し、出力する。
【００２７】
バス８０にはさらにまた、入出力インタフェース９０も接続されている。
【００２８】
入出力インタフェース９０には、キーボード、マウスなどよりなる入力部９１、CRT(Cathode Ray Tube)、LCD(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部９２、ハードディスクなどより構成される記憶部９３、モデムなどより構成される通信部９４が接続されている。通信部９４は、インターネットやLAN（Local Area Network）を含む各種のネットワークを介しての通信処理を行う。
【００２９】
入出力インタフェース９０にはまた、必要に応じてドライブ９５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア９６が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部９３にインストールされる。
【００３０】
以上のようなハードウェアモデル開発支援装置５１を用いて、図３に示されるようなSOC１００の開発を行う場合について説明する。
【００３１】
図３において、SOC１００は、開発対象SOCであり、各部を制御するCPU１０１、バス１０５を介してCPU１０１に制御されて、所定の処理を実行するハードウェアブロックＡ１０２、ハードウェアブロックＢ１０３、およびハードウェアブロックＣ１０４により構成されている。
【００３２】
CPU１０１は、制御部、演算処理部、ROM、およびRAM等（いずれも図示せず）により構成されており、予めROMに記憶されておりプログラムを実行し、バス１０５を介して、それぞれ、所定の論理回路により構成され、所定の処理を実行するハードウェアブロックＡ１０２、ハードウェアブロックＢ１０３、およびハードウェアブロックＣ１０４を制御したり、各部に演算結果を供給したり、各部より処理結果を取得したりする。
【００３３】
以上のような構成のSOC１００の開発において、ハードウェア開発者は、ハードウェアブロックＡ１０２、ハードウェアブロックＢ１０３、およびハードウェアブロックＣ１０４を開発し、ソフトウェア開発者は、CPU１０１に内蔵されるROMに記憶されるプログラムを開発する。
【００３４】
その際、ハードウェアモデル開発者は、図３のSOC１００のハードウェアモデルとして、図４に示されるようなハードウェアモデルを開発する。図４のSOC１１０は、図３のSOC１００のハードウェアモデルであり、CPU１０１に対応するCPU１１１、ハードウェアブロックＡ１０２のモデルであるハードウェアブロックモデルＡ１１２、ハードウェアブロックＢ１０３のモデルであるハードウェアブロックモデルＢ１１３、およびハードウェアブロックＣのモデルであるハードウェアブロックモデルＣ１１４により構成される。
【００３５】
図４において、各ハードウェアブロックモデルは、図３のバス１０５によって接続される代わりに、各ブロックの、黒四角で示される出力ポート１２１−１乃至１２１−１１と、白四角で示される入力ポート１２２−１乃至１２２−１１がそれぞれ、チャネル１２３−１乃至１２３−１１によって接続されている。
【００３６】
図２に示されるハードウェア開発支援装置５１が、図４に示されるようなハードウェアモデルを開発する場合、ハードウェア開発支援装置５１は、図５に示されるように、入力されたハードウェア外部仕様情報１４１に基づいて、ポート定義ファイル生成部７１においてポート定義ファイル１３１を生成し、ポート間接続定義ファイル生成部７２においてポート間接続定義ファイル１３２を生成し、ポート連動関数定義ファイル生成部７３においてポート連動関数定義ファイル１３３を生成し、ハードウェアモデル入出力関数生成部７４においてハードウェアモデル入出力関数定義ファイル１３４を生成する。
【００３７】
ポート定義ファイル１３１、ポート間接続定義ファイル１３２、ポート連動関数定義ファイル１３３、およびハードウェアモデル入出力関数定義ファイル１３４は、入力されたハードウェア外部仕様情報に定義されるハードウェアに対応するハードウェアモデルを構成するファイルである。
【００３８】
ポート定義ファイル１３１は、ハードウェアブロックモデルのポートを定義する情報により構成され、ポート間接続定義ファイル１３２は、ポート定義ファイル１３１において定義されている複数のポート間の結合状態を定義し、ハードウェアモデルのポートの結合状態を表現する情報により構成され、ポート連動関数定義ファイル１３３は、各ハードウェアモデルにおいて起動される関数を定義し、ハードウェアモデルの機能を表現する情報により構成され、ハードウェアモデル入出力関数定義ファイル１３４は、ハードウェアブロックに入出力される関数と、ハードウェアブロックモデルに入出力される関数との対応関係を定義する情報により構成されている。
【００３９】
これらの定義ファイルは、例えば、SpecC、SystemC、またはCoWareC等のような所定のシステム記述言語により記述されており、ソフトウェアが指定したハードウェアレジスタ名で特定される関数名に対応する、システム記述言語に依存した、ハードウェアモデルの入出力関数を呼び出し、所定の処理結果をソフトウェアに出力するためのファイルである。
【００４０】
これらの定義ファイルは、ソフトウェア開発工程において、ソフトウェアの検証時に、ソフトウェア側から見たハードウェアブロックの機能を再現するために使用される。
【００４１】
ハードウェア外部仕様情報１４１は、ハードウェア開発者によってハードウェア開発工程において生成される、ハードウェアブロックの外部仕様に関する情報である。
【００４２】
図６に示されるように、ハードウェア外部仕様情報１４１は、デバイス情報１５１、レジスタ情報１６１、およびハードウェア間ポート情報１７１からなる。
【００４３】
デバイス情報１５１は、ハードウェアブロックの名前を示すデバイス名１５２と、そのハードウェアブロックとして設定されるレジスタのアドレス情報であるベースアドレス１５３により構成されており、デバイス（すなわち、ハードウェアブロックの種類）を定義する情報である。
【００４４】
図６の場合、デバイス情報１５１は、デバイス名「DMAC」のハードウェアブロックのレジスタが、アドレス「0x1000」から始まるアドレス空間に設定されていることを示している。
【００４５】
レジスタ情報１６１は、特定のハードウェアブロックとして設定されるレジスタに関する情報であり、そのハードウェアブロックとして設定されるレジスタの名前であるレジスタ１６２、そのレジスタのアドレスの、ベースアドレス１５３からのオフセットを示すアドレスオフセット１６３、そのレジスタのビット幅を示すレジスタ幅１６４、およびそのレジスタのタイプを示すレジスタタイプ１６５等により構成されている。
【００４６】
図６の場合、レジスタ情報１６１は、デバイス名「DMAC」のハードウェアブロックの１つとして設定されるレジスタのレジスタ名が「DMAC_A」であり、そのレジスタが、ベースアドレスからのオフセット「0x0000」から始まるアドレス空間に、３２ビットの幅で設定されており、そのレジスタのタイプが「R/W」であり、読み取りと書き込みを行うことができることを示している。
【００４７】
ハードウェア間ポート情報１７１は、ポートの名前を示すポート名１７２、ポートの種類を示すポートタイプ１７３、ビット幅を定義するポート幅１７４、並びに、ハードウェアブロックの接続関係を示すマスターポートブロック名１７５およびスレーブポートブロック名１７６により構成され、各ハードウェアブロックを接続するポートを定義する情報である。
【００４８】
図６の場合、ハードウェア間ポート情報１７２は、ポート名「Int_DMAC_CPU_INT」のポートのポートタイプが「W」であり、書き込みを行うためのポートであり、そのポート幅は１ビットであり、そのポートのマスターポートブロック名が「DMAC」で、スレーブポートブロック名が「CPU」であることを示している。すなわち、ポート名「Int_DMAC_CPU_INT」のポートは、「DMAC」が「CPU」に対して書き込みを行うための、1ビット幅のポートであることが示されている。
【００４９】
以上のような構成のハードウェア外部仕様情報１４１は、ハードウェア開発工程において、ハードウェア開発者により作成され、図２に示されるハードウェア開発支援装置５１に入力される。例えば、ソフトウェア開発者がキーボードやマウスを操作することにより、ハードウェア外部仕様情報１４１は、入力部９１を介して入力される。
【００５０】
なお、ハードウェア外部仕様情報１４１は、上述した以外にも、ハードウェア外部仕様情報１４１が記憶されたリムーバブルメディア９６をドライブ９５に装着することにより、CPU６１の制御に基づいて、ハードウェアモデル開発支援装置５１に入力されるようにしてもよいし、通信部９４を介して、他の装置より入力されるようにしてもよい。
【００５１】
以上のようにして、入力されたハードウェア外部仕様情報１４１は、RAM６３に一次保持されたり、記憶部９３に記憶されたりした後、CPU６１に制御され、ポート定義ファイル生成部７１に供給される。
【００５２】
ハードウェア外部仕様情報１４１を供給されたポート定義ファイル生成部７１は、システム記述言語を用いてポート定義ファイル１３１を生成する。図７のフローチャートを参照して、ハードウェアモデル開発支援装置５１によるポート定義ファイル生成処理を説明する。
【００５３】
最初に、ステップＳ１において、ポート定義ファイル生成部７１は、入力されたハードウェア外部仕様情報１４１のデバイス情報１５１よりデバイス名１５２を取得し、ステップＳ２において、そのデバイス名を用いて、図８に示されるように、ハードウェアモデルのポートの定義の開始を示すポート定義開始記述を生成し、出力する。
【００５４】
図８は、ポート定義ファイル生成部７１より出力されるポート定義ファイル１３１のデータの構成例を示す図である。図８において、上から第１行目の記述１８１「blockdef Wrapper_DMAC(」がステップＳ２において出力されるポート定義開始記述である。
【００５５】
ポート定義開始記述を出力したポート定義ファイル生成部７１は、ステップＳ３において、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２、レジスタ幅１６４、およびレジスタタイプ１６５を取得し、ステップＳ４において、取得した情報に基づいて、レジスタのポートを定義するレジスタポート定義記述を生成し、ステップＳ５において、生成したレジスタポート定義記述を出力する。このとき、ポート定義ファイル生成部７１は、ポート属性を「inslave」に定義する。
【００５６】
図８において、上から第２行目の記述１８２「bool[32] ps_io_Reg_DMAC_A: inslave,」がステップＳ４において生成されるレジスタポート定義記述である。
【００５７】
そして、ステップＳ６において、ポート定義ファイル生成部７１は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ポート定義ファイル生成部７１は、処理をステップＳ４に戻し、それ以降の処理を繰り返す。すなわち、ポート定義ファイル生成部７１は、図８に示されるように、レジスタ情報１６１に記述されている全てのレジスタに対してレジスタポート定義記述を生成し、出力する。
【００５８】
ステップＳ６において、全てのレジスタについてレジスタポート定義記述を出力した（未処理のレジスタが存在しない）と判定した場合、ポート定義ファイル生成部７１は、処理をステップＳ７に進め、ハードウェア外部仕様情報１４１のハードウェア間ポート情報１７１よりポート名１７２、ポートタイプ１７３、ポート幅１７４、マスターポートブロック名１７５、およびスレーブポートブロック名１７６を取得し、ステップＳ８において、取得した情報に基づいて、ハードウェアブロックのポートを定義するハードウェア間ポート定義記述を生成し、ステップＳ９において、そのハードウェア間ポート定義記述を出力する。
【００５９】
図８において、下から第２行目の記述１８３「bool pm_o_Int_DMAC_CPU_INT: outmaster」がステップＳ８において生成されるハードウェア間ポート定義記述である。
【００６０】
そして、ステップＳ１０において、ポート定義ファイル生成部７１は、ハードウェア間ポート情報１７１に記述されているポートのうち、未処理のポートが存在するか否かを判定する。未処理のポートが存在すると判定した場合、ポート定義ファイル生成部７１は、処理をステップＳ８に戻し、それ以降の処理を繰り返す。すなわち、ポート定義ファイル生成部７１は、図８に示されるように、ハードウェア間ポート情報１７１に記述されている全てのポートに対してハードウェア間ポート定義記述を生成し、出力する。
【００６１】
ステップＳ１０において、全てのポートについてハードウェア間ポート定義記述を出力した（未処理のポートが存在しない）と判定した場合、ポート定義ファイル生成部７１は、処理をステップＳ１１に進め、ポートの定義の終了を示すポート定義終了記述を生成し、出力する。
【００６２】
図８において、下から第１行目の記述１８４「)begin」がステップＳ１１において生成されるポート定義終了記述であり、ポート定義ファイル１３１におけるポートの定義に関する記述の終了を示す。
【００６３】
ポート定義終了記述を出力したポート定義ファイル生成部７１は、ポート定義ファイル生成処理を終了する。
【００６４】
以上のようにポート定義ファイル生成処理が実行され、出力されたポート定義ファイル１３１は、RAM６３により一時的に保持されたり、記憶部９３に記憶されたりする。
【００６５】
また、入力されたハードウェア外部仕様情報１４１は、RAM６３に一次保持されたり、記憶部９３に記憶されたりした後、CPU６１に制御され、ポート間接続定義ファイル生成部７２にも供給される。
【００６６】
ところで、ハードウェア外部仕様情報１４１を供給されたポート間接続定義ファイル生成部７２は、システム記述言語を用いてポート間接続定義ファイル１３２を生成する。図９および図１０のフローチャートを参照して、ハードウェアモデル開発支援装置５１によるポート間接続定義ファイル生成処理を説明する。
【００６７】
最初に、ポート間接続定義ファイル生成部７２は、ステップＳ３１において、ハードウェア外部仕様情報１４１のデバイス情報１５１よりデバイス名１５２を取得し、ステップＳ３２において、取得したデバイス名１５２に基づいて、ハードウェアモデルのポートに関する、結合状態の定義の開始を示すポート間接続定義開始記述を生成し、出力する。
【００６８】
図１１は、ポート間接続定義ファイル生成部７２より出力されるポート間接続定義ファイル１３２のデータの構成例を示す図である。図１１において、上から第１行目の記述１９１「i_Wrapper_DMAC(」がステップＳ３２において出力されるポート間接続定義開始記述である。
【００６９】
ポート間接続定義開始記述を出力したポート間接続定義ファイル生成部７２は、ステップＳ３３において、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２およびレジスタタイプ１６５を取得し、ステップＳ３４において、取得した情報に基づいて、ハードウェアモデルのポートに関する、結合状態を定義する、「ps_{レジスタタイプ}_Reg_{レジスタ名} => c_Reg_{レジスタ名},」という書式の、第１の形式の接続記述を生成し、ステップＳ３５において、その第１の形式の接続記述を出力する。
【００７０】
図１１において、上から第２行目の記述１９２「ps_io_Reg_DMAC_A => c_Reg_DMAC_A」がステップＳ３４において生成される第１の形式の接続記述である。
【００７１】
そして、ステップＳ３６において、ポート間接続定義ファイル生成部７２は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ３４に戻し、それ以降の処理を繰り返す。すなわち、ポート間接続定義ファイル生成部７２は、図１１に示されるように、レジスタ情報１６１に記述されている全てのレジスタに対して、上述した第１の形式の接続記述を生成し、出力する。
【００７２】
ステップＳ３６において、全てのレジスタについて第１の形式の接続記述を出力した（未処理のレジスタが存在しない）と判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ３７に進め、ハードウェア外部仕様情報１４１のハードウェア間ポート情報１７１よりポート名１７２、ポートタイプ１７３、マスターポートブロック名１７５、およびスレーブポートブロック名１７６を取得し、ステップＳ３８において、取得したマスターポートブロック名が、ステップＳ３１において取得したデバイス名と一致するか否かを判定する。
【００７３】
取得したマスターポートブロック名が、ステップＳ３１において取得したデバイス名１５２と一致すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ３９に進め、取得した情報に基づいて、デバイス名１５２に対応するハードウェアブロックが制御するポートに関する結合状態を定義する、「pm_{ポートタイプ}_{ポート名} => c_{ポート名},」という書式の、第２の形式の接続記述を生成し、出力する。
【００７４】
図１１において、上から第４行目の記述１９３「pm_o_Int_DMAC_TE_END => c_Int_DMAC_TE_END」がステップＳ３９において生成される第２の形式の接続記述である。第２の形式の接続記述を生成し、出力したポート間接続定義ファイル生成部７２は、処理をステップＳ４１に進める。
【００７５】
ステップＳ３８において、取得したマスターポートブロック名が、ステップＳ３１において取得したデバイス名１５２と一致しないと判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ４０に進め、取得した情報に基づいて、デバイス名１５２に対応するハードウェアブロックが制御しないポートに関する結合状態を定義する、「ps_{ポートタイプ}_{ポート名} => c_{ポート名},」という書式の、第３の形式の接続記述を生成し、出力する。第３の形式の接続記述を生成し、出力したポート間接続定義ファイル生成部７２は、処理をステップＳ４１に進める。
【００７６】
第２の形式、または第３の形式の接続記述を出力したポート間接続定義ファイル生成部７２は、ステップＳ４１において、ハードウェア間ポート情報１７１に記述されているポートのうち、未処理のポートが存在するか否かを判定する。未処理のポートが存在すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ３８に戻し、それ以降の処理を繰り返す。すなわち、ポート間接続定義ファイル生成部７２は、図１１に示されるように、ハードウェア間ポート情報１７１に記述されている全てのポートに対して第２の形式、または第３の形式の接続記述を生成し、出力する。
【００７７】
ステップＳ４１において、全てのポートについて接続記述を出力した（未処理のポートが存在しない）と判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ４２に進め、ハードウェアモデルのポートに関する、結合状態の定義の終了を示すポート間接続定義終了記述を生成し、出力する。
【００７８】
図１１において、上から第５行目の記述１９４「);」がステップＳ４２において生成されるポート間接続定義終了記述であり、ポート間接続定義ファイル１３２における、CPU１１１以外のハードウェアブロックのポート間接続定義に関する記述の終了を示す。
【００７９】
ポート間接続定義終了記述を出力したポート間接続定義ファイル生成部７２は、CPU１１１に関するポート間接続定義に関する記述を生成するために、図１０のステップＳ４３に処理を進める。
【００８０】
図１０のステップＳ４３において、ポート間接続定義ファイル生成部７２は、所定の書式の、CPU１１１のモデルのポートに関する、結合状態の定義の開始を示す、CPUブロックポート間接続定義開始記述を生成し、出力する。
【００８１】
図１１において、上から第６行目の記述１９５「i_Wrapper_CPU(」がステップＳ４３において出力されるCPUブロックポート間接続定義開始記述である。
【００８２】
CPUブロックポート間接続定義開始記述を出力したポート間接続定義ファイル生成部７２は、ステップＳ４４において、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２およびレジスタタイプ１６５を取得し、ステップＳ４５において、取得した情報に基づいて、CPU１１１のモデルのポートに関する結合状態を定義する、「pm_{レジスタタイプ}_Reg_{レジスタ名} => c_Reg_{レジスタ名},」という書式の、第４の形式の接続記述を生成し、ステップＳ４６において、その第４の形式の接続記述を出力する。
【００８３】
図１１において、上から第７行目の記述１９６「pm_io_Reg_DMAC_A => c_Reg_DMAC_A」がステップＳ４５において生成される第４の形式の接続記述である。
【００８４】
そして、ステップＳ４７において、ポート間接続定義ファイル生成部７２は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ４５に戻し、それ以降の処理を繰り返す。
【００８５】
ステップＳ４７において、全てのレジスタについて第４の形式の接続記述を出力した（未処理のレジスタが存在しない）と判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ４８に進め、ハードウェア外部仕様情報１４１のハードウェア間ポート情報１７１よりポート名１７２、ポートタイプ１７３、マスターポートブロック名１７５、およびスレーブポートブロック名１７６を取得し、ステップＳ４９において、取得したスレーブポートブロック名が、CPU１１１と一致するか否かを判定する。
【００８６】
取得したスレーブポートブロック名が、CPU１１１と一致すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ５０に進め、取得した情報に基づいて、CPU１１１が制御するポートに関する結合状態を定義する、上述した書式の、第３の形式の接続記述を生成し、出力する。
【００８７】
図１１において、下から第２行目の記述１９７「ps_o_Int_DMAC_CPU_INT => c_Int_DMAC_CPU_INT」がステップＳ５０において生成される第３の形式の接続記述である。第３の形式の接続記述を生成し、出力したポート間接続定義ファイル生成部７２は、処理をステップＳ５２に進める。
【００８８】
ステップＳ４９において、取得したスレーブポートブロック名が、CPU１１１と一致しないと判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ５１に進め、取得した情報に基づいて、CPU１１１が制御しないポートに関する結合状態を定義する、上述した書式の、第２の形式の接続記述を生成し、出力する。第２の形式の接続記述を生成し、出力したポート間接続定義ファイル生成部７２は、処理をステップＳ５２に進める。
【００８９】
第２の形式、または第３の形式の接続記述を出力したポート間接続定義ファイル生成部７２は、ステップＳ５２において、ハードウェア間ポート情報１７１に記述されているポートのうち、未処理のポートが存在するか否かを判定する。未処理のポートが存在すると判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ４９に戻し、それ以降の処理を繰り返す。
【００９０】
ステップＳ５２において、全てのポートについて接続記述を出力した（未処理のポートが存在しない）と判定した場合、ポート間接続定義ファイル生成部７２は、処理をステップＳ５３に進め、CPU１１１のモデルのポートに関する、結合状態の定義の終了を示す、CPUブロックポート間接続定義終了記述を生成し、出力する。
【００９１】
図１１において、下から第１行目の記述１９８「);」がステップＳ５３において生成されるCPUブロックポート間接続定義終了記述であり、ポート間接続定義ファイル１３２における、CPU１１１のポート間接続定義に関する記述の終了を示す。
【００９２】
CPUブロックポート間接続定義終了記述を出力したポート間接続定義ファイル生成部７２は、ポート間接続定義ファイル生成処理を終了する。
【００９３】
以上のようにポート間接続定義ファイル生成処理が実行され、出力されたポート間接続定義ファイル１３２は、RAM６３により一時的に保持されたり、記憶部９３に記憶されたりする。
【００９４】
同様に、入力されたハードウェア外部仕様情報１４１は、RAM６３に一次保持されたり、記憶部９３に記憶されたりした後、CPU６１に制御され、ポート連動関数定義ファイル生成部７３にも供給される。
【００９５】
ハードウェア外部仕様情報１４１を供給されたポート連動関数定義ファイル生成部７３は、システム記述言語を用いてポート連動関数定義ファイル１３３を生成する。図１２のフローチャートを参照して、ハードウェアモデル開発支援装置５１によるポート連動関数定義ファイル生成処理を説明する。
【００９６】
最初に、ポート連動関数定義ファイル生成部７３は、ステップＳ７１において、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２、レジスタ幅１６４、およびレジスタタイプ１６５を取得し、ステップＳ７２において、CPU１１１よりアクセスされた場合に起動される関数の定義記述を生成し、出力する。
【００９７】
図１３は、ポート連動関数定義ファイル生成部７３より出力されるポート連動関数定義ファイル１３３のデータの構成例を示す図である。図１３において、上から第１行目乃至第６行目の記述２０１、上から第７行目乃至第１０行目の記述２０２、および、上から第１１行目乃至第１４行目の記述２０３がステップＳ７２において出力される、CPU１１１よりアクセスされた場合に起動される関数の定義記述である。
【００９８】
そして、ステップＳ７３において、ポート連動関数定義ファイル生成部７３は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ポート連動関数定義ファイル生成部７３は、処理をステップＳ７２に戻し、それ以降の処理を繰り返す。すなわち、ポート連動関数定義ファイル生成部７３は、レジスタ情報１６１に記述されている全てのレジスタに対して、上述した、CPU１１１よりアクセスされた場合に起動される関数の定義記述を生成し、出力する。
【００９９】
ステップＳ７３において、全てのレジスタについてCPU１１１よりアクセスされた場合に起動される関数の定義記述を出力した（未処理のレジスタが存在しない）と判定した場合、ポート連動関数定義ファイル生成部７３は、処理をステップＳ７４に進め、ハードウェア外部仕様情報１４１のハードウェア間ポート情報１７１よりポート名１７２、ポートタイプ１７３、およびポート幅１７４を取得し、ステップＳ７５において、ハードウェアモデルが能動的に起動する関数、および受動的に起動される関数の定義記述を生成し、出力する。
【０１００】
図１３において、上から第１５行目乃至第１８行目の記述２０４がステップＳ７５において出力される、受動的に起動される関数の定義記述である。
【０１０１】
そして、ステップＳ７６において、ポート連動関数定義ファイル生成部７３は、ハードウェア間ポート情報１７１に記述されているポートのうち、未処理のポートが存在するか否かを判定する。未処理のポートが存在すると判定した場合、ポート連動関数定義ファイル生成部７３は、処理をステップＳ７５に戻し、それ以降の処理を繰り返す。すなわち、ポート連動関数定義ファイル生成部７３は、ハードウェア間ポート情報１７１に記述されている全てのポートに対して、上述した、ハードウェアモデルが能動的に起動する関数、および受動的に起動される関数の定義記述を生成し、出力する。
【０１０２】
ステップＳ７６において、全てのポートについて、ハードウェアモデルが能動的に起動する関数、および受動的に起動される関数の定義記述を出力した（未処理のポートが存在しない）と判定した場合、ポート連動関数定義ファイル生成部７３は、ポート間連動関数定義ファイル生成処理を終了する。
【０１０３】
以上のようにポート連動関数定義ファイル生成処理が実行され、出力されたポート連動関数定義ファイル１３３は、RAM６３により一時的に保持されたり、記憶部９３に記憶されたりする。
【０１０４】
また、入力されたハードウェア外部仕様情報１４１は、RAM６３に一次保持されたり、記憶部９３に記憶されたりした後、CPU６１に制御され、ハードウェアモデル入出力関数生成部７４にも供給される。
【０１０５】
ハードウェア外部仕様情報１４１を供給されたハードウェアモデル入出力関数生成部７４は、システム記述言語を用いてハードウェアモデル入出力関数定義ファイル１３４を生成する。図１４および図１５のフローチャートを参照して、ハードウェアモデル開発支援装置５１によるハードウェアモデル入出力関数生成処理を説明する。
【０１０６】
最初に、ステップＳ９１において、ハードウェアモデル入出力関数生成部７４は、図１６に示されるような、所定のコンパイル条件を指定する、第１の条件コンパイル記述を生成し、出力する。
【０１０７】
図１６は、ハードウェアモデル入出力関数生成部７４より出力されるハードウェアモデル入出力関数定義ファイル１３４のデータの構成例を示す図である。図１６において、上から第１行目の記述２１１「#ifdef_TARGET/*FOR TARGET*/」がステップＳ９１において出力される第１の条件コンパイル記述である。
【０１０８】
ステップＳ９２において、ハードウェアモデル入出力関数生成部７４は、ハードウェア外部仕様情報１４１のデバイス情報１５１よりデバイス名１５２およびベースアドレス１５３を取得し、ステップＳ９３において、取得した情報に基づいて、デバイスの機能を表現するメモリ空間の開始アドレスを定義するデバイスベースアドレス定義記述を生成し、ステップＳ９４において、そのデバイスベースアドレス定義記述を出力する。
【０１０９】
図１６において、上から第３行目の記述２１２「#define TADR_DMAC_REG_BASE   (volatile UB*)0x1000」がステップＳ９４において出力されるデバイスベースアドレス定義記述である。
【０１１０】
デバイスベースアドレス定義記述を出力したハードウェアモデル入出力関数生成部７４は、ステップＳ９５において、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２、レジスタ幅１６４、およびアドレスオフセット１６３を取得し、ステップＳ９６において、取得した情報に基づいて、レジスタの開始アドレスを定義するレジスタアドレス定義記述を生成し、ステップＳ９７において、そのレジスタアドレス定義記述を出力する。
【０１１１】
図１６において、上から第４行目の記述２１３「#define TADR_DMAC_DMAC_A   (volatile UW*)(TADR_DMAC_REG_BASE + 0x0000)」がステップＳ９６において生成されるレジスタアドレス定義記述である。
【０１１２】
そして、ステップＳ９８において、ハードウェアモデル入出力関数生成部７４は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ハードウェアモデル入出力関数生成部７４は、処理をステップＳ９６に戻し、それ以降の処理を繰り返す。すなわち、ハードウェアモデル入出力関数生成部７４は、図１６に示されるように、レジスタ情報１６１に記述されている全てのレジスタに対して、上述したレジスタアドレス定義記述を生成し、出力する。
【０１１３】
ステップＳ９８において、全てのレジスタについてレジスタアドレス定義記述を出力した（未処理のレジスタが存在しない）と判定した場合、ハードウェアモデル入出力関数生成部７４は、処理をステップＳ９９に進め、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２、レジスタ幅１６４、およびレジスタタイプ１６５を取得し、ステップＳ１００において、取得した情報に基づいて、レジスタ情報に対応するハードウェアへのアクセス関数を定義する、ハードウェアのレジスタアクセス関数定義記述を生成し、ステップＳ１０１において、そのハードウェアのレジスタアクセス関数定義記述を出力する。
【０１１４】
図１６において、上から第７行目の記述２１４「#define dmac_rew_dmac_a()   sil_rew_bem(TADR_DMAC_DMAC_A)」がステップＳ１００において生成される、ハードウェアのレジスタアクセス関数定義記述である。
【０１１５】
そして、ステップＳ１０２において、ハードウェアモデル入出力関数生成部７４は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ハードウェアモデル入出力関数生成部７４は、処理をステップＳ１００に戻し、それ以降の処理を繰り返す。すなわち、ハードウェアモデル入出力関数生成部７４は、図１６に示されるように、レジスタ情報１６１に記述されている全てのレジスタに対して、上述した、ハードウェアのレジスタアクセス関数定義記述を生成し、出力する。
【０１１６】
ステップＳ１０２において、全てのレジスタについて、ハードウェアのレジスタアクセス関数定義記述を出力した（未処理のレジスタが存在しない）と判定した場合、ハードウェアモデル入出力関数生成部７４は、処理を図１５のステップＳ１０３に進め、図１６に示されるような、所定のコンパイル条件を指定する、第２の条件コンパイル記述を生成し、出力する。
【０１１７】
図１６において、上から第１２行目の記述２１１「#else」がステップＳ１０３において出力される第２の条件コンパイル記述である。
【０１１８】
図１５のステップＳ１０４において、ハードウェアモデル入出力関数生成部７４は、ハードウェア外部仕様情報１４１のレジスタ情報１６１よりレジスタ名１６２、レジスタ幅１６４、およびレジスタタイプ１６５を取得し、ステップＳ１０５において、取得した情報に基づいて、レジスタ情報に対応するハードウェアモデルへのアクセス関数を定義する、ハードウェアモデルのレジスタアクセス関数定義記述を生成し、ステップＳ１０６において、そのハードウェアモデルのレジスタアクセス関数定義記述を出力する。
【０１１９】
図１６において、上から第１３行目の記述２１６「#define dmac_rew_dmac_a()   pdm_i_Wrapper_pm_io_Reg_DMAC_A()」がステップＳ１００において生成される、ハードウェアモデルのレジスタアクセス関数定義記述である。
【０１２０】
そして、ステップＳ１０７において、ハードウェアモデル入出力関数生成部７４は、レジスタ情報１６１に記述されているレジスタのうち、未処理のレジスタが存在するか否かを判定する。未処理のレジスタが存在すると判定した場合、ハードウェアモデル入出力関数生成部７４は、処理をステップＳ１０５に戻し、それ以降の処理を繰り返す。すなわち、ハードウェアモデル入出力関数生成部７４は、図１６に示されるように、レジスタ情報１６１に記述されている全てのレジスタに対して、上述した、ハードウェアモデルのレジスタアクセス関数定義記述を生成し、出力する。
【０１２１】
ステップＳ１０７において、全てのレジスタについて、ハードウェアのレジスタアクセス関数定義記述を出力した（未処理のレジスタが存在しない）と判定した場合、ハードウェアモデル入出力関数生成部７４は、ハードウェアモデル入出力関数生成処理を終了する。
【０１２２】
以上のようにハードウェアモデル入出力関数生成処理が実行され、出力されたハードウェアモデル入出力関数定義ファイル１３４は、RAM６３により一時的に保持されたり、記憶部９３に記憶されたりする。
【０１２３】
図１６に示されるように、ハードウェアモデル入出力関数生成部７４より出力されたハードウェアモデル入出力関数定義ファイル１３４は、ハードウェアのレジスタアクセス関数定義記述により構成される実ハードウェア用コード２２１と、ハードウェアモデルのレジスタアクセス関数定義記述により構成されるハードウェアモデル用コード２２２とを含んでおり、システム記述言語に依存したハードウェアモデルへの入出力関数をハードウェアレジスタ名で特定される入出力関数名に変換することで、システム記述言語を利用者より隠蔽した形になる。
【０１２４】
従って、以上のように開発されたハードウェアモデルを用いてソフトウェアを開発した場合、ハードウェアモデルへの入出力関数を、特定のシステム記述言語に依存しない形式にすることができ、ソフトウェア開発者の利便性を向上させることができる。
【０１２５】
以上のようにして、ハードウェアモデル開発支援装置５１は、ハードウェア外部仕様情報１４１より、ポート定義ファイル１３１、ポート間接続定義ファイル１３２、ポート連動関数定義ファイル１３３、およびハードウェアモデル入出力関数定義ファイル１３４を生成する。
【０１２６】
これにより、ソフトウェア開発者は、ハードウェア開発者が生成したハードウェア外部仕様情報１４４をハードウェアモデル開発支援装置５１に供給することにより、従来、システム記述言語を用いて手入力で作成していたハードウェアモデルを、容易に開発することができる。
【０１２７】
すなわち、ハードウェア開発工程において、ハードウェアの外部仕様が変更された場合においても、ソフトウェア開発者は、ハードウェアモデル開発支援システム５１を用いて、実ハードウェアに正確に対応するハードウェアモデルを、容易に開発することができる。
【０１２８】
以上において、ハードウェアモデル開発支援装置５１に入力されたハードウェア外部仕様情報１４１は、RAM６３に一次保持されたり、記憶部９３に記憶されたりするように説明したが、これに限らず、ポート定義ファイル生成部７１、ポート間接続定義ファイル生成部７２、ポート連動関数定義ファイル生成部７３、または、ハードウェアモデル入出力関数生成部７４に供給されるようにしてもよい。
【０１２９】
また、ポート定義ファイル生成部７１、ポート間接続定義ファイル生成部７２、ポート連動関数定義ファイル生成部７３、または、ハードウェアモデル入出力関数生成部７４より出力される各定義ファイルは、RAM６３により一時的に保持されたり、記憶部９３に記憶されたりするように説明したが、これに限らず、例えば、出力部９２を介してディスプレイ等に表示されたり、通信部９４を介して他の装置に供給されたり、ドライブ９５に装着されたリムーバブルメディア９６に記憶されるようにしてもよい。
【０１３０】
さらに、以上において、ポート定義ファイル生成部７１、ポート間接続定義ファイル生成部７２、ポート連動関数定義ファイル生成部７３、およびハードウェアモデル入出力関数生成部７４は、互いに別体として構成するように説明したが、これに限らず、それらの機能の一部または全部が１つのブロックとして構成されるようにしてもよいし、それらの機能の一部または全部がCPU６１に含まれるようにしてもよい。
【０１３１】
また、ハードウェアモデル開発支援装置５１は、１つの装置として構成されるように説明したが、これに限らず、上述したハードウェアモデル開発支援装置５１の全ての機能を、複数の装置により構成されるシステムとして実現するようにしてもよい。
【０１３２】
なお、以上の処理は、ハードウェアにより実行することができるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１３３】
この記録媒体は、図２に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（ＭＤ（Mini-Disk）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア９６により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM６２や、記憶部９３に含まれるハードディスクなどで構成される。
【０１３４】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１３５】
【発明の効果】
以上のように、本発明によれば、ファイルを生成することができる。特に、ハードウェアモデルの開発を効率的に行うことができる。
【図面の簡単な説明】
【図１】  SOCの開発工程の例を示す図である。
【図２】本発明を適用したハードウェアモデル開発支援装置の内部の構成例を表すブロック図である。
【図３】ハードウェアモデルの開発対象のSOCの例を示すブロック図である。
【図４】図３のSOCのハードウェアモデルの例を示すブロック図である。
【図５】図２のハードウェアモデル開発支援装置の入出力ファイルの例を示す模式図である。
【図６】図５のハードウェア外部仕様情報のデータの構成例を示す模式図である。
【図７】ハードウェアモデル開発支援装置によるポート定義ファイル生成処理を説明するフローチャートである。
【図８】図５のポート定義ファイルのデータの構成例を示す図である。
【図９】図２のハードウェアモデル開発支援装置によるポート間接続定義ファイル生成処理を説明するフローチャートである。
【図１０】図２のハードウェアモデル開発支援装置によるポート間接続定義ファイル生成処理を説明する、図９に続くフローチャートである。
【図１１】図５のポート間接続定義ファイルのデータの構成例を示す図である。
【図１２】図２のハードウェアモデル開発支援装置によるポート連動関数定義ファイル生成処理を説明するフローチャートである。
【図１３】図５のポート連動関数定義ファイルのデータの構成例を示す図である。
【図１４】図２のハードウェアモデル開発支援装置によるハードウェアモデル入出力関数生成処理を説明するフローチャートである。
【図１５】図２のハードウェアモデル開発支援装置によるハードウェアモデル入出力関数生成処理を説明する、図１４に続くフローチャートである。
【図１６】図５のハードウェアモデル入出力関数定義ファイルのデータの構成例を示す図である。
【符号の説明】
５１  ハードウェアモデル開発支援装置，  ７１  ポート定義ファイル生成部，  ７２  ポート間接続定義ファイル生成部，  ７３  ポート連動関数定義ファイル，  ７４  ハードウェアモデル入出力関数生成部，  １００  SOC，  １０１  CPU，  １０２  ハードウェアブロックＡ，  １０３  ハードウェアブロックＢ，  １０４  ハードウェアブロックＣ，  １１０  SOC，  １１１  CPU，  １１２  ハードウェアブロックモデルＡ，  １１３  ハードウェアブロックモデルＢ，  １１４  ハードウェアブロックモデルＣ，  １２１−１乃至１２１−１１  出力ポート，  １２２−１乃至１２２−１１  チャネル，  １２３−１乃至１２３−１１  入力ポート，  １３１  ポート定義ファイル，  １３２  ポート間接続定義ファイル，  １３３  ポート連動関数定義ファイル，  １３４  ハードウェアモデル入出力関数定義ファイル，  １４１  ハードウェア外部仕様情報
【図１】
0004314824.tif 000002
【図２】
0004314824.tif 000003
【図３】
0004314824.tif 000004
【図４】
0004314824.tif 000005
【図５】
0004314824.tif 000006
【図６】
0004314824.tif 000007
【図７】
0004314824.tif 000008
【図８】
0004314824.tif 000009
【図９】
0004314824.tif 000010
【図１０】
0004314824.tif 000011
【図１１】
0004314824.tif 000012
【図１２】
0004314824.tif 000013
【図１３】
0004314824.tif 000014
【図１４】
0004314824.tif 000015
【図１５】
0004314824.tif 000016
【図１６】
0004314824.tif 000017