(57)【特許請求の範囲】
【請求項１】
複数のインタフェースライブラリを保存するデータベースと、
プロセッサのインタフェースを定義したインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリをプロセッサの機能を記述した動作記述に組み込むための書き換えを行う組み込み手段と、
前記組み込み手段でインタフェースライブラリが組み込まれた動作記述を動作合成する動作合成手段とを備えることを特徴とするプロセッサ合成装置。
【請求項２】
複数のインタフェースライブラリを保存するデータベースと、
プロセッサのインタフェースを定義したインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリを、少なくとも１つのプロセッサを含む複数のハードウェアの機能を記述した動作記述に組み込むための書き換えを行う組み込み手段と、
前記組み込み手段でインタフェースライブラリが組み込まれた動作記述を動作合成する動作合成手段とを備えることを特徴とするプロセッサ合成装置。
【請求項３】
前記プロセッサとプロセッサ以外のハードウェアが逐次動作又は並列動作をする、請求項２に記載のプロセッサ合成装置。
【請求項４】
前記動作記述が、外部メモリへのアクセスの記述を含み、前記外部メモリは配列で記述され、前記外部メモリへのアクセスの記述は、前記配列の指定であることを特徴とする、請求項１〜３の何れかに記載のプロセッサ合成装置。
【請求項５】
前記動作合成により得られたインタフェースは、バス、メモリ、レジスタ、又は、ネットワークの何れかとプロセッサとを接続する、請求項１〜４の何れかに記載のプロセッサ合成装置。
【請求項６】
前記動作合成手段は、ＲＴＬ記述、ゲートレベル記述で記述された回路モデル、及び／又は回路図を出力する、請求項１〜５の何れかに記載のプロセッサ合成装置。
【請求項７】
前記動作記述と前記インタフェース定義及び／又は抽出されたインタフェースライブラリとを記憶する記憶装置を更に備える、請求項１〜６の何れかに記載のプロセッサ合成装置。
【請求項８】
複数のインタフェースライブラリを保存するデータベースと、
ＬＳＩのインタフェースを定義したインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリをプロセッサ及び周辺ハードウェアの機能を記述した動作記述に組み込むための書き換えを行う組み込み手段と、
前記組み込み手段でインタフェースライブラリを組み込んだ動作記述を動作合成する動作合成手段とを備えることを特徴とするシステムＬＳＩ合成装置。
【請求項９】
前記動作合成手段は、ＲＴＬ記述、ゲートレベル記述で記述された回路モデル、及び／又は回路図を出力する、請求項８に記載のシステムＬＳＩ合成装置。
【請求項１０】
前記動作記述と前記インタフェース定義及び／又は抽出されたインタフェースライブラリとを記憶する記憶装置を更に備える、請求項８又は９に記載のシステムＬＳＩ合成装置。
【請求項１１】
前記インタフェースライブラリは、端子の宣言部分と前記動作記述を書き換えるための書き換え規則部分とを含んでいることを特徴とする、請求項１又は２に記載のプロセッサ合成装置。
【請求項１２】
前記動作記述は、インタフェースを規定する記述部分を含み、前記組み込み手段は、前記インタフェース定義と前記インタフェースを規定する記述部分とに基づいて、前記データベースからインタフェースライブラリを抽出して、当該抽出されたインタフェースライブラリを前記動作記述に組み込むための書き換えを行うことを特徴とする、請求項１又は２に記載のプロセッサ合成装置。
【請求項１３】
前記動作合成手段は、前記動作記述よりも抽象度の低い回路モデルを出力する、請求項１〜５の何れかに記載のプロセッサ合成装置。
【請求項１４】
前記動作記述は、インタフェースを規定する記述部分を含み、前記組み込み手段は、前記インタフェース定義と前記インタフェースを規定する記述部分とに基づいて、前記データベースからインタフェースライブラリを抽出して、当該抽出されたインタフェースライブラリを前記動作記述に組み込むための書き換えを行うことを特徴とする、請求項８に記載のシステムＬＳＩ合成装置。
【請求項１５】
前記インタフェースライブラリは、端子の宣言部分と前記動作記述を書き換えるための書き換え規則部分とを含んでいることを特徴とする、請求項８に記載のシステムＬＳＩ合成装置。
【請求項１６】
前記動作合成手段は、前記動作記述よりも抽象度の低い回路モデルをを出力する、請求項８に記載のシステムＬＳＩ合成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体に関し、特に外部インタフェースを柔軟に設計できるプロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体に関する。
【０００２】
【従来の技術】
近年、ＳＯＣ（System On Chip）又はシステムＬＳＩと呼ばれる、１つのチップでシステムの回路機能の全てを実現するＬＳＩが実現している。システムＬＳＩは、用途や処理のアルゴリズムに適したものとして設計され、その設計では、後々の再利用を前提に設計されたハードウェアマクロであるハードウェアＩＰ（Intellectual Property）が活用される。
【０００３】
図１３は、従来のシステムＬＳＩの内部構成を示している。システムＬＳＩは、プロセッサ１０と、入出力の信号処理を行う信号処理回路や記憶装置などを含む周辺ハードウェア２１、２２、２３とで構成され、これらはバス３０を介して相互に接続されている。
【０００４】
プロセッサ１０は、ソフトウェアプログラムに基づいて動作し、システムＬＳＩの中核をなす。プロセッサ１０は、ハードウェアＩＰを再利用し、またその設計は、プロセッサ設計を専門にするプロセッサ部門によりＲＴ（Register Transfer）設計で設計される。ＲＴ設計とは、レジスタ等のメモリ部や、加算器等の実行処理部による資源を用いてハードウェアを設計する設計手法である。
【０００５】
バス３０は、プロセッサ１０のバスインタフェースにより、その仕様が決定される。プロセッサ１０は、前述の通り再利用されるものであるから、バス３０の仕様は決定している。システムＬＳＩの設計に際して、新たに設計される周辺ハードウェア２１、２３、２３は、バス３０の仕様に合わせて、そのバスインタフェースが設計される。プロセッサ１０と、周辺ハードウェア２１、２２、２３とは、バス３０の仕様に合わせた通信方法でデータの送受信を行う。
【０００６】
異なるバス仕様を有する２以上のプロセッサ、周辺ハードウェアの間では、直接にデータの送受信をすることはできない。そこで、異なるバスを接続するために、バスブリッジを配置する方法がある。図１４は、バスブリッジによる２つのプロセッサの接続を示している。プロセッサＡ（１０）と、プロセッサＢ（１５）とは、異なるバスインタフェースを有しており、それぞれのバス３０、３５に接続されている。バスブリッジ４０は、バス３０とバス３５の間に接続され、一方のデータを他方に通過させる。このようなバスブリッジ４０を使用することにより、プロセッサ１０とプロセッサ１５の間で、データの送受信が可能となる。
【０００７】
【発明が解決しようとする課題】
ところで、バスブリッジを介して異なる２つのバスを接続すると、バスブリッジの分だけハード規模が大きくなるという問題がある。また、バスブリッジは、一般のバスに比べてデータ転送速度が低いため、処理速度の面でボトルネックとなることが多かった。
【０００８】
上述のように、バス３０の仕様は、プロセッサのバスインタフェースによって決定される。プロセッサはＲＴ設計で設計されるため、容易にバスインタフェースのみを変更することはできなかった。このため、システムＬＳＩで、プロセッサ１０とはバスインタフェースが異なる別のプロセッサ１５を使用しようとする場合には、バスの仕様を変更し、周辺ハードウェア２１、２２、２３は、それぞれのバスインタフェースをプロセッサ１５に合わせて設計をやり直す必要が生じた。
【０００９】
ここで、例えば、システムＬＳＩで、プロセッサと周辺ハードウェアとが同時には動作せず、かつ、双方が同じハードウェア資源を使用するような場合には、演算器やレジスタなどのハードウェア資源を互いに共有すると、ハードウェア資源を有効に使用できる。しかし、システムＬＳＩの設計では、上述のように、プロセッサ１０と、周辺ハードウェア２１、２２、２３とは、別々に設計され、プロセッサと、周辺ハードウェアとが、バスを介して接続される。このため、従来のシステムＬＳＩの設計では、ハードウェア資源の共有は困難であった。
【００１０】
また、周辺ハードウェアの機能をプロセッサに組み込み、プロセッサの命令の１つとしてその機能を実行可能なプロセッサが知られている。このプロセッサの設計では、新たに組み込む組みたいハードウェアの機能を、すでに設計済みのプロセッサの基本構成に追加するという設計手法が採られている。プロセッサは、命令を１つずつ読み込んで実行するため、組み込み命令と、基本構成の命令とは同時には動作しない。従って、双方の命令間でハードウェア資源を共有するための条件は、備わっている。しかし、プロセッサの基本構成部分は、ハードウェアマクロとして固定化されているため、組み込み命令と基本構成の命令とが同じハードウェア資源を共有することは困難であった。
【００１１】
また、プロセッサと周辺ハードウェアとが、割り込み信号等によって動作を開始し、その動作の少なくとも一部が重なるようなシステムＬＳＩも知られている。このようなシステムＬＳＩで、プロセッサと周辺ハードウェアとがハードウェア資源を共有する際には、動作タイミングか重ならないような調整が必要である。しかし、一般に、割り込み信号が発生するタイミングは不定であるため、この調整は複雑なものであり、ハードウェア資源の共有は困難であった。
【００１２】
上記した何れの場合であっても、プロセッサの命令間、又は、プロセッサと周辺ハードウェアとの間のハードウェア資源の共有は困難であり、同じ種類のハードウェア資源を、それぞれのプロセッサや周辺ハードウェアに与えていた。このため、ハードウェア資源の利用率が低く、無駄が生じており、プロセッサやシステムＬＳＩの回路規模の縮小の妨げとなっていた。
【００１３】
本発明は、上記課題を解決し、任意に特定の仕様に適合したバスインタフェースを有するプロセッサを合成し、ハードウェア資源を容易に共有可能なプロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本発明のプロセッサ合成装置は、複数のインタフェースライブラリを保存するデータベースと、プロセッサの外部条件で定まるインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリをプロセッサの機能を記述した動作記述に組み込んで動作合成する動作合成手段とを備えることを特徴とする。
【００１５】
また、本発明のプロセッサ合成方法は、プロセッサの外部条件で定まるインタフェース定義に基づいてデータベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリを、プロセッサの機能を記述した動作記述に組み込んで動作合成することを特徴とする。
【００１６】
本発明のプロセッサ合成装置及びプロセッサ合成方法では、プロセッサの機能は同じで、そのインタフェースのみを変更したプロセッサを得ることができる。このため、プロセッサの使用条件に合わせて、複数種類のインタフェースを有するプロセッサを簡易に設計できる。
【００１７】
更に、本発明のプロセッサ合成装置は、複数のインタフェースライブラリを保存するデータベースと、プロセッサの外部条件で定まるインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリを、少なくとも１つのプロセッサを含む複数のハードウェアの機能を記述した動作記述に組み込んで動作合成する動作合成手段とを備えることを特徴とする。
【００１８】
本発明のプロセッサ合成方法は、プロセッサの外部条件で定まるインタフェース定義に基づいてデータベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリを、少なくとも１つのプロセッサを含む複数のハードウェアの機能を記述した動作記述に組み込んで動作合成することを特徴とする。
【００１９】
本発明のプロセッサ合成装置及びプロセッサ合成方法は、プロセッサの機能に、プロセッサとは別の処理を行うハードウェアの機能を追加して動作合成する。このため、プロセッサの機能を簡易に拡張できる。
【００２０】
本発明のシステムＬＳＩ合成装置は、複数のインタフェースライブラリを保存するデータベースと、ＬＳＩの外部条件で定まるインタフェース定義に基づいて前記データベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリをプロセッサ及び周辺ハードウェアの機能を記述した動作記述に組み込んで動作合成する動作合成手段とを備えることを特徴とする。
【００２１】
本発明のシステムＬＳＩ合成方法は、ＬＳＩの外部条件で定まるインタフェース定義に基づいてデータベースからインタフェースライブラリを抽出し、該抽出されたインタフェースライブラリを、プロセッサ及び周辺ハードウェアの機能を記述した動作記述に組み込んで動作合成することを特徴とする。
【００２２】
本発明のシステムＬＳＩ合成装置及びシステムＬＳＩ合成方法は、プロセッサの機能に、システムＬＳＩを構成する周辺ハードウェアの機能を追加して動作合成するため、回路規模の縮小が可能となる。
【００２３】
本発明のプロセッサ合成方法では、前記複数のハードウェアが逐次動作又は並列動作をすることが好ましい。何れの場合にも、資源の共有化がなされるため、回路規模の縮小が図れる。
【００２４】
また、本発明のプロセッサ合成方法では、前記動作記述が、周辺ハードウェアの配列アクセスとして記述されることが好ましい。この場合、動作記述が容易となる。
【００２５】
本発明のプロセッサ合成方法では、前記インタフェースは、バス、メモリ、レジスタ、又は、ネットワークの何れかとプロセッサとを接続することが好ましい。
インタフェースは、バス以外のメモリやレジスタやネットワークなどに直接アクセスするインタフェースであってもよく、その場合、バスを介することによるデータ転送速度の低下を回避することができる。
【００２６】
本発明のプロセッサ合成方法では、前記複数のハードウェアは、少なくとも１つのハードウェア資源を共有することが好ましい。この場合、同時には動作しないハードウェア資源が共有できるので、ハードウェア資源の無駄を省くことができる。
【００２７】
本発明のプロセッサ合成方法では、前記複数のハードウェアは、動作タイミングが相互に重ならないことが好ましい。
動作合成の際に、動作タイミングが重ならないように調整されるため、効率よくハードウェア資源を使用できる。
【００２８】
本発明のプロセッサ合成方法及びシステムＬＳＩ合成方法では、前記動作記述が、ＲＴＬ記述、ゲートレベル記述、プログラミング言語で記述された回路モデル、及び／又は回路図として合成されることが好ましい。プログラミング言語としては、Ｃ言語やＣ＋＋言語などを使用することができる。
【００２９】
本発明の好ましい態様のプロセッサ合成装置は、上記好ましい態様のプロセッサ合成方法を採用して動作合成を行うことにより、上記プロセッサ合成方法と同様の効果が得られる。
【００３０】
また、本発明のプロセッサ合成装置及びシステムＬＳＩ合成装置は、前記動作記述と前記インタフェース定義及び／又は抽出されたインタフェースライブラリとを記憶する記憶装置を更に備えることが好ましい。この場合、動作記述やインタフェース定義などを作業用データベースなどの記憶装置に記憶しておき、記憶されたものを呼び出して使用することで動作合成を行うことができる。また、記憶装置に、動作合成装置の動作記述の記述言語、又は、出力形式の切り換えなどの合成条件を記憶させておくと、作業性が向上する。
【００３１】
本発明の記録媒体は、上記プロセッサ及びシステムＬＳＩ合成方法を実現するプログラムを記録することを特徴とする。
【００３２】
【発明の実施の形態】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を更に詳細に説明する。図１は、本発明の第１実施形態例のプロセッサ合成装置を示している。プロセッサ合成装置は、動作合成手段７と、ライブラリデータベース３とを備える。動作合成装置は、動作記述１とインタフェース定義２とに基づいて、ハードウェア記述であるＲＴＬ記述４を出力する。
【００３３】
動作記述１には、プロセッサの全機能が、Ｃ言語やＣ＋＋言語などの高級言語で記述されている。インタフェース定義２は、得るべきプロセッサが使用される際の、バス仕様などの外部条件により決定されるインタフェースの構成を定義する。動作記述１とインタフェース定義２とは、動作合成手段７に入力される。
【００３４】
ライブラリデータベース３は、インタフェースライブラリを保存する。動作合成手段７は、入力されたインタフェース定義２に対応するインタフェースライブラリを抽出する。動作合成手段７は、動作記述１に、抽出されたインタフェースライブラリ３を組み込んで動作合成する。ＲＴＬ記述には、ハードウェア化するのに適したＲＴＬ記述と、シミュレーションを行うのに適したＲＴＬ記述とがあり、動作合成装置は、何れか一方、又は、双方のＲＴＬ記述を出力する。
【００３５】
図２は、図１のプロセッサ合成装置を使用したプロセッサ合成方法の手順を示している。まず、得るべきプロセッサの機能を記述している動作記述１と、インタフェース定義２とを、動作合成を行うプロセッサ合成装置に入力する（ステップＳ１）。次いで、動作合成手段７は、動作記述１を言語解析し、インタフェースを規定する記述部分があるか否かを調べる（ステップＳ２）。インタフェースを規定する記述部分がない場合には、ステップＳ１１に進んで、動作記述１をそのまま動作合成し、ＲＴＬ記述４を出力する。
【００３６】
言語解析の結果、インタフェース記述部分が存在することが判明した場合には、インタフェース記述部分から、内部データバスのビット幅ｄｗ１と、内部アドレスバスのビット幅ａｗ１とを抽出する（ステップＳ３）。次に、インタフェース定義２を参照して、データバスのポート数とその方向、及び、データバスのビット幅ｄｗ２を抽出する（ステップＳ４）。データバスのポート数とその方向により、リード及びライト制御信号が、それぞれ独立であるか、共用であるかが決定される。
【００３７】
内部データバスのビット幅ｄｗ１と、データバスのビット幅ｄｗ２とを比較し（ステップＳ５）、内部データバスビット幅ｄｗ１のほうが小さいときには、データバスのアクセスサイクル数Ｔを１に設定し（ステップＳ６）、大きいときには、アクセスサイクル数Ｔをｄｗ１／ｄｗ２（小数点以下切り上げ）に設定する（ステップＳ７）。
【００３８】
アクセスサイクル数Ｔが決定すると、動作合成手段７はライブラリデータベース３を検索し、アドレスバスのビット幅がａｗ１以上で、データバスのビット幅がｄｗ２で、データバスのポート数とその方向がインタフェース定義２に指定されたもので、かつ、アクセスサイクル数がＴである全ての条件を満たすインタフェースライブラリを抽出する（ステップＳ８）。該当するインタフェースライブラリが存在しない場合には、エラーとなり（ステップＳ９）、存在する場合には、抽出されたインタフェースライブラリを組み込む（ステップＳ１０）。動作合成手段７は、動作記述１に、抽出されたインタフェースライブラリを組み込んで動作合成し、プロセッサのＲＴＬ記述４を得る（ステップＳ１１）。
【００３９】
図３は、上記プロセッサ合成方法によりＣＰＵが合成される様子を模式的に示している。同図において、動作記述１に、インタフェース定義２を与えると、ライブラリデータベース３から抽出された、インタフェース定義２に該当するインタフェースライブラリを組み込んで動作合成し、ＣＰＵ１、ＣＰＵ２、又は、ＣＰＵ３の何れかのプロセッサが合成される。ＣＰＵ１、ＣＰＵ２、及び、ＣＰＵ３はそれぞれ、機能は同じで、そのインタフェースの構成のみが異なるプロセッサである。
【００４０】
図２及び図３を更に参照して、インタフェース生成について、具体的に説明する。動作記述１には、ＣＰＵの全機能が記述されている。この例では、アクセスメモリ空間は、６５５３６（１６ビット）で、命令語には、ＡＤＤと、ＳＵＢと、ＭＯＶとがあり、それぞれ専用の実行処理回路により実行される。また、ｓｈｏｒｔ型変数は１６ビットの変数であるため、プロセッサは、メモリから１６ビットの命令語をフェッチし、その内容に従って処理を実行する。
【００４１】
インタフェース定義２は、ＣＰＵのインタフェースを定義し、データバスの幅、及び、データバスのポート数とその方向を定義する。インタフェース定義２ａは、データバスが８ビットで、リード及びライト兼用で、かつ、データ転送が双方向のインタフェースを定義している。インタフェース定義２ｂは、データバスが８ビットで、リード及びライト独立で、かつ、データ転送が片方向のインタフェースを定義している。インタフェース定義２ｃは、データバスが１６ビットで、データバスはリード及びライト独立で、かつ、データ転送が片方向のインタフェースを定義している。動作合成の際には、インタフェース定義２ａ、２ｂ、２ｃのうち、何れか１つのインタフェース定義が指定される。ライブラリデータベース３には、それぞれのインタフェース定義２に対応するインタフェースライブラリが登録されている。
【００４２】
動作合成装置は、ステップＳ３で、動作記述１から、アクセスメモリ空間を規定する内部アドレスバス幅ａｗ１と、命令語長により定まる内部データバス幅ｄｗ１とを抽出する。このＣＰＵでは、内部アドレスバス幅ａｗ１は１６ビット、内部データバス幅ｄｗ１も１６ビットである。次いでステップＳ４で、インタフェース定義から、データバスのポート数とその方向を抽出する。ここでは、インタフェース定義２ａに示すインタフェース、つまり、データバス幅ｄｗ２は８ビットで、リード及びライト兼用で、かつ、データ転送が双方向のインタフェースが指定されたとする。
【００４３】
内部データバス幅ｄｗ１（１６ビット）とデータバス幅ｄｗ２（８ビット）とを比較すると、ｄｗ１＞ｄｗ２なので、ステップＳ７へ進み、アクセスサイクル数Ｔを計算し、アクセスサイクル数Ｔは２と決まる。ステップＳ８で、以上の条件、つまり、アドレスバス幅が１６ビット以上で、データバス幅が８ビットで、リード及びライト兼用で、データ転送が双方向で、かつ、アクセスサイクル数Ｔは２であるインタフェースライブラリを、ライブラリデータベース３から探す。この場合、該当するインタフェースライブラリは、インタフェースライブラリ３ａである。
【００４４】
組み込むべきインタフェースライブラリが決定すると、ステップＳ１１では、動作記述１に、インタフェースライブラリ３ａを組み込んで動作合成する。動作合成により、ＣＰＵ１が得られる。ステップＳ１で、インタフェース定義２ｂを指定した場合には、インタフェースライブラリ３ｂが組み込まれ、ＣＰＵ２が得られる。インタフェース定義２ｃを指定した場合には、インタフェースライブラリ３ｃが組み込まれ、ＣＰＵ３が得られる。
【００４５】
ここで、インタフェースライブラリ３ａを組み込むステップＳ１０について、図４から図７を参照して更に詳しく説明する。インタフェースライブラリの構成には、バスにつながる端子の宣言部分と、インタフェースの動作で動作記述を書き換えるための書換え規則部分とが含まれる。動作記述にインタフェースライブラリを組み込むと、動作記述に端子の宣言部分が追加され、メモリアクセスなどのインタフェースを介したデータのやり取りが、書換え規則に従って書き換えられる。
【００４６】
図４は、インタフェースライブラリ３ａの端子の宣言の記述例を示している。１行目及び３〜５行目のoutputは出力端子であることを示し、２行目のinoutは、入出力端子であることを示している。１行目及び２行目の［m:n］は、ＭＳＢがｍで、ＬＳＢがｎである複数ビットのバス線を示し、１行目では１６ビットのアドレスバスを、２行目では８ビットのデータバスをそれぞれ定義している。
【００４７】
図５は、データの読み取り動作の書換え規則を示している。ライブラリの組み込みの際に、動作記述中の、X=mem[Y];の記述は、１行目から１３行目に示す処理に書き換えられる。なお、X及びYは変数を示し、動作記述中の変数に適宜置き換えられる。
【００４８】
１行目では、８ビットの中間変数msb_X及びlsb_Xが宣言される。２行目ではバスを使用中である旨を示す信号を出力し、３行目ではデータバスをリードで使用する旨の信号を出力し、３行目では１６ビットのデータのうち下位の８ビットのデータを使用する旨の信号を出力する。
【００４９】
５行目ではアドレスバスにY+OFFSET(mem)で示されるアドレスを出力する。ここで、OFFSET(mem)は、メモリの配置されるアドレスの先頭番地を示し、動作記述中のコメントとして、動作記述中の宣言部分として、又は、動作記述とは別の記述として与えられる。６行目では中間変数lsb_Xにデータバスの値、つまりアドレスバスの示す番地のメモリのデータが代入される。７行目は、クロックサイクルが１つ進むことを意味する。
【００５０】
８行目から１２行目までは、上位８ビットのデータを中間変数msb_Xに代入する点を除いて、２行目から６行目までと同様の動作をする。１３行目では、中間変数msb_Xを上位８ビット、lsb_Xを下位８ビットとして結合した１６ビットのデータが、変数Xに代入される。
【００５１】
図６は、データの書き込み動作の書換え規則を示している。図５に示すデータの読み込み動作とは、４行目及び１０行目でデータバスをライトで使用する旨の信号を出力する点と、メモリへデータを書き込む点が相違する。動作記述中に、mem[Y]=Xの記述がある場合には、１行目から１３行目の処理に書き換えられる。
【００５２】
図７は、図３の動作記述１にインタフェースライブラリ３ａを組み込んだ例を示している。動作記述１は、先頭に図４に示す端子の宣言の部分が追加されて、fetch=mem[pc++];の部分がfetch=mem[pc];pc++;に変換された後に、図５に示す書換え規則に従って書き換えられる。書き換えの際には、X及びYは前述したように動作記述の変数に置き換えられる。つまり、Xはfetchに、Yはpcにそれぞれ置き換えられる。以上のようにして、インタフェースライブラリが組み込まれる。なお、上記したfetch=mem[pc++];の書き換えは、ステップＳ１０より前の段階で行われていてもよい。
【００５３】
上記プロセッサ合成方法を使用してプロセッサを合成すると、プロセッサのバスインタフェースが柔軟に設計できる。例えば、図１３に示すプロセッサ１０をプロセッサ１５に置き換える場合には、プロセッサ１５の動作記述に、プロセッサ１０のバスインタフェースと同じインタフェース定義２を与えて動作合成してプロセッサ１５を合成する。これにより、プロセッサ１０のバス３０に、プロセッサ１５を直接に接続できるようになり、周辺ハードウェア２１、２２、２３を設計し直す必要はなくなる。
【００５４】
プロセッサの動作記述１には、プロセッサ単体の機能だけでなく、システムＬＳＩを構成する周辺ハードウェアの機能を、併せて記述することができる。図８は、本発明の第２実施形態例のプロセッサ合成方法の具体例を示し、周辺ハードウェアの機能とプロセッサの機能とが逐次動作する例を示している。第１実施形態例のプロセッサ合成方法とは、動作記述の内容が異なる。
【００５５】
図８に示すように、動作記述中のｍａｉｎ関数には、ＨＷ関数とprocessor関数とを連続して記述する。このような記述を動作合成し、ＨＷ関数及びprocessor関数が逐次動作するプロセッサを得る。ＨＷ関数には、周辺ハードウェアの機能が記述され、２つの計算式に基づいて演算を行うことを定義している。processor関数には、ＣＰＵの機能が記述され、命令語に基づいて、加算や乗算などを行う処理を定義している。また、読み込んだ命令語がＨＡＬＴであるときには、ＣＰＵの動作を終了することが定義されている。
【００５６】
第２実施形態例のプロセッサ合成方法で得られたプロセッサは、はじめに周辺ハードウェアの機能が動作し、その動作が終了すると、ＣＰＵの機能が動作する。ＣＰＵの機能では、命令語を読み取り、その命令語に従って処理をする。命令語がＨＡＬＴでないときには、次の命令語を読み取り処理を続け、ＨＡＬＴのときには、ＣＰＵの動作を終了し、はじめに戻り、周辺ハードウェアの機能が動作する。
【００５７】
図８の記述例では、周辺ハードウェアとＣＰＵとで同じハードウェア資源である、加算器（＋）及び乗算器（＊）の演算資源を使用する。動作合成の際には、動作合成の対象となる動作記述中に、同じ演算資源を使用し、かつ、その演算資源は同時には使用されないような場合には、演算資源を共有するような合成が行われる。このため、動作記述１を動作合成すると、周辺ハードウェアの機能とＣＰＵの機能とでハードウェア資源を共有するＲＴＬ記述が生成される。なお、動作合成の方法として、動作記述１の演算の実行順序を、同じ演算資源を共有するようにスケジューリングした後に、動作合成を行う方法も知られている。この動作合成の方法を、本実施形態例のプロセッサ合成方法の動作合成の際に適用することも可能である。
【００５８】
図９は、本発明の第３実施形態例のプロセッサ合成方法の具体例を示し、ＣＰＵの機能から周辺ハードウェアの機能が実行可能な例を示している。第３実施形態例で得られるプロセッサは、ＣＰＵが、組み込み命令として周辺ハードウェアの機能を実行できる点で、第２実施形態例のプロセッサ合成方法と相違する。図９に示すような記述を動作合成することで、第２実施形態例のようにハードウェア資源の共有がなされると共に、ＣＰＵの機能を簡易に拡張可能となる。
【００５９】
図１０は、本発明の第４実施形態例のプロセッサ合成方法の具体例を示し、周辺ハードウェアの機能と、ＣＰＵの機能とが並列動作する、（ａ）は記述例、（ｂ）は動作フローを示している。第４実施形態例で得られるプロセッサは、周辺ハードウェアの機能とＣＰＵの機能とが並列動作する点で、第１実施形態例から第３実施形態例で得られるプロセッサとは相違する。第４実施形態例で得られるプロセッサは、同図（ｂ）に示すように、周辺ハードウェアの機能である処理１が実行され、所定のタイミングで、ＣＰＵが動作を開始する。処理１とＣＰＵの動作とは一部並列に実行され、処理１は終了する。ＣＰＵが、命令語ＡＷＡＫＥを読み取ると、周辺ハードウェアの機能である処理２の実行が開始する。ＣＰＵの動作と処理２とは、一部並列に実行され、ＣＰＵは動作を終了する。
【００６０】
並列に実行されるＣＰＵと周辺ハードウェアとが、同じハードウェア資源を共有する場合には、その動作タイミングが重ならないようにしなければならない。例えば、同じハードウェア資源である共有メモリを共有し、共有メモリに並列にアクセスする場合には、そのアクセスタイミングが重ならないようなスケジューリングが必要となる。本実施形態例では、処理１と、処理２と、ＣＰＵの機能とが、まとめて動作合成され、動作合成の際には、共有メモリへのアクセスが、同じ配列へのアクセスとして認識される。このため、設計者がプログラムを調整して共有メモリへのアクセスタイミングをスケジューリングする必要はなく、動作合成の際の並列化の仕組みにより、自動的にアクセスタイミングがスケジューリングされる。これにより、ハードウェア資源の共有が容易になると共に、メモリアクセスが効率よく行える。
【００６１】
図１１は、本発明の第５実施形態例のプロセッサ合成装置を示している。本実施形態例のプロセッサ合成装置は、図１に示すプロセッサ合成装置とは、データが作業用データベース９を介してやり取りされる点で相違する。
【００６２】
作業用データベース９は、動作記述１、インタフェース定義２、及び、ライブラリデータベース３から抽出されたインタフェースライブラリの少なくとも１つを記憶する。これらのデータは、任意のときに保存することが可能である。また、作業用データベース９は、動作合成手段７が、動作合成を行う際の中間結果を保存するために用いることもできる。設計者は、例えば、作業用データベース９に記憶されたインタフェース定義２と、新たに記述した動作記述１とを、動作合成手段７に入力して動作合成を行うことができる。このため、過去の設計資産が容易に再利用可能となり、作業効率が向上する。
【００６３】
また、ＲＴＬ記述４に、ハードウェア化に適したＲＴＬ記述と、シミュレーションを行うのに適したＲＴＬ記述とがある場合には、動作合成手段７が何れのＲＴＬ記述を出力すべきかを、合成条件として作業用データベース９に記憶させることができる。作業用データベース９に合成条件を記憶させることで、動作合成手段７に合成条件を毎回入力する手間が省ける。
【００６４】
なお、上記実施形態例では、インタフェース定義２として、バスインタフェースを例に挙げて説明したが、インタフェース定義２は、これに限られず、さまざまなインタフェースを定義できる。図１２は、バス以外のインタフェースを組み込んだ例を示し、（ａ）は共有メモリインタフェースを、（ｂ）はＬＡＮインタフェースを組み込んだ例をそれぞれ示している。
【００６５】
図１２（ａ）は、インタフェース定義２として、共有メモリインタフェースを定義して、動作合成した例である。プロセッサ及び周辺ハードウェアにそれぞれ共有メモリインタフェースを設けている。バスを介した接続では、バスの帯域の問題で、性能の面でのネックとなることが多いが、バスを介することなく、直接に共有メモリにアクセスできるため、性能が向上する。
【００６６】
共有メモリ以外にも、図１２（ｂ）に示すように、ＬＡＮインタフェースを定義し、これを組み込むこともできる。更に、共有レジスタや、ＦＩＦＯ（First In First Out）などのインタフェースを定義し、これを組み込んで動作合成することも可能である。更に、ＬＡＮなどの複雑なプロトコルを有するインタフェースを生成する際には、ライブラリデータベース中にハンドシェイク形式のインタフェースライブラリを用意し、プロセッサとＬＡＮインタフェースとがハンドシェイク形式インタフェースを介して接続されるインタフェースを生成することもできる。
【００６７】
上記実施形態例のプロセッサ合成装置は、ワークステーションやパーソナルコンピュータなどのコンピュータシステムを用いて構成できる。また、ライブラリデータベースは、コンピュータシステムに接続された外部記憶装置として構成することもできる。動作記述やインタフェース定義は、電子ファイルとして保存されたものをプロセッサ合成装置に入力してもよいし、コンピュータに接続されたキーボードから直接入力してもよい。更に、動作合成装置の出力は、ＲＴＬ記述に限定されず、これに代えて、又は、これに加えてゲートレベル記述や、Ｃ言語又はＣ＋＋言語などのプログラミング言語で記述された回路モデルや、回路図などを出力できるように構成してもよい。この場合、動作合成装置の設定によって、何れを出力するのかを決定するように構成することが好ましい。
【００６８】
上記プロセッサ合成方法を用いて、システムＬＳＩを構成する周辺ハードウェアの全て又は一部を、プロセッサの動作記述に含めることによって、システムＬＳＩが合成される。つまり、まず、プロセッサ及び周辺ハードウェアの機能を動作記述として記述し、ＬＳＩの外部条件に基づいてハードウェアのインタフェースを定義し、この定義されたインタフェースに基づいて、所定のデータベースからインタフェースライブラリを検索し、この検索されたインタフェースライブラリを動作記述に組み込んで動作合成することにより、システムＬＳＩが得られる。
【００６９】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明のプロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体は、上記実施形態例にのみ限定されるものでなく、上記実施形態例の構成から種々の修正及び変更を施したプロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体も、本発明の範囲に含まれる。
【００７０】
【発明の効果】
以上説明したように、本発明のプロセッサ合成装置、システムＬＳＩ合成装置、プロセッサ合成方法、システムＬＳＩ合成方法、及び記録媒体では、バスの仕様に合わせてプロセッサを動作合成できるため、そのインタフェースを柔軟に設計できる。このため、異なるバス仕様を有するプロセッサや周辺ハードウェアに、本来バス仕様の異なるプロセッサを容易に接続できる。また、動作合成の際に、プロセッサの機能と、周辺ハードウェアの機能とをまとめて動作合成することで、ハードウェア資源の共有が容易になり、ハードウェア資源の無駄が省かれると共に、回路規模の縮小が可能になる。
【図面の簡単な説明】
【図１】本発明の第１実施形態例のプロセッサ合成装置を示すブロック図。
【図２】図１のプロセッサ合成装置を使用したプロセッサ合成方法の手順を示すフローチャート。
【図３】図２のプロセッサ合成方法の様子を示す模式図。
【図４】インタフェースライブラリの端子の宣言部分を示す記述例。
【図５】インタフェースライブラリのバスリード時の書換え規則を示す記述例。
【図６】インタフェースライブラリのバスライト時の書換え規則を示す記述例。
【図７】図３の動作記述１にインタフェースライブラリを組み込んだ記述例。
【図８】本発明の第２実施形態例のプロセッサ合成方法で動作合成する動作記述の例で、プロセッサと周辺ハードウェアとが逐次動作する記述例。
【図９】本発明の第３実施形態例のプロセッサ合成方法で動作合成する動作記述の例で、プロセッサと周辺ハードウェアとが逐次動作し、プロセッサに周辺ハードウェアの機能を組み込んだ記述例。
【図１０】本発明の第４実施形態例のプロセッサ合成方法で得られたプロセッサの、（ａ）はプロセッサと周辺ハードウェアとが並列動作する動作記述例、（ｂ）はプロセッサの動作フローを示す図。
【図１１】本発明の第５実施形態例のプロセッサ合成装置を示すブロック図。
【図１２】バス以外のインタフェースを組み込んだ例で、（ａ）は共有メモリインタフェース、（ｂ）はＬＡＮインタフェースを組み込んだ例を示すブロック図。
【図１３】従来のシステムＬＳＩの構成を示すブロック図。
【図１４】異なるバスインタフェースを持つプロセッサの接続を示すブロック図。
【符号の説明】
１：動作記述
２：インタフェース定義
３：ライブラリデータベース
４：ＲＴＬ記述
７：動作合成手段
９：作業用データベース
１０、１５：プロセッサ
２１、２２、２３：周辺ハードウェア
３０：プロセッサ１０のバス
３５：プロセッサ１５のバス
【図１】
0003825328.tif 000002
【図２】
0003825328.tif 000003
【図３】
0003825328.tif 000004
【図４】
0003825328.tif 000005
【図５】
0003825328.tif 000006
【図６】
0003825328.tif 000007
【図７】
0003825328.tif 000008
【図８】
0003825328.tif 000009
【図９】
0003825328.tif 000010
【図１０】
0003825328.tif 000011
【図１１】
0003825328.tif 000012
【図１２】
0003825328.tif 000013
【図１３】
0003825328.tif 000014
【図１４】
0003825328.tif 000015