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