(57)【要約】【課題】複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを自動的に生成する。【解決手段】入力装置３００から複数の動作記述が入力されると、インタフェース合成手段１２０は、複数の動作記述内で各々参照または代入されるデータの所在場所に基づいて、これら複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを表す動作記述を生成する。【選択図】図１
2008204341.tif 000002
【特許請求の範囲】
【請求項１】
複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを生成するインタフェース合成装置であって、
前記複数の動作記述を入力する入力手段と、
前記複数の動作記述内で各々参照または代入されるデータの所在場所に基づいて、当該複数の動作記述の各々によって表される複数の処理間のデータ通信用の前記通信インタフェースを表す動作記述を生成するインタフェース合成手段と、を有するインタフェース合成装置。
【請求項２】
前記入力手段は、前記複数の動作記述がマッピングされるモジュールを示すマッピング情報をさらに入力し、
前記インタフェース合成手段は、前記マッピング情報に基づいて、前記複数の動作記述内で各々参照または代入されるデータの所在場所となるモジュールを判別する、請求項１記載のインタフェース合成装置。
【請求項３】
前記通信インタフェースを表す動作記述と前記処理を表す動作記述とに基づいて、制御データフローグラフを生成する制御データフロー解析手段をさらに有する、請求項１または２記載のインタフェース合成装置。
【請求項４】
前記インタフェース合成手段は、前記制御データフローグラフを解析し、当該解析結果に基づいて、前記通信インタフェースを表す動作記述の内容または位置を変更する、請求項３記載のインタフェース合成装置。
【請求項５】
前記インタフェース合成手段は、前記制御データフローグラフの解析結果に基づいて、前記通信インタフェースによるデータ通信がシングル転送の繰り返し処理と判別すれば、前記通信インタフェースを表す動作記述の内容を、バースト転送の動作記述に変更する、請求項４記載のインタフェース合成装置。
【請求項６】
前記インタフェース合成手段は、前記制御データフローグラフの解析結果に基づいて、前記通信インタフェースを表す動作記述と前記処理を表す動作記述との位置関係を変更する、請求項４または５記載のインタフェース合成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを生成するインタフェース合成装置に関する。
【背景技術】
【０００２】
システムＬＳＩにおいては、複数のハードウェアモジュールとプロセッサ上のソフトウェアとの協調動作によって目的の機能と性能を実現している。これを実現するためのシステムＬＳＩの処理は、プログラム言語に代表される高級言語で記述された動作記述により表される。また、その処理のある部分はいくつかの専用ハードウェアモジュールで実現し、別の部分はいくつかのソフトウェアで実現するのが一般的である。
【０００３】
そのため、システムＬＳＩの設計においては、システムＬＳＩの処理を複数に分割する作業が必要となる。ただし、分割作業においては、分割された複数の処理がハードウェアおよびソフトウェアによってどのように実現されるかに従って、これら複数の処理間でデータを入出力する通信に必要な通信インタフェースを生成する必要がある。このように、複数の処理間のデータ通信用の通信インタフェースを生成することを、一般的にインタフェース合成と呼ぶ。
【０００４】
システムＬＳＩの設計においては、動作記述を基に人手でハードウェアを実現することも可能であるが、動作合成ツールを用いて動作記述をレジスタトランスファレベル（以後ＲＴＬ）のハードウェア記述に変換する動作合成を行い、さらに、論理合成ツールを用いてハードウェア記述を基に論理合成を行ってハードウェアを実現することも可能である。
【０００５】
インタフェース合成に関しては、特許文献１に開示されている方法がある。この方法では、動作記述内に抽象化された通信インタフェースが陽に記述され、ユーザの指示に従ってインタフェース合成を実現している。
【特許文献１】米国特許出願公開第２００４／０１１１６９２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に開示された方法においては、通信インタフェースは、抽象化されているとはいえ、陽に記述されているため、処理を複数に分割する際の分割数や分割場所を変更するたびに、処理を書き換える必要があるという課題がある。
【０００７】
さらに、動作合成を行う場合にも、通信インタフェースが陽に記述されているが故に、処理と通信とが分離してしまい、動作合成時の最適化を阻害するという課題がある。
【０００８】
また、分割数や分割場所を変更せずに、動作合成のターゲットとなるアーキテクチャを変更する際の対応が困難であるという課題がある。
【０００９】
そこで、本発明の目的は、通信インタフェースを陽に記述していなくても、通信インタフェースを自動的に生成することが可能であり、動作合成時の最適化を容易にし、さらには、動作合成のターゲットとなるアーキテクチャの変更も容易になるインタフェース合成装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明のインタフェース合成装置は、複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを生成するインタフェース合成装置であって、前記複数の動作記述を入力する入力手段と、前記複数の動作記述内で各々参照または代入されるデータの所在場所に基づいて、当該複数の動作記述の各々によって表される複数の処理間のデータ通信用の前記通信インタフェースを表す動作記述を生成するインタフェース合成手段と、を有することを特徴とする。
【００１１】
なお、前記入力手段は、前記複数の動作記述がマッピングされるモジュールを示すマッピング情報をさらに入力し、前記インタフェース合成手段は、前記マッピング情報に基づいて、前記複数の動作記述内で各々参照または代入されるデータの所在場所となるモジュールを判別することとしても良い。
【００１２】
また、前記通信インタフェースを表す動作記述と前記処理を表す動作記述とに基づいて、制御データフローグラフを生成する制御データフロー解析手段をさらに有することとしても良い。
【００１３】
また、前記インタフェース合成手段は、前記制御データフローグラフを解析し、当該解析結果に基づいて、前記通信インタフェースを表す動作記述の内容または位置を変更することとしても良い。
【００１４】
また、前記インタフェース合成手段は、前記制御データフローグラフの解析結果に基づいて、前記通信インタフェースによるデータ通信がシングル転送の繰り返し処理と判別すれば、前記通信インタフェースを表す動作記述の内容を、バースト転送の動作記述に変更することとしても良い。
【００１５】
また、前記インタフェース合成手段は、前記制御データフローグラフの解析結果に基づいて、前記通信インタフェースを表す動作記述と前記処理を表す動作記述との位置関係を変更することとしても良い。
【発明の効果】
【００１６】
本発明によれば、インタフェース合成手段が、複数の動作記述内で各々参照または代入されるデータの所在場所に基づいて、これら複数の動作記述の各々によって表される複数の処理間のデータ通信用の通信インタフェースを表す動作記述を生成している。
【００１７】
したがって、通信インタフェースを陽に記述していなくても、通信インタフェースを自動的に生成することが可能になるため、処理を複数に分割する際の分割数や分割場所を変更するたびに、処理を書き換える必要がなくなるという効果がある。
【００１８】
さらに、動作合成を行う場合も、通信インタフェース自体を陽に記述する必要がないために、動作合成時の最適化が容易になるという効果がある。
【００１９】
また、分割数や分割場所を変更せずに、動作合成のターゲットとなるアーキテクチャを変更する際の対応が容易になるという効果もある。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【００２１】
図１に、本発明の一実施形態のインタフェース合成装置の構成の例を示す。
【００２２】
図１に示すように、本実施形態のインタフェース合成装置は、データ処理装置１００と、記憶装置２００と、入力装置３００と、出力装置４００とから構成されている。
【００２３】
データ処理装置１００は、制御データフロー解析手段１１０と、インタフェース合成手段１２０とを含む。
【００２４】
記憶装置２００は、動作記述記憶手段２１０と、制御データフロー記憶手段２２０と、設計制約記憶手段２３０とを含む。
【００２５】
これらの装置および手段は、それぞれ概略次のように動作する。
【００２６】
入力装置３００には、プログラム言語に代表される高級言語で記述され、システムＬＳＩ等の論理回路の処理を表す動作記述が入力される。ここで入力された動作記述は、データ処理装置１００経由で動作記述記憶手段２１０に記憶される。なお、本実施形態のインタフェース合成装置は、複数の処理間の通信インタフェースを生成するものであるため、入力装置３００には複数の動作記述が入力されることを前提としている。
【００２７】
また、入力装置３００には、クロック周期やハードウェア構成の情報や、マッピング情報などの設計制約が入力される。ここで入力された設計制約は、データ処理装置１００経由で設計制約記憶手段２３０に記憶される。
【００２８】
ここで、ハードウェア構成の情報とは、専用ハードウェアモジュール、ＣＰＵ（マイクロプロセッサ）、ＤＳＰ（デジタルシグナルプロセッサ）、およびメモリが、どのような種類で何個ずつ設けられているか、どのようなトポロジーでハードウェア的に接続されているか等を示す情報である。その中には、これらがオンチップ・バスを介して接続されている、または、直結されているなどの接続手段を示す情報も含まれる。
【００２９】
また、マッピング情報とは、どのような動作記述が、専用ハードウェアモジュール、ＣＰＵ、ＤＳＰ、およびメモリの中のどこにマッピングされて（割り当てられて）実現されるかを示す情報である。以下では、専用ハードウェアモジュール、ＣＰＵ、ＤＳＰ、およびメモリについては、個々を特に区別する必要が無い場合はモジュールと総称する。
【００３０】
インタフェース合成手段１２０は、動作記述記憶手段２１０から複数の動作記述を読み出すとともに、設計制約記憶手段２３０から設計制約に含まれるマッピング情報を読み出し、読み出した複数の動作記述とマッピング情報を基に、複数の動作記述内で各々参照または代入されるデータ（変数）の所在場所を判別し、判別した所在場所に応じて、複数の動作記述によって表される複数の処理間のデータ（変数）通信用の通信インタフェースを自動生成する。
【００３１】
ここで、通信インタフェースの生成動作について詳細に説明する。
【００３２】
図２に、通信インタフェースの生成動作の例を示す。
【００３３】
図２に示すように、まず、インタフェース合成手段１２０は、動作記述記憶手段２１０から動作記述を読み出し、動作記述集合Ｐを生成する（ステップＡ１）。
【００３４】
次に、インタフェース合成手段１２０は、動作記述集合Ｐが空集合であるか否かを判定する（ステップＡ２）。ここでは、動作記述集合Ｐが空集合でないとする。
【００３５】
次に、インタフェース合成手段１２０は、動作記述集合Ｐから１つの動作記述を取り出す。ここでは、動作記述Ａが取り出されたとする。続いて、インタフェース合成手段１２０は、設計制約記憶手段２３０からマッピング情報を読み出し、読み出したマッピング情報を基に、動作記述Ａがマッピングされるモジュールを選択する（ステップＡ３）。ここでは、モジュールＢが選択されたとする。
【００３６】
次に、インタフェース合成手段１２０は、モジュールＢが専用ハードウェアモジュールであるか否かを判定する（ステップＡ４）。ここでは、モジュールＢが専用ハードウェアモジュールであるとする。
【００３７】
次に、インタフェース合成手段１２０は、動作記述Ａ内で参照または代入される変数のうち、同じモジュールＢに実体が無い変数を列挙し、列挙した変数の集合である参照・代入変数集合Ｃを生成する（ステップＡ５）。
【００３８】
次に、インタフェース合成手段１２０は、参照・代入変数集合Ｃが空集合であるか否かを判定する（ステップＡ６）。ここでは、参照・代入変数集合Ｃが空集合でないとする。
【００３９】
次に、インタフェース合成手段１２０は、参照・代入変数集合Ｃから１つの変数を取り出す。ここでは、参照・代入変数Ｄが取り出されたとする。続いて、インタフェース合成手段１２０は、マッピング情報と動作記述集合Ｐに含まれる全ての動作記述を基に、参照・代入変数Ｄの実体を有するモジュールを割り出す（ステップＡ７）。ここでは、モジュールＥが割り出されたとする。
【００４０】
その後、インタフェース合成手段１２０は、マッピング情報を基に、モジュールＢとモジュールＥ間の接続バスを自動判別し、参照・代入変数Ｄ用の読み出しまたは書き込みインタフェースとして通信インタフェースＦを生成し、生成した通信インタフェースＦをインタフェース集合Ｘに追加する（ステップＡ８）。
【００４１】
以上の処理は、動作記述集合Ｐが空集合になるまで繰り返される。
【００４２】
これにより、通信インタフェースの初期解として、インタフェース集合が得られる。この段階では、各モジュールの通信インタフェースは動作記述で表現されている。
【００４３】
図３に、変数の参照または代入を表す動作記述が、通信インタフェースを表す動作記述に置き換わった例を示す。図３の例では、変数である配列x，y，zがいずれも別モジュールに存在することを前提にしている。
【００４４】
図３に示すように、インタフェース合成手段１２０が図２の動作を行うことにより、x[i]，y[i]の参照とz[i]への代入を表す動作記述は、それぞれ、read_data()，write_data()という通信インタフェースを表す動作記述に置き換わる。図２の動作が行われた後の処理と通信インタフェースを表す複数の動作記述は動作記述記憶手段２１０へ記憶される。
【００４５】
制御データフロー解析手段１１０は、動作記述記憶手段２１０から、図２の動作が行われた後の複数の動作記述を読み出し、読み出した複数の動作記述の制御データフロー解析を行い、それぞれの制御データフローグラフ（ＣＤＦＧ）を生成し、生成した制御データフローグラフを制御データフロー記憶手段２２０に記憶させる。ここで記憶された制御データフローグラフは、データ処理装置１００経由で出力装置４００から出力され、不図示の動作合成ツールによる動作合成時に用いられる。
【００４６】
なお、インタフェース合成手段１２０は、制御データフロー記憶手段２２０に記憶された制御データフローグラフの解析を行い、その解析結果に基づいて、通信インタフェースを表す動作記述の内容または発行位置を変更してその最適化を実施することもできる。
【００４７】
インタフェース合成手段１２０は、制御データフローグラフの解析結果に基づき、図３の例のデータ通信が、別モジュールに存在する配列x，yを読み込んで乗算を施した結果を、再び別モジュールに存在する配列zに書き戻すというシングル転送の繰り返し処理であると判別すると、図４に示すように、通信インタフェースを表す動作記述の内容を、バースト転送を表す動作記述である、read_burst_data()，write_burst_data(）に変更する。ここで、read_burst_data()の１つ目の引数は読み出し元の配列、２つ目の引数は読み出した値の転送先の配列、３つ目の配列は転送データ数を表す。同様に、write_burst_data()の１つ目の引数は書き込み元の配列、２つ目の引数は書き込み先の配列、３つ目の配列は転送データ数を表す。一般的に、シングル転送と比較して、バースト転送は転送効率が良いため、図４の変換により、データ通信のオーバーヘッドが削減される。
【００４８】
同様に、インタフェース合成手段１２０は、制御データフローグラフの解析結果に基づき、通信インタフェースを表す動作記述の発行位置を変更することも可能である。通信インタフェースを表す動作記述は、データ通信のオーバーヘッドという時間を要するために、他の演算処理と比較して、早めに発行することで、オーバーヘッドの影響を軽減することができる。図５に、図４と同様に、インタフェース合成手段１２０によって通信インタフェースを表す動作記述の内容を変更した例を示す。このままでも機能的には要求を満たすが、さらに、制御データフローグラフの解析結果を基にしてスケジューリングを行うことにより、通信インタフェースを表す動作記述の発行位置を早めに移動した例が、図６である。このように、通信インタフェースを表す動作記述を早めに発行することによって、通信時間と演算時間を重ね合わせ、トータルの処理時間を短くするという最適化が可能となる。
【００４９】
なお、通信インタフェースを表す動作記述が最適化された後の動作記述は、動作記述記憶手段２１０に記憶され、それを基に制御データフロー解析手段１１０によって制御データフローグラフが生成される。その制御データフローグラフは、制御データフロー記憶手段２２０に記憶され、データ処理装置１００経由で出力装置４００から出力され、不図示の動作合成ツールによる動作合成時に用いられる。
【産業上の利用可能性】
【００５０】
本発明によれば、Ｃ言語等のプログラム言語で記述された動作記述を、自動でハードウェア記述に変換する動作合成システムに適用できる。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施形態のインタフェース合成装置の構成を示すブロック図である。
【図２】図１に示したインタフェース合成手段による通信インタフェースの生成動作の一例を説明するフローチャートである。
【図３】図２の動作によって生成された通信インタフェースの一例を示す図である。
【図４】図３の通信インタフェースを表す動作記述の内容を最適化した一例を示す図である。
【図５】図３の通信インタフェースを表す動作記述の内容を最適化した他の例を示す図である。
【図６】図５の通信インタフェースを表す動作記述の発行位置を最適化した一例を示す図である。
【符号の説明】
【００５２】
１００    データ処理装置
１１０    制御データフロー解析手段
１２０    インタフェース合成手段
２００    記憶装置
２１０    動作記述記憶手段
２２０    制御データフロー記憶手段
２３０    設計制約記憶手段
３００    入力装置
４００    出力装置
【図１】
2008204341.tif 000003
【図２】
2008204341.tif 000004
【図３】
2008204341.tif 000005
【図４】
2008204341.tif 000006
【図５】
2008204341.tif 000007
【図６】
2008204341.tif 000008