(57)【要約】【課題】  基本命令プロセッサと専用命令プロセッサとがハードウエア資源を共有する際に、自由度高く通信インタフェースの設計が可能で、かつ、低コストで製作可能なシステムＬＳＩの設計方法を提供する。【解決手段】  システムＬＳＩ全体の機能を記述したアルゴリズム記述１を、ハードウエア部分とソフトウエア部分とに分割する。ハードウエア部分は、高級言語を用いて、基本命令プロセッサ記述２と、専用命令プロセッサ記述３と、フレキシブルインタフェース記述４とでプロセッサ１０の機能を記述し、それを動作合成してＲＴＬ記述５とシミュレーション用記述６とを得る。機能をアルゴリズムで記述したプロセッサ１０の記述を動作合成することで、通信インタフェースの帯域の自由度が高まり、基本命令プロセッサと専用命令プロセッサの間でハードウエア資源の共有が可能となる。【選択図】  図１
2006202329.tif 000002
【特許請求の範囲】
【請求項１】
アルゴリズム記述にて記述された機能が入力され前記機能を回路規模、処理時間に基づいて、ハードウエア部分とソフトウエア部分とに分割すると共に、前記ハードウエア部分を基本命令プロセッサの機能をアルゴリズム記述した基本命令プロセッサ記述、専用命令プロセッサの機能をアルゴリズム記述した専用命令プロセッサ記述、及び前記基本命令プロセッサと専用命令プロセッサとを接続する通信インターフェイスの機能をアルゴリズム記述した通信インターフェイス記述とに分割する機能分割部と、
前記基本命令プロセッサ記述、専用命令プロセッサ記述及び通信インターフェイス記述とに基づいて動作合成を行い、ＲＴＬ記述データ及びシミュレーション用記述データとを出力する動作合成部とを備えることを特徴とするシステムＬＳＩの設計装置。
【請求項２】
前記ＲＴＬ記述データ及び設定された回路規模に基づいて回路規模をチェックし、前記回路規模が前記設定された回路規模に収まらないときに前記機能分割部に機能分割のやり直しを指示する資源規模確認部を更に備えることを特徴とする請求項１記載のシステムＬＳＩの設計装置。
【請求項３】
前記シミュレーション用記述データ及び設定された処理時間に基づいて処理能力をチェックし、前記処理能力が前記設定された処理時間を超えるときに前記機能分割部に機能分割のやり直しを指示する時間性能確認部を更に備えることを特徴とする請求項１又は２記載のシステムＬＳＩの設計装置。
【請求項４】
アルゴリズム記述にて記述された機能が入力され前記機能を回路規模、処理時間に基づいて、ハードウエア部分とソフトウエア部分とに分割すると共に、前記ハードウエア部分を基本命令プロセッサの機能をアルゴリズム記述した基本命令プロセッサ記述、専用命令プロセッサの機能をアルゴリズム記述した専用命令プロセッサ記述、及び前記基本命令プロセッサと専用命令プロセッサとを接続する通信インターフェイスの機能をアルゴリズム記述した通信インターフェイス記述とに分割する機能分割ステップと、
前記基本命令プロセッサ記述、専用命令プロセッサ記述及び通信インターフェイス記述とに基づいて動作合成を行い、ＲＴＬ記述データ及びシミュレーション用記述データとを出力する動作合成ステップと、
前記ＲＴＬ記述データ及び設定された回路規模とに基づいて回路規模をチェックし、前記回路規模が前記設定された回路規模に収まらないときに前記機能分割ステップに戻り機能分割のやり直しを指示する資源規模確認ステップと、
前記シミュレーション用記述データ及び設定された処理時間とに基づいて処理能力をチェックし、前記処理能力が設定された処理時間を超えるときに前記機能分割ステップに戻りに機能分割のやり直しを指示する時間性能確認部と備えることを特徴とするシステムＬＳＩの設計方法。
【請求項５】
アルゴリズム記述にて記述された機能が、プロセッサを構成するためのハードウエア部分と前記プロセッサ上で動作するアプリケーションプログラムを生成するためのソフトウエア部分とに分割されて入力され、入力された前記ハードウエア部分の機能と前記ソフトウエア部分の機能とに基づいてシステムＬＳＩを設計するシステムＬＳＩの設計方法であって、
前記システムＬＳＩのハードウエア部分が
基本命令プロセッサの機能をアルゴリズム記述した基本命令プロセッサ記述と、
専用命令プロセッサの機能をアルゴリズム記述した専用命令プロセッサ記述と、
前記基本命令プロセッサと専用命令プロセッサとを接続する通信インターフェイスの機能をアルゴリズム記述した通信インターフェイス記述とに分けられており、前記基本命令プロセッサ記述と、前記専用命令プロセッサ記述と、前記通信インターフェイス記述とがコンピュータに入力され、該コンピュータがこれらをまとめて動作合成してＲＴＬ記述データと、シミュレーション用記述データとを得るステップと、を有することを特徴とするシステムＬＳＩの設計方法。
【請求項６】
基本命令プロセッサ、専用命令プロセッサ、及び、前記基本命令プロセッサと前記専用命令プロセッサとの間でデータ転送を行う通信インタフェースを備え、所定のソフトウエアに基づいて動作するシステムＬＳＩの設計をコンピュータで行うシステムＬＳＩの設計方法であって、
ソフトウエア部分のアルゴリズム記述とハードウエア部分のアルゴリズム記述に分けられて記述され、
かつ、ハードウエア部分のアルゴリズム記述は、基本命令プロセッサ記述と、専用命令プロセッサ記述と、前記基本命令プロセッサ記述と、前記専用命令プロセッサ記述とを接続する通信インターフェイス記述とに分けられており、それぞれの記述をコンピュータが受けるステップと、
前記基本命令プロセッサ記述と、前記専用命令プロセッサ記述と、前記フレキシブルインターフェイス記述とを、コンピュータがまとめて動作合成して、ＲＴＬ記述データ及びシミュレーション用記述データを得るステップと、を実行することを特徴とするシステムＬＳＩの設計方法。
【請求項７】
前記ＲＴＬ記述及び設定された回路規模に基づいて回路規模をチェックし、前記回路規模が前記設定された回路規模に収まらないときには前記アルゴリズム記述にて記述された機能の前記ハードウエア部分と前記ソフトウエア部分との分割をやり直すステップを更に備えることを特徴とする請求項５又は６記載のシステムＬＳＩの設計方法。
【請求項８】
前記シミュレーション用記述データ及び設定された処理時間に基づいて、処理能力である時間性能をチェックし、前記処理能力が前記設定された処理時間を超えるときには前記アルゴリズム記述にて記述された機能の前記ハードウエア部分と前記ソフトウエア部分との分割をやり直すステップを更に備えることを特徴とする請求項５又は６記載のシステムＬＳＩの設計方法。
【請求項９】
前記基本命令プロセッサ及び前記専用命令プロセッサはそれぞれ演算資源を有し、それぞれの各一方は、他方の演算資源を前記通信インターフェイスを介して共有するように、前記基本命令プロセッサ記述データ又は前記専用プロセッサ記述データが構成されていることを特徴とする請求項５乃至８のいずれかに記載のシステムＬＳＩの設計方法。
【請求項１０】
更に、システムＬＳＩの機能のうち、ソフトウエア部分の機能を記述したアプリケーションプログラム記述データをコンパイルし機械語命令セットデータを得るステップと、
前記機械語命令セットデータと、前記シミュレーション用記述データとをシミュレータを用いて設計検証するステップと、を実行することを特徴とする請求項５乃至９の何れかに記載のシステムのＬＳＩの設計方法。
【請求項１１】
前記基本命令プロセッサ記述は、ADD、SUB、MOV、JMP、SETを含む汎用的な演算処理を行う前記基本命令プロセッサ機能の記述であり、
前記専用命令プロセッサ記述は、特定用途のために追加された専用命令を実現するための前記専用命令プロセッサ機能の記述であることを特徴とする請求項５乃至１０の何れかに記載のシステムＬＳＩの設計方法。
【請求項１２】
前記専用命令プロセッサ記述は、前記基本命令プロセッサの機能が持つADD、SUB、MOV、JMP、SETを含む汎用的な演算処理で使用された資源を少なくとも１つ利用した専用命令プロセッサ機能の記述であることを特徴とする請求項１１に記載のシステムＬＳＩの設計方法。
【請求項１３】
前記基本命令プロセッサ記述を、基本命令プロセッサライブラリから抽出された所望の命令で構成する、請求項１乃至１２の何れかに記載のシステムＬＳＩの設計方法。
【請求項１４】
記憶装置を備えたコンピュータにおいて実行され、システムＬＳＩの設計に用いられるプログラムであって、
前記システムＬＳＩは、基本命令プロセッサ、専用命令プロセッサ、及び、前記基本命令プロセッサと前記専用命令プロセッサとの間でデータ転送を行う通信インタフェースを備え、所定のソフトウエアに基づいて動作するシステムＬＳＩであり、
基本命令プロセッサの機能を記述した基本命令プロセッサ記述データと、
専用命令プロセッサの機能を記述した専用命令プロセッサ記述データと、
前記基本命令プロセッサと専用命令プロセッサとを接続する通信インターフェイスの機能を記述した通信インターフェイス記述データと、を前記コンピュータの記憶装置に記憶させ、
前記基本命令プロセッサ記述と、前記専用命令プロセッサ記述と、前記通信インターフェイス記述と、をまとめて前記コンピュータに動作合成させ、ＲＴＬ記述データの出力と、シミュレーション用記述データの出力と、
を実行させるためのプログラム。
【請求項１５】
記憶装置を備えたコンピュータにおいて実行されるシステムＬＳＩ設計用のプログラムであって、
前記システムＬＳＩは、基本命令プロセッサ、専用命令プロセッサ、及び、前記基本命令プロセッサと前記専用命令プロセッサとの間でデータ転送を行う通信インタフェースを備え、所定のソフトウエアに基づいて動作するシステムＬＳＩであり、
基本命令プロセッサの機能を記述した基本命令プロセッサ記述データと、
専用命令プロセッサの機能を記述した専用命令プロセッサ記述データと、
前記基本命令プロセッサと専用命令プロセッサとを接続する通信インターフェイスの機能を記述した通信インターフェイス記述データと、を記憶させるステップと、
前記基本命令プロセッサ記述と、前記専用命令プロセッサ記述と、前記通信インターフェイス記述と、をまとめて動作合成させ、ＲＴＬ記述とシミュレーション用記述とを得るステップと、を実現させることを特徴とするシステムＬＳＩ設計用のプログラム。
【請求項１６】
前記ＲＴＬ記述データに基づいて、回路規模をチェックし、設定された回路規模に収まらないときには前記アルゴリズム記述にて記述された機能の前記ハードウエア部分と前記ソフトウエア部分との分割をやり直すことを、さらに前記コンピュータに実行させることを特徴とする請求項１４又は１５に記載のプログラム。
【請求項１７】
前記シミュレーション用記述データに基づいて、処理能力である時間性能をチェックし、設定された処理時間を超えるときには前記アルゴリズム記述にて記述された機能の前記ハードウエア部分と前記ソフトウエア部分との分割をやり直すことを、さらに前記コンピュータに実行させることを特徴とする請求項１４又は１５に記載のプログラム。
【請求項１８】
前記基本命令プロセッサ及び前記専用命令プロセッサはそれぞれ演算資源を有し、それぞれの各一方は、他方の演算資源を前記通信インターフェイスを介して共有するように、前記基本命令プロセッサ記述データ又は前記専用プロセッサ記述データが構成されているように実行させることを特徴とする請求項１４乃至１７のいずれかに記載のプログラム。
【請求項１９】
前記基本命令プロセッサ記述は、ADD、SUB、MOV、JMP、SETを含む汎用的な演算処理を行う前記基本命令プロセッサ機能の記述であり、
前記専用命令プロセッサ記述は、特定用途のために追加された専用命令を実現するための前記専用命令プロセッサ機能の記述であることを特徴とする請求項１４乃至１８のいずれかに記載のプログラム。
【請求項２０】
前記専用命令プロセッサ記述は、前記専用基本命令プロセッサの機能が持つADD、SUB、MOV、JMP、SETを含む汎用的な演算処理で使用された資源を少なくとも１つ利用した専用命令プロセッサ機能の記述であることを特徴とする請求項１９記載のプログラム。
【請求項２１】
更に、コンピュータに、システムＬＳＩの機能のうち、ソフトウエア部分の機能を記述したアプリケーションプログラム記述データをコンパイルし機械語命令セットデータを出力させるステップと、
前記機械語命令セットデータと、前記シミュレーション用記述データとをシミュレータを用いて設計検証させるステップと、
を実行させることを特徴とする請求項１４至２０の何れかに記載のプログラム。
【請求項２２】
請求項１４乃至２１の何れかに記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩの設計方法及びこれを記録した記録媒体に関し、特に、基本命令プロセッサと専用命令プロセッサの間でデータ転送を行う通信インタフェースの帯域の自由度が高く設計でき、ハードウエア資源の共有により低コストで製作できるシステムＬＳＩの設計方法、及び、これを記録した記録媒体に関する。
【背景技術】
【０００２】
近年では、ＳＯＣ（System On Chip）又はシステムＬＳＩと呼ばれる、１つのチップでシステムの回路機能の全てを実現するＬＳＩが実現している。また、半導体製造プロセスの微細化に伴い、システムＬＳＩに集積できるゲート数は飛躍的に増加し、それに伴いシステムＬＳＩの処理能力も向上している。
【０００３】
システムＬＳＩは、画像処理や暗号化処理、フィルタ処理、復号処理など多彩な処理に使用され、その入出力信号の種類、処理のアルゴリズム、或いは、要求される時間的性能なども様々である。システムＬＳＩでは、処理のアルゴリズムは益々複雑化し、且つ短時間での処理が要求される傾向にある。このため、最近のシステムＬＳＩは、使用される信号処理に特化したものとして設計される。
【０００４】
図５は、従来のソフト・ハード協調設計システムを使用したシステムＬＳＩの設計フローを示している。一般に、動作合成を使用したソフト・ハード協調設計システムは、Ｃ言語のような汎用プログラム言語、又は、専用の動作レベル記述言語などの高級言語で記述したアルゴリズム記述１を、レジスタ等のメモリ部及び加算器等の実行処理部によるハードウエア資源を用いてハードウエア化できる論理合成用ＲＴＬ（レジスタ転送レベル）記述５のような低位レベル記述に変換する。
【０００５】
アルゴリズム記述１には、システムＬＳＩの全機能が記述されている。機能の大部分をハードウエアで実現すると、処理速度は高速となるが、回路規模は大きくなり、製造コストがかさむ。また、大部分をソフトウエアで実現すると、回路規模は小さくなるが、処理速度は低速となる。そこで、設計の初期段階では同図に示すように、回路規模や処理時間、コストなどの制約条件を勘案して、アルゴリズム記述１に記載された機能を、ハードウエア資源を用いて実現するものと、ソフトウエア資源を用いて実現するものとに振り分け、その機能を分割する（ステップＳ２０１）。
【０００６】
全てのハードウエア資源を、始めから設計すると、その開発には費用と時間がかかる。このため、これまでに蓄積された資産を活かして、ハードウエアＩＰ（intellectual Property）として保有する設計済みのハードウェアマクロを、可能な限り再利用して設計する。ハードウエアＩＰは、再利用しやすいように、汎用性の高いものとして設計されており、容易にシステムＬＳＩ構成に組み込める。
【０００７】
ハードウエアは、汎用的な演算処理を行うマイクロプロセッサなどの基本命令プロセッサ１１と、入出力部分など用途に特化した特定処理を行う専用命令プロセッサ１２とを組み合わせて設計される。基本命令プロセッサ１１には、既に設計済みのハードウエアＩＰが使用される。一般に、基本命令プロセッサ１１は、システムＬＳＩを設計する部門とは別の、プロセッサ設計を専門とする部門によりＲＴ設計で設計され、シミュレーション用記述６ａとともに提供される。
【０００８】
使用する基本命令プロセッサ１１が決まると、専用命令プロセッサ１２の設計に移行する（ステップＳ２０２）。専用命令プロセッサ１２と基本命令プロセッサ１１とは、バスを介してデータの通信を行うため、専用命令プロセッサ１２の設計に際して、そのバスインタフェースは基本命令プロセッサ１１のバス仕様に合わせて設計される。専用命令プロセッサ１２の設計では、その機能が高級言語で記述される。
【０００９】
専用命令プロセッサ１２の記述から、動作合成によって専用命令プロセッサＲＴＬ記述５ｂとシミュレーション用記述５ｂとが得られる（ステップＳ２０３）。得られた専用命令プロセッサＲＴＬ記述５ｂが、制約として設定された回路規模以内で実現できるか否かを判断し（ステップＳ２０４）、設定された回路規模を超えるときには、ステップＳ２０１に戻り、システムＬＳＩの設計をやり直す。回路規模のチェックが良であるときには、設計済みである基本命令プロセッサＲＴＬ記述５ａと専用命令プロセッサＲＴＬ記述５ｂとが、バスのＲＴＬ記述５ｃを介して接続される（ステップＳ２０５）
次いで、ソフトウエア設計では、アプリケーションプログラムと、専用命令プロセッサ１２を働かせるためのデバイスドライバとを高級言語で記述する（ステップＳ２０６）。アプリケーションプログラムとデバイスドライバとは、コンパイラでコンパイルされ、基本命令プロセッサ１１又は専用命令プロセッサ１２が直接理解できる機械語命令に変換される（ステップＳ２０７）。得られた機械語命令と、シミュレーション用記述６ａ、６ｂ、及び、バス部シミュレーション用記述６ｃを結合したシミュレーション用記述とが、命令セットシミュレータにかけられ（ステップＳ２０８）、システムＬＳＩ構成と同じ環境によってシミュレーションが行われる。
【００１０】
命令セットシミュレータでは、ハードウエアとソフトウエアとをシミュレートし、ハードウエアやソフトウエアの設計に誤りのないことが確認される（ステップＳ２０９）。ステップＳ２０９では、同時に、実際の使用条件下でのシステムＬＳＩ構成の処理能力が測られ、その時間的性能が、要求される条件を満たすか否かが判断される（ステップＳ２１０）。結果が否であるときには、ステップＳ２０１に戻り、再度ハードウエアとソフトウエアの機能分割からやり直す。結果が良であるときには、システムＬＳＩの設計は完了し、その後、基本命令プロセッサＲＴＬ記述５ａと、専用命令プロセッサＲＴＬ記述５ｂと、バスＲＴＬ記述５ｃとが論理合成され、システムＬＳＩの実際のゲート回路が決定する。
【００１１】
図６は、上記設計により得られたシステムＬＳＩの構成を示している。システムＬＳＩは、基本命令プロセッサ１１及び専用命令プロセッサ１２で構成され、命令制御バス７１及びデータ通信バス７２を介して接続されている。基本命令プロセッサ１１と、専用命令プロセッサ１２とは、それぞれ命令制御部である命令デコーダ２１、３１、データメモリ制御部２２、３２、及び、実行処理制御部２３、３３と、データメモリ群２４、３４と、実行処理群２５、３５と、命令制御インタフェース４１ａ、４１ｂと、データメモリインタフェース４２ａ、４２ｂと、実行処理インタフェース４３ａ、４３ｂとを備える。また、基本命令プロセッサ１１は、命令フェッチレジスタ２０を備えている。
【００１２】
命令制御インタフェース４１ａには、命令データバス５１ａと命令制御バス５２ａとが接続される。データメモリインタフェース４２aには、メモリ選択バス５３ａとメモリアクセスバス５４ａとが接続される。実行処理インタフェース４３ａには、実行処理選択バス５５ａと、実行処理アクセスバスと５６ａとが接続される。
【００１３】
また、命令制御インタフェース４１ａは、メモリ制御バス６１ａを介してデータメモリインタフェース４２ａを制御する制御信号、及び、実行処理制御バス６２ａを介して実行処理インタフェース４３ａを制御する制御信号を生成する。データメモリインタフェース４２ａは、命令制御インタフェース４１ａから受信した制御信号に従って、メモリ選択バス５３ａによってデータメモリを選択し、メモリアクセスバス５４ａを介したメモリ値の読み書きのタイミングを制御する。実行処理インタフェース４３ａは、命令制御インタフェース４１ａから受信した制御信号に従って、実行処理選択バス５５ａによって実行処理を選択し、実行処理アクセスバス５６ａでのデータの入出力を制御し、リードアクセスバス６３ａ及びライトアクセスバス６４ａを介してデータメモリ群の内容を読み書きする。
【００１４】
命令制御インタフェース４１ｂには、命令データバス５１ｂと命令制御バス５２ｂとが接続される。データメモリインタフェース４２ｂには、メモリ選択バス５３ｂとメモリアクセスバス５４ｂとが接続される。実行処理インタフェース４３ｂには、実行処理選択バス５５ｂと、実行処理アクセスバスと５６ｂとが接続される。
【００１５】
また、命令制御インタフェース４１ｂは、メモリ制御バス６１ｂを介してデータメモリインタフェース４２ｂを制御する制御信号、及び、実行処理制御バス６２ｂを介して実行処理インタフェース４３ｂを制御する制御信号を生成する。データメモリインタフェース４２ｂは、命令制御インタフェース４１ｂから受信した制御信号に従って、メモリ選択バス５３ｂによってデータメモリを選択し、メモリアクセスバス５４ｂを介したメモリ値の読み書きのタイミングを制御する。実行処理インタフェース４３ｂは、命令制御インタフェース４１ｂから受信した制御信号に従って、実行処理選択バス５５ｂによって実行処理を選択し、実行処理アクセスバス５６ｂでのデータの入出力を制御し、リードアクセスバス６３ｂ及びライトアクセスバス６４ｂを介してデータメモリ群の内容を読み書きする。
【００１６】
命令制御インタフェース４１ａ、４１ｂは、命令制御バス７１により接続されている。また、データメモリインタフェース４２ａ、４２ｂは、データ通信バス７２により接続されている。専用命令プロセッサ１２は、命令制御バス７１により、命令フェッチレジスタ２０にアクセスし、データ通信バス７２を介してデータメモリ群２４の内容を読み書きする。専用命令プロセッサ１２が、データメモリ群２４に、同時にアクセスできるデータメモリ数は、データ通信バス７２のバス帯域によって定められている。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
上記従来の設計方法では、基本命令プロセッサ１１と専用命令プロセッサ１２の間のインタフェース及びバスは、基本命令プロセッサ１１の仕様に基づいて決定される固定的なものであり、互いの資源は固定的な条件でのみ共有されていた。例えば、専用命令プロセッサ１２から、同時に多量のデータメモリ群２４にアクセスする際に、データ通信バス７２の帯域がそのアクセス数よりも少ないときには、１クロックで処理を終えることができず、数クロックを費やしていた。
【００１８】
基本命令プロセッサ１１は、汎用性の高い演算資源を実行処理群２５に保有しているが、実行処理群２５と実行処理群３５の間には、バスが存在しないために、実行処理群３５から実行処理群２５にアクセスすることはできない。このため、基本命令プロセッサ１１と専用命令プロセッサ１２とが、同じタイプの演算資源を使用する場合であっても、実行処理群２５と実行処理群３５のそれぞれに演算資源を設ける必要があった。
【００１９】
また、動作検証の際に命令セットシミュレータに入力するシミュレーション用記述は、基本命令プロセッサ１１、専用命令プロセッサ１２、及び、バス部のそれぞれの設計の際に作成され、別々に用意されていた。命令セットシミュレータでは、それらを結合して動作検証するため、基本命令プロセッサ１１と専用命令プロセッサ１２の間の通信は、バス部分の設計が完了した後に、専用命令プロセッサ１２のデバイスドライバとともに低位レベルで検証を要し、その検証は複雑であった。
【００２０】
上記問題を解決する技術として、近年、特定用途向けにゲート規模や処理速度、消費電力などの要求パラメータから、メモリサイズ等の資源を変更して基本命令プロセッサ構成を再構築できるXtensaプロセッサが知られている（Design Wave Magazine 1999 December）。ただし、このプロセッサでは、専用命令の追加用のインタフェースを規定し、再構築する基本命令プロセッサとは分離されていた。
【００２１】
また、特定用途向けに専用命令プロセッサ構成を動作レベル記述言語からＲＴＬ記述に動作合成して専用命令化し、基本命令プロセッサ構成から命令実行できるＶＵＰＵプロセッサも知られている（Design Wave Magazine 1999 December）。ただし、このプロセッサでは、基本命令プロセッサ構成と専用命令追加用インタフェースを規定し、基本命令プロセッサ構成と、構築する専用命令プロセッサ構成とは分離されていた。
【００２２】
本発明のシステムＬＳＩの設計方法は、基本命令プロセッサと専用命令プロセッサの間のデータ転送を行う通信インタフェースについて、その帯域の自由度が高く設計でき、ハードウエア資源を共有することにより低コストで製作できるＬＳＩの設計方法及びこれを記憶した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記目的を達成するために、本発明のシステムＬＳＩの設計方法は、基本命令プロセッサ、専用命令プロセッサ、及び、前記基本命令プロセッサと前記専用命令プロセッサとの間でデータ転送を行う通信インタフェースを備え、所定のソフトウエアに基づいて動作するステムＬＳＩの設計方法において、前記基本命令プロセッサと、前記専用命令プロセッサと、前記通信インタフェースとをアルゴリズムで記述するステップと、前記基本命令プロセッサ、前記専用プロセッサ、及び、前記通信インタフェースの記述から動作合成するステップとを有することを特徴とする。
【００２４】
本発明のシステムＬＳＩの設計方法では、基本命令プロセッサと、新しく設計する専用命令プロセッサと、それらの間でデータ転送を行う通信インタフェースとをアルゴリズムで記述した後に、これらを動作合成するため、通信インタフェースについて自由度が高いシステムＬＳＩを構成することができる。アルゴリズムを記述するステップでは、例えばＣ言語とＣ＋＋言語とが混在して記述しても良いし、同一言語を用いて記述しても良い。
【００２５】
また、本発明の記録媒体は、上記本発明のシステムＬＳＩの設計方法を実現するプログラムを記録したことを特徴とする。
【００２６】
また、本発明のシステムＬＳＩの設計方法では、前記基本命令プロセッサ及び前記専用命令プロセッサの各一方は、他方のハードウエア資源を共有することが好ましい。この場合、共通のハードウエア資源を双方のプロセッサにそれぞれ配置することがなく、無駄を省くことができる。ハードウエア資源には、メモリ資源や演算資源、マルチプレクサ、或いは、それらを接続するバスの配線資源などの資源が含まれる。
【００２７】
本発明のシステムＬＳＩの設計方法では、前記動作合成ステップが、前記通信インタフェースの帯域を決定するステップを有することが好ましい。通信インタフェースの帯域を基本命令プロセッサ記述と専用命令プロセッサ記述から適切に設定することで、帯域を過不足なく設定できる。
【００２８】
本発明のシステムＬＳＩの設計方法では、前記動作合成ステップが、前記基本命令プロセッサ、前記専用命令プロセッサ、及び、前記通信インタフェースをシミュレーションする記述を出力することが好ましい。この場合、基本命令プロセッサと、専用命令プロセッサと、通信インタフェースとをまとめて動作検証できるため、検証作業が容易となる。
【００２９】
本発明のシステムＬＳＩの設計方法は、前記シミュレーション記述とソフトウエア記述とに基づいてＬＳＩの動作をシミュレーションするステップを更に有することが好ましい。この場合、システムＬＳＩの実際の動作を検証できる。
【００３０】
本発明のシステムＬＳＩの設計方法は、前記動作合成ステップの後に生じた前記専用命令プロセッサの仕様変更又は不具合部分の修正に代えて、前記基本命令プロセッサにおける基本命令、又は、前記基本命令及び前記専用命令プロセッサにおける専用命令を記述するソフトウエア記述部分の修正を行うことが好ましい。回路パターンが決定した後に、仕様変更や不具合修正のために、回路パターンを作り直すのには、時間とコストがかかる。このため、回路パターン化されている他の命令を組み合わせて使用するようにソフトウエアを修正し、仕様変更又は不具合修正箇所の命令を回避することで、仕様変更又は不具合修正をすることができる。
【００３１】
本発明のシステムＬＳＩの設計方法は、前記専用命令プロセッサに、プログラマブル論理回路を含む冗長回路部分を形成し、前記専用命令プロセッサの仕様変更又は不具合部分の修正に代えて、前記冗長回路部分を使用することが好ましい。冗長回路部分は、システムＬＳＩの中に再構築可能なプログラマブル論理回路などとして用意され、システムＬＳＩの配線修正、又は、プログラマブル論理回路によって、或いはこれら双方を組み合わせることで、仕様変更又は不具合修正をすることができる。
【００３２】
本発明のシステムＬＳＩの設計方法では、前記基本命令プロセッサ記述を、基本命令プロセッサライブラリから抽出された所望の命令で構成し、前記専用命令プロセッサ記述の少なくとも一部の命令を、前記基本命令プロセッサライブラリに登録することが好ましい。この場合、基本命令プロセッサは、所望の命令のみを有するプロセッサとして柔軟に再構築できる。また、専用命令プロセッサの専用命令とした命令の少なくとも一部をライブラリに登録することで、その後の設計では、これを基本命令プロセッサの命令として取り込める。このように、ライブラリを活用することで、開発にかかる時間と費用を抑えることができる。
【００３３】
本発明のシステムＬＳＩの設計方法は、複数の前記専用命令プロセッサを少なくとも１つの基本命令プロセッサと組み合わせることが好ましい。この場合、複数の処理をそれぞれの専用命令プロセッサが担当するため、高速な処理が可能となる。基本命令プロセッサは１以上複数が配置できる。
【００３４】
本発明のシステムＬＳＩの設計方法は、前記基本命令プロセッサ、前記専用命令プロセッサ、及び、前記通信インタフェースがＣ言語、Ｃ言語の拡張言語、又は、オブジェクト指向言語によって記述されることが好ましい。高級言語の中でも、Ｃ言語はシステムの設計に適しているため、システムＬＳＩの設計に際しては、Ｃ言語で機能を記述することが好ましい。Ｃ言語拡張言語には、Ｃ言語をベースとするＣ＋＋言語や、Ｃ言語を動作合成に適した言語に変更したような言語や、オブジェクト指向言語も含まれる。
【発明の効果】
【００３５】
以上説明したように、本発明のシステムＬＳＩの設計方法及びこれを記録した記録媒体では、機能をアルゴリズムで記述した基本命令プロセッサ記述と専用命令プロセッサ記述と通信インタフェース記述とを動作合成するため、双方のプロセッサ間のインタフェース及びバスの帯域を柔軟に設計できる。また、双方のプロセッサ間で演算資源の共有が可能となるので、ハードウエア資源の無駄を省くことができ、製作コストを低く抑えることができる。更に、基本命令プロセッサと専用命令プロセッサとを１つのプロセッサとしてシミュレートできるため、動作検証が容易となる。
【発明を実施するための最良の形態】
【００３６】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を詳細に説明する。図１は、本発明の一実施形態例のソフト・ハード協調設計システムを用いたＬＳＩ設計の処理手順を示している。また、図２は、本設計で得られるシステムＬＳＩの機能構成をブロック図として示している。動作合成を使用したソフト・ハード協調設計システムは、Ｃ言語のような汎用プログラム言語、又は、専用の動作レベル記述言語などの高級言語で、機能を記述したアルゴリズム記述１を、図１に示す処理手順によって、レジスタ等のメモリ部及び加算器等の実行処理部で構成を用いてハードウエア化するのに適した、低位レベル記述である論理合成用ＲＴＬ（レジスタ転送レベル）記述５に変換する。
【００３７】
まず、システムＬＳＩのアルゴリズム記述１は、回路規模や処理時間、消費電力などを考慮して、ハードウエア部分とソフトウエア部分とに分割される（ステップＳ１）。ハードウエア部分の設計では、まず、プロセッサ１０の中核として使用する、既に設計済みの命令を有する基本命令プロセッサ１１を選定する。次いで、アルゴリズム記述１の機能を、基本命令プロセッサ１１のみの機能では処理速度の面などで実現困難な場合に、特定処理を実行する専用命令プロセッサ１２を追加する。つまり、プロセッサ１０は、設計済みの命令を組み合わせて構成する基本命令プロセッサ１１と新たに専用命令を追加して得られた専用命令プロセッサ１２とで構成される。
【００３８】
プロセッサ１０の設計では、その機能を高級言語で記述する（ステップＳ２）。プロセッサ１０の記述は、基本命令プロセッサ記述２と、専用命令プロセッサ記述３と、フレキシブルインタフェース記述４とからなる。基本命令プロセッサ１１の機能を記述した基本命令プロセッサ記述２は、アルゴリズム記述１を実現するのに必要な命令のみをライブラリから抽出し、それらを組み合わせて記述する。専用命令プロセッサ１２の機能は、専用命令プロセッサ記述３として記述する。また、基本命令プロセッサ１１と専用命令プロセッサ１２とを接続するフレキシブルインタフェース１３は、フレキシブルインタフェース記述４として記述する。
【００３９】
フレキシブルインタフェース１３は、命令制御インタフェース４１と、メモリアクセスインタフェース４２と、実行処理インタフェース４３とで構成される。後述するように、各インタフェース間を結ぶバスの本数などの帯域は、基本命令プロセッサ記述２及び専用命令プロセッサ記述３の記述内容によって決定される。また、基本命令プロセッサ１１と専用命令プロセッサ１２とは、フレキシブルインタフェース１３を介して互いの資源を共有可能である。
【００４０】
プロセッサ１０の記述を動作合成すると（ステップＳ３）、ＲＴＬ記述５とシミュレーション用記述６とが得られる。シミュレーション記述６は、プロセッサ１０をクロックサイクルレベルで動作検証するために用いられる。得られたＲＴＬ記述５によって、回路規模がチェックされ、制約として設定された回路規模以内に収まらないときには、ステップＳ１に戻り、設計をやり直す（ステップＳ４）。回路規模チェックが、良である場合には、ハードウエア部分の構成が定まる。
【００４１】
ソフトウエア部分の設計では、アプリケーションプログラムを高級言語で記述し（ステップＳ５）、システムＬＳＩの動作を決定する。プログラムの内容が定まると、コンパイラでコンパイルし（ステップＳ６）、プロセッサ１０が直接理解できる機械語命令セットが生成される（ステップＳ７）。機械語命令セットと、ステップＳ３で得られたシミュレーション用記述６とが、命令セットシミュレータに掛けられ、設計に誤りがないかが確認される（ステップＳ８）。
【００４２】
命令セットシミュレータでは、処理能力である時間性能が測られる。時間性能が、制約として設定された処理時間を超えるときには、ステップＳ１へ戻り、ハードウエア部分とソフトウエア部分の分割から、設計をやり直す（ステップＳ９）。設定された時間以内であれば、システムＬＳＩの設計は完了し、プロセッサ１０と、プロセッサ１０で動作するアプリケーションプログラムとが確定する。
【００４３】
図２に示すように、最終的に得られたプロセッサ１０は、基本命令プロセッサ１１と、専用命令プロセッサ１２と、フレキシブルインタフェース１３とにより構成される。基本命令プロセッサ１１と、専用命令プロセッサ１２とは、それぞれ命令制御部である命令デコーダ２１、３１、データメモリ制御部２２、３２、及び、実行処理制御部２３、３３と、データメモリ群２４、３４と、実行処理群２５、３５とを備える。また、基本命令プロセッサ１１は、命令フェッチレジスタ２０を備えている。
【００４４】
フレキシブルインタフェース１３は、命令制御インタフェース４１と、データメモリインタフェース４２と、実行処理インタフェース４３とから構成される。命令制御インタフェース４１には、命令データバス５１と命令制御バス５２とが接続される。データメモリインタフェース４２には、メモリ選択バス５３とメモリアクセスバス５４とが接続される。実行処理インタフェース４３には、実行処理選択バス５５と、実行処理アクセスバスと５６とが接続される。
【００４５】
また、命令制御インタフェース４１は、メモリ制御バス６１を介してデータメモリインタフェース４２を制御する制御信号、及び、実行処理制御バス６２を介して実行処理インタフェース４３を制御する制御信号を生成する。データメモリインタフェース４２は、命令制御インタフェースから受信した制御信号に従って、メモリ選択バス５３によってデータメモリを選択し、メモリアクセスバス５４を介したメモリ値の読み書きのタイミングを制御する。実行処理インタフェース４３は、命令制御インタフェース４１から受信した制御信号に従って、実行処理選択バス５５によって実行処理を選択し、実行処理アクセスバス５６でのデータの入出力を制御し、リードアクセスバス６３ａ及びライトアクセスバス６４ａを介してデータメモリ群の内容を読み書きする。
【００４６】
命令制御インタフェース４１は、メモリ制御バス６１及びメモリ選択バス５３を介してデータメモリ群２４及び３４にメモリ選択の信号を送り、実行処理制御バス６２及び実行処理選択バス５５を介して実行処理群２５及び３５に実行処理選択の信号を送る。実行処理インタフェース４３は、リードアクセスバス６３、ライトアクセスバス６４、及び、メモリアクセスバス５４を介して、データメモリ群２４及び３４のメモリ値を読み書きし、実行処理アクセスバス５６を介して他の実行処理のユニットにアクセスをする。それぞれのバスが、同時にアクセス又は選択できる数であるバスの帯域は、プロセッサ１０の記述内容により決定される。
【００４７】
プロセッサ１０の動作について説明する。図示しないプログラムメモリから読み出された命令は、命令フェッチレジスタ２０に記憶される。命令デコーダ２１又は３１は、命令フェッチレジスタ２０を参照して命令を解読する。命令が解読されると、その指示内容に従って、データメモリ制御２２又は３２と、実行処理制御部２３又は３３とは、命令制御インタフェース４１及びメモリ制御バス６１を介して、データメモリインタフェース３２に、命令制御インタフェース４１及び実行処理制御バス６２を介して実行処理インタフェース３３に、それぞれ信号を送る。
【００４８】
信号を受け取ったデータメモリインタフェース４２は、メモリ選択バス５３を介して該当するデータメモリを選択する。実行処理インタフェース４３は、実行処理選択バス５５を介して１つ又は複数の実行処理を選択し、リードアクセスバス６３、ライトアクセスバス６４、及び、メモリアクセスバス５４を介してデータメモリの値を読み書きする。また、実行処理アクセスバス５６を介して、実行処理群３５の何れかの実行処理から、実行処理群２５の何れかの実行処理にアクセス可能であるため、基本命令プロセッサ１１の演算資源を専用命令プロセッサ１２の演算資源と同時に使用できる。メモリ選択バス５３、メモリアクセスバス５４、実行処理選択バス５５、実行処理アクセスバス５６、メモリ制御バス６１、実行処理制御バス６２、リードアクセスバス６３、及び、ライトアクセスバス６４の同時選択又はアクセス本数は、図１の基本命令プロセッサ記述２、及び、専用命令プロセッサ記述３により決定するフレキシブルインタフェース記述４により決定する。
【００４９】
図３は、プロセッサ１０の記述の具体的な例を示す。図２及び図３を参照して、フレキシブルインタフェースを更に詳しく説明する。プロセッサ記述は、Ｃ言語をベースにした高級言語で記述される。１行目から６行目までは命令コードの定義、８行目から１２行目までがメモリ資源の定義、１４行目から２７行目までが基本命令プロセッサの動作の記述部分、及び、２９行目から３７行目までが専用命令プロセッサの動作の記述部分である。
【００５０】
ここで、プロセッサ記述１０の記述のうち、Ｃ言語にはない記述について説明する。１０行目から１２行目までに記述されるreg(x:y)は、ＭＳＢ（最上位ビット）がｘビット目から始まるｙビット語長のメモリの確保を意味する。例えば８行目のｐｃは、８ビットのプログラムカウンタを意味する。ter(m:n)は、ＭＳＢがｍビット目から始まるｎビット語長のバス信号の確保を意味する。例えば１６行目では、ｏｐｃ、ｏｐｒ１、ｏｐｒ２、及び、ｏｐｒ３の４つのバス信号線が、それぞれ４ビットの信号線として確保される。演算子「：：」は、ビットを結合する特殊演算子である。１８行目では、それぞれが４ビットのｏｐｃ、ｏｐｒ１、ｏｐｒ２、及び、ｏｐｒ３を結合し、１６ビットのバスと同等に扱うことを意味する。また、１４行目のprocessは、動作合成ツールが１つの合成単位を認識するための記述である。
【００５１】
図３のプロセッサ１０の記述から、基本命令プロセッサ１１は、２０行目から２４行目までに規定されるＡＤＤ、ＳＵＢ、ＭＯＶ、ＪＭＰ、及びＳＥＴの５つの基本命令で動作し、専用命令プロセッサ１２は、３２行目及び３３行目で規定されるように８ビットの乗算を行い、その乗算結果と８ビットのメモリ値を２つ結合した１６ビットのアキュムレータとの和をとるユーザ命令で動作する。
【００５２】
また、基本命令プロセッサ１１の構成は、９行目及び１２行目から、データメモリ群２２のメモリ資源は、８ビット構成で且つメモリ数が１６個である。実行処理群２３は、その記述から演算資源がａｄｄ(加算)、ｓｕｂ（減算）、及びｉｎｃ（インクリメント）であることがわかる。専用命令プロセッサ１２の構成は、実行処理群３５の演算資源が、ｍｕｌ（乗算）とａｃｃ（アキュムレータ）とであることが読み取れる。
【００５３】
フレキシブルインタフェース１３のバスの帯域については、まず、基本命令プロセッサ１１の構成から、１６行目及び１８行目から命令データバス５１は１６ビットのバスで、メモリアクセスバス５３は、１サイクルで必要とされる処理が完了するためには、リードが２本及びライトが１本必要となることがわかる。専用プロセッサ１２のユーザ命令を追加することによって、メモリアクセスバス５３は、リードが４本及びライトが２本、それぞれ必要となる。つまり、専用プロセッサ１２の追加により、リードは２本、ライトは１本、それぞれのバスを追加する。
【００５４】
専用命令プロセッサ１２のユーザ命令を実行する実行処理群３５から、実行処理アクセスバス５６を介して、基本命令プロセッサ１１の演算資源であるａｄｄ及びｉｎｃにアクセスできる。３３行目では１６ビットの加算を行うが、実行処理群２５の８ビット加算器であるａｄｄを使用できるため、実行処理群３５には、１６ビット加算器は必要なく、８ビット加算器を１つ追加し、２つの８ビット加算器を使用することにより、１６ビット加算を実現する。つまり、双方のプロセッサは、演算資源を共有できる。基本命令プロセッサ１１と専用命令プロセッサ１２とは、同時には動作しないため、演算資源の共有化により回路の冗長性を低くすることができる。
【００５５】
本実施形態例のシステムＬＳＩの設計方法では、機能を記述した基本命令プロセッサ記述２、専用命令プロセッサ記述３、及び、フレキシブルインタフェース記述４をまとめて動作合成することにより、双方のプロセッサ間でデータ転送を行うバスの構成を、双方のプロセッサの設計に合わせて柔軟に構成することができる。基本命令プロセッサ１１は、高級言語で記述されるため、ＲＴ設計していた従来と比べて、再構築が容易となる。双方のプロセッサに共通のインタフェースを設けることにより、バスを介して、専用命令プロセッサ１１が基本命令プロセッサ１２のメモリ資源や演算資源に直接にアクセスできるため、回路の無駄を省くことができる。
【００５６】
従来、シミュレーション用記述は、基本命令プロセッサ用と、専用命令プロセッサ用と、バス部用とが別々に用意され、それらを結合して命令セットシミュレータで検証する必要があったが、動作合成により、全ての機能を含むシミュレーション用記述６が生成されるため、検証作業が容易となる。
【００５７】
なお、本発明のシステムＬＳＩの設計方法を利用して設計されたプロセッサ全体を、従来の設計方法での基本命令プロセッサに代えて使用し、システムＬＳＩの設計をしてもよい。図４は、従来のシステムＬＳＩの設計方法と、本実施形態例のシステムＬＳＩの設計方法とを組み合わせて設計したシステムＬＳＩの設計の手順を示す。図５に示した従来のシステムＬＳＩの設計方法とは、基本命令プロセッサ１１として使用する部分を、本実施形態例のシステムＬＳＩの設計方法で得られたプロセッサ１０を使用する点で相違する。ステップＳ２０３では、専用ハードウエアは、動作合成によって得られるが、これに代えてＲＴ設計で設計したハードウエアＩＰを使用してもよい。
【００５８】
上記のように、従来の設計方法と、本実施形態例の設計方法を組み合わせることで、システムＬＳＩの機能全体を動作合成によって生成するものではないが、周辺ハードウエアとして有用なハードウエアＩＰが存在する場合などを含めて、その周辺ハードウエアと本発明のシステムＬＳＩの設計方法で設計されたプロセッサとを組み合わせてシステムＬＳＩを設計することができる。
【００５９】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明のＬＳＩ構成方法は、上記実施形態例にのみ限定されるものでなく、上記実施形態例の構成から種々の修正及び変更を施したＬＳＩ構成方法も、本発明の範囲に含まれる。例えば、動作合成される基本命令プロセッサ及び専用命令プロセッサは、それぞれ１以上複数を配置できる。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施形態例のシステムＬＳＩの設計方法の処理手順を示すフローチャート。
【図２】図１のシステムＬＳＩの設計方法により得られるシステムＬＳＩの機能を示すブロック図。
【図３】プロセッサ１０の具体的な記述例を示すアルゴリズム。
【図４】従来の設計方法と、図１の設計方法とを組み合わせたシステムＬＳＩの設計方法の手順を示すフローチャート。
【図５】従来のシステムＬＳＩの設計方法の手順を示すフローチャート。
【図６】図４のシステムＬＳＩの設計方法により得られるシステムＬＳＩの機能を示すブロック図。
【符号の説明】
【００６１】
１：アルゴリズム記述
２：基本命令プロセッサ記述
３：専用命令プロセッサ記述
４：フレキシブルインタフェース記述
５：論理合成用ＲＴＬ記述
６：プロセッサシミュレーション用記述
１０：プロセッサ
１１：基本命令プロセッサ
１２：専用命令プロセッサ
１３：フレキシブルインタフェース
２０：フェッチレジスタ
２１、３１：命令デコーダ
２２、３２：データメモリ制御部
２３、３３：実行処理制御部
２４、３４：データメモリ群
２５、３５：実行処理群
４１：命令制御インタフェース
４２：データメモリインタフェース
４３：実行処理インタフェース
５１：命令データバス
５２：命令制御バス
５３：メモリ選択バス
５４：メモリアクセスバス
５５：実行処理選択バス
５６：実行処理アクセスバス
６１：メモリ制御バス
６２：実行処理制御バス
６３：リードアクセスバス
６４：ライトアクセスバス
７１：命令制御バス
７２：データ通信バス  
【図１】
2006202329.tif 000003
【図２】
2006202329.tif 000004
【図３】
2006202329.tif 000005
【図４】
2006202329.tif 000006
【図５】
2006202329.tif 000007
【図６】
2006202329.tif 000008