(57)【特許請求の範囲】
【請求項１】
コンパイラカスタマイズ部、アセンブラカスタマイズ部、及びシミュレータカスタマイズ部を含むコンピュータにより、前記コンピュータに接続された記憶装置に記憶されたシステムＬＳＩのコンフィグレーションが記述されたコンフィグレーション指定ファイルに基づきシステムＬＳＩの開発環境を生成する方法であって、
前記コンピュータは、前記コンパイラカスタマイズ部により、前記記憶装置から入力された前記コンフィグレーション指定ファイルに含まれるシステムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれる前記システムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させ、
前記コンフィグレーション指定ファイルは、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義を含み、前記コプロセッサ定義は、コプロセッサがＶＬＩＷ（ベリー・ロング・インストラクション・ワード）モードであることを示す記述、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報を含む
ことを特徴とするシステムＬＳＩ開発環境生成方法。
【請求項２】
コンピュータに、コマンドインタープリタにより、入力されたコマンドを解析させ、
前記解析したコマンドに応じて、コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたコンフィグレーション指定ファイルに含まれるシステムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報、さらに、前記コプロセッサ定義は、コプロセッサがＶＬＩＷ（ベリー・ロング・インストラクション・ワード）モードであることを示す記述に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの前記システムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを実現するシステムＬＳＩ開発環境生成プログラム。
【請求項３】
前記レジスタ定義は、前記コンパイラにおけるレジスタ使用方法の情報を有することを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項４】
前記レジスタ定義は、前記コンパイラのレジスタの使用方法を定義する情報を有し、この情報が省略された場合、前記コンピュータは、前記コンパイラカスタマイズ部により、コンパイラのデフォルトのレジスタの使用方法を設定させることを特徴とする請求項３記載のシステムＬＳＩ開発環境生成方法。
【請求項５】
前記コンピュータは、前記コンパイラカスタマイズ部により、前記レジスタ定義の情報に基づき、各レジスタに直接アクセスできるレジスタ擬似変数の情報を生成させることを特徴とする請求項４記載のシステムＬＳＩ開発環境生成方法。
【請求項６】
前記レジスタ定義は、レジスタの別名定義を有し、前記コンピュータは、前記アセンブラカスタマイズ部により、前記レジスタの別名定義を受けることを特徴とする請求項４記載のシステムＬＳＩ開発環境生成方法。
【請求項７】
前記コンピュータは、ＲＴＬ（レジスタ・トランスファー・レベル）生成部、検証ベクトル生成部、及びデバッガ生成部をさらに具備し、前記コンピュータは、前記ＲＴＬ生成部により、前記コンフィグレーション指定ファイルに基づき、システムＬＳＩに内蔵されるプロセッサのＲＴＬ記述を生成させ、前記検証ベクトル生成部により、前記コンフィグレーション指定ファイルに基づき、システムＬＳＩの構成を検証する検証ベクトルを生成させ、前記デバッガ生成部により、前記コンフィグレーション指定ファイルに基づき、前記システムＬＳＩ上で動作するソフトウェアをデバッグするデバッガを生成させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項８】
前記コンフィグレーション指定ファイルに含まれるレジスタ定義は、レジスタ名を含み、前記コンピュータは、前記ＲＴＬ生成部、検証ベクトル生成部、及びデバッガ生成部のうち少なくとも１つにより、レジスタ名を受けることを特徴とする請求項７記載のシステムＬＳＩ開発環境生成方法。
【請求項９】
前記コンフィグレーション指定ファイルは、命令定義部を含み、前記命令定義部は、命令のニーモニック、オペランドコード、動作内容を含むことを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項１０】
前記コンピュータは、前記コンパイラカスタマイズ部により、前記命令定義部の情報を元に機械命令関数定義を生成させることを特徴とする請求項９記載のシステムＬＳＩ開発環境生成方法。
【請求項１１】
前記スロット情報は機械命令関数定義ファイルに反映され、前記コンパイラカスタマイズ部により、前記機械命令関数定義ファイルに基づき、コプロセッサ命令を並列化させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項１２】
前記シミュレータカスタマイズ部は、前記コプロセッサの仕様に応じた、命令の動作記述内の一時変数、あるいは符号拡張後の値のビット幅を受け、前記シミュレータに反映させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項１３】
前記アセンブラカスタマイズ部は、前記スロット情報を受け、前記アセンブラに反映させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項１４】
前記検証ベクトル生成部は、前記スロット情報を受け、前記検証ベクトルに反映させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項１５】
コマンドインタープリタ、コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータは、前記コマンドインタープリタにより、入力されたコマンドを解析し、
前記解析したコマンドに応じて、前記コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたプロセッサがＤＳＰ（デジタル・シグナル・プロセッサ）型であり、ハードウェアの指定がＤＳＰ命令形式である記述を含むシステムＬＳＩのコンフィグレーションを記述したコンフィグレーション指定ファイルの情報に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの情報に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを特徴とするシステムＬＳＩ開発環境生成方法。
【請求項１６】
前記コンフィグレーション指定ファイルは、命令定義部及びレジスタ定義部を含むことを特徴とする請求項１５記載のシステムＬＳＩ開発環境生成方法。
【請求項１７】
前記命令定義部は、命令のビット幅を指定する情報を含むことを特徴とする請求項１６記載のシステムＬＳＩ開発環境生成方法。
【請求項１８】
前記レジスタ定義部は、レジスタのビット幅を定義する情報を含むことを特徴とする請求項１６記載のシステムＬＳＩ開発環境生成方法。
【請求項１９】
前記コンフィグレーション指定ファイルは、固定小数点ライブラリの小数点の位置を指定する情報を含み、前記コンピュータは、前記コンパイラカスタマイズ部により、この情報をコンパイラの固定小数点ライブラリに反映させることを特徴とする請求項１６記載のシステムＬＳＩ開発環境生成方法。
【請求項２０】
前記コンフィグレーション指定ファイルは、プロセッサがＤＳＰ型である場合、前記コンパイラのＤＳＰに対応した機能を含むことを特徴とする請求項１６記載のシステムＬＳＩ開発環境生成方法。
【請求項２１】
前記コンパイラのＤＳＰに対応した機能は、複素データ型、Ｘ／Ｙメモリ領域、循環バッファ、固定小数点データ型、ビット反転、異種レジスタセットのうちの少なくとも１つを含むことを特徴とする請求項２０記載のシステムＬＳＩ開発環境生成方法。
【請求項２２】
前記コンフィグレーション指定ファイルは、ハードウェアの指定が、ＳＩＭＤ（シングル・インストラクション・マルチプル・データ）命令形式である記述を含むことを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項２３】
コマンドインタープリタ、コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータは、前記コマンドインタープリタにより、入力されたコマンドを解析させ、
前記解析したコマンドに応じて、前記コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたプロセッサがＳＩＭＤ（シングル・インストラクション・マルチプル・データ）型であり、ハードウェアの指定がデータ長を含むＳＩＭＤ命令形式である記述を含むシステムＬＳＩのコンフィグレーションを記述したコンフィグレーション指定ファイルの情報に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、
前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、
前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させる
ことを実現するシステムＬＳＩ開発環境生成プログラム。
【請求項２４】
前記コンピュータは、前記コンパイラカスタマイズ部により、入力されたＳＩＭＤ命令に関する情報に基づき、ＳＩＭＤデータ用拡張宣言子の情報を生成させることを実現する請求項２３記載のシステムＬＳＩ開発環境生成プログラム。
【請求項２５】
前記コンピュータは、前記シミュレータカスタマイズ部により、入力されたＳＩＭＤ命令に関する情報に基づき、シミュレータの動作をカスタマイズさせることを実現する請求項２３記載のシステムＬＳＩ開発環境生成プログラム。
【請求項２６】
前記コンピュータは、前記シミュレータカスタマイズ部により、入力されたＳＩＭＤ命令に関する情報に基づき、シミュレータの結果出力機能をカスタマイズさせることを実現する請求項２３記載のシステムＬＳＩ開発環境生成プログラム。
【請求項２７】
前記ＳＩＭＤ命令の命令定義部における動作記述は、複数命令がまとめて１命令で記述されることを実現する請求項２３記載のシステムＬＳＩ開発環境生成プログラム。
【請求項２８】
前記ＳＩＭＤ命令の命令定義部における動作記述は、指標を用いて記述されることを実現する請求項２３記載のシステムＬＳＩ開発環境生成プログラム。
【請求項２９】
コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータにより、定義済みの複数の命令を含む複数の命令ライブラリから必要な命令を選択して複数のファイルを生成し、
前記生成された複数のファイルをマージし、
前記コンピュータは、コンパイラカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で命令動作を実行するシミュレータを構築させる
ことを特徴とするシステムＬＳＩ開発環境生成方法。
【請求項３０】
コンパイラカスタマイズ部、アセンブラカスタマイズ部、シミュレータカスタマイズ部を含むコンピュータにより、定義済みの複数の命令を含む複数の命令ライブラリから必要な命令を選択して複数のファイルを生成させ、
前記生成された複数のファイルをマージさせ、
前記コンピュータは、前記コンパイラカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記マージされたファイルに基づき、システムＬＳＩ上で命令動作を実行するシミュレータを構築させる
ことを実現するシステムＬＳＩ開発環境生成プログラム。
【請求項３１】
前記複数のファイルを、基本命令を含むファイルとマージし、前記コンパイラに組み込む
ことを特徴とする請求項２９記載のシステムＬＳＩ開発環境生成方法。
【請求項３２】
前記マージされたファイルより、ＲＴＬ（レジスタ・トランスファー・レベル）生成部により、ＲＴＬテンプレートを生成する
ことを特徴とする請求項２９記載のシステムＬＳＩ開発環境生成方法。
【請求項３３】
前記命令ライブラリ内の命令に対して、命令が用いるデータ型を選択し、アプリケーションに対応した開発環境を生成することを特徴とする請求項２９記載のシステムＬＳＩ開発環境生成方法。
【請求項３４】
前記命令ライブラリ内の命令に対して、命令が用いるデータ型を変更し、アプリケーションに対応した開発環境を生成することを特徴とする請求項２９記載のシステムＬＳＩ開発環境生成方法。
【請求項３５】
前記コンピュータに、前記コンフィグレーション指定ファイルに記載された動作命令に基づき、スケジューリング部によりハードウェアリソースの割り当てとスケジューリングを行なわせ、前記コンフィグレーション指定ファイルに記載された動作命令に基づき、インターフェース整合部により、コア部及び制御バスとメモリとのインターフェースを整合させ、ＲＴＬ（レジスタ・トランスファー・レベル）生成部により、Ｃ言語をVerilog （ベリログ）に変換させる
ことを実現する請求項２記載のシステムＬＳＩ開発環境生成プログラム。
【請求項３６】
前記コンピュータに、インターフェース整合部により、前記動作命令からハードウェアリソースの割り当てとスケジューリング、コア部及び制御バスとメモリとのインターフェースを整合させ、ＲＴＬ（レジスタ・トランスファー・レベル）記述を生成することを実現する請求項３５記載のシステムＬＳＩ開発環境生成プログラム。
【請求項３７】
前記コンピュータは、前記コンフィグレーション指定ファイルの動作命令に基づき、前記検証ベクトル生成部により、プロセッサの検証ベクトルを生成させることを特徴とする請求項１記載のシステムＬＳＩ開発環境生成方法。
【請求項３８】
前記コンピュータは、前記検証ベクトル生成部により、前記コンフィグレーション指定ファイルのレジスタ情報からＩＳＡ（インストラクション・セット・アーキテクチャ）情報を生成させることを特徴とする請求項３７記載のシステムＬＳＩ開発環境生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばコンフィグラブル（configurable）プロセッサを含むシステムＬＳＩの設計開発に利用される開発環境（development environment）に係り、特に、システムＬＳＩの設計開発環境を生成する方法及びそのプログラムに関する。
【０００２】
【従来の技術】
近年、例えばマルチメディア処理等に適用されるＬＳＩに対するニーズが多様化している。さらに、このＬＳＩの市場サイクルは短期化している。このため、アプリケーションに最適なＬＳＩを短期に開発するためのシステムＬＳＩの設計開発環境が望まれている。ここで、開発環境とは、システムＬＳＩを構築する際に必要となるハードウェアやシステム開発支援ツールなどのソフトウェアを意味する。
【０００３】
一般に、ＬＳＩ内に汎用プロセッサを搭載した場合、ハードウェアの設計コストは殆んどゼロに等しい。しかし、このような構成のＬＳＩはアプリケーションに最適化されていないため、アプリケーションの性能をフルに引き出すことが困難である。このため、最近では、命令やメモリ構成等が選択可能なコンフィグラブル・プロセッサが提供されている。また、コンフィグラブル・プロセッサの提供者は、コンフィグレーションを指定して論理合成可能なハードウェア記述を出力するシステムを提供している。このようなプロセッサ及びシステムによれば、オプション命令やメモリサイズを指定することによって、アプリケーションに最適な構成のプロセッサを短期間で開発することが可能となる。
【０００４】
一方、通常、命令セット等を変えた場合、コンパイラやシミュレータ等のソフトウェア開発ツールも変更しなければならない。このため、コンフィグレーションを指定することにより、ハードウェア記述と同時に、ソフトウェア開発ツールを生成するシステムも提供されるようになっている。このようなシステムによれば、ソフトウェア開発ツールの設計に要する労力及び時間を大幅に削減することができる。
【０００５】
【発明が解決しようとする課題】
従来、ＲＩＳＣ（Reduced Instruction Set Computer）コアに対してコンフィグラブルなＤＳＰ（Digital Signal Processor）コプロセッサが開発されている。しかし、このＤＳＰコプロセッサは予め用意されたＩＳＡ（Instruction Set Architecture）のみ使用可能とされ、それ以外は使用できない。また、新たな命令を追加できるコンフィグラブル・プロセッサも有るが、固定されたタイプの命令のみが追加可能である。このため、例えばＶＬＩＷ（Very Long Instruction Word）モード等のアーキテクチャに対応することが困難であり、フレキシビリティが十分ではない。
【０００６】
さらに、追加の命令を記述するために、例えばVerilogのようなハードウェア記述言語（ＨＤＬ：Hardware Description Language）が用いられており、効率良く命令を追加することができない。
【０００７】
さらに、ユーザが定義した命令より必要な開発環境を生成することが困難であった。
【０００８】
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、高性能なハードウェアを有するＬＳＩの開発環境を十分なフレキシビリティで、簡単に生成することが可能なシステムＬＳＩ開発環境生成方法及びそのプログラムを提供しようとするものである。
【０００９】
【課題を解決するための手段】
本発明のシステムＬＳＩ開発環境生成方法は、コンパイラカスタマイズ部、アセンブラカスタマイズ部、及びシミュレータカスタマイズ部を含むコンピュータにより、前記コンピュータに接続された記憶装置に記憶されたシステムＬＳＩのコンフィグレーションが記述されたコンフィグレーション指定ファイルに基づきシステムＬＳＩの開発環境を生成する方法であって、前記コンピュータは、前記コンパイラカスタマイズ部により、前記記憶装置から入力された前記コンフィグレーション指定ファイルに含まれるシステムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれる前記システムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、コンフィグレーションに沿った命令動作を実行するシミュレータを構築させ、前記コンフィグレーション指定ファイルは、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義を含み、前記コプロセッサ定義は、コプロセッサがＶＬＩＷ（ベリー・ロング・インストラクション・ワード）モードであることを示す記述、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報を含むことを特徴とする。
【００１０】
すなわち、本発明に係る方法の特徴は、システムＬＳＩのコンフィグレーションが記述されたコンフィグレーション指定ファイルの情報を入力し、且つコンフィグレーション指定ファイルが命令を実行するハードウェアの指定を含んでいることである。ここで、コンフィグレーション指定ファイルは、特に、ユーザ定義命令の命令記述であり、具体的には、以下に述べるアーキテクチャ・データ・ベース・ファイルである。
【００１１】
また、本発明のシステムＬＳＩ開発環境生成プログラムは、コンピュータに、コマンドインタープリタにより、入力されたコマンドを解析させ、前記解析したコマンドに応じて、コンパイラカスタマイズ部により、前記コンピュータに接続された記憶装置から入力されたコンフィグレーション指定ファイルに含まれるシステムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義、コアプロセッサに対してコプロセッサを定義するコプロセッサ定義、及び命令を並列化する際、どのスロットに置かれる命令かを区別するためのスロット情報、さらに、前記コプロセッサ定義は、コプロセッサがＶＬＩＷ（ベリー・ロング・インストラクション・ワード）モードであることを示す記述に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのコンパイラを構築させ、前記アセンブラカスタマイズ部により、前記コンフィグレーション指定ファイルの前記システムＬＳＩの命令セットのオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記システムＬＳＩ上で動作するソフトウェアを開発するためのアセンブラを構築させ、前記シミュレータカスタマイズ部により、前記コンフィグレーション指定ファイルに含まれるオプション情報、ユーザ定義命令及びレジスタの構成を定義するレジスタ定義に基づき、前記コンフィグレーションに沿った命令動作を実行するシミュレータを構築させることを実現する。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
【００１３】
先ず、図１乃至図１０を用いて、本実施形態に適用されるシステムＬＳＩ開発装置について概略的に説明する。
【００１４】
（システムＬＳＩ開発装置の構成）
図１は、システムＬＳＩ開発装置１を示している。システムＬＳＩ開発装置１は、設定ファイル生成部２、ユーザ定義モジュール・ユーザ定義命令記憶部３、システムＬＳＩ開発環境生成部４、性能評価部５、終了判定部６、変更項目設定部７、入出力インターフェース部８及び制御部９を有している。
【００１５】
システムＬＳＩ開発装置１には、装置１内に各種情報を入力するための入力部１０と、装置１からの各種情報を出力するための出力部１１とが接続されている。入力部１０としては、例えばキーボード、マウスポインタ、テンキー、タッチパネル等を用いることができる。出力部１１としては、例えばディスプレイ装置や印刷装置等が適用される。
【００１６】
図２乃至図１３は、上記システムＬＳＩ開発装置１内の各部の構成を示している。
【００１７】
（設定ファイル生成部の構成）
図２は、設定ファイル生成部２の構成を示している。設定ファイル生成部２は、入力解析部２１、ローカルメモリマップ生成部２２、オプション情報記憶部２３、デバイス構成記憶部２４、キャッシュ構成記憶部２５及びローカルメモリマップ記憶部２６を備えている。設定ファイル生成部２は、システムＬＳＩの設計上のコンフィグレーションを記述したコンフィグレーション指定ファイル（以下において、アーキテクチャ・データ・ベース・ファイルとも言う）、可変値設定情報、最優先項目設定情報、目標性能指定情報、及び変更項目設定部７から供給される変更項目リスト情報に基づいて、システムＬＳＩ設計上のコンフィグレーションを生成し、格納する。前記目標性能指定情報は、ハードウェア性能、ソフトウェア性能の一方又は両方を含む。ハードウェアの性能指標としては、面積、周波数、消費電力を含む。ソフトウェアの性能指標としては、コードサイズ、実効命令数、実行サイクル数を含む。
【００１８】
前記入力解析部２１は、コンフィグレーション指定ファイルの内容を解析し、コンフィグレーション指定ファイル内に記述されたコンフィグレーションの内容をオプション情報記憶部２３、デバイス構成記憶部２４、及びキャッシュ構成記憶部２５の各部に分割する。
【００１９】
前記コンフィグレーション指定ファイル内には、オプション命令の有無、デバイスの有無、キャッシュの有無、キャッシュサイズ、ユーザ定義命令、ユーザ定義ハードウェアモジュール、ＬＳＩ内部のメモリマップ、マルチプロセッサ構成（マルチプロセッサの数など）等の情報を記述するものとする。なお、ユーザ定義命令やユーザ定義ハードウェアモジュールの記述部分には、ユーザ定義命令やユーザ定義モジュールを記述したファイル名の記憶位置（この実施の形態においては、ユーザ定義モジュール、ユーザ定義命令記憶部３の位置）を絶対パスや相対パス等の記述によって指定する。
【００２０】
前記デバイスの有無において、デバイスには、命令メモリ、データメモリ、コプロセッサが含まれ、命令メモリ、データメモリの可変項目には、サイズ、アドレスが含まれる。前記メモリマップにおいて、メモリマップには、外部メモリ領域、内部メモリ領域、入出力領域が含まれ、外部メモリ領域には、キャッシュアクセス領域の指定項目も含まれる。また、各メモリ領域にはレイテンシ情報も含まれる。
【００２１】
また、コンフィグレーション指定ファイルからシステムＬＳＩ設計上のコンフィグレーションを指定する際、ユーザは、設定ファイル生成部２内の各記憶部２３〜２６で定義されている可変値の中から１つの値を選択する。この選択した値を、例えば図３に示すようなコンフィグレーション指定ファイル内に記述する。
【００２２】
すなわち、例えば、以下に示すＳＩＺＥ記述において、内蔵データメモリのサイズは、例えば１、２、４、８、１６、３２［ＫＢ］のいずれかを選択することが可能である。このＳＩＺＥ記述を省略した場合、サイズは、デフォルト値の８［ＫＢ］になることを示している。
【００２３】
DMEM:
SIZE Ptype={1,2,4,8,16,32},default=8,comment=“内蔵データメモリのサイズ”；
また、以下に示すＩＳＡ＿ＤＥＦＩＮＥ記述においては、ユーザ定義命令のＩＳＡ定義ファイル名として任意の文字列を記述しなければならないことを示す。
【００２４】
UCI:
ISA_DEFINE Ptype=string, default=“”,comment=“ユーザ定義命令のＩＳＡ定義ファイル名”；
なお、上記のコンフィグレーションの設定作業は、入出力インタフェイス部８を介した対話的な処理によって行なうようにしても良い。コンフィグレーションの設定を対話的に行なうようにすることにより、ユーザは、コンフィグレーション指定ファイルの文法等を意識せずに、コンフィグレーションを容易に設定することができる。このため、コンフィグレーションの設定に要する時間を直接ファイルに記述する場合と比べて短縮することができる。さらに、全てのコンフィグレーションの設定を対話的に処理できる。このため、コンフィグレーションの１つを設定し忘れる等の間違いを防止することができる。
【００２５】
また、コンフィグレーションに可変値を設定するようにしても良い。コンフィグレーションに可変値を設定した場合、設定ファイル生成部２は、基本設定、可変値の測定用に作られたテンプレート、ユーザが設定した値のいずれかを用いて自動的に他のコンフィグレーションの設定値を導出するようにする。コンフィグレーションに可変値を設定することにより、ユーザは、コンフィグレーションの可変範囲に応じた複数の開発環境、検証環境を同時に得ることができる。このため、ＬＳＩ開発サイクルの短縮を実現することが可能となる。
【００２６】
さらに、コンフィグレーションの中で最優先項目を設定するようにしても良い。コンフィグレーションの中で最優先項目が設定された場合、設定ファイル生成部２は、最優先項目以外の部分の設定値について、最優先項目が最適となるようなコンフィグレーションを生成する。この生成には、基本設定、及び最優先項目に基づいてテンプレート又はユーザが指定した設定値が使用される。コンフィグレーションの中に最優先項目を指定することにより、ユーザはシステムＬＳＩの構成を認識することなく、優先項目に適した構成を開発環境、検証環境を作成し、それを評価できる。
【００２７】
（ローカルメモリマップ生成部の構成）
ローカルメモリマップ生成部２２は、コンフィグレーション指定ファイルから指定されるグローバルマップと、システムＬＳＩ内の個々のプロセッサのローカルメモリ情報とを統合し、システムＬＳＩ内のプロセッサ毎のローカルメモリマップを生成する。前記グローバルマップは、例えば図４（ａ）に示すような全プロセッサに共通のメモリ領域である。また、前記ローカルメモリ情報としては、例えば命令メモリ、データメモリ、命令キャッシュ、データキャッシュを含む。図４（ｂ）は、生成されたローカルメモリマップの一例を示している。この生成されたローカルメモリマップは、ローカルメモリマップ記憶部２６内に格納される。
【００２８】
ここで、プロセッサのローカルメモリ領域は、個々のローカルメモリ毎に予約されているグローバルマップ中のメモリ領域に対して、コンフィグレーション指定ファイルにより指定されるメモリサイズを反映させることによって生成することができる。また、予めグローバルマップ中に各プロセッサのシャドウメモリ情報を指定することにより、各プロセッサのローカルマップに他のプロセッサのローカルメモリを含むシャドウメモリを作ることもできる。
【００２９】
オプション情報記憶部２３は、入力解析部２１によるコンフィグレーション指定ファイルの解析結果に基づいて、システムＬＳＩに内蔵されるプロセッサの命令セット内のオプション命令のＯＮ／ＯＦＦ（オン／オフ）の種別に関する情報を格納する。
【００３０】
デバイス構成記憶部２４は、入力解析部２１によるコンフィグレーション指定ファイルの解析結果に基づいて、システムＬＳＩに内蔵されるデバイスのＯＮ／ＯＦＦの種別に関する情報とそのサイズに関する情報、アドレス情報、プロセッサの命令メモリやデータメモリに関する情報、及びコプロセッサ等のオプションハードウェアに関する情報を格納する。
【００３１】
（キャッシュ構成記憶部の構成）
キャッシュ構成記憶部２５は、入力解析部２１によるコンフィグレーション指定ファイルの解析結果に基づいて、システムＬＳＩのキャッシュのＯＮ／ＯＦＦの種別、キャッシュのタイプ（direct, 2-way, 4-way, n-way）に関する情報、及びサイズに関する情報を格納する。
【００３２】
（ローカルメモリマップ記憶部の構成）
ローカルメモリマップ記憶部２６は、ローカルメモリマップ生成部２２が生成したローカルメモリマップに関する情報を格納する。
【００３３】
（ユーザ定義モジュール・ユーザ定義命令記憶部の構成）
ユーザ定義モジュール・ユーザ定義命令記憶部３は、ユーザ定義のハードウェアモジュール及びシステムＬＳＩに内蔵するプロセッサの命令セットにおけるユーザ定義命令に関する情報を格納する。ここで、ユーザ定義のハードウェアモジュールに関する情報はＲＴＬ(Register Transfer Level)記述又は動作記述、及び命令の動作に関する情報は、Ｃモデル又はＣ＋＋モデルで記述して記憶部３内に格納することが望ましい。動作記述とＣモデル又はＣ＋＋モデル記述は同一でも良い。また、ユーザ定義命令に関する情報は、コンフィグレーション指定ファイルから指定される、図４（ｃ）に示すようなＩＳＡ定義ファイルに記述して格納することが望ましい。
【００３４】
（システムＬＳＩ開発環境生成部の構成）
システムＬＳＩ開発環境生成部４は、図５に示すように、ＲＴＬ生成部４１、シミュレータカスタマイズ部４２、コンパイラカスタマイズ部４３、アセンブラカスタマイズ部４４及び検証ベクトル生成部４５を備えている。このシステムＬＳＩ開発環境生成部４は、設定ファイル生成部２内に格納されているコンフィグレーションの全ての組み合わせについて、システムＬＳＩのハードウェア、検証環境及び開発設計ツールを生成する。
【００３５】
以下、このシステムＬＳＩ開発環境生成部の内部構成について詳細に説明する。
【００３６】
（ＲＴＬ生成部の構成）
ＲＴＬ生成部４１は、設定ファイル生成部２の記憶部内に記憶されているコンフィグレーションに基づいて、システムＬＳＩに内蔵されるプロセッサのＲＴＬ記述を生成する。
【００３７】
図６は、ＲＴＬ生成部４１の一実施例を示している。ブロック接続部４１ｄは、デバイス構成記憶部２４とキャッシュ構成記憶部２５内に格納されたコンフィグレーションを参照して、ＲＴＬテンプレート４１ａ、４１ｂからユーザにより設定されたコンフィグレーションに対応するテンプレートを選択する。高位合成処理部４１ｅは、ユーザ定義モジュール・ユーザ定義命令記憶部６内に格納されたユーザ定義命令又はユーザ定義モジュールの仕様である動作記述を高位合成することによりＲＴＬ記述を生成する。さらに、接続部４１ｄは、プロセッサコア部のＲＴＬ記述４１ｃに対して、前記選択したＲＴＬテンプレートと、高位合成処理部４１ｅからのＲＴＬ記述とを接続することにより、プロセッサのＲＴＬ記述を生成する。なお、記憶部３内の仕様がＲＴＬ記述である場合、そのままインターフェース信号が合うように接続する。
【００３８】
なお、マルチプロセッサ構成が定義された場合、ブロック接続部４１ｄは、複数のプロセッサ記述を生成し、それらをバスで接続したマルチプロセッサのＲＴＬ記述を生成するものとする。
【００３９】
また、ＲＴＬテンプレート４１ａ、４１ｂ内に含まれる命令メモリ、データメモリ、オプションハードウェア、命令キャッシュ及びデータキャッシュは、ユーザが選択可能なメモリサイズの各々についてＲＴＬ記述が予め用意されている。これらＲＴＬ記述は、指定されたコンフィグレーションに応じて選択的に接続可能とされている。また、オプション命令については、オプション命令に対応するハードウェアのテンプレートをオプション命令のＯＮ／ＯＦＦ全ての組み合わせについて用意する。
【００４０】
図７は、ＲＴＬテンプレートの一例を示している。図７において、オプション命令ユニットのＲＴＬテンプレートは、除算オプション命令（ＤＩＶ）のＯＮ／ＯＦＦ、及び最大最小値オプション命令（ＭＩＮＭＡＸ）のＯＮ／ＯＦＦの４通りの組み合わせについて、ＲＴＬ記述がそれぞれテンプレートとして用意されている。これらテンプレートは、デバイス構成記憶部２４とキャッシュ構成記憶部２５内に格納されたコンフィグレーションに合わせて、コアＲＴＬ記述に選択的に接続される。また、コプロセッサ等のオプションハードウェアについても、コンフィグレーションで有効と指定されている場合、既定義のＲＴＬ記述がコアＲＴＬ記述に接続される。さらに、ユーザ定義のハードウェアがある場合、ユーザが記述したハードウェア記述がコアＲＴＬ記述に接続される。
【００４１】
以上の接続処理によって、ＲＴＬ生成部４１は、設定されたコンフィグレーションに対応したプロセッサのＲＴＬ記述を生成する。例えば、プロセッサ１を最初に構築する場合、ユーザは、コンフィグレーションのパラメータ指定として、プロセッサコアに４［ＫＢ］の命令メモリと、４［ＫＢ］のデータメモリを追加すれば、プロセッサ１のＲＴＬ記述を自動的に得ることができる。
【００４２】
また、プロセッサ２を構築する場合、ユーザは、コンフィグレーションのパラメータ指定として、プロセッサコアに例えば、２［ＫＢ］の命令メモリ、４［ＫＢ］のデータメモリ、２［ＫＢ］の命令キャッシュ、４［ＫＢ］のデータキャッシュを追加する。さらに、コプロセッサと幾つかのオプション命令とユーザ定義命令のＲＴＬ記述を追加することにより、プロセッサ２のＲＴＬ記述を得ることができる。
【００４３】
また、複数のＲＴＬテンプレートを用意しておくのではなく、可変項目をパラメータ表現したＲＴＬテンプレートにコンフィグレーションで設定された値を反映させることによっても同等の効果を得ることができる。さらに、このようなパラメータ化されたＲＴＬテンプレートは、メモリ、キャッシュ等の部分モジュール毎でも良く、それらを含んだプロセッサ全体のものでも良い。また、全てのパラメータを包含した１つのＲＴＬテンプレートでも良い。
【００４４】
（シミュレータカスタマイズ部の構成）
図８は、シミュレータカスタマイズ部４２の一例を示している。このシミュレータカスタマイズ部４２は、コンフィグレーションに沿った命令動作を実行するシミュレータを生成する。
【００４５】
図８において、再コンパイル部４２ｃは、シミュレータテンプレート４２ａにユーザ定義モジュール・ユーザ定義命令記憶部３内に格納されたユーザ定義ハードウェアのＣモデルを組み込んで再コンパイルすることにより、Ｃ又はＣ＋＋のシミュレータを再構築する。また、起動オプション情報抽出部４２ｄは、設定ファイル生成部内の前記デバイス構成記憶部２４とキャッシュ構成記憶部２５に格納されているデータを参照して、起動時のオプションを指定するシミュレータ起動オプションファイル（図９（ａ）参照）を生成する。
【００４６】
組み合わせ処理部４２ｅは、再コンパイル部４２ｃから供給される再構築したシミュレータと、起動オプション情報抽出部４２ｄから供給されるシミュレータ起動オプションファイルとを組み合わせることにより、コンフィグレーションに従った命令動作を実行するシミュレータを生成する。
【００４７】
なお、シミュレータは、特定アドレス通過時に、デバッグ指令の実行結果を出力する手段を備えることが望ましい。従来、実行途中で誤りが起きた場合、エラーを出力するアサーションエラープログラム等がある。しかし、デバイスが正常に実行している時、途中経過を調べるためには、途中結果を出力する命令をアプリケーションに埋め込んでおくか、デバッガ等で実行を停止させて途中経過を読み取るしがなかった。これに対して、起動時に指定されるアドレスを通過した際に所定の情報を出力するようにすれば、シミュレータでアプリケーションを実行している途中に途中経過を調べることが可能となる。例えば、次に示すようなコマンドでシミュレータを起動する。
【００４８】
sim -load test。hex -printx mem(0x400) at 0x1200
ここで、simは、システムＬＳＩのシミュレータを示し、 -load test。hexは、test。hexという１６進数のファイルをロードするという命令、 -printx mem(0x400) at 0x1200は、0x1200番地を通過したときにメモリの0x400番地の内容を出力する命令を示す。
【００４９】
すなわち、シミュレータは、この引数で指定された指示を記憶し、プログラムカウンタが0x1200番地を通過する度に0x400番地の内容を１６進数でコンソールに出力する。このとき、アプリケーションプログラムには観測用のコードが埋め込まれているわけではない。このため、シミュレーションは、命令数やサイクル数等の統計情報には全く影響を及ぼすことなく、アプリケーションプログラムの実行を観測できる。また、特定アドレスで実行を停止させ、人手を介してメモリの値を読み出し表示させる等の作業が必要ない。このため、統計情報を正確に取りながら、特に注目したい途中結果を確認しながらアプリケーションプログラムのシミュレーションをすることができる。このため、効率良くＬＳＩを開発することができる。
【００５０】
また、シミュレータは、指定された以外の領域に対してメモリアクセスが起きた場合、実行を停止することが望ましい。設定されたコンフィグレーションに従ってシミュレータを起動した時、使用可能なメモリが明確に与えられている。仮に、基板上で実装されていない領域のメモリをアクセスすると、例えばバスエラーとなり、それ以後の動作は保証されない。動作が保証されないプログラムは、シミュレータ実行時に間違いを指摘することにより、早期に修正しておく必要がある。そこで、シミュレータは存在するメモリ領域を指定し、明示的に指定されない領域はアクセス禁止とする。さらに、シミュレータは、このアクセス禁止領域がアクセスされた場合、警告しプログラムの動作を停止する。また、シミュレータは対話モード（デバッグモード）を有し、対話モードに移行した場合、どこでエラーが発生したかが解析できるようになっている。すなわち、シミュレータがデバッガと通信して動作している場合、シミュレーション動作を中断してデバッガのコマンド待ちに移行する。さらに、無効な領域をアクセスしたというエラーを表示し、プログラムの誤りを早期に確実にユーザに伝える。
【００５１】
また、メモリのデコード回路は、上位のアドレス信号線の接続を省略されて構成される場合がある。この場合、ターゲットでアドレスを間違えたプログラムを実行してもバスエラーにはならない。しかし、アクセスが書き込みであった場合、意図しないアドレスの内容を書き換えてしまい、後の実行結果が期待通りにならないことがある。この間違ったプログラムをＲＴＬシミュレータで実行した場合、誤りを直ぐに発見することができない。しかし、シミュレータに正しいアドレスのみをアクセスできるよう、正確なマッピング情報を与えて実行させた場合、指定範囲以外のアドレスをアクセスしたことを即座に警告できる。しがたって、ユーザは間違ったプログラムを早期に検出することができ、無駄な解析時間を節約できる。このため、開発サイクルの短縮を図ることができる。
【００５２】
なお、デバッガは、デバイス構成記憶部２４とキャッシュ構成記憶部２５内に格納されているデータを参照して、図９（ｂ）に示すようなデバッガ起動オプションファイルを生成する。デバッガ起動オプションファイルを利用することにより、デバッガはコンフィグレーションに従った動作を行なうことが可能となる。
【００５３】
また、デバッガは、シミュレータの統計情報を仮想的なレジスタ若しくは変数として読み出す手段を有することが望ましい。デバッガは、$profileという変数を特殊な変数として予約してある。統計情報は、領域毎に管理されている。この統計情報は、デバッガの変数読み出しコマンドprintによって表示される。例えば領域の３番目の情報を表示させるためには、print $profile[3]のように入力する。
【００５４】
dbg> print$profile[3]
profile3:Count:7 Inst=123 Cycle=145
dbg>
さらに、言語ツールは、シミュレータ用のデバッグ用指令をアドレスと共にシンボルやソース行と同等なデバッグ情報として出力する手段を有することが望ましい（ターゲットの機械命令には反映されない）。コンパイラには、シミュレータ等で標準出力に途中結果等を出力するための拡張が施されている。#pragma cosoleoutに続く文は、ターゲットの機械語には翻訳されず、シンボル名や行番号と同様、デバッグ情報としてファイルに格納される。シミュレータは、デバッグ情報付きのオブジェクトファイルを読み込んだとき、#pragma文が定義されたアドレス情報を記憶すると共に、デバッグ出力情報であるprintf(“a=%d\n”,a)を記憶する。シミュレータが該当アドレスを実行しようとしたときに、デバッグ情報を出力しなければならないと判断し、printf文をパーサーに送りデバッグ情報を出力する。
【００５５】
このように、ターゲットの機械命令に影響を与えずに、シミュレータ実行時にデバッグ情報を出力し、シミュレータの実行も中断せずに内容を確認することもできる。このとき、シミュレータ実行時に収集される統計情報は、ターゲットで実行されるものと同一の情報である。別の表現をすれば、ターゲットとシミュレータで同一のオブジェクトコードを用いることができることになる。したがって、実行環境の違いによる再コンパイルなどの時間が発生しなくなる分だけ開発サイクルを短縮できる。また、単一のオブジェクトファイルを共有できるため、管理が容易になることは明白である。
【００５６】
func(int b){
float a;
for(I=1;I<20; i++){
A=b/I;
#pragma consoleout printf(“a=%d\n”,a);
}
（コンパイラカスタマイズ部の構成）
コンパイラカスタマイズ部４３は、オプション情報記憶部２３とユーザ定義モジュール・ユーザ定義命令記憶部３内に格納されたデータを参照して、機械命令関数宣言を含む、図９（ｃ）に示すような機械命令関数宣言ヘッダファイルを生成する。なお、ここでいう機械命令関数宣言とは、プロセッサ固有の命令を高級言語から直接指定するために、プロセッサ固有の命令を高級言語の関数宣言として記述したものである。
【００５７】
図１０は、コンパイラカスタマイズ部４３の一実施例を示している。図１０において、機械命令関数宣言抽出部４３ｃは、ユーザ定義モジュール・ユーザ定義命令記憶部３内に格納されたユーザ定義命令を参照して、対応する機械命令関数宣言を抽出する。また、結合処理部４３ｄは、オプション情報記憶部２３内に格納されたデータを参照して、既定義のテンプレート４３ｂから有効なオプション命令に対応する機械命令関数宣言を選択する。さらに、結合処理部４３ｄは、前記テンプレート４３ｂと機械命令関数宣言抽出部４３ｃから供給される機械命令関数宣言を結合することにより、機械命令関数宣言ヘッダファイルを生成する。この機械命令関数宣言ヘッダファイルには、コンフィグレーションで有効になったオプション命令とユーザ定義命令に対応する機械命令関数宣言が含まれる。
【００５８】
これにより、ユーザは、高級言語プログラムからコンフィグレーションで指定したオプション命令とユーザ定義命令を直接指定し、利用することが可能となる。
【００５９】
さらに、コンパイラカスタマイズ部４３は、オプション命令抽出部４３ａを有している。オプション命令抽出部４３ａは、オプション情報記憶部２３内に格納されたデータを参照して、最適化に利用することができるオプション命令の情報を取得する。このオプション命令の情報に従って、コンパイラカスタマイズ部４３は、コンパイラ起動時のオプションを指定するコンパイラ起動オプションファイル（図１１（ａ）参照）を生成する。
【００６０】
これにより、利用可能なオプション命令の情報をコンパイラの最適化に反映させることができる。また、コンパイラの関数ライブラリは、起動オプションファイルを使用してソースから再コンパイルされるので、利用可能なオプション命令を組み込んだライブラリを生成することができる。
【００６１】
（アセンブラカスタマイズ部の構成）
アセンブラカスタマイズ部４４は、利用可能なオプション命令とユーザ定義命令のニーモニックと命令形式の情報を組み込んでアセンブラを再構築する。このアセンブラカスタマイズ部４４によれば、利用可能な全ての命令の組み合わせからなるアセンブラプログラムについて、対応するオブジェクトコードを生成することができる。
【００６２】
（検証ベクトル生成部の構成）
検証ベクトル生成部４５は、設定ファイル生成部２内の各記憶部内で指定されたコンフィグレーションを参照して、指定されたシステムＬＳＩの構成を検証する検証ベクトルを生成する。ここで、システムＬＳＩの規模が大きい場合、限られた時間内で検証を終えるため、基本となる構成から変更された部分を重点的に検証することが必要となる。そこで、指定されたオプション命令や指定されたサイズのキャッシュ等を重点的に検証するように、検証ベクトルは、命令セット記述に基づいて、各命令に対応する検証ベクトル郡を生成することが望ましい（図１１（ｂ）は検証ベクトル生成用のユーザ定義命令ファイルの一例を示す）。
【００６３】
次に、本実施形態について、さらに具体的に説明する。
【００６４】
本実施形態の環境は、プロセッサの命令動作を記述したコンフィグレーション指定ファイル（アーキテクチャＤＢファイル）から、ＲＴＬ、コンパイラ、アセンブラ、シミュレータ、検証ベクトル、デバッガが自動的に構築される。このコンフィグレーション指定ファイルは、予め複数定義されているアーキテクチャの中の１つを指定する記述（アーキテクチャ型の指定）を含む。ここで言う、アーキテクチャ型の例としては、ＶＬＩＷモードで実行されること（特定のパイプ（ＶＬＩＷスロット）で実行されること）、ＤＳＰ命令を含む。このアーキテクチャ型の指定に基づいて、コンパイラの命令スケジューリング、及びＶＬＩＷの並列化機能が制御される。また、命令セット・シミュレータにおける性能見積値が調整させる。この環境を用いることにより、ユーザはアプリケーションに応じて、独自に命令を定義することができる。このユーザが定義した命令をユーザ定義命令と呼ぶ。また、高水準言語によりプログラムを作成し、そのプログラムの性能をシミュレータを用いて評価することが可能となる。
【００６５】
さらに、基本的な構成要素として、ユーザ定義命令に対して、機械命令関数の環境が自動的に構築される。機械命令関数を用いることにより、コンパイラの持つ機能、例えば命令スケジューリング、ＶＬＩＷの並列化、レジスタ割付等を使用することが可能となる。
【００６６】
以下、各実施形態において、具体的に説明する。
【００６７】
（第１の実施形態）
図１２は、本発明の第１の実施形態を示している。図１２は、図１に示すシステムＬＳＩ開発環境生成部３のプログラム構成を概略的に示しており、ほぼ図５に示す構成と同様である。
【００６８】
設定ファイル生成部２から供給されるアーキテクチャＤＢファイルとしてのコンフィグレーション指定ファイルは、コマンドインタープリタに供給される。コマンドインタープリタは、ユーザが指定するコマンドを解析し、解析したコマンドの内容に応じて、例えばＲＴＬ生成部、シミュレータ生成部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、デバッガ生成部の実行順序を制御する。実行方式としては、予め一連の処理を登録しておき、これら処理を連続して実行させるバッチ処理や、会話型処理等が選択可能とされている。ユーザが指定するコマンドは、例えばＧＵＩ（Graphical User Interface）、或はＣＵＩ（Character Base User Interface）等を用いて入力される。
【００６９】
図１３は、アーキテクチャＤＢファイルとしてのコンフィグレーション指定ファイルの一例を示している。コンフィグレーション指定ファイルには、例えばプロセッサの指定、レジスタ定義、命令定義等が記述可能とされている。プロセッサの指定には、例えばプロセッサの名前、及びタイプが記述可能とされている。図１３において、プロセッサは、アーキテクチャ型としてタイプ（2_WAY_VLIW）が記述されている。つまり、予め定義されているアーキテクチャのうち、２−ＷＡＹのＶＬＩＷを選択することを表している。
【００７０】
また、命令定義は、命令のニーモニック、ビットパターン、及び動作記述からなる。ここで、ビットパターンは、オペコード及びオペランドのビット情報を含む。
【００７１】
動作記述は、通常のプログラムの動作記述の他、ビット分割、ビット結合、サイン／ゼロ拡張、オーバーフロー動作などを記述することができる。また、ＳＷＡＰ動作等を実現するために必要な一時変数を使用することもできる。
【００７２】
尚、図１３には、一部のみを記載している。
【００７３】
第１の実施形態によれば、コマンドインタープリタにより、解析したコマンドの内容に応じて、ＲＴＬ生成部、シミュレータ生成部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、デバッガ生成部の実行順序が制御される。このため、ユーザは、開発環境の生成順序を任意に設定することができる。したがって、アプリケーションの開発順序に応じて任意に開発環境を生成することができる。
【００７４】
（第２の実施形態）
第２の実施形態は、前記レジスタ定義部に関する。
【００７５】
図１４は、図１３に示すレジスタ定義部の記載例を具体的に示している。レジスタ定義部には、汎用レジスタの個数、コンパイラのレジスタ使用法（関数の戻り値用レジスタ、引数用レジスタ、関数コールによりコールされた関数に引き継がれるレジスタ、関数コールによりコールされた関数に引き継がれないレジスタ、スタックポインタ用レジスタ、グローバルポインタ用レジスタ、タイニーボインタ用レジスタ、０レジスタ等）、汎用レジスタの別名定義、及び制御レジスタ定義を指定する。レジスタ使用法は省略可能であり、省略した場合、デフォルトの使用法が適用されたコンパイラが生成される。
【００７６】
図１４において、汎用レジスタの数ＧＰＲは１６個、コンパイラのレジスタの使い方として、関数の戻り値用レジスタＲＥＴはレジスタ０、関数引数用レジスタＡＲＧはレジスタ１、２、３、４、ゼロ専用レジスタＺＥＲＯはレジスタ１２、スタックポインタレジスタＳＰはレジスタ１５と定義されている。また、制御レジスタとしてリンクポインタＬＰが定義されている。
【００７７】
別名（alias）定義において、レジスタの別名を定義することができる。別名を必要としない場合は省略する。別名定義を利用することで、ユーザが直接アセンブリコードを記述する場合、自分の好みに合わせて記述することかできる。例えばスタックポインタＳＰに対応するレジスタがレジスタ１５である場合、レジスタ１５の別名としてＳＰを定義したとする。すると、アセンブリコード内でＳＰと記述すると、アセンブラはＳＰをレジスタ１５と認識することができる。
【００７８】
また、レジスタ数が少ない場合、一部の特殊使用レジスタ、例えばタイニーポインタ用レジスタＴＰ（図示せず）を汎用レジスタとして扱う場合がある。このとき、このレジスタをタイニーポインタとして使用する場合、“ＴＰ”と記述し、このレジスタを汎用レジスタとして使用する場合は、レジスタ番号を記述する。このように記述すればアセンブリコードにより、このレジスタがタイニーポインタとして使用されているのか、汎用レジスタとして使用されているかを区別することができる。したがって、保守性の高いアセンブリコードを構築できる。
【００７９】
上記コンフィグレーション指定ファイルに記述された情報に基づき、コンパイラ、アセンブラ、シミュレータ、デバッガ、検証ベクトル等がカスタマイズされる。すなわち、図１２に示すように、コンパイラカスタマイズ部にはレジスタの使用法及びレジスタの別名が供給され、アセンブラカスタマイズ部にはレジスタ名とレジスタの別名、ＲＴＬ生成部、シミュレータカスタマイズ部、検証ベクトル生成部、デバッガ生成部にはレジスタ名が渡される。
【００８０】
例えばコンパイラカスタマイズ部は、レジスタ定義部内で定義された汎用レジスタと制御レジスタの情報を元に、コンパイラを生成する。このコンパイラは各レジスタに直接アクセスすることが可能なレジスタ擬似変数の定義を有している。このレジスタ擬似変数を用いることにより、ユーザは高水準言語でプロセッサの持つ各レジスタに直接アクセスすることができる。
【００８１】
また、コンフィグレーション指定ファイルにおいて、アキュムレータ及びシフトアマウントレジスタを定義することも可能である。
【００８２】
図１５は、アキュムレータの定義の一例を示している。この例は、２５６ｂｉｔのアキュムレータが２個有ることを示している。
【００８３】
図１６は、シフトアマウントレジスタの定義の一例を示している。この例は、シフトアマウントレジスタが２本あることを示している。
【００８４】
上記第２の実施形態によれば、ユーザはアプリケーションに合わせてコンパイラのレジスタの使い方を変更することができる。例えば、アプリケーション内で頻繁に即値“０”を使う場合、常に“０”を値とするレジスタを用意することにより、即値“０”を作るための命令を生成する必要がなくなる。このため、コードサイズ、及び実行性能をともに向上することができる。
【００８５】
また、アプリケーション内で即値“０”をあまり使わない場合、常に“０”を値とするレジスタを用意しないことにより、他の用途のためのレジスタ数を増加できる。このため、レジスタ不足によるメモリアクセスの頻度を低減でき、コードサイズ及び実行性能をともに向上することができる。
【００８６】
さらに、レジスタ定義は、デフォルトを有し、ユーザがレジスタの使用法を省略した場合、デフォルトの使用法が設定される。このように、コンパイラのデフォルトの使用法を採用したとき、ユーザはアプリケーションの性能を計測することができる。この計測した性能を参考とすることにより，より良いレジスタ使用法を指定可能となる。
【００８７】
また、コンパイラはレジスタ擬似変数の定義を有している。このため、ユーザはレジスタ定義に記述したすべてのレジスタに高水準言語内でアクセスするためのレジスタ擬似変数を使用することが可能になる。このレジスタ擬似変数は、高水準言語内で制御レジスタ等の特別なレジスタにアクセスする場合に有益であり、コンパイラのインラインアセンブル機能とあわせて利用することも考えられる。したがって、全てのレジスタのレジスタ擬似変数を用意する機能は効果があると言える。
【００８８】
さらに、レジスタ定義部は別名定義を有し、ユーザの好みに合わせてレジスタ名を定義することができる。したがって、使い勝手がよく、保守性の高いアセンブリコードを構築できる。
【００８９】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。第３の実施形態はＶＬＩＷに関する。
【００９０】
ＶＬＩＷに関する命令の動作定義は、コンフィグレーション指定ファイル内の命令定義部で行なう。命令定義部には命令の仕様、オペランド（ＯＰ）コード、及び動作内容を記述する。命令の仕様、及びＯＰコードの情報に基づき、アセンブラの動作を定義するアセンブラ定義ファイルを生成する。また、動作内容の定義に基づき、命令の仕様定義に記述されていない命令を動作させる際、データの読み込みや書き込みが必要なレジスタの情報を集め、機械命令関数定義に適用する。これにより、コンパイラはより良いレジスタ割付と命令スケジューリングが可能になる。
【００９１】
コンフィグレーション指定ファイルには、コプロセッサに関しても定義することができる。すなわち、図７に示すプロセッサ２のように、例えばＲＩＳＣコアのようなプロセッサコアに対して、コプロセッサが接続可能とされている。このコプロセッサとしては、例えばＶＬＩＷ（Very Long Instruction Word）モード、ＤＳＰ（Digital Signal Processor）がある。
【００９２】
図１７は、コプロセッサ定義の一例を示している。コア命令と区別するため、コプロセッサ定義であることを示す情報をアーキテクチャ型として持っている。すなわち、コプロセッサの名前、及びコプロセッサのタイプが記述される。この記述の後にコプロセッサ定義の関連情報として、レジスタ定義と命令定義を定義する。コプロセッサ定義の関連情報は、上記レジスタ定義と命令定義のほかに、ＶＬＩＷモードの実装の有無（無し、２並列、３並列）、演算データ幅定義（コプロセッサ演算途中で保証されるデータの幅）を持っている。
【００９３】
ＶＬＩＷモードが実装される場合、コプロセッサ命令がＶＬＩＷモードのスロットのどこに入るべきかを表す情報（図１７のＶ３）が命令セット定義に含まれる。このスロットの定義は、プロセッサの使用に依存して決定され、命令を並列化する際、どのスロットに入る命令であるかを示す情報となる。
【００９４】
この情報を元にコプロセッサ命令に関する前記機械命令関数定義ファイルが生成される。前記コンパイラカスタマイズ部は、この機械命令関数定義ファイルに基づき、ユーザが定義したコプロセッサ命令を並列化することができる。また、アセンブラカスタマイズ部は、この機械命令関数定義ファイルに基づき、並列化が使用上正しいかどうかをチェックできるようになる。
【００９５】
スロットの情報は、検証ベクトル生成部に供給される。検証ベクトル生成部は、スロットの情報に基づき、並列化した命令に対するプロセッサの動作を検証するために必要な検証ベクトルを生成する。
【００９６】
演算定義幅情報は、命令の動作定義内に一時変数がある場合、あるいは符号拡張演算がある場合、その一時変数のビット幅と符号拡張後のビット幅をシミュレータが何ビットとして扱うかの情報である。この幅情報は、コプロセッサのレジスタ定義部内で定義されたレジスタのビット幅に依存する。例えば、コプロセッサのレジスタの演算幅が６４ビットと指定された場合、演算定義幅情報は最大で６４ビットまで指定することができるようになる。この演算定義幅情報はシミュレータカスタマイズ部に供給され、シミュレータに反映される。
【００９７】
上記第３の実施形態によれば、ユーザは定義した全ての命令に対する機械命令関数の定義ファイルを持つことができる。このため、機械命令関数を使用することにより、ユーザはコンパイラのレジスタ割付、命令スケジューリング、ＶＬＩＷの並列化機能を得ることができる。したがって、アプリケーションの開発上大変有益である。
【００９８】
また、スロット定義は、命令を並列化する際、どのスロットに入る命令であるかを示す情報を有している。このため、機械命令関数のカスタマイズ、アセンブラのカスタマイズが可能となり、ユーザのアプリケーション開発を促進できる。
【００９９】
さらに、命令を並列化する際に使うスロット定義の情報を機械命令関数定義に反映させている。このため、ＶＬＩＷモードが実装されている場合、ユーザ定義のコプロセッサ命令を並列化する際、どのスロットに入る命令かを示す情報が機械命令関数定義に供給される。このため、コンパイラは機械命令関数に対して正しくＶＬＩＷの並列化を行なうことができる。機械命令関数は高水準言語内で使用することができるため、ユーザのアプリケーションの開発を促進できる。
【０１００】
また、演算定義幅情報は、シミュレータに反映される。このため、シミュレータは命令の動作をプロセッサの仕様にあわせることができる。したがって、シミュレータの動作と実際のプロセッサの動作を一致させることができる。
【０１０１】
さらに、スロット情報はアセンブラに反映される。このため、アセンブラにおいて、ユーザが直接手で記述したアセンブリコード内における命令の並列化部分が、仕様通りであるかどうかをチェックすることができる。
【０１０２】
また、スロット情報は検証ベクトルに反映される。このため、並列化した命令に対するプロセッサの動作を検証するために必要な検証ベクトルを得ることができる。
【０１０３】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。第４の実施形態は、ＤＳＰに関する。
【０１０４】
ＤＳＰをユーザ定義モジュールとして組み込むための機能として、コンフィグレーション指定ファイルは、他のモジュールと区別するための識別子を持っている。この識別子内にＤＳＰ関連の定義が記述される。ＤＳＰの命令定義では、任意のビット幅の命令を定義することができる。また、レジスタ定義では任意のビット幅のレジスタを定義することができる。
【０１０５】
図１８は、ＤＳＰモジュール用コンフィグレーション指定ファイルの例を示している。先頭にDSP_NAMEというアーキテクチャ区別用識別子が記述されている。また、レジスタ定義部<dsp_register>にレジスタ幅定義REG_WIDTHが付加されている。この例の場合、レジスタ幅が２０bitsに設定されている。また、命令定義部<dsp_ISA>では２０bitsの命令が定義されている。
【０１０６】
さらに、ＤＳＰモジュール用コンフィグレーション指定ファイルは、図示せぬ固定小数点ライブラリの小数点の位置を指定する情報を記述可能とされている。この情報は、コンパイラカスタマイズ部に供給され、コンパイラの固定小数点ライブラリに反映される。
【０１０７】
また、コンパイラのＤＳＰに特化した機能を記述可能とされている。この機能は、例えば複素データ型、Ｘ／Ｙメモリ、循環バッファ、固定小数点データ型、ビット反転、異種レジスタセットの対応のうちの少なくとも１つである。
【０１０８】
上記第４の実施形態によれば、コンフィグレーション指定ファイルは、プロセッサがＤＳＰ型であり、ハードウェアの指定がＤＳＰ命令形式である記述を含んでいる。さらに、ＤＳＰ命令形式において、命令のビット幅が設定可能とされている。このため、ユーザはアプリケーションの用途に合わせてフレキシブルに命令のビット幅を設定することができる。したがって、ユーザは要求性能にあったＤＳＰを設定でき、不要なコストを削減することができる。
【０１０９】
また、ＤＳＰ命令形式において、レジスタ幅が設定可能とされている。このため、ユーザはアプリケーションの用途に合わせて，フレキシブルにレジスタのビット幅を設定することができる。したがって、ユーザは要求性能にあったＤＳＰを設定でき、不要なコストを削減することができる。
【０１１０】
さらに、コンパイラの固定小数点ライブラリは，一般に固定少数点の位置にフレキシブルに対応する。このため、性能が低下してしまう。しかし、本実施形態において、固定小数点ライブラリの小数点の位置を指定する情報は、コンパイラの固定小数点ライブラリに反映されるため、性能低下を防ぐことができる。
【０１１１】
また、ユーザはコンパイラのＤＳＰ向けに特化した機能を仕様することができる。このため、アプリケーションの開発期間を短縮できるとともに、アプリケーションの性能を向上できる。
【０１１２】
（第５の実施形態）
第５の実施形態は、ＳＩＭＤ（Single Instruction Multiple Data）に関する。第５の実施形態は、ＳＩＭＤの複数データの処理を１つにまとめて記述し、この記述からシミュレータを生成したり、マルチメディア・データ型への対応を可能とする。
【０１１３】
すなわち、命令がＳＩＭＤデータを扱うことができる場合、コンフィグレーション指定ファイル内の命令定義部にＳＩＭＤデータを扱うことを示す情報が記述される。この情報としては、例えば命令が扱うデータ長と、各命令オペランドのデータ長である。この情報は、ＳＩＭＤデータ幅を指定し、機械命令関数定義と高水準言語のＳＩＭＤデータ用拡張宣言子の生成に適用される。これにより、ユーザはＳＩＭＤデータを容易に扱うことが可能になる。次に、記述例を示す。
【０１１４】
CPPACK.B: CRo,CRq,CRp:
…
Cop:”SIMD=B,Pack=B:H:H”:
…
上記例は、“CPPACK.B”命令のデータ長が８ビットであることを示している。すなわち、レジスタが６４ビットである場合、８並列であること、このレジスタ幅はレジスタ定義部内のコプロセッサレジスタ幅と同じであることを示している。“B”の他に“H”（half word 、すなわち、１６ビット）、“W”（word、すなわち、３２ビット）も指定可能とされている。さらに、“U”の有無に応じて符号無しと、符号付きのデータを区別する。例えば“BU”と記述した場合、８ビットの符号無しデータを示す。
【０１１５】
また、“Pack=B:H:H”という指定により、“CPPACK.B”命令のオペランド“CRo,CRq,CRp”がそれぞれ符号付き８ビット、符号付き１６ビット、符号付き１６ビットのデータであることを示している。
【０１１６】
図１９は、ＳＩＭＤ命令における“CPADD.H”の命令定義の例を示している。この命令が定義されるコプロセッサのコプロセッサレジスタが例えば６４ビット幅であるとする。この命令のデータ長は“SIMD=H”すなわち、符号付き１６ビットである。換言すれば、この命令は、１６ビット幅のデータを４並列で計算する。また、“PACK=H,H,H”により、この命令のオペランド“CRl,CRm,CRn”がそれぞれ符号付き１６ビットのデータであることを示している。さらに、動作定義により、この命令が符号付き１６ビットのデータの加算を４並列で行なうことを示している。これらの情報は、コンパイラカスタマイズ部、及びシミュレータカスタマイズ部に供給される。コンパイラカスタマイズ部では、これらの情報がコンパイラの高水準言語用拡張宣言子の生成、機械命令関数の生成、レジスタ割付、命令スケジューリング機能へ反映される。また、シミュレータカスタマイズ部では、これらの情報がシミュレートの動作、シミュレート結果の出力機能に反映される。
【０１１７】
図１９に示す例は、符号付き１６ビットのデータの加算を４並列で行なうＳＩＭＤ命令の動作記述を４行で示している。しかし、この動作記述を１行で記述することが可能である。
【０１１８】
以下に、記述の例を示す。
【０１１９】
CRl.h=CRm.h+CRn.h;          …（１）
上記例（１）において、“.h”は“PACK=H,H,H”に対応した記述である。
【０１２０】
図２０は、上記１行による記述例を示している。
【０１２１】
“PACK”の記述が例えば“PACK=HU,B,BU”である場合、上記例（１）は次のように記述される。
【０１２２】
CRl.hu=CRm.b+CRn.bu;          …（２）
図２１は、上記１行による記述例を示している。
【０１２３】
さらに、指標（添え字）“i”を用いることにより、次に示すようなデータの並びが一致していない記述を簡略化できる。
【０１２４】
CRl[15:0] = CRm[63:48] + CRn[63:48];
CRl[31:16] = CRm[47:32] + CRn[47:32];
CRl[47:32] = CRm[31:16] + CRn[31:16];
CRl[63:48] = CRm[15:0] + CRn[15:0];
簡略化した記述例を次に示す。
【０１２５】
CRl[i]=CRm[3-i]+CR[3-i];          …（３）
例（３）の場合、指標“i”は、命令のデータ幅とコプロセッサレジスタのはばに依存する値をとる。“SIMD=H”、コプロセッサレジスタのデータ幅が６４ビットの場合、指標“i”の値は０〜３となる。
【０１２６】
図２２は、上記指標を用いた記述例を示している。
【０１２７】
上記第５の実施形態によれば、コンフィグレーション指定ファイルの命令定義部にＳＩＭＤ命令に関する情報を記述している。このため、コンパレータカスタマイズ部は、ＳＩＭＤ命令に関する情報に基づき、ＳＩＭＤ命令を生成するための機械命令関数の定義ファイルを生成できる。機械命令関数は高水準言語内で使用することができるため、ユーザのアプリケーション開発を促進できる。
【０１２８】
また、高水準言語内でＳＩＭＤデータを宣言するための特殊な修飾詞を使用できる。このため、ユーザのアプリケーション開発を促進できる。
【０１２９】
さらに、シミュレータカスタマイズ部は、入力されたＳＩＭＤ命令に関する情報に基づき、シミュレータの動作をカスタマイズする。このため、ＳＩＭＤ命令に対して正しく動作するシミュレータを生成することができる。
【０１３０】
また、シミュレータカスタマイズ部は、入力されたＳＩＭＤ命令に関する情報に基づき、シミュレータの結果出力機能をカスタマイズする。このため、ＳＩＭＤ命令に対して解析し易いシミュレータの出力結果を生成することができる。
【０１３１】
さらに、ＳＩＭＤ命令の動作記述は、複数命令をまとめて１命令で記述したり、指標を用いて記述することができる。このため、ＳＩＭＤ命令の命令動作の記述を簡略化することができる。したがって、ＳＩＭＤ命令の命令動作の記述を、ユーザにとって、直感的に分かり易い記述とすることができる。
【０１３２】
（第６の実施形態）
第６の実施形態は、命令ライブラリに関する。
【０１３３】
ユーザは、コンフィグレーション指定ファイルの仕様に合った命令を追加することが可能である。本システムＬＳ１開発環境生成システムは、定義済みの命令を保持し、ライブラリ化している。これを以下、命令ライブラリと称す。この命令ライブラリは、命令の種類毎にグループ化されている。ユーザは命令ライブラリから必要な命令を選択することにより、アプリケーションに特化した開発環境を生成することができる。
【０１３４】
図２３は、ＳＩＭＤ命令ライブラリの例を示している。ＳＩＭＤ命令ライブラリにおけるこれら命令はオプションであり、これに対するコンフィグレーション指定ファイルと、ＲＴＬは、基本命令とは別に予め用意されている。ユーザは、これら命令の全部、あるいは特定のデータ型の命令を選んで使用することができる。
【０１３５】
図２３において、“.xx”には、命令が用いるデータ型としてニーモニック“UB,B,UH,H,UW,W”のいずれかが記述される。この記述は、ユーザにより選択可能とされている。また、図２３に示すように、ニーモニックの記述を省略することも可能である。ニーモニックが“UB,B,UH,H,UW,W”のいずれかに固定されている場合、例えば次のように明示することも可能である。この例はニーモニックが“H”に固定されている。
【０１３６】
CPADD.H //2-operand 32bit addition (A<-A+B)
上記のように記述された場合でも、ニーモニックの記述を変更すれば、その変更に対応することが可能である。
【０１３７】
図２４は、命令ライブラリからコンパイラ等のツールを生成する方法を示している。ユーザが命令ライブラリの命令を使用する場合、例えば複数の命令ライブラリＡＤＢ１、ＡＤＢ２から該当する中間ファイルＩＦ１、ＩＦ２が生成される。この中間ファイルＩＦ１、ＩＦ２は、基本命令の中間ファイルＩＦ３とマージされる。このマージされた中間ファイルをコンパイラ等に組み込むことにより、全体の環境が構築される。
【０１３８】
上記例は、各命令ライブラリからそれぞれ中間ファイルを生成し、これら中間ファイルをマージした。しかし、中間ファイルの生成は省略可能であり、各命令ライブラリから選択した必要な命令を直接マージしてもよい。
【０１３９】
また、指定された命令ライブラリの命令の機能を失うことなく、ユーザが要求するアプリケーションに対して最適なスケジューリング性能を得ることができるよう、命令にタイプを割当てる機能を設定しても良い。
【０１４０】
さらに、例えばコアプロセッサとコプロセッサとの間のデータ転送命令はコプロセッサを定義する際、必ず必要となる。このように、メインとなる命令に必ず付随する命令を自動的にマージするように設定すれば、コンパイラが高水準言語のソースレベルから命令ライブラリの命令を効率よく生成できる。このため、命令ライブラリ内に予約命令を記述してもよい。
【０１４１】
さらに、上記例は、マージしたファイルをコンパイラに反映させる場合について説明した。しかし、これに限らず、マージしたファイルをＲＴＬ生成部に供給することにより、指定された命令ライブラリの命令の機能を失うことなく、サイズ優先でＲＴＬテンプレートを生成することも可能である。このような構成とすることにより、アプリケーションの性能を維持して、生成されるＲＴＬのサイズを最小とすることができる。したがって、チップサイズの増大を抑えることができ、コストを低減できる。
【０１４２】
また、指定された命令ライブラリの命令の機能を失うことなく、性能優先でＲＴＬテンプレートを生成することも可能である。このような構成とすることにより、アプリケーションのレイテンシを小さくできるなど、性能を向上することができる。
【０１４３】
上記第６の実施形態によれば、命令ライブラリに記述された命令が扱うデータ型をアプリケーションに対応して設定可能とされている。このため、アプリケーションに適した命令を有するプロセッサを開発することが可能となる。
【０１４４】
また、命令ライブラリに記述された命令のデータ型が決められている場合においても、データ型を変更することができる。このため、アプリケーションに適した命令に変更することが可能となる。
【０１４５】
さらに、複数の命令ライブラリから必要な命令を選択し、これら選択した命令をマージすることにより、一つのプロセッサの設定が可能となる。このため、よりアプリケーションの性質に適したプロセッサの生成が可能となる。
【０１４６】
（第７の実施形態）
第７の実施形態は、コンフィグレーション指定ファイル内の高位な動作記述について説明する。
【０１４７】
コンフィグレーション指定ファイル内の高位な動作記述は、ほぼＣ言語の「文」に相当する記述が可能である。しかし、“!!”（ビット連結）、“［］”（部分ビット切り出し）、論理演算子がＣ言語と異なる。さらに、本実施形態の高位な動作記述は、式の左辺にビット連結が書けるという特徴を有している。また、本実施形態の高位な動作記述は、クロックの概念は含まず、命令実行前のレジスタやメモリの値と、命令実行後のレジスタやメモリの値の関係を記述したものである。
【０１４８】
以下に、本実施形態における高位な動作記述の相違や制約を示す。
【０１４９】
・データ型は存在しない。
【０１５０】
・使える変数の規則がある。
【０１５１】
・ビット定数が書ける。
【０１５２】
・!!をビット連結を示す。
【０１５３】
・［msb:lsb]は部分ビット切り出しを示す。
【０１５４】
・and,or,xor,nor,nandはビット論理演算子を示す。
【０１５５】
・(Signed),(Unsigned)はキャスト演算子を示す。
【０１５６】
・ストア演算ではMem Word()などの関数が左辺に書ける。
【０１５７】
（変数として使えるもの）
・オペランド変数
・レジスタ変数
・一時変数
（オペランド変数）
オペランド変数は、命令定義のオペランド（＜オペランド＞）に記述されるものであり、次のような記述ができる。
【０１５８】
＜レジスタ指定＞
＜（abs)型＞＜(abs）型＞
＜disp型＞＜disp()型＞
＜cpx＞（実数部）（虚数部）      …複素数
＜int＞                          …整数
＜flt＞                          …浮動小数点
＜即値型＞
これらは、直前のオペランドに記述された命令の仕様と、レジスタのパラメータを表すアルファベット、及び指定子のビット幅が一致していなければならない。
【０１５９】
（レジスタ変数）
レジスタ変数はオペランド変数以外のレジスタであり、次のような記述が可能である。
【０１６０】
・特定表記（名前指定、数値でのインデックス表記）
例：ＰＣ，ＳＲＲＯ，ＣＣＲ３
・配列指定
例：識別文字列＋‘［’式‘］’
例：CTR[Imm4]
注１：識別文字列＋インデックス＋‘［’数値‘］’は、部分ビット切り出しとなる。
【０１６１】
例：CTRn[4]は部分ビット。CTR[4]はCTR4と同じ。CTR[Rn][3:0]なども記述可能。
【０１６２】
注２：不定表記（パラメータによるインデックス表記、Rmなど）はオペランド変数に分類する。オペランド変数以外の不定表記はエラーとする。
【０１６３】
（一時変数）
一時変数は、オペランド変数、レジスタ変数でない変数を一時変数という。一時変数の名前には次のものが使える。
【０１６４】
・Ｃ言語の変数名の名前付け規則に合うもの。
【０１６５】
・定義済みレジスタ名に重複しないもの。
【０１６６】
・オペランド変数の各指定子のprefixで始まらないもの。
【０１６７】
abs-,imm-,Imm-,disp-,code-,target-で始まらないもの。
【０１６８】
（定数）：
Verilog と同じく、ss…s’fnn…nとする。ss…sビット数を示す。ビット数が省略された場合は３２bitとする。ｆは基数。D:１０進、h:１６進、o:８進、b:２進、これらの記述が省略された場合は１０進とする。nn…nは定数値。定数値がビット数に足りないときは上位ビットを０で補う。定数値がビット数より大い場合、ビット数を無視する。nn…nの中で区切り文字‘＿’を使用することはできない。基数および定数値には大文字のアルファベットも使用できる。
【０１６９】
例：
3’b001：３ビットの２進数
32’Hff：３２ビットの１６進数（上位ビットは０拡張される）
‘o1234：３２ビットの１６進数（ビット数を省略、32‘o1234と同じ）
1：３２ビットの１０進数（ビット数及び基数を省略、32‘d1と同じ）
10’5：１０ビットの１０進数（基数を省略、10’d5と同じ）
（補足）
次のようなことが記述できる。
【０１７０】
a=b=c+d;
・関数呼出も書ける。
【０１７１】
・左辺に関数呼出が書ける。
【０１７２】
MemWord(Rn)=a;
CTR[Imm4]=b;
・連接演算子
!! ：  ビット連接
・部分ビット切り出し
[msb:lsb]で指定
・予約関数名
メモリアクセス関数
MemWord
MemDoubleWord
MemByte
MemHWord
MemDefaultSize
ControlBus
・ビット拡張関数
SignExtension
ZeroExtension
・条件判定関数
Overflow
（左辺連結）
・左辺にビット連結を書く場合は、全体を（）で括る。
【０１７３】
(HI!!LO)=Rn*Rm;
（ＳＩＭＤ記述）
第５の実施形態を参照。
【０１７４】
（エラーチェック機能）
エラーチェック機能の代表的なものを示す。
【０１７５】
（１）オペコードの重複チェック
（２）命令形式毎に定まっている、レジスタ・オペランドのRO/RWと動作記述の整合性
（３）SIMD記述、Pack記述と動作記述の整合性：SIMD,Packで指定したデータ幅に相当する動作記述がない場合、ワーニングを出力する。具体的には、SIMD/Packで指定されたデータ幅毎に動作記述を調べ、それぞれ以下のビット幅の部分ビット参照／代入が存在しない場合にワーニングを出す。データ幅とビット幅の関係を以下に示す。
【０１７６】
データ幅        ビット幅（msb-lsb+1）
B,UB            ８
H,UH            １６
W,UW            ３２
A               ８，１６，３２
（４）値未定義の一時変数の参照
動作記述中で、一時変数が最初に登場した式が右辺にある場合、ワー二ングを出力する。
【０１７７】
（５）値を定義した一時変数が参照されていない場合、ワー二ングを出力する。
【０１７８】
図２５は、コンフィグレーション指定ファイル内の命令セット定義部の例を示している。この例は、ＬＷ命令とＳＷＡＰ命令の定義を示している。ＬＷ命令の動作記述（｛｝で囲まれた部分）において、“Rn”はレジスタ指定のオペランド変数、“disp8”はdisp型のオペランド変数、“SP”はレジスタ変数である。“ZeroExtension”及び“MemWord”はそれぞれビット拡張とメモリアクセスを行なう予約関数である。また，ＳＷＡＰ命令における“tmp1”と“tmp2”は一時変数である。
【０１７９】
上記第７の実施形態によれば、コンフィグレーション指定ファイル内の命令動作記述に高位な記述が可能とされている。このため、新たな命令の追加が容易であり、且つ既存の命令を容易に解析できる。したがって、命令の改良、保守を容易に行なうことができ、ユーザのアプリケーション開発を促進できる。
【０１８０】
（第８の実施形態）
第８の実施形態は、パイプライン記述に関する。
【０１８１】
下記のパイプライン記述から、コンパイラのスケジューリングのための情報、およびハザード検証ベクトルを自動生成のための情報が生成される。
【０１８２】
パイプライン記述は、「パイプラインタイプ定義」及び「ハザード情報」の２つを含む。
【０１８３】
（１）パイプラインタイプ定義
パイプラインタイプ定義に関する書式は以下の通りである。
【０１８４】
ＰＴＹＰＥ：＜タイプ名＞：＜リソース＞，＜操作＞，＜タイミング＞，＜引数＞［：＜リソース＞，＜操作＞，＜タイミング＞，＜引数＞：．．．．］；
各ＰＴＹＰＥ行には、“＜リソース＞，＜操作＞，＜タイミング＞，＜引数＞”の四つの変数が最低１つ必要である。四つの変数は、“：”で区切って任意の数だけ続けて記述できる。
【０１８５】
ＰＴＹＰＥ行における四つの変数の意味は次の通りである。すなわち、リソースはレジスタなどを示し、操作はリード／ライト等を示し、タイミングはパイプラインのステージを示している。引数は、オペランド（レジスタ等）に対する指標である。つまり、ＰＴＹＰＥ行はリソースに対する、操作が、パイプラインのステージにて生じることを表している。
【０１８６】
図２６は、ＰＴＹＰＥ行の記述例を示している。
【０１８７】
（２）ハザード情報
ハザード情報の書式は以下の通りである。
【０１８８】
ＨＡＺＡＲＤ：＜リソース＞：＜動作１＞（タイプ名１），＜動作２＞（タイプ名２）＝＜サイクル数＞；
リソースにおいて、タイプ１の先行命令が動作１を行い、タイプ２の後続の命令が動作２を行った場合のストール数を表す。
【０１８９】
図２７は、ハザード情報の記述例を示している。このハザード情報の場合、あるコプロセッサの汎用レジスタにパイプラインタイプ“pt1”の命令で書き込みが行なわれた後、パイプラインタイプ“pt2”の命令で同じレジスタを読み出す場合、２サイクル待たなければならない。
【０１９０】
ハザード情報と、各命令に指定されたパイプライン定義により、ハザードが発生する命令列をシミュレータ上で実行した際のストール数が決まる。
【０１９１】
例えば、図２８は、命令“cinst1”がパイプラインタイプ“pt1”、 命令“cinst1”がパイプラインタイプ“pt2”である場合の動作を示している。
【０１９２】
図２７に示すハザード情報の場合、あるコプロセッサの汎用レジスタにパイプラインタイプ“pt1”の命令で書き込みが行なわれた後、パイプラインタイプ“pt2”の命令で同じレジスタを読み出す場合、２サイクル待たなければならない。図２８に示す例の場合、ステージ“ｔ”において命令“cinst1”でコプロセッサの汎用レジスタ“$cr1”に書き込みが行なわれた後、１サイクル待った後、命令“cinst2”で同じレジスタの読み出しを行なおうとしている。このような場合、シミュレータで命令“cinst2”は１サイクルストールすることになる。
【０１９３】
（コンパイラのためのスケジューリング情報）
図２９は、コンパイラのためのスケジューリング情報の例を示す。
【０１９４】
図２９に示す例は、ＰＴＹＰＥ１の命令の直後のＰＴＹＰＥ２の命令は３サイクルストールし、ＰＴＹＰＥ２の命令の直後のＰＴＹＰＥ３の命令は４サイクルストールすることを示している。この情報から、コンパイラは、極力ＰＴＹＰＥ１とＰＴＹＰＥ２の間に３命令空くようにスケジューリングし、ＰＴＹＰＥ１とＰＴＹＰＥ３の間に４命令空くようにスケジューリングする。
【０１９５】
（ハザード検証ベクトル生成のためのパイプライン動作記述）
図３０は、パイプライン動作記述の例を示している。
【０１９６】
この動作記述は、パイプライン定義と明示的なストールの指定からなる。この記述及びこれからの検証ベクトルの生成の詳細については、省略する。
【０１９７】
上記第８の実施形態によれば、コンフィグレーション指定ファイルは、パイプライン定義の記述を含めることができる。このため、パイプラインを構築することができる。また、パイプライン定義には、パイプラインタイプの定義、及びハザード情報を含めることができる。
【０１９８】
また、コンフィグレーション指定ファイルは、パイプラインに関してコンパイラのためのスケジューリング情報を含めることができる。このため、コンパイラはスケジューリング情報に基づきパイプラインの動作をスケジューリングできる。
【０１９９】
さらに、コンフィグレーション指定ファイルは、パイプラインに関してハザード検証ベクトル生成のための記述を含めることができる。このため、パイプラインのハザードを確実に検証することが可能となる。
【０２００】
（第９の実施形態）
第９の実施形態は、ＲＴＬの合成に関する。
【０２０１】
図３１は、図６に示すＲＴＬ生成部におけるユーザ定義モジュールの高位合成を示している。すなわち、図３１に示すユーザカスタム命令の高位合成は、通常のハードウェアリソース割り当てとスケジューリングの他、コア部及び制御パスとメモリとのインターフェース（Ｉ／Ｆ）の整合及び生成を行なう。
【０２０２】
図３２は、ユーザカスタム命令の合成における、インターフェースの整合方法を示している。図３１に示す高位合成により命令本体のＲＴＬが生成される。この場合、命令本体部分とコア部との間に別途インターフェース回路を生成する。コア部とインターフェース回路間の接続は、入出力のレジスタ・フィールドの信号、１６ｂｉｔのオペランド信号、ストール信号により表現される。命令本体は、このインターフェース回路から呼び出される形式で記述される。命令本体とインターフェース回路の間の接続は、ｍｏｄｕｌｅの引数で表現される。
【０２０３】
上記第９の実施形態によれば、通常のハードウェアリソース割り当てとスケジューリング、さらに、コア部及び制御パスとメモリとのインターフェースを整合することにより、ユーザカスタム命令の高位合成を行なうことができる。
【０２０４】
（第１０の実施形態）
第１０の実施形態は、検証ベクトル生成に関する。
【０２０５】
ここでは、前述したコンフィグレーション指定ファイルからアーキテクチャ検証プログラム（ＡＶＰ：Architecture Verification Program）の生成用データを生成する方法について説明する。
【０２０６】
（ＡＶＰ生成に必要なデータ）
ここでは、特にプロセッサの命令単体の機能を検証するための、検証プログラムをＡＶＰと呼ぶ。このＡＶＰ生成するためにＩＳＡ情報を使用する。ＩＳＡ情報には以下に述べるデータが必要である。
【０２０７】
・ニーモニック
・オペランド並び
・オペランド情報
・  オペランドの種類（レジスタ／即値）
・  オペランドのビット幅
・  オペランドがレジスタの場合、参照／代入の有無
（ＩＳＡ情報の生成方法）
ＩＳＡ情報をアーキテクチャデータベースファイルから生成する方法について説明する。レジスタ定義部にはレジスタ種類毎にレジスタの数、レジスタのビット幅等が定義されている。命令定義部は、ニーモニック、オペランド並び、及び命令動作定義部等から構成されている。命令動作定義部は、前記オペランド並びに表れるオペランド、レジスタ並びには現れないレジスタ、一時変数、定数等を使用した文を記述することにより命令動作を定義する。
【０２０８】
図３３は、例えば命令ＣＰＸＯＲ３に関する命令定義を示している。命令ＣＰＸＯＲ３は、レジスタオペランドとして、ＣＲｏ，ＣＲｑ，ＣＲｐを記述する必要があることを表している。レジスタ名はレジスタの種類によってその接頭語が違っており、“ＣＲ”で始まるレジスタはコプロセッサの汎用レジスタを表す。‘｛’と‘｝’で囲われた部分は命令動作記述部である。この例の場合、２つのコプロセッサ汎用レジスタＣＲｐ，ＣＲｑのビット毎の排他的論理和を計算した結果をＣＲｏへ代入する命令であることが判る。
【０２０９】
前述した通り、命令定義部はニーモニックの情報及びオペランド並びの情報を有している。これらの情報は、直接ＩＳＡ情報のニーモニックの情報及びオペランド並びの情報となる。オペランド並びには、オペランド名のリストが記される。オペランド名のうち、Ｉｍｍ＊，Ｉｍｍ＊は即値であり、それ以外はレジスタである。この規則を使用することにより、各オペランドの種類をオペランド並びから取得することができる。
【０２１０】
各オペランドの情報は以下のように取得する。オペランドがレジスタの場合、レジスタ定義情報からレジスタのビット幅を取得する。オペランドが即値の場合、オペランドコードから即値のビット幅を取得する。具体的には、オペランドコードの文字列のうち、‘ｉ’の個数が即値のビット幅となる。
【０２１１】
オペランドがレジスタの場合、オペランドの参照／代入の有無は、命令動作記述の構文を解析することにより取得する。
【０２１２】
上記方法をプログラムで実装することにより、図３３に示す命令定義部、及び図１４に示すレジスタ情報から、自動的に図３４に示すＩＳＡ情報を作成することができる。
【０２１３】
（データの使用方法）
ＩＳＡ情報は、アセンブラにより記述される検証プログラムを生成するために使用される。まず、ニーモニック及びオペランド並びは、検証プログラム中の検査対象命令コードを生成する目的で使用する。各オペランドのオペランド情報は下記の目的のために使用される。
【０２１４】
オペランドが即値オペランドの場合、ビット幅の情報を用いて検査用の即値データを生成する。オペランドがレジスタオペランドでありそのレジスタの値が参照される場合、ビット幅の情報などからレジスタに与える値を生成する。この生成した値からレジスタに設定するコードを生成する。値を生成する方法は幾つか有る。
【０２１５】
第１の方法は、設定可能なビット幅（符号を含めた数値）の中でランダムに値を生成する方法。
【０２１６】
第２の方法は、入力の設定可能な領域（２入力なら２次元平面上の領域）を求め、その領域を順次細分化する。この細分化された領域の重心座標を入力値とする方法。
【０２１７】
第２の方法により、領域の点を確実に選択することができる。また境界上および境界付近の点を重点的に入力データとして生成することにより、境界条件の検査をすることが可能となる。
【０２１８】
ＩＳＡ情報から個々の命令動作を検証するための検証プログラムを生成する方法の詳細に関しては、説明の都合上省略する。
【０２１９】
オペランドがレジスタオペランドであり、そのレジスタへ値が代入される場合、レジスタに代入された命令の演算結果をログファイルへ出力するコードを生成する。図３４に示すＩＳＡ情報から、図３５に示す検証プログラムを自動生成する。
【０２２０】
上記第１０の実施形態によれば、検証ベクトル生成部は、前記コンフィグレーション指定ファイルの動作命令からプロセッサの検証ベクトルを生成することができる。このため、プロセッサの動作を確実に検証することが可能となり、ユーザのＬＳＩ開発に寄与できる。
【０２２１】
（第１１の実施形態）
第１１の実施形態は、シミュレータの生成に関する。
【０２２２】
ここでは、コンフィグレーション指定ファイルからシミュレータを生成する方法について説明する。
【０２２３】
図３６は、前記シミュレータ生成部の動作を概略的に示している。シミュレータ生成部は、コンフィグレーション指定ファイルと予め用意したＣ＋＋モデルテンプレートに基づき、シミュレータを生成する。すなわち、シミュレータ生成部は、Ｃ＋＋モデルテンプレートに必要な情報を組み込むことにより、シミュレータのメイン部、シミュレータのデコードテーブル及び命令定義部を生成する。メイン部は、コンフィグレーション指定ファイルのヘッダ部とレジスタ宣言部に基づき生成される。デコードテーブルと命令定義部は、コンフィグレーション指定ファイルのＩＳＡ部に基づき生成される。
【０２２４】
ここで、デコードテーブルとは、プログラム中のコード部のビットパターンを、命令列に変換するための変換テーブルである。また、Ｃ＋＋モデルテンプレートとは、シミュレータのＣ＋＋ソースコードを生成するためのテンプレートであり、シミュレータ生成部が必要な情報をこのテンプレートに代入することにより、Ｃ＋＋モデルが生成される。
【０２２５】
メイン部には、利用可能な命令フォーマットや、汎用レジスタや制御レジスタの数及びサイズ、命令間ハザードというようなシミュレータ全体に関する情報が格納されている。
【０２２６】
デコードテーブルは、コンフィグレーション指定ファイルのＩＳＡ部の各命令定義のオペコード部を格納している。シミュレー夕における命令デコードは、このテーブルのオペレーションコード部分と、命令のオペレーションコード部とを比較し、命令を識別することにより生成される。
【０２２７】
命令定義部は、主にコンフィグレーション指定ファイルの動作記述をこれと等価な動作のＣ＋＋記述に変換することにより生成される。また、命令定義部には、パイプラインのタイプ、トレース出力のフォーマット、即値オペランドの符号拡張の有無、コアプロセッサのレジスタとコプロセッサのレジスタ間においてデータを転送する場合における転送方向などの情報も付加される。
【０２２８】
転送方向の情報を付加する方法は、以下の通りである。
【０２２９】
転送方向の情報は、各命令定義に対する属性の１つとして定義されている。シミュレータ生成部のコプロセッサ・モデルファイル（=mkcopの入力）では、以下のように記述される
{name       =>‘ICMOV’,
cname      =>‘CMOV_1’,
instType   =>‘t64c_al’,
instSubType=>‘core_cop’,  ＃＜＝コプロ汎用レジスタからコア汎用レジスタへ転送
regsbit    =>‘true’,
opcodeA    =>‘0xf’,
opcodeB    =>‘0x0’,
opcodeC    =>‘0x0’,
opcodeD    =>‘0x1’,
func=>‘
＃動作記述
‘,
},
動作記述は，基本的に変数をＣ＋＋変数へ変換し、演算子をこれと等価なＣ＋＋演算子に１対１に変換して生成する。レジスタやメモリの読み書きや予約関数は、予め用意したシミュレータのＡＰＩ関数を呼び出して生成する。
【０２３０】
Ｃ＋＋にない一部の表現については、Ｃ＋＋への変換を行なう前に動作記述を変換する。例えば式の左辺に記載したビット連結は以下のように変換する。
【０２３１】
（変換前）
(A!!B)=Expression;
（変換後）
TMP=Expression;
B=TMP[(Ｂ最上位・Ｂ最下位・1):0];
A=TMP[(Ａ最上位＋Ｂ最上位・1):(Ｂ最上位・Ｂ最下位)];
（ＴＭＰは一時変数）
またＳＩＭＤ表記に関しては、第５の実施形態において説明したように展開する。
【０２３２】
トレース出力には、その命令動作によって値が書き込まれるレジスタを出力する。レジスタヘの書き込みの有無は、そのレジスタが命令の動作記述の左辺部に出現するか否かを解析して判定する。レジスタ間のデータ転送も，同様に左辺部に出現したレジスタを書き込み用レジスタ、右辺部に出現したレジスタを読み出し用レジスタと判断する。読み出されたレジスタから書き込まれたレジスタへデータが転送されたと見なす。
【０２３３】
上記第１１の実施形態によれば、コンフィギュレーション指定ファイルの記述に従って必要なシミュレータを生成することができる。したがって、ユーザはアプリケーションをシミュレートすることができ、アプリケーションの性能を短時間で知ることができる。このため、システムＬＳＩの開発を期間を短縮することが可能となる。
【０２３４】
（第１２の実施形態）
第１２の実施形態は、デバッグ環境の構築に関する。
【０２３５】
デバッグ環境構築のための対応項目は次の３つである。
【０２３６】
（１）レジスタ定義：
デバッガは、表示及び書き換え可能なレジスタとしてどの様なものがあるかについての情報が必要である。この情報は、コンフィグレーション指定ファイルのレジスタ定義部から生成される。表示できるレジスタは、定義されている全レジスタである。書き換えができるレジスタ、あるいはレジスタのフィールド（レジスタの一部）は、図１４に示すレジスタ定義において、例えば“ｒｗ”と記述されたレジスタである。“ｒ”と記述されたレジスタは、デバッガにて書き換えることはできない。
【０２３７】
（２）逆アセンブラ：
デバッガは、実行プログラムに対し、逆アセンブラを行い、表記する。逆アセンブラは、シミュレータのデコード部と同じ方法で命令を認識し、そのニーモニックを表示する。
【０２３８】
（３）デバッグ・モニタ：
デバッグ・モニタは、デバッグの開始時にレジスタの初期値を設定する。この初期値を設定すべきレジスタ（存在するレジスタ）の情報を、コンフィグレーション指定ファイルのレジスタ定義部から得る。
【０２３９】
上記第１２の実施形態によれば、コンフィグレーション指定ファイルからデバッグ環境が構築される。このため、ユーザはＬＳＩ開発に必要なデバッグ環境を得ることができる。したがって、ユーザはアプリケーションをデバッグすることができ、アプリケーションの開発を期間を短縮することが可能となる。
【０２４０】
尚、本発明は、上記各実施形態に限定されるものではない。
【０２４１】
図３７は、上記各実施形態が適用されるシステムＬＳＩ開発環境生成装置の概観を示している。このシステムＬＳＩ開発環境生成装置５０は、いわゆる汎用計算機、ワークステーション、ＰＣ(Personal Computer)、ＮＣ(Network Computer)等が含まれる。システムＬＳＩ開発環境生成装置５０は、図示せぬハードディスク装置５０ａを有している。
【０２４２】
さらに、システムＬＳＩ開発環境生成装置５０は、例えばフロッピーディスクドライブ５２及び光ディスクドライブ５４を備えている。フロッピーディスクドライブ５２にはフロッピーディスク５３が装着され、光ディスクドライブ５４には光ディスク５５が装着される。
【０２４３】
また、システムＬＳＩ開発環境生成装置５０に接続されたドライブ装置５７は、例えばメモリカード５８のリーダライタ、あるいは磁気テープカートリッジ５９のリーダライタである。このドライブ装置５７により、メモリカード５８、あるいは磁気テープカートリッジ５９をアクセスすることができる。
【０２４４】
前述したコマンドインタープリタ、ＲＴＬ生成部、シミュレータカスタマイズ部、コンパイラカスタマイズ部、アセンブラカスタマイズ部、検証ベクトル生成部、及びデバッガ生成部等のプログラムや、コンフィグレーション指定ファイル等のファイルは、フロッピーディスク５３、光ディスク５５、メモリカード５８及び磁気テープカートリッジ５９等の記録媒体に記憶される。これらプログラム及びファイルを読み出し、前記ハードディスク装置５０ａにインストールすることにより、上述した動作を実行できる。また、記録媒体としては伝送媒体を用いることも可能である。
【０２４５】
その他、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【０２４６】
【発明の効果】
以上、詳述したように本発明によれば、高性能なハードウェアを有するＬＳＩの開発環境を十分なフレキシビリティで、簡単に生成することが可能なシステムＬＳＩ開発環境生成方法及びそのプログラムを提供できる。
【図面の簡単な説明】
【図１】本発明が適用されるシステムＬＳＩ開発装置を概略的に示す構成図。
【図２】設定ファイル生成部を示す構成図。
【図３】コンフィグレーション指定ファイルの記述例を示す図。
【図４】図４（ａ）は全プロセッサに共通のメモリ領域の記述例を示す図、図４（ｂ）は生成されたローカルメモリマップの一例を示す図、図４（ｃ）はＩＳＡ定義ファイルの記述例を示す図。
【図５】システムＬＳＩ開発環境生成部の構成を示す図。
【図６】図５に示すＲＴＬ生成部の一実施例を示す構成図。
【図７】ＲＴＬテンプレートの一例を示す図。
【図８】図５に示すシミュレータカスタマイズ部の一例を示す構成図。
【図９】図９（ａ）は、シミュレータ起動オプションファイルの一例を示す図、図９（ｂ）は、デバッガ起動オプションファイルの一例を示す図、図９（ｃ）は、機械命令関数宣言ヘッダファイルの一例を示す図。
【図１０】図５に示すコンパイラカスタマイズ部４３の一実施例を示す構成図。
【図１１】図１１（ａ）は、コンパイラ起動オプションファイルの一例を示す図、図１１（ｂ）は検証ベクトル生成用のユーザ定義命令ファイルの一例を示す図。
【図１２】本発明のシステムＬＳＩ開発環境生成部３のプログラム構成を示す構成図。
【図１３】コンフィグレーション指定ファイルの一例を示す図。
【図１４】図１３に示すレジスタ定義部の記載例を具体的に示す図。
【図１５】アキュムレータの定義の一例を示す図。
【図１６】シフトアマウントレジスタの定義の一例を示す図。
【図１７】コプロセッサ定義の一例を示す図。
【図１８】ＤＳＰモジュール用コンフィグレーション指定ファイルの例を示す図。
【図１９】ＳＩＭＤ命令の定義の一例を示す図。
【図２０】１行による記述例を示す図。
【図２１】１行による記述例を示す図。
【図２２】指標を用いた記述例を示す図。
【図２３】ＳＩＭＤ命令ライブラリの例を示す図。
【図２４】命令ライブラリからコンパイラ等のツールを生成方法を示す構成図。
【図２５】コンフィグレーション指定ファイル内の命令セット定義部の例を示す図。
【図２６】ＰＴＹＰＥ行の記述例を示す図。
【図２７】ハザード情報の記述例を示す図。
【図２８】ハザード情報とパイプラインの動作を示す図。
【図２９】コンパイラのためのスケジューリング情報の例を示す図。
【図３０】パイプライン動作記述の例を示す図。
【図３１】ＲＴＬ生成部におけるユーザ定義モジュールの高位合成の例を示す図。
【図３２】インターフェースの整合方法を示す構成図。
【図３３】ＩＳＡ情報の生成方法を示すものであり、命令ＣＰＸＯＲ３に関する命令定義の例を示す図。
【図３４】自動的に生成されたＩＳＡ情報を示す図。
【図３５】命令ＣＰＸＯＲ３の検証プログラムを示す図。
【図３６】シミュレータ生成部の概略的な動作を示す図。
【図３７】システムＬＳＩ開発環境生成システムの概観の一例を示す斜視図。
【符号の説明】
１…システムＬＳＩ開発環境生成装置、
２…設定ファイル生成部、
３…ユーザ定義モジュール・ユーザ定義命令記憶部、
４…システムＬＳＩ開発環境生成部、
９…制御部、
２１…入力解析部、
４１…ＲＴＬ生成部、
４１ａ、４１ｂ…ＲＴＬテンプレート、
４１ｃ…コアＲＴＬ記述、
４１ｄ…ブロック接続部、
４１ｅ…高位合成処理部、
４２…シミュレータカスタマイズ部、
４２ａ…オプション命令・Ｃモデルテンプレート、
４２ｂ…シミュレータテンプレート、
４３…コンパイラカスタマイズ部、
４３ａ…オプション命令情報抽出部、
４３ｂ…オプション命令・機械命令関数宣言テンプレート、
４３ｃ…機械命令関数宣言抽出部、
４３ｄ…結合処理部、
４４…アセンブラカスタマイズ部、
４５…検証ベクトル生成部、
５０…コンピュータシステム、
５１…ディスプレイ、
５２…フロッピーディスクドライブ、
５３…フロッピーディスク、
５４…光ディスクドライブ、
５５…光ディスク、
５６…キーボード、
５７…ドライブ装置、
５８…メモリカード、
５９…磁気テープカートリッジ
【図１】
0004202673.tif 000002
【図２】
0004202673.tif 000003
【図３】
0004202673.tif 000004
【図４】
0004202673.tif 000005
【図５】
0004202673.tif 000006
【図６】
0004202673.tif 000007
【図７】
0004202673.tif 000008
【図８】
0004202673.tif 000009
【図９】
0004202673.tif 000010
【図１０】
0004202673.tif 000011
【図１１】
0004202673.tif 000012
【図１２】
0004202673.tif 000013
【図１３】
0004202673.tif 000014
【図１４】
0004202673.tif 000015
【図１５】
0004202673.tif 000016
【図１６】
0004202673.tif 000017
【図１７】
0004202673.tif 000018
【図１８】
0004202673.tif 000019
【図１９】
0004202673.tif 000020
【図２０】
0004202673.tif 000021
【図２１】
0004202673.tif 000022
【図２２】
0004202673.tif 000023
【図２３】
0004202673.tif 000024
【図２４】
0004202673.tif 000025
【図２５】
0004202673.tif 000026
【図２６】
0004202673.tif 000027
【図２７】
0004202673.tif 000028
【図２８】
0004202673.tif 000029
【図２９】
0004202673.tif 000030
【図３０】
0004202673.tif 000031
【図３１】
0004202673.tif 000032
【図３２】
0004202673.tif 000033
【図３３】
0004202673.tif 000034
【図３４】
0004202673.tif 000035
【図３５】
0004202673.tif 000036
【図３６】
0004202673.tif 000037
【図３７】
0004202673.tif 000038