(57)【要約】【課題】マニュアルでアーキテクチャの探索をすることなく、マルチ処理化されたアウトプット(回路)を得る動作合成装置等を提供することを提供すること。【解決手段】動作合成装置は、動作合成ツールへマルチ処理に関する制約を与える動作合成制約記述、シングル処理の動作記述をもとに解析する手段と、解析結果をもとにマルチ処理部を抽出する手段と、抽出した部分をコントロールするＣＤＦＧを生成する手段と、ＣＤＦＧ、ＤＦＧに対してクロック・サイクルのスケジュールや構成を決定する手段と、スケジューリング、アロケーションされたＲＴレベルの回路を生成する手段とを備える。【選択図】図２
2011238170.tif 000002
【特許請求の範囲】
【請求項１】
動作合成ツールへマルチ処理に関する制約を与える動作合成制約記述、および、シングル処理の動作記述をもとに解析する動作記述解析手段と、
前記動作記述解析手段の結果をもとにマルチ処理部を抽出するマルチ処理部抽出手段と、
前記マルチ処理部抽出部で抽出したマルチ処理化する部分をコントロールするＣＤＦＧを生成するマルチ処理ＣＤＦＧ生成手段と、
前記ＣＤＦＧ、および、ＤＦＧに対してクロック・サイクルのスケジュールを決定するスケジューリング手段と、
前記スケジューリングされたＣＤＦＧ、および、ＤＦＧの構成を決定するアロケーション手段と、
前記スケジューリングおよびアロケーションされたＲＴレベルの回路を生成するＲＴＬ生成手段と
を備え、
前記動作合成ツールは通常の動作合成制約に加え、マルチ処理に関する制約を得る事で、シングル処理の回路をマルチ処理の回路へ変換する機能が働きマルチ処理回路へ変換を行うことを特徴とする動作合成装置。
【請求項２】
前記動作合成制約記述で任意の個所をマルチ処理化できる手段をさらに備えた事を特徴とする請求項１記載の動作合成装置。
【請求項３】
前記動作合成制約記述でマルチ処理の単位を指定しなくても順番にマルチ処理化していきどこまでマルチ処理化ができるか探索する手段をさらに備えた事を特徴とする請求項１記載の動作合成装置。
【請求項４】
前記マルチ処理化されたＲＴＬ生成手段で生成されたＲＴＬの回路に対して、シングルアクセス用のラッパーを生成する手段をさらに備えた事を特徴とする請求項１記載の動作合成装置。
【請求項５】
前記動作合成制約記述でマルチ処理の単位を指定しなくても順番にマルチ処理化していきどこまでマルチ処理化ができるか探索した結果、前記マルチ処理化されたＲＴＬ生成手段で生成されたＲＴＬの回路に対して、シングルアクセス用のラッパーを生成する手段をさらに備えた事を特徴とする請求項４記載の動作合成装置。
【請求項６】
コンピュータを、
動作合成ツールへマルチ処理に関する制約を与える動作合成制約記述、および、シングル処理の動作記述をもとに解析する動作記述解析手段と、
前記動作記述解析手段の結果をもとにマルチ処理部を抽出するマルチ処理部抽出手段と、
前記マルチ処理部抽出部で抽出したマルチ処理化する部分をコントロールするＣＤＦＧを生成するマルチ処理ＣＤＦＧ生成手段と、
前記ＣＤＦＧ、および、ＤＦＧに対してクロック・サイクルのスケジュールを決定するスケジューリング手段と、
前記スケジューリングされたＣＤＦＧ、および、ＤＦＧの構成を決定するアロケーション手段と、
前記スケジューリングおよびアロケーションされたＲＴレベルの回路を生成するＲＴＬ生成手段として機能させ、
前記動作合成ツールは通常の動作合成制約に加え、マルチ処理に関する制約を得る事で、シングル処理の回路をマルチ処理の回路へ変換する機能が働きマルチ処理回路へ変換を行う動作合成装置として機能させる事を特徴とする動作合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位言語で記述したアルゴリズムの仕様から、ハードウェア記述言語への変換を行う動作合成技術に関する。
【背景技術】
【０００２】
ＭＦＰの開発を行う上で、高速化を図るためにＭＦＰを構成している部品の一つである画像処理チップ周波数を上げることが既に知られている。
【０００３】
特許文献１には、自動的かつ効率的に合成する目的で、シングルチャネル回路の設計からマルチチャネル回路の時間多重化設計を自動的に生成することによって時間多重化リソース共有のためのマルチチャネルハードウェアを自動的かつ効率的に合成する構成が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
今までの高速化の手法である処理周波数の高速化では、クロックスキューの悪化や、リーク電流などの過度な電力消費や、電力消費を抑えるためのコントロールで必要になるクロックゲーティングで増える無駄なクロックネットや電磁環境適合性が困難になったり、不要な熱が発生してしまったりと、多岐にわたるデメリットを解決するためにマルチ処理化する事によって、クロック周波数を上げずに高速化を図る方法がある。
【０００５】
しかしながら、動作合成（動作記述）でマルチ処理を行うにはアーキテクチャの検討が必要になってくる。動作合成技術はツールによるアーキテクチャの探索が容易であることがメリットの一つであるにも関わらず、現状ではこのアーキテクチャの探索はマニュアルで対応する必要が出てしまう問題があった。上記の従来技術でもマルチ処理化の自動化という問題は解消できていない。
【０００６】
本発明の目的は、上記した従来技術の問題点を解決し、マニュアルでアーキテクチャの探索をすることなく、マルチ処理化されたアウトプット(回路)を得る動作合成装置および動作合成プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
請求項１記載の発明は、動作合成ツールへマルチ処理に関する制約を与える動作合成制約記述、および、シングル処理の動作記述をもとに解析する動作記述解析手段と、動作記述解析手段の結果をもとにマルチ処理部を抽出するマルチ処理部抽出手段と、マルチ処理部抽出部で抽出したマルチ処理化する部分をコントロールするＣＤＦＧを生成するマルチ処理ＣＤＦＧ生成手段と、ＣＤＦＧ、および、ＤＦＧに対してクロック・サイクルのスケジュールを決定するスケジューリング手段と、スケジューリングされたＣＤＦＧ、および、ＤＦＧの構成を決定するアロケーション手段と、スケジューリングおよびアロケーションされたＲＴレベルの回路を生成するＲＴＬ生成手段とを備え、動作合成ツールは通常の動作合成制約に加え、マルチ処理に関する制約を得る事で、シングル処理の回路をマルチ処理の回路へ変換する機能が働きマルチ処理回路へ変換を行うことを特徴とする動作合成装置である。
【０００８】
請求項２記載の発明は、請求項１記載の動作合成装置において、動作合成制約記述で任意の個所をマルチ処理化できる手段をさらに備えた事を特徴とする。
【０００９】
請求項３記載の発明は、請求項１記載の動作合成装置において、動作合成制約記述でマルチ処理の単位を指定しなくても順番にマルチ処理化していきどこまでマルチ処理化ができるか探索する手段をさらに備えた事を特徴とする。
【００１０】
請求項４記載の発明は、請求項１記載の動作合成装置において、マルチ処理化されたＲＴＬ生成手段で生成されたＲＴＬの回路に対して、シングルアクセス用のラッパーを生成する手段をさらに備えた事を特徴とする。
【００１１】
請求項５記載の発明は、請求項４記載の動作合成装置において、動作合成制約記述でマルチ処理の単位を指定しなくても順番にマルチ処理化していきどこまでマルチ処理化ができるか探索した結果、マルチ処理化されたＲＴＬ生成手段で生成されたＲＴＬの回路に対して、シングルアクセス用のラッパーを生成する手段をさらに備えた事を特徴とする。
【００１２】
請求項６記載の発明は、コンピュータを、動作合成ツールへマルチ処理に関する制約を与える動作合成制約記述、および、シングル処理の動作記述をもとに解析する動作記述解析手段と、動作記述解析手段の結果をもとにマルチ処理部を抽出するマルチ処理部抽出手段と、マルチ処理部抽出部で抽出したマルチ処理化する部分をコントロールするＣＤＦＧを生成するマルチ処理ＣＤＦＧ生成手段と、ＣＤＦＧ、および、ＤＦＧに対してクロック・サイクルのスケジュールを決定するスケジューリング手段と、スケジューリングされたＣＤＦＧ、および、ＤＦＧの構成を決定するアロケーション手段と、スケジューリングおよびアロケーションされたＲＴレベルの回路を生成するＲＴＬ生成手段として機能させ、動作合成ツールは通常の動作合成制約に加え、マルチ処理に関する制約を得る事で、シングル処理の回路をマルチ処理の回路へ変換する機能が働きマルチ処理回路へ変換を行う動作合成装置として機能させる事を特徴とする動作合成プログラムである。
【発明の効果】
【００１３】
本発明によれば、マニュアルでアーキテクチャの探索をすることなく、マルチ処理化されたアウトプット(回路)を得る事ができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態に係る動作合成装置の構成例を示すブロック図である。
【図２】本実施の形態に係る動作合成装置の機能構成を示すブロック図である。
【図３】本実施の形態に係る動作記述解析部３に入力される動作記述の回路イメージについて説明する図である。
【図４】本実施の形態に係る図３の入出力のタイミングチャートについて説明する図である。
【図５】本実施の形態に係る図３を動作記述(ＳｙｓｔｅｍＣ)で表したソースコードについて説明する図である。
【図６】本実施の形態に係る図３がマルチ処理化された回路イメージについて説明する図である。
【図７】本実施の形態に係る図６の入出力のタイミングチャートについて説明する図である。
【図８】本実施の形態に係る図６を動作記述(ＳｙｓｔｅｍＣ)で表したソースコードについて説明する図である。
【図９】本実施の形態に係るマルチ処理化した動作記述(ＳｙｓｔｅｍＣ)を動作合成した時のタイミングチャートについて説明する図である。
【図１０】本実施の形態に係る動作合成制約記述について説明する図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態の動作合成装置について図面を参照しながら説明する。
【００１６】
図１は、本発明の実施形態の動作合成装置の構成例を示すブロック図である。図１に示すコンピュータ本体としての動作合成装置１１０は、ＣＰＵ（Central Processing Unit ）１１１、ＲＯＭ(Read Only Memory)１１２、ＲＡＭ（Random Access Memory）１１３およびハードディスク（ＨＤＤ）１１４を含む。ＣＰＵ１１１は、グラフィックディスプレイ装置１１５、キーボード１１６、マウス１１７、ＣＤ−ＲＯＭ装置１１８、図示しないネットワーク装置、ＲＯＭ１１２、ＲＡＭ１１３またはハードディスク１１４との間でデータを入出力しながら処理を行う。ＣＤ−ＲＯＭ装置１１８に記録された動作合成プログラムは、ＣＰＵ１１１によりＣＤ−ＲＯＭ装置１１８を介して一旦ハードディスク１１４に格納される。ＣＰＵ１１１は、ハードディスク１１４から適宜動作合成プログラムをＲＡＭ１１３にロードして実行することによって動作合成を行う。
【００１７】
以下に各変形例を含む本実施の形態における動作合成装置について説明するが、図１に示す動作合成装置の構成は各変形例において共通である。
【００１８】
図２は本発明の一実施形態における動作合成装置の機能構成を示すブロック図である。図２において、動作合成装置は、動作が記述された動作記述１、および、動作合成を行う為の制約条件が記載された動作合成制約記述２を入力として動作記述１を動作合成制約記述２を元に動作記述を解析するための動作記述解析部３と、動作記述１を解析した結果を元にマルチ処理に関係する部分を抽出するマルチ処理部抽出部４と、抽出されたマルチ処理が必要になる部分に対してＣＤＦＧを生成するマルチ処理ＣＤＦＧ生成部５と、生成されたＣＤＦＧとデータパスをスケジューリングするスケジューリング部６と、データパスをアロケーションするアロケーション部７と、マルチ処理化された回路図を出力するＲＴＬ生成部８と、で構成されていて、ＲＴＬ生成部で生成されたＲＴＬ記述９を動作合成する。
【００１９】
動作記述解析部３では動作記述１（図５の動作記述）と動作合成制約記述２（図１０の動作合成制約記述）インプットとして動作記述のマルチ処理化にかかわる部分を解析する。データを入力する部分、入力された画像データを演算処理する部分、データを出力する部分の３箇所に関して解析を行う。図５の動作記述の９行目（ブランク行を含まない）をデータ入力として認識する。また図５の動作記述の１０行目をデータ演算処理部分として認識する。さらに図５の動作記述１１行目をデータ出力として認識する。
【００２０】
マルチ処理部抽出部４では、動作記述解析部３でマルチ処理化にかかわる部分として認識した情報を元に、マルチ処理化に必要な部分を抽出する。動作合成制約記述２の制約によってはマルチ処理にかかわる部分でもマルチ処理化する必要のない部分があるため、すべて抽出する必要はない。ただし、シングル処理とマルチ処理が隣り合う場合、処理の単位が異なるので、シリアル／パラレル変換が必要となる。
【００２１】
マルチ処理ＣＤＦＧ生成部５では、ＤＦＧ(Data Flow Graph)の分岐や、繰り返しの制御情報に加え、マルチ処理部抽出部４で抽出したマルチ処理化にかかわる部分の分岐や、繰り返しを加えたグラフを生成する。
【００２２】
スケジューリング部６では、マルチ処理化された回路の演算やデータの保持のクロック・サイクルを決定する。
【００２３】
アロケーション部７では、ＤＦＧの回路、要素をＲＴレベルに割り当てていく。
【００２４】
ＲＴＬ生成部８では、マルチ処理化された動作記述の生成を行いＲＴＬ記述９を出力する。
【００２５】
図３は、図２の動作記述解析部３に入力される動作記述の回路イメージについて説明する図である。
【００２６】
図３に動作記述を回路ブロック図で示す。処理モジュール１のｍｏｄ１は処理部２のｃａｌｃを持つ。処理部２のｃａｌｃは入力画像データ３（ここでは１画像データを８ｂｉｔとする）を処理モジュールに入力し処理部２にて画像データ処理を行う。処理されて出力画像データ４（ここでは１画像データを８ｂｉｔとする）が出力される。このように８ｂｉｔの一つの画像データを処理して８ｂｉｔの一つの画像データを出力する、シングル処理のブロック図となっている。
【００２７】
図４は、図３の入出力のタイミングチャートについて説明する図である。
【００２８】
上からステート、データ入力（図３の３）、データ処理（図３の２）、データ出力（図３の４）となっており、１画素分のデータを入力するステート１、入力した１画素分のデータを処理するステート２、１画素分の処理されたデータを出力するステート３がある。
【００２９】
図５は、図３を動作記述(ＳｙｓｔｅｍＣ)で表したソースコードについて説明する図である。
【００３０】
処理の動作のみを記述した動作記述であり、動作記述を記述出来る言語なら何でもよい。図４のタイミングチャートに沿って説明をする。タイミングチャートのステート１で入力されるデータは、ｍｏｄ１．ｃｃの９行目(ブランク行を含まない)にてｉｎから、データの入力がされ、ｔｍｐ＿ｉｎに代入される。８ｂｉｔのｔｍｐ＿ｉｎはデータを処理する関数のｃａｌｃ()の引数となる。タイミングチャートのステート２ではｔｍｐ＿ｉｎをｃａｌｃ()関数で処理を行い、処理した結果をｔｍｐ＿ｏｕｔへ格納する。タイミングチャートのステート３でｔｍｐ＿ｏｕｔの８ｂｉｔデータを出力する。各ステートの遷移はｍｏｄ１へ入力されるｃｌｋ信号の立ち上がりによる。ｍｏｄ１．ｃｃの５項目にｗｈｉｌｅ(1)とあるように、ｃｌｋ信号でデータの入力、処理、データの出力が繰り返される。
【００３１】
図６は、図３がマルチ処理化された回路イメージについて説明する図である。
【００３２】
処理モジュール１のｍｏｄ１は処理部２のｃａｌｃを持つ。入力画像データ３は処理モジュール１に２画素単位で入力される。処理部２のｃａｌｃは入力画像データ３を１画素単位で処理モジュールに入力し処理部２にて画像データ処理を行う。処理部２では１画素単位で処理が行われるため、入力された入力画像データ３を処理するために２回処理が行われる。処理された出力画像データは２画素分にパッキングされ出力がそうデータ４として出力される。入力画像データ３と出力画像データ４を見るとマルチ処理されていることになる。
【００３３】
図７は、図６の入出力のタイミングチャートについて説明する図である。
【００３４】
上からステート、データ入力（図６の３）、データ処理（図６の２）、データ出力（図６の４）となっており、２画素分のデータを入力するステート１、入力した２画素分のデータを１画素づつ処理するステート２、ステート２では２画素を処理するためステート３でもデータの処理を行っている。２画素の処理された後、データを出力するステート４がある。
【００３５】
図８は、図６を動作記述(ＳｙｓｔｅｍＣ)で表したソースコードについて説明する図である。
【００３６】
図７のタイミングチャートに沿って説明をする。タイミングチャートのステート1で入力されるデータは、ｍｏｄ１．ｃｃの９行目(ブランク行を含まない)にてｉｎから、データの入力がされ、１６ｂｉｔのデータをそれぞれ８ｂｉｔのｔｍｐ＿ｉｎ[1]とｔｍｐ＿ｉｎ[0]に代入される。８ｂｉｔのｔｍｐ＿ｉｎ[1]、ｔｍｐ＿ｉｎ[0]はデータを処理する関数のｃａｌｃ()の引数となる。タイミングチャートのステート２と３ではｔｍｐ＿ｉｎ[1]とｔｍｐ＿ｉｎ[0]をｃａｌｃ()関数で処理を行う。ｆｏｒ文で２回実行するようになっており、ｔｍｐ＿ｉｎ[1]とｔｍｐ＿ｉｎ[0]を２回に分けて処理を行い、処理した結果をｔｍｐ＿ｏｕｔ[1]とｔｍｐ＿ｏｕｔ[0]にそれぞれ格納する。タイミングチャートのステート３でｔｍｐ＿ｏｕｔ[1]とｔｍｐ＿ｏｕｔ[0]のそれぞれ８ｂｉｔデータをパッキングして１６ｂｉｔ化し、出力する。各ステートの遷移はｍｏｄ１へ入力されるｃｌｋ信号の立ち上がりによる。ｍｏｄ１．ｃｃの５行目にｗｈｉｌｅ(1)とあるように、ｃｌｋ信号でデータの入力、処理ｘ２、データの出力が繰り返される。
【００３７】
図９は、マルチ処理化した動作記述(ＳｙｓｔｅｍＣ)を動作合成した時のタイミングチャートについて説明する図である。
【００３８】
上からステート、データ入力（図６の３）、データ処理（図６の２）、データ出力（図６の４）となっており、２画素分のデータを入力するステート１、入力した２画素分のデータを１画素づつ処理するステート２、ステート２では２画素を処理するため並列処理をさせる事により、１ステートで２画素分の処理を行う。２画素の処理された後、データを出力するステート３がある。
【００３９】
図１０は、動作合成制約記述について説明する図である。
【００４０】
図１０はマルチ処理を動作合成ツールへ指示する為の制約で、１処理単位を指定するＢＩＴがある。図は１画素のデータを８ｂｉｔとして表現している。また、マルチ処理化をする為の処理単位数の指定を行うためのＰＲＯＣがある。図では単位数を２としており、図６、図７、図８のような処理がされるように制約している。処理単位数を増やしたい部分をしているすためのＬＯＣＡがある。図ではｉｎ，ｏｕｔ，ｐｒｏｃとなっており、ｉｎ画像入力部分、ｏｕｔは画像出力部分、ｐｒｏｃはデータを処理する部分に対応する。データの入力される量が必ずマルチ処理単位になるとは限らず、入力もしくは出力で仮のデータを用意する必要が出てくる。実データではない仮のデータの指定をＯＤＤで制約する。
【００４１】
上記の本実施の形態によれば、動作合成ツールへマルチ処理に関する制約を与え、動作合成ツールは通常の動作合成制約に加え、マルチ処理に関する制約を得る事で、シングル処理の回路をマルチ処理の回路へ変換する機能が働きマルチ処理回路へ変換を行うことが可能になる。
【００４２】
また、動作合成装置がマルチ処理化されたＲＴＬ生成部８で生成されたＲＴＬの回路に対して、シングルアクセス用のラッパーを生成する手段をさらに備える事で、シングル処理で作成した検証環境をそのまま使用して検証する事が可能になり、新たに検証環境を作成する工数が増加しないという効果を奏する。
【００４３】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々の変更実施が可能である。例えば、動作合成装置の機能を実現するためのプログラムを装置に読込ませて実行することにより装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。また、装置の機能が他の装置によりまとめて実現されたり、追加の装置により機能が分散されて実現される形態も本発明の範囲内である。
【符号の説明】
【００４４】
１    動作記述
２    動作合成制約記述
３    動作記述解析部
４    マルチ処理部抽出部
５    マルチ処理ＣＤＦＧ生成部
６    スケジューリング部
７    アロケーション部
８    ＲＴＬ生成部
９    ＲＴＬ記述
【先行技術文献】
【特許文献】
【００４５】
【特許文献１】特表２００７−５２４８９９号公報
【図１】
2011238170.tif 000003
【図２】
2011238170.tif 000004
【図３】
2011238170.tif 000005
【図４】
2011238170.tif 000006
【図５】
2011238170.tif 000007
【図６】
2011238170.tif 000008
【図７】
2011238170.tif 000009
【図８】
2011238170.tif 000010
【図９】
2011238170.tif 000011
【図１０】
2011238170.tif 000012