(57)【特許請求の範囲】
【請求項１】
ハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを生成することにより、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを自動生成するＶＬＩＷプロセッサ自動生成方法において、
スロットに関するスロット情報と、リソースに関するリソース情報と、オペレーショングループ情報と、リソースグループ情報と、該スロットとリソースグループとの関係情報及び該リソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、該リソースグループ情報に含まれる該リソースについてのリソースクラス名と、該リソースクラス名を用いて前記命令の動作を記述した第一のマイクロ動作記述データと、を含む設計記述データがコンピュータに入力され、記憶させる第１のステップと、
前記コンピュータに入力された各情報に基づいて、前記複数の命令に対して、前記ディスパッチルール情報を用いて該複数の命令に関係する前記リソースグループを導出する第２のステップと、
前記関係するリソースグループの各々に対して前記第一のマイクロ動作記述データの具体化の処理であるリソースクラス展開を行うことによって第二のマイクロ動作記述データをマイクロ動作記述情報として生成し、前記マイクロ動作記述情報と、前記リソースグループ情報と、前記命令に前記リソースを割り付ける前記ディスパッチルール情報と、を含むプロセッサ仕様記述情報を前記コンピュータに記憶させる第３のステップと、
前記プロセッサ仕様記述情報に基づいて、前記ＨＤＬ記述データを生成する第４のステップと、を備えることを特徴としたＶＬＩＷプロセッサ自動生成方法。
【請求項２】
複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを設計するために、少なくともスロットに関するスロット情報と、前記命令の動作が記述されたマイクロ動作記述情報と、前記命令にリソースを割り付けるディスパッチルール情報とを含むプロセッサ仕様記述データと、を入力する入力手段と、少なくとも前記スロット情報を記憶する設計記述格納装置と、少なくとも前記プロセッサ仕様記述情報を記憶するプロセッサ仕様記述格納装置と、を備え、前記設計記述格納装置又はプロセッサ仕様記述格納装置を参照してハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを算出するコンピュータに、
前記入力手段を介して入力される前記スロット情報と、前記リソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含む前記ディスパッチルール情報と、該リソースグループ情報に含まれる前記リソースについてのリソースクラス名と、該リソースクラス名を用いて前記命令の動作を記述した第一のマイクロ動作記述データと、を含む設計記述データを、前記設計記述格納装置に記憶させる第１の手順と、
前記設計記述格納装置に記憶された前記設計記述データに基づいて、前記複数の命令に対して、前記ディスパッチルール情報を用いて該複数の命令に関係する前記リソースグループを導出させ、前記関係するリソースグループの各々に対して前記第一のマイクロ動作記述データの具体化の処理であるリソースクラス展開を行うことによって第二のマイクロ動作記述データをマイクロ動作記述情報として生成させる第２の手順と、
前記マイクロ動作記述情報と、前記リソースグループ情報と、前記ディスパッチルール情報と、を含むプロセッサ仕様記述情報を、前記プロセッサ仕様記述格納装置に記憶させる第３の手順と、
前記プロセッサ仕様記述格納装置に記憶された前記プロセッサ仕様記述情報に基づいて、前記ＨＤＬ記述データを生成させる第４の手順と、を実行させることを特徴としたＶＬＩＷプロセッサ自動生成プログラム。
【請求項３】
ハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを生成することにより、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを自動生成するＶＬＩＷプロセッサ自動生成方法において、
スロットに関するスロット情報と、リソースに関するリソース情報と、オペレーショングループ情報と、リソースグループ情報と、該スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、該リソースグループ情報に含まれ、該リソースがファンクションを有する場合にファンクションに対応するファンクション名と、を含む設計記述データがコンピュータに入力され、記憶させる第１のステップと、
前記ＶＬＩＷプロセッサに用いられる前記複数の命令の動作を記述したマイクロ動作記述データがコンピュータに入力され、記憶させる第２のステップと、
前記コンピュータに入力された各情報に基づいて、リソースグループ名、リソース名、前記ファンクション名を含む前記リソースグループ情報、前記ディスパッチルール情報、ＶＬＩＷパターン情報、及び前記マイクロ動作記述データを含むマイクロ動作記述情報と、を備えたプロセッサ仕様記述情報をコンピュータに生成させ、記憶させる第３のステップと、
前記プロセッサ仕様記述情報に基づいて、前記ＨＤＬ記述データをコンピュータに生成させる第４のステップと、
ＶＬＩＷパターンに前記リソースグループを割当てるとき、前記ディスパッチルール情報及び前記リソースグループ情報のリソースグループ名とリソース名と前記ファンクション名を用いて前記リソースグループの競合判定をコンピュータに行わせる第５のステップと、を備えることを特徴とするＶＬＩＷプロセッサ自動生成方法。
【請求項４】
複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを設計するために、少なくともスロットに関するスロット情報と、前記命令の動作が記述されたマイクロ動作記述情報と、前記命令にリソースを割り付けるディスパッチルール情報とを含むプロセッサ仕様記述データと、を入力する入力手段と、少なくとも前記スロット情報を記憶する設計記述格納装置と、少なくとも前記プロセッサ仕様記述情報を記憶するプロセッサ仕様記述格納装置と、を備え、前記設計記述格納装置又はプロセッサ仕様記述格納装置を参照してハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを算出するコンピュータに、
前記入力手段を介して入力される前記スロット情報と、前記リソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含む前記ディスパッチルール情報と、該リソースグループ情報に含まれ、該リソースがファンクションを有する場合にファンクションに対応するファンクション名と、を含む設計記述データを、前記設計記述格納装置に記憶させる第１の手順と、
前記入力手段を介して入力される前記ＶＬＩＷプロセッサに用いられる前記複数の命令の動作を記述したマイクロ動作記述データを、前記設計記述格納装置に記憶させる第２の手順と、
前記設計記述格納装置に記憶された前記設計記述データに基づいて、リソースグループ名、リソース名、前記ファンクション名を含む前記リソースグループ情報、前記ディスパッチルール情報、ＶＬＩＷパターン情報、及び前記マイクロ動作記述データを含むマイクロ動作記述情報と、を備えたプロセッサ仕様記述情報を生成させ、前記プロセッサ仕様記述格納装置に記憶させる第３の手順と、
前記プロセッサ仕様記述格納装置に記憶された前記プロセッサ仕様記述情報に基づいて、前記ＨＤＬ記述データを生成させる第４の手順と、
ＶＬＩＷパターンに前記リソースグループを割当てるとき、前記ディスパッチルール情報及び前記リソースグループ情報のリソースグループ名とリソース名と前記ファンクション名を用いて前記リソースグループの競合判定を行わせる第５の手順と、を実行させることを特徴としたＶＬＩＷプロセッサ自動生成プログラム。
【請求項５】
前記コンピュータに備えられた表示部は、該情報を定義するために用いられる複数のウィンドウからなる前記グラフィカルユーザインターフェース（ＧＵＩ）を表示し、
前記各情報は、前記ＧＵＩを用いて前記コンピュータに入力されることを特徴とする請求項１に記載のＶＬＩＷプロセッサ自動生成方法。
【請求項６】
前記複数のウィンドウは、前記オペレーショングループ情報を定義するオペレーショングループ定義ウィンドウを含み、
前記オペレーショングループ定義ウィンドウは、ツリー構造でグループを表示する第１の枠と、未分類のオペレーションを表示する第２の枠とを備え、前記第２の枠に表示されるオペレーションを前記第１の枠内に移動させることによりグループへ追加し、前記第１の枠にツリー構造で表示されるグループに属するオペレーションを前記第２の枠に移動させることにより該グループから削除することを特徴とする請求項５に記載のＶＬＩＷプロセッサ自動生成方法。
【請求項７】
前記複数のウィンドウは、前記リソースグループ情報を定義するリソースグループ定義ウィンドウを含み、
前記リソースグループ定義ウィンドウは、前記リソースグループを表示するリソースグループ枠と、リソースメンバー定義枠とを備え、
前記リソースメンバー定義枠は、リソースクラス列と、リソース名入力列と、ファンクション名入力列を備え、
リソースクラスの追加と該リソースクラスに対応する前記リソースの入力と該リソースのファンクションの入力を行うことを特徴とする請求項５に記載のＶＬＩＷプロセッサ自動生成方法。
【請求項８】
前記複数のウィンドウは、前記スロットと前記リソースグループの関係情報及び前記リソースグループとオペレーショングループの関係情報を定義するスロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウを含み、
前記スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウは、前記スロット・リソースグループ間の相互関係定義領域と、該オペレーショングループ・リソースグループ間の相互関係定義領域とを備え、
前記スロット・リソースグループ間の相互関係定義領域に入力された定義に対して、前記スロットと前記リソースグループ間の制約の検出及び修正機能と、を備えることを特徴とする請求項５に記載のＶＬＩＷプロセッサ自動生成方法。
【請求項９】
前記複数のウィンドウは、ＶＬＩＷパターン情報を定義するＶＬＩＷパターン定義ウィンドウを含み、
前記ＶＬＩＷパターン定義ウィンドウは、ＶＬＩＷパターンを表示し編集するＶＬＩＷパターン編集枠を備え、
前記スロットとリソースグループの関係情報及び前記リソースグループとオペレーショングループの関係情報からＶＬＩＷパターンを自動生成し前記ＶＬＩＷパターン編集枠に表示するＶＬＩＷパターン自動展開機能と、を備えることを特徴とする請求項５に記載のＶＬＩＷプロセッサ自動生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＬＩＷプロセッサの自動生成方法、自動生成プログラムに関する。
【背景技術】
【０００２】
従来、組み込みシステムの実装におけるＡＳＩＰ（Application Specific Instruction-set Processor）として用いられるスカラプロセッサやＶＬＩＷ（Very Long Instruction Word）プロセッサを含む命令セットプロセッサの設計は、ハードウェア記述言語（ＨＤＬ：Hardware Description Language）による手作業での設計で行なわれていた。
【０００３】
スカラプロセッサに対して、ＨＤＬ記述の自動生成により設計作業の支援を行う集積回路設計支援装置が知られている。（例えば、特許文献１参照）。特許文献１には、パラメタライズされたハードウェア資源（以下リソースという）を格納するデータベース装置（ＦＨＭ−ＤＢ：Flexible Hardware Model Database）が開示されている。ＦＨＭ―ＤＢは、リソースの入出力ビット幅などがパラメタライズされて格納されたデータベースであり、パラメタの異なるさまざまなリソースを生成することができる。集積回路設計支援装置は、ＦＨＭ−ＤＢを利用してリソースを生成し、それらを制御する制御部を生成して組み合わせることにより、スカラプロセッサを自動生成する。
【０００４】
また、ＶＬＩＷプロセッサに対して、ＶＬＩＷプロセッサのＨＤＬ記述を自動生成する手法が知られている。（例えば、非特許文献１参照）。非特許文献１の手法を用いれば、パイプラインステージの数や、ＶＬＩＷ命令語内での命令（以下、オペレーションという）の発行単位（以下スロットという）の数、発行された命令を適切なリソースに割当てるディスパッチルール情報を含むプロセッサの仕様記述を入力することにより、ＶＬＩＷプロセッサのＨＤＬ記述を生成することができる。また、その際に複雑なディスパッチのルールを簡潔に記述するために、オペレーショングループとリソースグループの概念が導入されている。
【０００５】
図２４は、ＶＬＩＷプロセッサモデルを示す。図２４を参照して、上記概念を用いたＶＬＩＷプロセッサモデルを説明する。ディスパッチに関して同じ性質をもつオペレーション１６２の集合としてオペレーショングループ１６０が定義され、所定のスロット１６４から発行されるオペレーショングループ１６０中のオペレーション１６２を処理できるリソース１７０の集合としてリソースグループ１６８が定義される。また、オペレーション１６２とリソースグループ１６８の組み合わせごとに、パイプラインステージ毎のオペレーションの動作の記述であるマイクロ動作記述１６６が作成される。すなわち、異なるスロットまたはリソースを用いてオペレーションを処理する場合それぞれについて、オペレーションの動作を表すマイクロ動作記述を定義する。非特許文献１の手法においては、オペレーショングループ１６０の組み合わせで表されるＶＬＩＷ命令パターンに対してスロット毎にリソースグループが割当てられる。
【０００６】
図２５は、非特許文献１に示される従来のＶＬＩＷプロッサ自動生成方法のフローを示す。コンピュータは、設計者によって設計対象のプロセッサの仕様のマイクロ動作記述を含む各情報が入力されると（Ｓ１４０）、コンピュータは、プロセッサ仕様記述情報としてプロセッサ仕様記述格納部に格納する（Ｓ１４２）。コンピュータは、格納されたプロセッサ仕様記述情報を元に、リソースグループ割当てを行い、データパスとデータパスの制御部を生成するＨＤＬ記述生成を行う（Ｓ１４４）。コンピュータは、生成されたＨＤＬ記述をＨＤＬ記述格納部へ格納する（Ｓ１４６）。これにより、柔軟かつ効率的に、高位のプロセッサ仕様記述からＶＬＩＷプロセッサのＨＤＬ記述を自動生成することが可能となっている。
【特許文献１】特開平１０−１７１８５７号公報
【非特許文献１】「コンフィギュラブルＶＬＩＷプロセッサのＨＤＬ記述生成手法」（小林悠記等，情報処理学会誌論文誌，Ｖｏｌ．４５、Ｎｏ．５、ｐｐ１３１１−１３２１（２００４））
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に示される技術においては、同じオペレーションであっても、使用するリソースやオペレーションが発行されるスロットが異なる場合、そのすべての組み合わせについて、演算やデータ転送などのオペレーションの動作をパイプラインステージ毎に記述したマイクロ動作記述データを入力する必要があった。図２６は、従来技術のマイクロ動作記述に関係する部分の設計手順の概念を示す。設計者３００は、一般的なテキストエディタ３０４を用いて、オペレーションの数及び各オペレーションに必要なリソースの組み合わせの数に応じたマイクロ動作記述データ３１０をコンピュータに入力する。ＨＤＬ記述生成部２３０は、入力されたマイクロ動作記述データをもとにＨＤＬ記述を生成する。例えば、４スロット程度の規模のＶＬＩＷプロセッサの場合、通常１つのオペレーションに対し６種類程度のマイクロ動作記述が必要であり、Ｎ個のオペレーションに対してほぼ６Ｎ個の動作記述データを入力しなければならない。このため、オペレーションの数及び各オペレーションに必要なリソースの組み合わせの数によっては膨大な量の入力が必要となり、設計生産性の面で困難があった。
【０００８】
また、非特許文献１に示される技術においては、リソースグループの構成要素としてリソースのみを想定していたため、複数のバス及びポートを備え読取りアクセス機能及び書き込みアクセス機能を複数もつメモリアクセスユニット等の２つ以上のスロットから同時に利用可能なリソースを扱えなかった。図２７は、従来技術を用いた場合のリソースグループ割当てにおけるリソースグループ競合判定の一例を示す。リソースＲｅｓＡ９１０は、ポート１：９０６とポート２：９０８を持ち、この２つのポートは同時に使用可能である。また、リソースＲｅｓＡ９１０は２つの機能（ファンクション）ｆｕｎｃ１（）、ｆｕｎｃ２()を持ち、ファンクションが使用するポート情報９１２より、ｆｕｎｃ１()：９０２はポート１：９０６を、ｆｕｎｃ２()：９０４はポート２：９０８を使用することが分かる（矢印で示す）。これにより、スロット１：９２１及びスロット２：９２２は、それぞれファンクションｆｕｎｃ１()：９０２及びｆｕｎｃ２()：９０４を同時に使用可能なはずである。しかし、従来技術では、スロット１が用いるリソースグループＲＧ１とスロット２が用いるリソースグループＲＧ２とが記述されたスロット・リソースグループ情報９１４において、リソースグループ情報９１６における定義中にリソース名しか考慮されなかった。これにより、スロット１及びスロット２は、リソースを重複して使用しないようにリソースグループを決定するという制約により、ＲＧ１とＲＧ２はリソースＲｅｓＡ９１０が重複しているため同時には使用できないと判定されることとなるため（×印で示す）、同時にＲｅｓＡ９１０を使用することはできなかった。したがって、ｆｕｎｃ１()とｆｕｎｃ２()を同時に使用可能にもかかわらず、スロット１とスロット２にそれぞれＲＧ１とＲＧ２を割当てることができずリソースグループ選択の可能性を狭めていた。
【０００９】
本発明は、上記の問題を解決するためになされたものであり、リソースクラスという概念を導入し、リソースグループのメンバとして、リソース以外に、ファンクション情報を利用することにより、ＨＤＬ生成時のリソースグループの競合判定を行い、リソースグループの割当において２つ以上のスロットからも同時に利用可能であり、グラフィカルユーザインターフェース（ＧＵＩ）の入力を用いてプロセッサ仕様記述情報をより簡単かつ迅速に生成できるＶＬＩＷプロセッサ自動生成方法及び自動生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために請求項１の発明は、ハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを生成することにより、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを自動生成するＶＬＩＷプロセッサ自動生成方法において、スロットに関するスロット情報と、リソースに関するリソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、リソースグループ情報に含まれるリソースについてのリソースクラス名と、リソースクラス名を用いて命令の動作を記述した第一のマイクロ動作記述データと、を含む設計記述データがコンピュータに入力され、記憶させる第１のステップと、コンピュータに入力された各情報に基づいて、複数の命令に対して、ディスパッチルール情報を用いて複数の命令に関係するリソースグループを導出する第２のステップと、関係するリソースグループの各々に対して第一のマイクロ動作記述データの具体化の処理であるリソースクラス展開を行うことによって第二のマイクロ動作記述データをマイクロ動作記述情報として生成し、マイクロ動作記述情報と、リソースグループ情報と、命令にリソースを割り付けるディスパッチルール情報と、を含むプロセッサ仕様記述情報をコンピュータに記憶させる第３のステップと、プロセッサ仕様記述情報に基づいて、ＨＤＬ記述データを生成する第４のステップと、を備えるようにしたものである。
【００１１】
また、請求項２の発明は、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを設計するために、少なくともスロットに関するスロット情報と、命令の動作が記述されたマイクロ動作記述情報と、命令にリソースを割り付けるディスパッチルール情報とを含むプロセッサ仕様記述データと、を入力する入力手段と、少なくともスロット情報を記憶する設計記述格納装置と、少なくともプロセッサ仕様記述情報を記憶するプロセッサ仕様記述格納装置と、を備え、設計記述格納装置又はプロセッサ仕様記述格納装置を参照してハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを算出するコンピュータに、入力手段を介して入力されるスロット情報と、リソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、リソースグループ情報に含まれるリソースについてのリソースクラス名と、リソースクラス名を用いて命令の動作を記述した第一のマイクロ動作記述データと、を含む設計記述データを、設計記述格納装置に記憶させる第１の手順と、設計記述格納装置に記憶された設計記述データに基づいて、複数の命令に対して、ディスパッチルール情報を用いて複数の命令に関係するリソースグループを導出させ、関係するリソースグループの各々に対して第一のマイクロ動作記述データの具体化の処理であるリソースクラス展開を行うことによって第二のマイクロ動作記述データをマイクロ動作記述情報として生成させる第２の手順と、マイクロ動作記述情報と、リソースグループ情報と、ディスパッチルール情報と、を含むプロセッサ仕様記述情報を、プロセッサ仕様記述格納装置に記憶させる第３の手順と、プロセッサ仕様記述格納装置に記憶されたプロセッサ仕様記述情報に基づいて、ＨＤＬ記述データを生成させる第４の手順と、を実行させるようにしたものである。
【００１２】
また、請求項３の発明は、ハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを生成することにより、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを自動生成するＶＬＩＷプロセッサ自動生成方法において、スロットに関するスロット情報と、リソースに関するリソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、リソースグループ情報に含まれ、リソースがファンクションを有する場合にファンクションに対応するファンクション名と、を含む設計記述データがコンピュータに入力され、記憶させる第１のステップと、ＶＬＩＷプロセッサに用いられる複数の命令の動作を記述したマイクロ動作記述データがコンピュータに入力され、記憶させる第２のステップと、コンピュータに入力された各情報に基づいて、リソースグループ名、リソース名、ファンクション名を含むリソースグループ情報、ディスパッチルール情報、ＶＬＩＷパターン情報、及びマイクロ動作記述データを含むマイクロ動作記述情報と、を備えたプロセッサ仕様記述情報をコンピュータに生成させ、記憶させる第３のステップと、プロセッサ仕様記述情報に基づいて、ＨＤＬ記述データをコンピュータに生成させる第４のステップと、ＶＬＩＷパターンにリソースグループを割当てるとき、ディスパッチルール情報及びリソースグループ情報のリソースグループ名とリソース名とファンクション名を用いてリソースグループの競合判定をコンピュータに行わせる第５のステップと、を備えるようにしたものである。
【００１３】
また、請求項４の発明は、複数の命令からなる超長命令語（Very Long Instruction Word）を実行するＶＬＩＷプロセッサを設計するために、少なくともスロットに関するスロット情報と、命令の動作が記述されたマイクロ動作記述情報と、命令にリソースを割り付けるディスパッチルール情報とを含むプロセッサ仕様記述データと、を入力する入力手段と、少なくともスロット情報を記憶する設計記述格納装置と、少なくともプロセッサ仕様記述情報を記憶するプロセッサ仕様記述格納装置と、を備え、設計記述格納装置又はプロセッサ仕様記述格納装置を参照してハードウェア記述言語（ＨＤＬ）で記述されたＨＤＬ記述データを算出するコンピュータに、入力手段を介して入力されるスロット情報と、リソース情報と、オペレーショングループ情報と、リソースグループ情報と、スロットとリソースグループとの関係情報及びリソースグループとオペレーショングループとの関係情報を含むディスパッチルール情報と、リソースグループ情報に含まれ、リソースがファンクションを有する場合にファンクションに対応するファンクション名と、を含む設計記述データを、設計記述格納装置に記憶させる第１の手順と、入力手段を介して入力されるＶＬＩＷプロセッサに用いられる複数の命令の動作を記述したマイクロ動作記述データを、設計記述格納装置に記憶させる第２の手順と、設計記述格納装置に記憶された設計記述データに基づいて、リソースグループ名、リソース名、ファンクション名を含むリソースグループ情報、ディスパッチルール情報、ＶＬＩＷパターン情報、及びマイクロ動作記述データを含むマイクロ動作記述情報と、を備えたプロセッサ仕様記述情報を生成させ、プロセッサ仕様記述格納装置に記憶させる第３の手順と、プロセッサ仕様記述格納装置に記憶されたプロセッサ仕様記述情報に基づいて、ＨＤＬ記述データを生成させる第４の手順と、ＶＬＩＷパターンにリソースグループを割当てるとき、ディスパッチルール情報及びリソースグループ情報のリソースグループ名とリソース名とファンクション名を用いてリソースグループの競合判定を行わせる第５の手順と、を実行させるようにしたものである。
【００１４】
また、請求項５の発明は、請求項１のＶＬＩＷプロセッサ自動生成方法において、コンピュータに備えられた表示部は、情報を定義するために用いられる複数のウィンドウからなるグラフィカルユーザインターフェース（ＧＵＩ）を表示し、各情報は、ＧＵＩを用いてコンピュータに入力されるようにしたものである。
【００１５】
また、請求項６の発明は、請求項５のＶＬＩＷプロセッサ自動生成方法において、複数のウィンドウは、オペレーショングループ情報を定義するオペレーショングループ定義ウィンドウを含み、オペレーショングループ定義ウィンドウは、ツリー構造でグループを表示する第１の枠と、未分類のオペレーションを表示する第２の枠とを備え、第２の枠に表示されるオペレーションを第１の枠内に移動させることによりグループへ追加し、第１の枠にツリー構造で表示されるグループに属するオペレーションを第２の枠に移動させることによりグループから削除するようにしたものである。
【００１６】
また、請求項７の発明は、請求項５のＶＬＩＷプロセッサ自動生成方法において、複数のウィンドウは、リソースグループ情報を定義するリソースグループ定義ウィンドウを含み、リソースグループ定義ウィンドウは、リソースグループを表示するリソースグループ枠と、リソースメンバー定義枠とを備え、リソースメンバー定義枠は、リソースクラス列と、リソース名入力列と、ファンクション名入力列を備え、リソースクラスの追加とリソースクラスに対応するリソースの入力とリソースのファンクションの入力を行うようにしたものである。
【００１７】
また、請求項８の発明は、請求項５のＶＬＩＷプロセッサ自動生成方法において、複数のウィンドウは、スロットとリソースグループの関係情報及びリソースグループとオペレーショングループの関係情報を定義するスロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウを含み、スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウは、スロット・リソースグループ間の相互関係定義領域と、オペレーショングループ・リソースグループ間の相互関係定義領域とを備え、スロット・リソースグループ間の相互関係定義領域に入力された定義に対して、スロットとリソースグループ間の制約の検出及び修正機能と、を備えるようにしたものである。
【００１８】
また、請求項９の発明は、請求項５のＶＬＩＷプロセッサ自動生成方法において、複数のウィンドウは、ＶＬＩＷパターン情報を定義するＶＬＩＷパターン定義ウィンドウを含み、ＶＬＩＷパターン定義ウィンドウは、ＶＬＩＷパターンを表示し編集するＶＬＩＷパターン編集枠を備え、スロットとリソースグループの関係情報及びリソースグループとオペレーショングループの関係情報からＶＬＩＷパターンを自動生成しＶＬＩＷパターン編集枠に表示するＶＬＩＷパターン自動展開機能と、を備えるようにしたものである。
【発明の効果】
【００１９】
請求項１乃至４の発明によれば、リソースクラスを用いて必要な記述量を大幅に削減し、効率的に設計できるため、設計生産性の向上ができ、従来よりも設計期間を大幅に短縮できる。また、ファンクション情報を利用することにより、リソースグループ選択の可能性を広げ設計自由度を大きくすることができる。
【００２０】
請求項５乃至９の発明によれば、グラフィカルユーザインターフェース（ＧＵＩ）の入力を用いることにより、プロセッサ仕様記述情報をより簡単、迅速に生成できるため、設計容易性の向上及び設計ミスを減らせひいては設計生産性を向上させることができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の第１乃至第２の実施形態に係るＶＬＩＷプロセッサ自動生成方法について、図面を参照して説明する。図１は、本ＶＬＩＷプロセッサ自動生成方法を実施するシステムのハードウェア構成を示す。本ＶＬＩＷプロセッサ自動生成方法を実施するシステムのハードウェアは、ワークステーションなどのコンピュータシステムであって、ＣＰＵ１０６とメモリ１０８から成る本体１００と、ハードディスク装置１０２と、キーボードやマウス等の入力操作装置１０４と、ＣＲＴディスプレイ等の表示装置１１０とから構成される。そして、メモリ１０８に格納されるＶＬＩＷプロセッサ自動生成プログラムをＣＰＵ１０６が実行することにより、ＶＬＩＷプロセッサの設計を支援するための種々の機能が実現される。
【００２２】
図２は、本実施形態に係る本ＶＬＩＷプロセッサ自動生成方法を実施するシステム構成を示す。この図に示すように、本ＶＬＩＷプロセッサ自動生成方法を実施するシステムは、概念的には、ＦＨＭ（Flexible Hardware Model）に基づくデータベース（以下「ＦＨＭ−ＤＢ」という）を格納しているＤＢ格納部２２４、ＦＨＭ−ＤＢのためのデータベース管理システム２２２（以下「ＦＨＭ−ＤＢＭＳ」という）からなるＦＨＭ−ＤＢシステム２２０、操作部２０４、入力編集部２０６、表示部２１０、設計記述格納部１２、プロセッサ仕様記述生成部２０８、プロセッサ仕様記述格納部１６、ＨＤＬ記述生成部２３０、ＨＤＬ記述格納部２０、ソフトウェア生成部２５０、ソフトウェア格納部２５２から構成される。操作部２０４は、図１に示された入力操作装置１０４に、表示部２１０は表示装置１１０にそれぞれ対応する。ＦＨＭ−ＤＢ２２４、設計記述格納部１２、プロセッサ仕様記述格納部１６、ＨＤＬ記述格納部２０及びソフトウェア格納部２５２は、ハードディスク装置１０２によって実現される。
【００２３】
入力編集部２０６は、設計者による表示部２１０に表示されるＧＵＩを用いた操作部２０４での入力操作に基づき、設計対象を記述する設計記述情報を生成して設計記述格納部１２に格納し、設計記述格納部１２に格納されている記述データを変更又は追加する等の編集処理を行う。ここで編集の対象となる設計記述情報は、設計対象となるＶＬＩＷプロセッサを記述した情報である。プロセッサ仕様記述生成部２０８は、設計記述情報をもとにプロセッサ仕様記述情報を生成してプロセッサ仕様記述格納部１６に格納する（詳細は後述する）。ＨＤＬ記述生成部２３０は、プロセッサ仕様記述情報をもとにＨＤＬ記述情報を生成し、ＨＤＬ記述格納部２０に格納する。ソフトウェア生成部２５０は、プロセッサ仕様記述情報をもとにソフトウェア情報を生成し、ソフトウェア格納部に格納する。
【００２４】
図３は、ＶＬＩＷプロセッサ自動生成方法のフローを示す。コンピュータは、設計者によって、抽象度の高いマイクロ動作記述情報、リソースクラス名とリソース名とファンクション名を含むリソースグループ情報、及びプロセッサ仕様に必要な他の情報が入力されると、入力された情報を用いて入力編集処理を行い（Ｓ１０）、設計記述情報を設計記述格納部１２へ格納する（Ｓ１２）。ここで、抽象度の高いマイクロ動作記述情報とは、リソースクラスという概念を用いて記述されたマイクロ動作記述データである。また、コンピュータは、ＧＵＩ（Graphical User Interface）機能を備えることにより、設計者の入力作業を支援することができる。次に、コンピュータは、設計記述格納部１２中の設計記述情報を元にプロセッサ仕様記述生成処理を行い（Ｓ１４）、プロセッサ仕様記述情報をプロセッサ仕様記述格納部１６へ格納する（Ｓ１６）。ここで、プロセッサ仕様記述生成処理では前記リソースクラスを用いて記述された抽象度の高いマイクロ動作記述データを具体的なリソースを用いたマイクロ動作記述データに展開し（後述するリソースクラス展開）、ＨＤＬ記述生成処理（Ｓ１８）で受理できる形式に変換する。ＨＤＬ記述生成処理において、データパスとデータパスの制御部の生成を行う（Ｓ１８）。
【００２５】
次に、コンピュータは、リソースグループ割当てにおいて、複数ポートを同時に利用可能なリソースを扱うため、リソースのファンクションを考慮したリソースグループ競合判定を行い（Ｓ１８）、生成したＨＤＬ記述情報をＨＤＬ記述格納部２０に格納する（Ｓ２０）。なお、本明細書において、リソースクラスとは概念的な意味で用いられ、リソースクラス名とはリソークラスに付与される名前を意味するものとする。また、リソース及びリソース名と同様に、ファンクションとは概念的な意味で用いられ、ファンクション名とはファンクションに付与される名前を意味するものとする。
【００２６】
次に、マイクロ動作記述に関する設計手順について説明する。図４は、マイクロ動作記述に関する設計手順を示す。設計者３００は、入力編集部２０６を用いて、リソースクラスを用いて記述されたマイクロ動作記述データ３２０を入力する。プロセッサ仕様記述生成部２０８は、マイクロ動作記述データ３２０に基づいてマイクロ動作記述データ３１０を生成する。ＨＤＬ記述生成部２３０は、マイクロ動作記述データ３１０に基づいてＨＤＬ記述を生成する。なお、リソースクラスを用いて記述されたマイクロ動作記述データ３２０は図２の設計記述格納部１２に格納される。またマイクロ動作記述データ３１０はプロセッサ仕様記述格納部１６に格納されるが、ここでは図示していない。ここで、リソースクラスは、異なるスロットなどにおいて異なるリソースを用いて実行されるオペレーションの間で、共通の意味を持つリソース及びリソースのファンクションを抽象化した概念である。リソースクラスを用いてオペレーションの動作、すなわちマイクロ動作を記述する。
【００２７】
乗算器を用いて乗算を行うＭＵＬＴというオペレーションを例にしてリソースクラスを用いた記述例について説明する。図５は、リソースクラスを用いて記述されたマイクロ動作の記述例を示す。ここで、ＶＬＩＷプロセッサは、ＭＵＬ１とＭＵＬ２の２個の乗算器を備える２スロットＶＬＩＷプロセッサである。また、スロット１において実行されるＭＵＬＴはＭＵＬ１を、スロット２において実行されるＭＵＬＴはＭＵＬ２を使用するものとする。この場合、スロット１において実行されるＭＵＬＴと、スロット２において実行されるＭＵＬＴの間では、乗算器ＭＵＬ１とＭＵＬ２は共通の意味を持つリソースである。そこで、これらをリソースクラスＭＵＬとして抽象化し、オペレーションＭＵＬＴのマイクロ動作はリソースクラスＭＵＬを用いて記述することとする（リソースクラスを用いて記述されたＭＵＬＴのマイクロ動作記述６１０）。
【００２８】
ここで、スロット１で実行する際にはＭＵＬにＭＵＬ１が相当し、また、スロット２で実行する際にはＭＵＬにＭＵＬ２が相当することがわかっている（スロット毎のリソースクラスとリソースの対応情報６２０）ので、リソースクラスを用いて記述されたマイクロ動作記述からリソースクラスを用いないでリソースを用いたマイクロ動作記述（ＳｌｏｔにおけるＭＵＬＴのマイクロ動作記述６３２及びＳｌｏｔ２におけるＭＵＬＴのマイクロ動作記述６３４）を取得し具体化することは可能である。この具体化の処理をリソースクラス展開と呼ぶ。ここで、スロット毎のリソースクラスとリソースの対応情報６２０は、後述する図６における、リソースグループ情報４１４とオペレーショングループ・リソースグループ関係情報４２４とスロット・リソースグループ関係情報４２６に含まれる関連情報を総合して模式的に表現したものである。
【００２９】
図６は、プロセッサ仕様記述情報の構成を示す。プロセッサ仕様記述情報４００は、スロット情報４０２、パイプラインステージ情報４０４、使用する演算器やレジスタなどのリソース情報４０６、入出力ポートやトップレベルモジュール名を表すＩＯポート情報４０８、オペレーションの名前、オペコード及びオペランド情報を含むフィールド構成、及びアセンブラのニーモニック表現を含むオペレーション情報４１０、オペレーション毎のマイクロ動作記述情報４１２、リソースグループ情報４１４、オペレーショングループ情報４１６、及びディスパッチ・ルール情報４２０から構成される。また、ディスパッチ・ルール情報４２０は、同時に処理可能なオペレーションの組み合わせを表現するＶＬＩＷパターン情報４２２、オペレーショングループとリソースグループの間の関係を表すオペレーショングループ・リソースグループ関係情報４２４、及びスロットとリソースグループの間の関係を表すスロット・リソースグループ関係情報４２６から構成される。
【００３０】
図７は、プロセッサ仕様記述情報４００を生成するプロセッサ仕様記述生成部２０８の構成を示す。プロセッサ仕様記述生成部２０８は、仕様記述生成部５０２とリソースクラス展開部５５０から構成される。リソースクラス展開部５５０は、設計記述格納部１２から取得したリソースクラスを用いたマイクロ動作記述データ内のリソースクラスを展開しながらマイクロ動作記述データを生成し、プロセッサ仕様記述情報４００のマイクロ動作記述情報４１２としてプロセッサ仕様記述格納部に格納する。仕様記述生成部５０２は、設計記述格納部１２から取得したデータをもとに、マイクロ動作記述情報４１２以外のプロセッサ仕様記述情報を生成し、プロセッサ仕様記述格納部１６に格納する。
【００３１】
次に、リソースクラス展開部５５０の構成及び動作について説明する。図８は、リソースクラス展開部５５０の構成及び動作の一例を示す。リソースクラス展開部５５０の入力は、オペレーショングループ情報５１２、オペレーショングループ・リソースグループ情報５１６、スロット・リソースグループ情報５１４、リソースグループ情報５２０、及びリソースクラスを用いて記述されたマイクロ動作記述５１０である。図８においては、ＯｐｅＡというオペレーションに対応するマイクロ動作記述を例として示している。また、図８では、リソースグループ情報５２０はリソースクラス名（リソースグループ情報５２０の左半分）とそれに対応するリソース名またはリソースファンクション名（リソースグループ情報５２０の右半分）から構成され、設計者より入力編集部２０６に入力される。リソースグループ情報の形式については後述する。
【００３２】
まず、リソースグループ導出部５６０が、このオペレーションＯｐｅＡに関係するリソースグループの導出処理を行う。ここでは、オペレーショングループ情報５１２より、該当オペレーションが所属するオペレーショングループ（ＯｐｅＡに対してはＯＧ１）を取得し、取得したオペレーショングループに対して実行可能なリソースグループ（ＯＧ１に対してはＲＧ１、ＲＧ２、ＲＧ３）を、オペレーショングループ・リソースグループ関係情報５１６を用いて取得する。この導出処理がリソースクラス展開の前処理である。
【００３３】
そして、マイクロ動作記述置換部５８０が、リソースクラスを用いて記述されたマイクロ動作記述５１０を、取得されたリソースグループそれぞれに対してコピーして出力する。このとき、マイクロ動作記述中、’＄’から始まる単語を切り出し、リソースグループ情報５２０の中のリソースクラス名と一致する場合は、そのリソースクラス名に対応する文字列（リソース名またはリソースファンクション名）で置換して出力する。’＄’から始まる単語を切り出す際は、区切り文字として、アルファベット、数字、一部の記号（’＿’）以外の文字を認識する。なお、’＄’の次の文字が中括弧（’｛’）の場合は、対応する次の中括弧（’｝’）を区切り文字とし、中括弧で囲まれた中の文字列を認識する。なお、リソースクラス名の開始記号’＄’は他の文字でもよい。図８においては、リソースグループＲＧ１の情報５２２、リソースグループＲＧ２の情報５２４、及びリソースグループＲＧ３の情報５２６を用いて、ＯｐｅＡをＲＧ１で処理するためのマイクロ動作記述５３２、ＯｐｅＡをＲＧ２で処理するためのマイクロ動作記述５３４、及びＯｐｅＡをＲＧ３で処理するためのマイクロ動作記述５３６がそれぞれ生成されている。この置換によるマイクロ動作記述が具体化の処理であるリソースクラス展開の処理である。
【００３４】
この処理により、オペレーションに対して単一のマイクロ動作記述から必要なマイクロ動作記述を生成することができる。図２５で示される従来技術の設計手順では、設計者は、あるオペレーションに対するマイクロ動作を、使用するリソースやスロットが異なるすべての組み合わせに対して記述する必要があった。本発明では、あるオペレーションに対してリソースクラスを用いて記述した単一のマイクロ動作を記述すれば、本発明によるプロセッサ仕様記述生成部２０８が、リソースやスロットが異なるすべての必要なマイクロ動作記述データ３１０を内部で生成する。これにより、設計者が入力する必要のある記述量が大幅に削減される。すなわち、設計生産性の向上及び設計工数の大幅な短縮を実現する。さらに、これらのリソースクラス展開によって生成されたマイクロ動作記述データは、プロセッサ仕様記述情報４００のマイクロ動作記述情報４１２として、他のプロセッサ仕様記述情報とともに、プロセッサ仕様記述格納部１６に格納される。
【００３５】
図９は、ＨＤＬ記述生成部２３０の構成を示す。ＨＤＬ記述生成部２３０は、データパス生成部７１０と制御部生成部７２０から構成される。データパス生成部７１０は、マイクロ動作統合部７１２、データパスセレクタ挿入部７１４、パイプラインレジスタ挿入部７１４から構成される。制御部生成部７２０は、リソースグループ割当て部７３０、デコーダ生成部７２２、制御論理生成部７２４から構成される。また、ＨＤＬ記述生成部２３０は、リソースの情報（リソースのファンクション情報、リソースのポート情報、リソースのインスタンスＨＤＬ記述情報）をＦＨＭ−ＤＢＭＳ ２２２から取得する。また、ＨＤＬ記述生成部２３０は、生成されたＨＤＬ記述データをＨＤＬ記述格納部２０に格納する。データパス生成部７１０は、ＶＬＩＷプロセッサのデータパスを生成する。データパス生成部７１０は、従来技術（非特許文献１）と同一のものである。
【００３６】
すなわち、マイクロ動作統合部７１２は、プロセッサ仕様記述格納部１６から取得したオペレーション毎のマイクロ動作記述をデータと処理の流れを視覚的に図式化したデータフローグラフ（以下ＤＦＧという）に変換し、統合することにより、ＶＬＩＷプロセッサのデータパスを表す１つのＤＦＧに変換する。ここで、ＤＦＧ中のノードは、マイクロ動作記述中の演算子及びリソースを表す。また、ＤＦＧ中のエッジは、マイクロ動作記述中の変数、つまり、ノード間のデータの流れを表す。
【００３７】
さらに、データパスセレクタ挿入部７１４は、統合されたＤＦＧ中の信号衝突箇所にデータパスセレクタを表すノードを挿入し、信号衝突を解決する。ここで、信号衝突箇所とは、ＤＦＧ中のリソースを表すノードの入力において、複数のエッジが接続されている箇所である。オペレーションによって使用するエッジが異なるため、これを選択するセレクタが必要となる。パイプラインレジスタ挿入部７１６は、データパスセレクタが挿入されたＤＦＧにおいて、始点と終点のステージが異なるエッジに、パイプラインレジスタを表すノードを挿入する。ここで、エッジの始点と終点は、マイクロ動作記述において変数が使われているステージの情報から取得可能である。制御部生成部７２０は、ＶＬＩＷプロセッサの制御部を生成する。
【００３８】
ここで、リソースグループ割当て部７３０は、プロセッサ仕様記述格納部１６から取得したＶＬＩＷパターン情報などをもとに、ＶＬＩＷパターン毎に、異なるスロットから同時に使用されるリソースグループ間で競合が起きないリソースグループの組み合わせを導出し、ＶＬＩＷパターンにリソースグループを割り当てる。デコーダ生成部７２２は、プロセッサ仕様記述格納部１６から取得したオペレーション情報をもとに、オペレーションのデコード信号を生成する。オペレーションのデコード信号とは、どのオペレーションが命令レジスタ（以下、ＩＲという）に入っているかを表す信号である。制御論理生成部７２４は、デコーダ生成部７２２により生成されたデコード信号及びリソースグループ割当て部７３０により決定されたリソースグループ割当てを元に、データパス生成部７１０により生成されたデータパスを制御する論理を生成する。
【００３９】
次にリソースグループの割当て部７３０について図１０から図１６を用いて詳細に説明する。図１０は、図９中のリソースグループ割当て部７３０の処理における、各ＶＬＩＷパターンに対するリソースグループ割当て処理のフローを示す。まず、最初のスロットを現在のスロットとする（Ｓ７３２）。そして、スロットに対して利用可能なリソースグループを１つ選択する（Ｓ７３４）。選択可能なリソースグループが存在する場合（Ｓ７３６でＹｅｓ）、リソースグループの競合判定処理（Ｓ７４４）を行い、選択済みのリソースグループと、リソースまたはリソースのファンクションに競合が発生した場合（Ｓ７４４でＹｅｓ）、ステップＳ７３４へ戻り、別のリソースグループを選択する。
【００４０】
ステップＳ７３６において、選択可能なリソースグループが存在しない場合（Ｓ７３６でＮｏ）、最初のスロットであるか否かを判断する（Ｓ７３８）。ステップＳ７３８において、最初のスロットでない場合（Ｓ７３８でＮｏ）、前のスロットに戻り別のリソースグループを選択する（Ｓ７４０）。現在のスロットが最初のスロットである場合（Ｓ７３８でＹｅｓ）、エラーとして競合判定手順を終了する（Ｓ７４２）。ステップＳ７４４において、競合しないリソースグループが見つかった場合であって（Ｓ７４４でＮｏ）、かつ現在のスロットが最後のスロットでない場合（Ｓ７４６でＹｅｓ）、次のスロットを現在のスロットとし（Ｓ７５０）、ステップＳ７３４へ進む。ステップＳ７４６において、現在のスロットが最後のスロットの場合（Ｓ７４６でＹｅｓ）、正常終了として、選択したリソースグループを出力して終了する（Ｓ７４８）。
【００４１】
ここで、リソースグループの割当て処理は、リソースグループ情報、ＶＬＩＷパターン情報、スロット・リソースグループ関係情報、オペレーショングループ・リソースグループ関係情報を入力とし、リソースグループ割当て結果を出力とする。リソースグループ情報にはメンバとして、リソースクラスに対応して、リソース名またはリソース名とファンクション名を組み合わせたリソースファンクション名が含まれる。これらの各情報の内容及び形式について例をあげて以下に説明する。
【００４２】
図１１は、リソースグループ情報の例を示す。リソースグループ情報６００は、リソースグループ定義６０１の集合である。リソースグループ定義６０１は、リソースグループ名６０２及び、リソースクラス名６０６に対するリソース名６０４またはリソースファンクション名６０８の対応の集合で構成される。図１１において、リソースファンクション名８０８は、リソース名の文字列とリソースのファンクション名の文字列がピリオドで連接された形式で表されている。
【００４３】
図１２は、スロット・リソースグループ関係情報の例を示す。スロット・リソースグループ関係情報８１０は、スロット８１２ごとに使用可能なリソースグループ８１４を列挙した情報である。ここで、あるリソースグループ８１４は、複数のスロット８１２に属することはできない。複数のスロットから利用されるリソースを表現する場合は、リソースグループ情報で同じリソースを含むリソースグループ８１４をリソースグループ名に変えて複数個定義し、異なるスロット８１２に所属させることで実現する。
【００４４】
図１３は、ＶＬＩＷパターン情報の例を示す。ＶＬＩＷパターン８２６は、各スロット８２２に対するオペレーショングループ８２４の対応で表現される。すなわち、設計対象のＶＬＩＷプロセッサにおいて、どのようなオペレーションの組み合わせが実行可能かが定義される。たとえば、図１３の一番下のＶＬＩＷパターン６は、スロット１でオペレーショングループＡＬＵ、スロット２でオペレーショングループＤＩＶ、スロット３でオペレーショングループＡＬＵ、スロット４でオペレーショングループＭＥＭに属するオペレーションを同時に実行可能であることを表す。
【００４５】
図１４は、オペレーショングループ・リソースグループ関係情報の例を示す。オペレーショングループ・リソースグループ関係情報８４０は、オペレーショングループ８４２ごとに、使用するリソースグループ８４４を定義した情報である。たとえば、図１４では、オペレーショングループＡＬＵ８４６に属するオペレーションは、リソースグループＲＧ１、ＲＧ４、ＲＧ９、ＲＧ１３を使用して実行可能であることを表す。
【００４６】
図１５は、ＶＬＩＷパターンに対するリソースグループ割当て状態を示す。リソースグループ割当て８６０は、入力されたＶＬＩＷパターン８６４に対する、各スロット８６２ごとのリソースグループ８６６の対応で表現される。例えば、図１５の一番下のＶＬＩＷパターンに対するリソースグループ割当て８７０では、スロット１でオペレーショングループＡＬＵを処理する際にリソースグループＲＧ１を利用すること、スロット２でオペレーショングループＡＬＵを処理する際にリソースグループＲＧ４を利用すること、スロット３でオペレーショングループＭＥＭを処理する際にリソースグループＲＧ１２を利用すること、及びスロット４でオペレーショングループＡＬＵを処理する際にリソースグループＲＧ１３を利用することが表されている。
【００４７】
図１６は、リソースグループ競合判定処理７４４を示す。リソースグループ競合判定処理の入力は、現在のリソースグループ７６０と、選択済みのリソースグループ７６２であり、出力は、競合判定結果７９０（真偽値）である。リソースグループの競合の判定は、以下のようにして行う。
【００４８】
現在のリソースグループ７６０に含まれるリソース名とファンクション名の組の集合Ｆｃ７６６を導出する（７６４）。ここで、リソースグループに含まれるファンクションは、ファンクションが明示されていないリソースについてはそのリソースが持つすべてのファンクションを、ファンクションが指定されているリソースについてはそのファンクションを集めた集合である。また、Ｆｃ７６６が使用するリソース名とポート名の組の集合Ｐｃ７７４を導出する（７７２）。ここで導出するポートは、リソースの入力ポート（データ入力及び制御入力）である。出力ポートについては、異なるファンクション間で同時に利用することができるため、ここでは考えない。
【００４９】
選択済みのリソースグループ７６２に含まれるリソース名とファンクション名の組の集合Ｆｓ７７８、及びＦｓ７７８が使用するリソース名とポート名の組の集合Ｐｓ７８６を導出する（７７６、７８４）。
【００５０】
導出したＰｃ７７４、Ｐｓ７８６を元に、競合発生＝Ｐｃ∈Ｐｓの式を用いて競合判定を行う。すなわち、ファンクションが指定されていないリソースについては、すべてのファンクションを使用する可能性があるとして、また、ファンクションまで明示されているリソースについてはファンクションごとに、リソースグループどうしの競合判定を行う。また、ファンクションどうしの競合を判定するときは、ファンクションが使用するポート情報（ＦＨＭから取得可能）を元に行っている。これは、異なるファンクションであっても同じポートを使用する場合があるからである。ファンクションの入力ポートまたは制御ポートに競合があった場合、それらのファンクションは同時には利用できない。そうでない場合は、同時に利用できることになる。つまり、リソースグループのメンバとして、リソースだけでポートが特定できない場合は、ファンクションも含めて定義することにより、リソースグループの競合判定ができるようになる。
【００５１】
図１７は、リソースグループの競合判定の例を示す。例えば、従来は図２７に示したように、リソースグループが競合すると判定されてしまい、ポート１：９０６とポート２：９１０の同時使用ができず、２つ以上のスロットから同時に利用可能なリソースを扱えなかったが、図１７に示されるように、このようなリソースも利用可能となった。図１７において、リソースＲｅｓＡ９１０は、２つのポートすなわちポート１：９０６とポート２：９０８を持ち、この２つのポートは同時に使用可能である。また、ファンクションが使用するポート情報９１２より、リソースＲｅｓＡ９１０のｆｕｎｃ１（）９０２はポート１：９０６を、ｆｕｎｃ２（）９０４はポート２：９０８を使用することが分かる。
【００５２】
これにより、スロット１ ９２１及びスロット２ ９２２でそれぞれファンクションｆｕｎｃ１（）９０２及びｆｕｎｃ２（）９０４を同時に使用可能なはずである。また、スロット・リソースグループ情報９１４から、スロット１がリソースグループＲＧ１を、スロット２がリソースグループＲＧ２を用いることがわかる。ここで、リソースグループ情報９４６では、リソースファンクション名（リソース名とファンクション名の組み合わせ）も含めてリソースグループが定義されているため、リソースグループＲＧ１とＲＧ２の間に競合は発生しないことが分かる。したがって、スロット１とスロット２でＲＧ１とＲＧ２を同時に使用可能、すなわち、ｆｕｎｃ１（）９０２とｆｕｎｃ２（）９０４を同時に使用可能である（矢印で示す）。
【００５３】
次に、別の例について説明する。図１８は、リソースグループの競合判定の例を示す。ここでは、スロットが３つあり（スロット１：９６１、スロット２：９６２、及びスロット３：９６３）、独立して同時に使用可能な２つのポート（ポート１：９６６及びポート２：９６８）を持ったリソースＲｅｓＡ９６０（例えば、ＤＳＰ（Digital Signal Processor）のＸバス、Ｙバス用の２つのポート群を持ったメモリアクセスユニットなど）を３つのスロットで共有することを考える。この場合、明らかに、少なくとも１つ以上のスロットはＲｅｓＡ９６０の両方のポート（９６６、 ９６８）を使用する可能性がある。例えば、図１８では、Ｓｌｏｔ２が、他の２つのスロット（スロット１：９６１、スロット３：９６３）の状況によって、ポート１：９６６またはポート２：９６８のどちらかを使用する。すなわち、スロット１：９６１がポート１：９６６を使用する場合、スロット２：９６２ではポート２：９６８を使用し、また、スロット３がポート２：９６８を使用する場合、スロット２ではポート１：９６６を使用する必要がある。
【００５４】
このとき、従来技術におけるリソースグループ情報９７６ではＲＧ２ＡとＲＧ２Ｂの区別がつかないため、リソースグループの競合判定の際に、ＲＧ２ＡとＲＧ２Ｂの両方ともＲＧ１Ａと競合すると判定され、リソースグループ割当て９８０が決定できない。しかし、発明技術におけるリソースグループ情報９７８では、ＲＧ２ＡとＲＧ２Ｂの区別が可能となり、ＲＧ２ＢがＲＧ１Ａと競合しないこと、及び、ＲＧ２ＡがＲＧ３Ｂと競合しないことがわかるため、正常なリソースグループ割当て９８２が決定可能となる。
【００５５】
＜ＧＵＩを用いた実施例＞
次に、本発明の第２の実施形態に係るＶＬＩＷプロセッサ自動生成方法について説明する。図１９は、入力編集部２０６のＧＵＩの構成を示す。入力編集部ＧＵＩ１４００は、アーキテクチャ情報定義ウィンドウ１４２０、オペレーション情報定義ウィンドウ１４３０、オペレーショングループ定義ウィンドウ１０００、リソース情報定義ウィンドウ１４４０、リソースグループ定義ウィンドウ１１００、ＩＯポート情報定義ウィンドウ１４５０、スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウ１２００、ＶＬＩＷパターン定義ウィンドウ１３００、マイクロ動作記述定義ウィンドウ１４６０から構成される。
【００５６】
アーキテクチャ情報定義ウィンドウ１４２０では、図６中のスロット情報４０２及びパイプラインステージ情報４０４を入力する。オペレーション情報定義ウィンドウ１４３０では、図６中のオペレーション情報４１０を入力する。オペレーショングループ定義ウィンドウ１０００では、図６中のオペレーショングループ情報４１６を入力する。リソース情報定義ウィンドウ１４４０では、図６中のリソース情報４０６を入力する。リソースグループ定義ウィンドウ１１００では、図６中のリソースグループ情報４１４を入力する。ＩＯポート情報定義ウィンドウ１４５０では、図６中のＩＯポート情報４０８を入力する。
【００５７】
スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウ１２００では、図６中のオペレーショングループ・リソースグループ関係情報４２４及びスロット・リソースグループ関係情報４２６を入力する。詳細は後述する。ＶＬＩＷパターン定義ウィンドウ１３００では、図６中のＶＬＩＷパターン情報４２２を入力する。マイクロ動作記述定義ウィンドウ１４６０では、図４中のリソースクラスを用いて記述されたマイクロ動作記述データ３２０を入力する。
【００５８】
図２０は、オペレーショングループ定義ウィンドウ１０００を示す。オペレーショングループ定義ウィンドウ１０００は、直感的にオペレーションを分類（グループ化）できるように構成されている。オペレーショングループ定義ウィンドウ１０００は、ツリー構造でオペレーショングループが表示される枠１００２と、未分類のオペレーションが表示される枠１００４から構成される。オペレーショングループ追加ボタン１０１６により、オペレーショングループ枠１００２にオペレーショングループを追加することができる。
【００５９】
そして、追加ボタン１０１２を押すことで、未分類オペレーション枠１００４から選択したオペレーションを、オペレーショングループ枠１００２から選択したオペレーショングループに追加したり、削除ボタン１０１４を押すことで、オペレーショングループ枠１００２から選択したオペレーションを、そのオペレーションが所属するオペレーショングループから削除することができる。なお、ボタンにより追加削除を行う方法の他に、ドラッグ＆ドロップによる直感的な操作をしてもよい。このように、分類済みのオペレーションを専用の枠に入れる構成を取ることにより、オペレーションのオペレーショングループへの定義忘れを減らすことができる。
【００６０】
図２１は、リソースグループ定義ウィンドウ１１００を示す。リソースグループ定義ウィンドウ１１００は、直感的で見やすい構成で、リソースグループを定義することができる。リソースグループ定義ウィンドウ１１００は、リソースグループ枠１１０２、リソースグループメンバ定義枠１１０４、リソースグループ追加ボタン１１２２、リソースクラス追加ボタン１１２４から構成される。また、リソースグループメンバ定義枠１１０４は、リソースクラス列１１０６、リソース名入力列１１０８、ファンクション名入力列１１１０から構成される。
【００６１】
通常、リソースクラスの定義はリソース名を指定するだけでよいが、図１７及び図１８に示したような読取りアクセス機能、書き込みアクセス機能を複数系統もつリソースの場合、それらの機能を同時に利用するためにはリソース内に定義されたファンクションまで指定する必要がある。リソースクラスの定義にファンクション列１１１０を追加することで、設計者は設計内容に合わせて、読取りアクセス、書き込みアクセスで使用するリソースを柔軟に指定できるようになった。この指定は、例えばリソースを選んだ後プルダウンメニュー１１１２でリソース内に定義されたファンクションを表示して選択するようにすればよい。
【００６２】
また、ある時点で追加されたリソースクラスを、全リソースグループに対して表示するので、リソースクラスに対応するリソース及びファンクションの定義忘れを減らすことができる。定義忘れにより、生成されるハードウェアにおいて無駄な競合が発生し、性能が低下することがあるため、性能低下を減らすことができる。
【００６３】
図２２は、スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウ１２００を示す。スロット、リソースグループ、オペレーショングループの間の相互関係を、チェックボックスの操作で直感的に定義できるようになっている。スロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウ１２００は、スロット・リソースグループ間の相互関係定義領域１２０２と、オペレーショングループ・リソースグループ間の相互関係定義領域１２０４から構成される。たとえば、リソースグループＲＧ＿４Ｍに対するスロット定義１２１２は、リソースグループＲＧ_４Ｍがスロット４で使用されることを表す。また、オペレーショングループＯＧ＿ＪＭＰに対するリソースグループ定義１２１４は、リソースグループＲＧ＿３ＢがオペレーショングループＯＧ＿ＪＭＰを実行可能であることを表す。
【００６４】
事前に定義されている制約の検出・修正機能をＧＵＩで実現することにより、重複定義などの記述ミスを減らすことができるようになっている。たとえば、リソースグループは複数スロットに所属できないという排他的制約により、スロット・リソースグループ間の相互関係定義領域１２０２においては、チェックボックスは同じ行に１つしかつけることができず（あるリソースグループに対応するスロットはただ１つのみ許される）、別の列にチェックをつけた場合、既に有効化されていた同じ行の別の列のチェックが排他制約により無効化される。
【００６５】
図２３は、ＶＬＩＷパターン定義ウィンドウ１３００を示す。ＶＬＩＷパターン定義ウィンドウ１３００は、ＶＬＩＷパターン編集枠１３０２、ＶＬＩＷパターン削除ボタン１３０４、ＶＬＩＷパターン追加ボタン１３０６、ＶＬＩＷパターン自動展開ボタン１３０８から構成される。ＶＬＩＷパターン編集枠１３０２では、縦方向にＶＬＩＷパターンが表示され、左端にＶＬＩＷパターンの通し番号１３１２が付加される。通し番号１３１２は、設計者の見やすさのために付加されている。また、右端のスクロールバー１３１４により、数多くのＶＬＩＷパターンを編集可能である。各ＶＬＩＷパターンでは、スロット１３１０ごとにオペレーショングループの定義を行う。
【００６６】
ＶＬＩＷパターン削除ボタン１３０４及びＶＬＩＷパターン追加ボタン１３０６により、ＶＬＩＷパターンの追加及び削除が可能である。ＶＬＩＷパターン編集枠１３０２中のオペレーショングループを選択すると、コンボボックスなどが表示され、オペレーショングループを変更することができる。ＶＬＩＷパターン自動展開ボタン１３０８を押したときに発動するＶＬＩＷパターン自動生成機能により、別のウィンドウで入力されたスロット・リソースグループ、オペレーショングループ・リソースグループの関係から、可能なすべてのＶＬＩＷパターンを自動的に生成することができる。さらに、パターンの確認中にミスを発見した場合、スロット・リソースグループ、オペレーショングループ・リソースグループ定義ウィンドウに戻って指定をやり直したり、または、ＶＬＩＷパターン自動生成により生成された不要なパターンを、ＶＬＩＷパターン削除ボタン１３０４により直接削除したり、ＶＬＩＷパターン追加ボタン１３０６により追加することができる。
【００６７】
ＶＬＩＷパターン定義ウィンドウ１３００では、ＶＬＩＷパターン入力をＧＵＩ化し、オペレーショングループを色分けすることで視覚的に直感的に定義、確認できるようになっている。これにより、定義漏れを減らせ、設計生産性が向上する。なお、色分けは、模様、形など、視覚的に区別できれば他の方法でもよい。なお、ＶＬＩＷプロセッサの仕様記述を入力する手段であれば、ここで示す実施例以外の手段でもよい。たとえば、ウィンドウ内の部品はここで示したような並びでなくてもよい。
【００６８】
なお、本発明は、上記実施形態の構成に限られず、種々の変形が可能であり、第１の実施形態において、設計記述格納部１２とプロセッサ仕様記述格納部１６がそれぞれ独立している構成ではなく、設計記述格納部１２とプロセッサ仕様記述格納部１６とが同一の格納部に備えられる構成であっても構わない。また、第２の実施形態において、ＶＬＩＷパターン編集枠１３０２中のオペレーショングループを選択すると、コンボボックスなどが表示され、オペレーショングループを変更する構成ではなく、メニューバーからの選択やテキストの直接編集によりオペレーショングループを変更する構成であっても構わない。
【図面の簡単な説明】
【００６９】
【図１】本発明の第１の実施形態に係るＶＬＩＷプロセッサ自動生成方法を実施するシステムのハードウェア構成図。
【図２】本実施形態に係るＶＬＩＷプロセッサ自動生成方法を実施するシステム構成図。
【図３】本実施形態に係るＶＬＩＷプロセッサ自動生成方法のフローチャート。
【図４】本実施形態に係るマイクロ動作記述に関する設計手順を示す図。
【図５】本実施形態に係るリソースクラスを用いて記述されたマイクロ動作の記述例を示す図。
【図６】本実施形態に係るプロセッサ仕様記述情報の構成図。
【図７】本実施形態に係るプロセッサ仕様記述情報を生成するプロセッサ仕様記述生成部の構成図。
【図８】本実施形態に係るリソースクラス展開部の構成及び動作の一例を示す図。
【図９】本実施形態に係るＨＤＬ記述生成部の構成を示す図。
【図１０】本実施形態に係るリソースグループ割当て部の処理における各ＶＬＩＷパターンに対するリソースグループ割当て処理のフローチャート。
【図１１】本実施形態に係るリソースグループ情報の例を示す図。
【図１２】本実施形態に係るスロット・リソースグループ関係情報の例を示す図。
【図１３】本実施形態に係るＶＬＩＷパターン情報の例を示す図。
【図１４】本実施形態に係るオペレーショングループ・リソースグループ関係情報の例を示す図。
【図１５】本実施形態に係るＶＬＩＷパターンに対するリソースグループ割当て状態を示す図。
【図１６】本実施形態に係るリソースグループ競合判定処理を示す図。
【図１７】本実施形態に係るリソースグループの競合判定の例を示す図。
【図１８】本実施形態に係るリソースグループの競合判定の例を示す図。
【図１９】本発明の第２の実施形態に係る入力編集部のＧＵＩの構成図。
【図２０】本実施形態に係るオペレーショングループ定義ウィンドウを示す図。
【図２１】本実施形態に係るリソースグループ定義ウィンドウを示す図。
【図２２】本実施形態に係るスロット・リソースグループ関係、オペレーショングループ・リソースグループ関係定義ウィンドウを示す図。
【図２３】本実施形態に係るＶＬＩＷパターン定義ウィンドウを示す図。
【図２４】従来技術に係るＶＬＩＷプロセッサモデルを示す図。
【図２５】従来技術に係るＶＬＩＷプロセッサ自動生成方法のフローチャート。
【図２６】従来技術に係るマイクロ動作記述に関係する部分の設計手順の概念図。
【図２７】従来技術に係るリソースグループ割当てにおけるリソースグループ競合判定の一例を示す図。
【符号の説明】
【００７０】
１２  設計記述格納部
１４  プロセッサ仕様記述生成処理
１６  プロセッサ仕様記述格納部
１８  ＨＤＬ記述生成処理
２０  ＨＤＬ記述格納部
１０４  入力操作装置（入力手段）
２２０  ＦＨＭ−ＤＢシステム
３２０  リソースクラスを用いて記述されたマイクロ動作記述データ
３１０  マイクロ動作記述データ
４００  プロセッサ仕様記述情報
４０２  スロット情報
４０６  リソース情報
４１０  オペレーション情報
４１２  マイクロ動作記述情報
４１４  リソースグループ情報
４１６  オペレーショングループ情報
４２０  ディスパッチ・ルール情報
４２２  ＶＬＩＷパターン情報
４２４  オペレーショングループ・リソースグループ関係情報
４２６  スロット・リソースグループ情報
５０２  仕様記述生成部
５５０  リソースクラス展開部
６０６  リソースクラス名
６０８  リソースファンクション名
７２０  制御部生成部
７３０  リソースグループ割当て部
７４４  リソースグループ競合判定処理
１４００  入力編集部（ＧＵＩ）
【図１】
0005049804.tif 000002
【図２】
0005049804.tif 000003
【図３】
0005049804.tif 000004
【図４】
0005049804.tif 000005
【図５】
0005049804.tif 000006
【図６】
0005049804.tif 000007
【図７】
0005049804.tif 000008
【図８】
0005049804.tif 000009
【図９】
0005049804.tif 000010
【図１０】
0005049804.tif 000011
【図１１】
0005049804.tif 000012
【図１２】
0005049804.tif 000013
【図１３】
0005049804.tif 000014
【図１４】
0005049804.tif 000015
【図１５】
0005049804.tif 000016
【図１６】
0005049804.tif 000017
【図１７】
0005049804.tif 000018
【図１８】
0005049804.tif 000019
【図１９】
0005049804.tif 000020
【図２０】
0005049804.tif 000021
【図２１】
0005049804.tif 000022
【図２２】
0005049804.tif 000023
【図２３】
0005049804.tif 000024
【図２４】
0005049804.tif 000025
【図２５】
0005049804.tif 000026
【図２６】
0005049804.tif 000027
【図２７】
0005049804.tif 000028