(57)【要約】【課題】  設計者の能力に依存することなく、アルゴリズムに基づいてハードウエア、ソフトウエアあるいは両者が混在したシステムの開発を容易にする。【解決手段】  まず理論アルゴリズムを評価、検討し、理論アルゴリズムを「アルゴリズム実行単位表現」として記述する。アルゴリズム実行単位表現では、ループ制御要素等の制御要素をデータ転送単位変換器ＤＵＣ１〜ＤＵＣ６に置き換え、演算部分をアルゴリズムコアに置き換える。  これによって制御要素を抽出することができ、制御要素のライブラリをあらかじめ用意しておけば、開発者は容易に制御要素の開発を完了でき、演算部分のみに注力できる。従って、開発効率は大幅に向上する。  次に、アルゴリズム実行単位表現におけるＤＵＣを合理化し、アルゴリズムの記述を単純化するとともに、ハードウエア規模の節減、処理ステップの簡略化等を図る。【選択図】  図３
2011215966.tif 000002
【特許請求の範囲】
【請求項１】
所定の表記によって記述された理論アルゴリズム（アルゴリズムを設計した結果として記述されるアルゴリズム表現）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現ステップを備えたシステム開発方法であって、前記送信側データ転送単位変換器には、入力されたデータの部分配列を生成し送信するストリーマが含まれ、前記受信側データ転送単位変換器には、入力されたデータから全体配列を生成し送信するコンポーザが含まれることを特徴とするシステム開発方法。
【請求項２】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成ステップを、さらに備えたことを特徴とする請求項１記載のシステム開発方法。
【請求項３】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成ステップを、さらに備えたことを特徴とする請求項１または２に記載のシステム開発方法。
【請求項４】
前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマが含まれることを特徴とする請求項１乃至３のいずれかに記載のシステム開発方法。
【請求項５】
所定の表記によって記述された理論アルゴリズム（アルゴリズムを設計した結果として記述されるアルゴリズム表現）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現ステップを、コンピュータの制御部に実行させる開発支援プログラムであって、前記送信側データ転送単位変換器には、入力されたデータの部分配列を生成し送信するストリーマが含まれ、前記受信側データ転送単位変換器には、入力されたデータから全体配列を生成し送信するコンポーザが含まれることを特徴とする開発支援プログラム。
【請求項６】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成ステップを、さらにコンピュータの制御部に実行させることを特徴とする請求項５記載の開発支援プログラム。
【請求項７】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成ステップを、さらにコンピュータの制御部に実行させることを特徴とする請求項５または６に記載の開発支援プログラム。
【請求項８】
前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマが含まれることを特徴とする請求項５乃至７のいずれかに記載の開発支援プログラム。
【請求項９】
前記機能アルゴリズムで、パイプラインの各段を示す単位処理ブロックを定義した実装アルゴリズムを生成する実装アルゴリズムステップを、
さらに、コンピュータの制御部に実行させることを特徴とする請求項５乃至８のいずれかに記載の開発支援プログラム。
【請求項１０】
前記送信側データ転送単位変換器には、メモリからのデータ読み出しを実行するメモリリーダが含まれることを特徴とする請求項５乃至９のいずれかに記載の開発支援プログラム。
【請求項１１】
前記受信側データ転送単位変換器には、メモリにデータを書き込むメモリライタが含まれることを特徴とする請求項５乃至１０のいずれかに記載の開発支援プログラム。
【請求項１２】
前記送信側データ転送単位変換器には、入力データの採否を示すストローブ信号を出力するエレメントリムーバが含まれることを特徴とする請求項５乃至１１のいずれかに記載の開発支援プログラム。
【請求項１３】
請求項５乃至１２のいずれかに記載の開発支援プログラムの、コンピュータ実行可能なプログラムコードが記憶された、コンピュータ読み取り可能な記憶媒体。
【請求項１４】
所定の表記によって記述された理論アルゴリズム（アルゴリズム設計の成果としての記述）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現手段を備えたことを特徴とする開発支援装置。
【請求項１５】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成手段を、さらに備えたことを特徴とする請求項１４記載の開発支援装置。
【請求項１６】
前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成手段を、さらに備えたことを特徴とする請求項１４または１５に記載の開発支援装置。
【請求項１７】
前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマが含まれることを特徴とする請求項１４乃至１６のいずれかに記載の開発支援装置。
【請求項１８】
前記機能アルゴリズムで、パイプラインの各段を示す単位処理ブロックを定義した実装アルゴリズムを生成する実装アルゴリズム手段を、さらに備えることを特徴とする請求項１４乃至１７のいずれかに記載の開発支援装置。
【請求項１９】
前記送信側データ転送単位変換器には、メモリからのデータ読み出しを実行するメモリリーダが含まれることを特徴とする請求項１４乃至１８のいずれかに記載の開発支援装置。
【請求項２０】
前記受信側データ転送単位変換器には、メモリにデータを書き込むメモリライタが含まれることを特徴とする請求項１４乃至１９のいずれかに記載の開発支援装置。
【請求項２１】
前記送信側データ転送単位変換器には、入力データの採否を示すストローブ信号を出力するエレメントリムーバが含まれることを特徴とする請求項１４乃至２０のいずれかに記載の開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、開発支援プログラム、開発支援装置およびシステム開発方法に関する。
【背景技術】
【０００２】
従来より、種々の技術分野、例えば小規模の電子回路、集積回路、機械等の分野において、ＣＡＤシステム（コンピュータ支援設計システム）が実用化され、開発効率の向上が図られている。
【０００３】
特許文献１記載のアーキテクチャ設計システムは、（１）アルゴリズムを設計した結果として記述されるアルゴリズム表現（以下、「理論アルゴリズム」という。）の記述作成／編集ステップと、（２）理論アルゴリズム記述から制御マッピングを発生するステップと、（３）ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）要素割当ステップと、（４）相互接続発生ステップと、（５）構造的マッピング発生ステップと、（６）制御発生ステップとを備え、それぞれ設計者が対話形式で、アルゴリズムによって記述されたアーキテクチャをＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）の表現に書き換える。
そして、各ステップの作業においては、種々のライブラリを活用する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１７１８４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１記載のアーキテクチャ設計システムは、一見、アルゴリズムがそのままＲＴＬに変換し得るが、設計者の高い能力、技量と多大の労力を要する。
特に、アルゴリズム記述作成／編集ステップは、回路ブロックを内部詳細ブロックに展開する階層設計作業を行うものであり、その成果は、設計者の能力に大きく依存する。
【０００６】
本発明はこのような従来の問題点を解消すべく創案されたもので、設計者の能力に依存することなく、ハードウエア、ソフトウエアあるいは両者を含むシステムの開発を効率化することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、所定の表記によって記述された理論アルゴリズム（アルゴリズムを設計した結果として記述されるアルゴリズム表現）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現ステップを備えたシステム開発方法であって、前記送信側データ転送単位変換器には、入力されたデータの部分配列を生成し送信するストリーマが含まれ、前記受信側データ転送単位変換器には、入力されたデータから全体配列を生成し送信するコンポーザが含まれる。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【０００８】
本発明に係るシステム開発方法において、前記アルゴリズム実行単位表現で、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成ステップをさらに備えてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理ステップの簡略化等が可能である。
【０００９】
本発明に係るシステム開発方法において、前記アルゴリズム実行単位表現で、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成ステップを、さらに備えてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理速度向上が可能である。
【００１０】
本発明に係るシステム開発方法において、前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマを含めてもよい。
これによって、各データに対する繰り返し処理等が可能になる。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１１】
本発明は、所定の表記によって記述された理論アルゴリズム（アルゴリズムを設計した結果として記述されるアルゴリズム表現）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現ステップを、コンピュータの制御部に実行させる開発支援プログラムであって、前記送信側データ転送単位変換器には、入力されたデータの部分配列を生成し送信するストリーマが含まれ、前記受信側データ転送単位変換器には、入力されたデータから全体配列を生成し送信するコンポーザが含まれる。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１２】
本発明に係る開発支援プログラムにおいて、前記送信側データ転送単位変換器には、前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成ステップを、さらにコンピュータの制御部に実行させてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理ステップの簡略化等が可能である。
【００１３】
本発明に係る開発支援プログラムにおいて、前記アルゴリズム実行単位表現で、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成ステップを、さらにコンピュータの制御部に実行させてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理速度向上が可能である。
【００１４】
本発明に係る開発支援プログラムにおいて、前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１５】
本発明に係る開発支援プログラムにおいて、前記機能アルゴリズムで、パイプラインの各段を示す単位処理ブロックを定義した実装アルゴリズムを生成する実装アルゴリズムステップを、さらに、コンピュータの制御部に実行させてもよい。
これによって、実装アルゴリズムを自動生成し得る。
【００１６】
本発明に係る開発支援プログラムにおいて、前記送信側データ転送単位変換器には、メモリからのデータ読み出しを実行するメモリリーダが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１７】
本発明に係る開発支援プログラムにおいて、前記受信側データ転送単位変換器には、メモリにデータを書き込むメモリライタが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１８】
本発明に係る開発支援プログラムにおいて、前記送信側データ転送単位変換器には、入力データの採否を示すストローブ信号を出力するエレメントリムーバが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００１９】
本発明は、所定の表記によって記述された理論アルゴリズム（アルゴリズムを設計した結果として記述されるアルゴリズム表現）を、繰り返し処理を含まない演算部分の階層と、前記演算部分にデータを入力する送信側データ転送単位変換器の階層と、前記演算部分の階層の出力を受信して格納する受信側データ転送単位変換器の階層とに分けて記述したアルゴリズム実行単位表現を生成するアルゴリズム実行単位表現手段を備えた開発支援装置であって、前記送信側データ転送単位変換器には、入力されたデータの部分配列を生成し送信するストリーマが含まれ、前記受信側データ転送単位変換器には、入力されたデータから全体配列を生成し送信するコンポーザが含まれる。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００２０】
本発明に係る開発支援装置において、前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、同一配列型であったときに、該コンポーザと該ストリーマとを相殺する機能アルゴリズム生成手段を、さらに備えてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理ステップの簡略化等が可能である。
【００２１】
本発明に係る開発支援装置において、前記アルゴリズム実行単位表現において、前記コンポーザの後段に、前記ストリーマが接続され、該コンポーザの入力データと、該ストリーマの出力データとが、異なる配列型であったときに、該コンポーザの入力データを、該ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することにより該ストリーマが送信する部分配列に変換する送受信型データ転送単位変換器に変換する、機能アルゴリズム生成手段を、さらに備えてもよい。
これによって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理速度向上が可能である。
【００２２】
本発明に係る開発支援装置において、前記送信側データ転送単位変換器には、入力された同一データを所定回数送信するアップサンプラが含まれ、前記受信側データ転送単位変換器には、入力されたデータを間引いて送信するダウンストリーマが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００２３】
本発明に係る開発支援装置において、前記機能アルゴリズムで、パイプラインの各段を示す単位処理ブロックを定義した実装アルゴリズムを生成する実装アルゴリズム手段を、さらに備えてもよい。
これによって、実装アルゴリズムを自動生成し得る。
【００２４】
本発明に係る開発支援装置において、前記送信側データ転送単位変換器には、メモリからのデータ読み出しを実行するメモリリーダが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００２５】
本発明に係る開発支援装置において、前記受信側データ転送単位変換器には、メモリにデータを書き込むメモリライタが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【００２６】
本発明に係る開発支援装置において、前記送信側データ転送単位変換器には、入力データの採否を示すストローブ信号を出力するエレメントリムーバが含まれてもよい。
これによって、アルゴリズムをハードウエアやソフトウエアの構成に沿った表現とすることができ、効率的なシステム開発が可能になる。
【発明の効果】
【００２７】
本発明によれば、設計者の能力に依存することなく、ハードウエア、ソフトウエア、あるいは両者を含むシステムの開発作業を効率化し得る。
【図面の簡単な説明】
【００２８】
【図１】本発明に係る開発支援プログラムの一実施例を実行するためのコンピュータを示すブロック図。
【図２】図１のコンピュータを含むネットワークを示すブロック図。
【図３】本発明に係る開発支援プログラムを実行するための機能ブロックを示すブロック図。
【図４】図３におけるアルゴリズム階層ライブラリを示す図。
【図５】図３におけるアルゴリズム実行単位表現ライブラリを示す図。
【図６】図５におけるストリーマ（Ｓｔｒｅａｍｅｒ）の処理例を示す図。
【図７】図６の処理例を示すブロック図。
【図８】図５のストリーマ（Ｓｔｒｅａｍｅｒ）の他の処理例を示す図。
【図９】図５のコンポーザ（Ｃｏｍｐｏｓｅｒ）の処理例を示すブロック図。
【図１０】図５におけるメモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）の処理例を示すブロック図。
【図１１Ａ】メモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）の他の処理例を示すブロック図。
【図１１Ｂ】メモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）のさらに他の処理例を示すブロック図。
【図１１Ｃ】メモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）のさらに他の処理例を示すブロック図。
【図１１Ｄ】メモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）のさらに他の処理例を示すブロック図。
【図１２】図５におけるエレメントリムーバ（Ｅｌｅｍｅｎｔ  Ｒｅｍｏｖｅｒ）の処理例を示すブロック図。
【図１３】図１２のエレメントリムーバ（Ｅｌｅｍｅｎｔ  Ｒｅｍｏｖｅｒ）の処理例を示す図。
【図１４】図５におけるアップサンプラ（Ｕｐ  Ｓａｍｐｌｅｒ）およびダウンサンプラ（Ｄｏｗｎ  Ｓａｍｐｌｅｒ）の使用例を示すブロック図。
【図１５】図３における機能アルゴリズムライブラリを示す図。
【図１６】図５におけるオプチマイズド（Ｏｐｔｉｍｉｚｅｄ）ＤＵＣの処理例を示すブロック図。
【図１７】図１６のオプチマイズド（Ｏｐｔｉｍｉｚｅｄ）ＤＵＣの処理例を示す図。
【図１８】本発明に係る開発支援プログラムの一実施例におけるアルゴリズム実行単位表現を表示する画面を示す図。
【図１９】図１８の画面でＤＵＣの分割を実行した際の画面を示す図。
【図２０】図１９の処理結果を示す図。
【図２１】図１８の画面でＤＵＣの並列化を実行した際の画面を示す図。
【図２２】図２１の処理結果を示す図。
【図２３】図１８の画面でＤＵＣの合成を実行した際の画面を示す図。
【図２４】図２３の処理結果を示す図。
【図２５】図１８の画面でテスト（ＴＥＳＴ）を実行する際の画面を示す図。
【図２６】同実施例における機能アルゴリズムを表示する画面を示す図。
【図２７】同実施例における実装アルゴリズムを表示する画面を示す図。
【図２８】図３のアルゴリズム階層判断手段の処理を示すフローチャート。
【図２９】図３のアルゴリズム実行単位表現手段の処理を示すフローチャート。
【図３０】図３の機能アルゴリズム生成手段の処理を示すフローチャート。
【図３１】図３の実装アルゴリズム生成手段の処理を示すフローチャート。
【図３２】本発明に係るシステム開発方法の一実施例を示すフローチャート。
【発明を実施するための形態】
【００２９】
以下、本発明に係る開発支援プログラム、開発支援装置およびシステム開発方法の実施例を添付図面を参照して説明する。
【実施例】
【００３０】
［システム開発方法］
〜アルゴリズムには階層がある。〜
本発明は、このような発見に基づく。
先行技術文献に関連して説明したとおり、過去数十年、開発支援ツールは多数提案され、販売されてきたが、多様な理論アルゴリズムから合理的な回路を直ちに生成できるものはなく、開発者の多大な労力と知識を必要とした。
何故か。
それは、理論アルゴリズムには、四則演算等の演算部分以外に、必ずといっていい程、ループ制御や条件判断等、制御要素が含まれており、制御要素の回路実現には、高度な技術が要求されるからである。
すなわち、アルゴリズムには、一般に、演算部分の階層と制御要素の階層とが含まれ、両者が一体化した状態では、開発支援ツールでの処理が容易でない。
そこで、発明者は、「アルゴリズムには階層がある。」との知見に基づき、理論アルゴリズムを、最初に、演算部分の階層と制御要素の階層とに分離した形に置き換えるシステム開発方法を見出した。
【００３１】
図３２に示すように、ハードウエア、ソフトウエアあるいは両者を含むシステムの開発方法の一実施例においては、以下のステップを実行する。
【００３２】
ステップＳ３２０１：開発者は、まず理論アルゴリズムを評価、検討し、理論アルゴリズムを「アルゴリズム実行単位表現」として記述する。
ここに、理論アルゴリズムとは、アルゴリズムを設計した結果として記述されるアルゴリズム表現を意味する。
図１８において、アルゴリズム実行単位表現は、後述する開発支援装置に関連して説明するように、ループ制御要素およびｉｆ文、ｓｗｉｔｃｈ文等の条件判断要素をデータ転送単位変換器ＤＵＣ１〜ＤＵＣ６に置き換え、繰り返し処理を含まない演算部分をアルゴリズムコアＡ５１〜Ａ５３に置き換えたものである。
これによってデータ転送単位変換器を抽出することができ、図４、図５に示すように、データ転送単位変換器のライブラリをあらかじめ用意しておけば、開発者は容易にデータ転送単位変換器の開発を完了でき、演算部分のみに注力できる。
さらに開発効率は大幅に向上する。
【００３３】
ステップＳ３２０２：アルゴリズム実行単位表現は、各ブロック、例えばアルゴリズムコアＡ５１〜Ａ５３（図１８）の入出力が明確に定義されているため、処理内容のテストにも有効である。そこで、ステップＳ３２０２は、理論アルゴリズムにおける各ブロックＡ１〜Ａ３に対応したアルゴリズム実行単位表現ごとにテストする（図２５）。
【００３４】
ステップＳ３２０３：ステップＳ３２０２においてアルゴリズム実行単位表現が正しく記述されたことを確認した後に、アルゴリズム実行単位表現におけるＤＵＣを合理化する。
図１５に示すように、ＤＵＣの合理化についても、ライブラリを用意することが可能であり、同ライブラリを参照することによって、開発者はアルゴリズム実行単位表現におけるＤＵＣを容易に合理化し得る。
ＤＵＣの合理化によって、アルゴリズムの記述を単純化でき、ハードウエア規模の節減、処理ステップの簡略化等が可能である。
【００３５】
ステップＳ３２０４：ステップＳ３２０２におけるＤＵＣの合理化した結果を「機能アルゴリズム」といい、ステップＳ３２０４では機能アルゴリズム（図２６参照）を生成する。
【００３６】
ステップＳ３２０５：ステップＳ３２０４に続いて、機能アルゴリズムに対して、パイプラインの各段を設定する単位処理ブロックＰＢ２７２、ＰＢ２７３（図２７参照）を設定する。単位処理ブロックが設定された機能アルゴリズムを「実装アルゴリズム」という。
実装アルゴリズムでは、パイプライン格段の間にＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）メモリＦ１１０、Ｆ１１１、Ｆ１１２を挿入、接続する。
【００３７】
ステップＳ３２０６：ステップＳ３２０５に続いて、実装アルゴリズムを生成する。
【００３８】
本発明方法の実施例では、アルゴリズムを、アルゴリズムコアとデータ転送のためのデータ転送単位変換器の階層に階層分けして、実行単位表現を生成できるので、その後、機能アルゴリズムによってデータ転送単位変換器をより現実的かつ効率的なものに変換し得る。
これによって、設計者の能力に依存することなく、合理的なＲＴＬ表現等のハードウエア開発工程を実行できる。
さらに、機能アルゴリズムに基づいて実装アルゴリズムを記述することによって、パイプラインのＲＴＬ構成が自動的に生成でき、開発作業を効率化し得る。
【００３９】
［開発支援装置］
図１は、本発明に係る開発支援装置の一実施例を示すブロック図、図２は、図１の開発支援装置を複数ネットワークに接続した状態を示すブロック図、図３は、図１の開発支援装置の機能ブロック図である。
【００４０】
図１において、開発支援装置１０００は、カラーＬＣＤ（液晶ディスプレイ）等の表示部１０１０と、表示すべき画像に基づいて表示部１０１０を駆動して画像を表示する表示制御部１０１２とを有し、開発支援装置１０００においては、例えば、後述する理論アルゴリズム（図１８）、アルゴリズム実行単位表現（図１８）、機能アルゴリズム（図２６）、実装アルゴリズム（図２７）等を表示する。
【００４１】
表示制御部１０１２には、開発支援装置１０００全体を制御し、ＣＰＵや各ブロックとの情報の入出力を行うインターフェース（図示しない）等で構成する制御部１０２０が接続され、制御部１０２０には、システムメモリ１０３０、ＲＯＭ１０３２、メモリカード等記憶媒体１０３４が接続されている。表示部１０１０に表示すべき画像は制御部１０２０によって生成され、あるいはシステムメモリ１０３０、ＲＯＭ１０３２、記憶媒体１０３４に格納されている。
【００４２】
制御部１０２０には、種々の通信や操作のための操作入力部１０６０、時間計測のためのタイマ１０８０が接続されている。
【００４３】
制御部１０２０には、外部機器との間で、通信回線等の通信手段によって通信するための通信Ｉ／Ｆ１０４０が接続されている。
【００４４】
開発支援装置１０００は制御部１０２０において開発支援プログラムが実行されることによって実現され、開発支援プログラムおよび種々のデータは、記憶媒体１０３４からロードされ、あるいはデータ通信によってダウンロードされる。
【００４５】
図２に示すように、複数の開発支援装置１０００〜１００３をＬＡＮを通じてサーバＳＶに接続し、開発成果等の資産を共同利用し、さらにインターネットＩＮを介して接続された遠隔の開発支援装置１００５〜１００７をサーバＳＶに接続してもよい。
なお、開発支援プログラムをサーバＳＶのみに搭載し、開発支援装置１０００〜１００３において、サーバＳＶ上の開発支援プログラムを、タイムシェアリングしつつ使用することも可能である。
【００４６】
図３において、開発支援装置１０００における制御部１０２０は、システムメモリ１０３０、ＲＯＭ１０３２とともに、表示手段１１００、アルゴリズム階層判断手段１１２０、アルゴリズム実行単位表現手段１１４０、機能アルゴリズム生成手段１１６０、実装アルゴリズム生成手段１１８０、高位合成向けコード生成手段１２００、高位合成手段１２２０、論理合成手段１２４０、レイアウト手段１２６０として機能する。
【００４７】
さらに、システムメモリ１０３０には、アルゴリズム階層判断手段１１２０、アルゴリズム実行単位表現手段１１４０、機能アルゴリズム生成手段１１６０、実装アルゴリズム生成手段１１８０、高位合成向けコード生成手段１２００、それぞれのための、アルゴリズム階層ライブラリ１１２０Ｌ、アルゴリズム実行単位表現ライブラリ１１４０Ｌ、機能アルゴリズムライブラリ１１６０Ｌ、実装アルゴリズムライブラリ１１８０Ｌ、高位合成向けコード生成ライブラリ１２００Ｌが格納されている。
これらライブラリ１１２０Ｌ、１１４０Ｌ、１１６０Ｌ、１１８０Ｌ、１２００Ｌは記憶媒体１０３４からロードされ、あるいはデータ通信によってダウンロードされる。
【００４８】
図４に示すように、アルゴリズム階層ライブラリ１１２０Ｌには、ループ制御（ｆｏｒループ等）および条件判断（ｉｆ文、ｓｗｉｔｃｈ文等）に関する制御要素、その他が格納されている。そして、アルゴリズム階層判断手段１１２０は、アルゴリズム階層ライブラリ１１２０Ｌに基づいて、処理対象の理論アルゴリズムについて、ループ制御要素、条件判断要素等の制御要素を抽出する。
【００４９】
図５に示すように、アルゴリズム実行単位表現ライブラリ１１４０Ｌは、理論アルゴリズムにおける入力データ（引数）の配列、ループ制御要素、条件判断要素等の制御要素が格納され、アルゴリズム実行単位表現手段１１４０は、処理対象の理論アルゴリズムにおける、制御要素（「データ転送単位変換器」と呼び、ＤＵＣと表記する。）に変換する。
これによって、抽象的に表現された理論アルゴリズムを、演算部分であるアルゴリズムコアと、データ入力等の制御に関するＤＵＣとに分離でき、ＲＴＬ表現その他、ハードウエア、ソフトウエアおよび両者が混在したシステムとの整合性がより良好となり、さらに、機能アルゴリズムによる合理化の処理が可能となる。
【００５０】
アルゴリズム実行単位表現手段１１４０は、所定の表記、例えばＣ言語表記によって表記された理論アルゴリズムについて、最初に、引数に対応したループ制御要素を抽出してアルゴリズム実行単位表現を生成する。但し、その後編集、あるいはアルゴリズム実行単位表現手段１１４０の機能を使用しないマニュアル操作も可能である。
【００５１】
ＤＵＣは、例えば、入力データに対応する引数として１次元〜多次元の「配列」、ループ制御要素としての「ｆｏｒループ」、条件判断要素としての「ｉｆ文」、「ｓｗｉｔｃｈ文」に対応して、以下のように定義されている。
【００５２】
（Ａ１）ストリーマ（Ｓｔｒｅａｍｅｒ）
配列ＭａｔｒｉｘＩＮに対して、その部分配列ＭａｔｒｉｘＯＵＴをアルゴリズムコアに送信する。このようにアルゴリズムコアにデータを送信するデータ転送単位変換器を「送信側データ転送単位変換器」という。
例えば、図６、図７に示すように、座標Ｄ（１，１）、Ｄ（ｍ，ｎ）（ｍ＝４０，ｎ＝１６０）を対角点とする長方形状の画像データを入力配列ＭａｔｒｉｘＩＮ＝｛Ｄ［ｍ］［ｎ］｝とするとき、ＳｔｒｅａｍｅｒＳＴ７において、１画素ずつのデータＤ（ｘ，ｙ）を抽出して出力する。このとき、座標ｘ、ｙを同時に出力してもよい。
さらに、図８に示すように、ストリーマによって、同様の画像データＭａｔｒｉｘＩＮから、３×３画素のウインドＷｇ（ｘ，ｙ）を抽出することも可能である。
図８の処理では、ウインドＷｇ（ｘ，ｙ）は、Ｇｇ（ｘ−１，ｙ−１）、Ｇｇ（ｘ，ｙ−１）、Ｇｇ（ｘ＋１，ｙ−１）、Ｇｇ（ｘ−１，ｙ）、Ｇｇ（ｘ，ｙ）、Ｇｇ（ｘ＋１，ｙ）、Ｇｇ（ｘ−１，ｙ＋１）、Ｇｇ（ｘ，ｙ＋１）、Ｇｇ（ｘ＋１，ｙ＋１）の画素の組み合わせよりなる。
なお、画像データにおける４隅の破線領域で示すように、画像の４隅のウインドＷｇ（１，１）、Ｗｇ（４０，１）、Ｗｇ（１，１６０）、Ｗｇ（４０，１６０）は４個の画素で構成されるため、定義域外のデータを無視する。すなわち、Ｗｇ（１，１）では、ｘ座標が（ｘ−１）またはｙ座標が（ｙ−１）の画素を無視し、Ｗｇ（４０，１）では、ｘ座標が（ｘ＋１）またはｙ座標が（ｙ−１）の画素を無視し、Ｗｇ（１，１６０）では、ｘ座標が（ｘ−１）またはｙ座標が（ｙ＋１）の画素を無視し、Ｗｇ（４０，１６０）では、ｘ座標が（ｘ＋１）またはｙ座標が（ｙ＋１）の画素を無視する。
ＭａｔｒｉｘＩＮ、ＭａｔｒｉｘＯＵＴはこのような入出力データに限定されるものではなく、任意の入力配列に対する部分配列を出力するものを包含する。
ストリーマを設けることによって、処理対象のデータを容易に、かつ明確に定義し得る。
なお、ウインドＷｇ（ｘ，ｙ）の形状は３×３に限定されるものではなく、５画素×７画素、７画素×１３画素等多様なサイズのウインドが含まれる。
【００５３】
（Ａ２）コンポーザ（Ｃｏｍｐｏｓｅｒ）
入出力関係がストリーマと反対の関係にある。すなわち、アルゴリズムコアから部分配列ＭａｔｒｉｘＩＮを受信して、その全体配列ＭａｔｒｉｘＯＵＴを生成し格納する。このようにアルゴリズムコアからデータを受信するデータ転送単位変換器を「受信側データ転送単位変換器」という。
例えば、図９に示すように、図６の各画素データＤ（ｘ，ｙ）から画像データ｛Ｄ［ｍ］［ｎ］｝を生成する処理や、図８の各ウインドＷｇ（ｘ，ｙ）から画像データ｛Ｄ［ｍ］［ｎ］｝を生成する処理を実行し得る。
ＭａｔｒｉｘＩＮ、ＭａｔｒｉｘＯＵＴはこのような入出力データに限定されるものではなく、任意の入力配列に対する部分配列を出力するものを包含する。
コンポーザによって、処理結果の配列データを容易、かつ明確に定義し得る。
【００５４】
（Ａ３）メモリライタ（Ｍｅｍｏｒｙ  Ｗｒｉｔｅｒ）およびメモリリーダ（Ｍｅｍｏｒｙ  Ｒｅａｄｅｒ）
メモリに保持すべきデータの処理を定義するＤＵＣであり、このような処理を容易かつ明確に定義し得る。
メモリライタは、アルゴリズムコアから受信したデータをメモリに書き込むで、「受信側データ転送単位変換器」に含まれる。
一方、メモリリーダは、メモリから読み出したデータをアルゴリズムコアに送信するので、「送信側データ転送単位変換器」に含まれる。
図６では、画像をｙ座標最小値においてｘ座標の最小値から最大値までデータを読み出し、その後ｙ座標を順位増加しつつ、ｘ座標の最小値から最大値までデータを読み出しているが、このような読み出し順序（以下、スキャンラインに沿った読み書き順序という。）、あるいは書き込み順次を変更する場合がある。
【００５５】
図１０にメモリライタおよびメモリリーダを含むアルゴリズム実行単位表現の基本構造および動作を示す。
メモリリーダＤＵＣ１０４によって、スキャンラインに沿った読み出し順序Ｓ１で、メモリＭＥＭ１、ＭＥＭ２からデータを読み出し、アルゴリズムコアＡＣ１０１によって演算した結果を、メモリライタＤＵＣ１０６によって、やはりスキャンラインに沿った書き込み順序でメモリＭＥＭ１、ＭＥＭ２に書き込む。
その後、メモリリーダＤＵＣ１０５によって、ジグザグスキャンＳ２の順序で、メモリＭＥＭ１、ＭＥＭ２からデータを読み出し、アルゴリズムコアＡＣ１０２によって演算した結果を、メモリライタＤＵＣ１０７によって、スキャンラインに沿った順序でメモリＭＥＭ１、ＭＥＭ２に書き込む。
メモリリーダＤＵＣ１０４、ＤＵＣ１０５の読み出しアドレスは、それぞれストリーマＤＵＣ１０２、ＤＵＣ１０３から入力される。
ストリーマＤＵＣ１０２、ＤＵＣ１０３にはコンポーザＤＵＣ１０１が接続され、コンポーザには、画像データの配列に対応した５×５数値の配列が格納されている。数値配列には、スキャンラインに添った順序で、１〜２５の数値が昇順で格納されており、ストリーマＤＵＣ１０２はスキャンラインに添った順序で数値列を読み込む。これによって、ＤＵＣ１０２はスキャンラインに添った読み出しアドレスを生成し、メモリリーダＤＵＣ１０４はスキャンラインに添った読み出しを実行する。
一方、ストリーマＤＵＣ１０３はジグザグスキャンＳ２の順序で数値列を読み込んで、ジグザグスキャンの読み出しアドレスを生成する。これによって、メモリリーダＤＵＣ１０５はジグザグキャンの読み出しを実行する。
【００５６】
図１０の構造を基本として、（１）−１：メモリリーダＤＵＣ１０４が不要な場合、（１）−２：メモリリーダＤＵＣ１０４およびアルゴリズムコアＡＣ１０１が不要な場合、（２）−１：メモリライタＤＵＣ１０７が不要な場合、（２）−２：アルゴリズムコアＡＣ１０２およびメモリライタＤＵＣ１０７が不要な場合、が考えられ、さらに（１）と（２）の組み合わせによる省略型が考え得る。
【００５７】
図１０におけるメモリリーダＤＵＣ１０４が不要な場合、例えば、アルゴリズムコアＡＣ１０１がメモリＭＥＭ１、ＭＥＭ２を参照しないときは、図１０のアルゴリズム実行単位表現は図１１Ａのように変形し得る。
この様な場合では、まず、画像データ｛Ｄ［５］［５］｝をコンポーザＤＵＣ１１１に格納しておき、ストリーマＤＵＣ１１２によって、画像データ｛Ｄ［５］［５］｝をスキャンラインに添った順序で読み出し、ｘ、ｙ座標とともに、アルゴリズムコアＡＣ１１１に入力する。
アルゴリズムコアＡＣ１１１は、各画素データｄ１１〜ｄ５５に対して演算を実行し、演算結果をメモリライタＤＵＣ１０６に入力する。ＤＵＣ１０６は、入力された演算結果をスキャンラインに添った順序でメモリＭＥＭ１に書き込む。
すなわち、図１０のメモリリーダＤＵＣ１０４によるメモリＭＥＭ１からのデータ読み出しに替えて、コンポーザＤＵＣ１１１からの画像データ読み出しを採用し得る。
図１０と同様、メモリＭＥＭ１のデータは、メモリリーダＤＵＣ１１６（図１０のＤＵＣ１０５に対応する。）によって読み取られ、アルゴリズムコアＡＣ１１２に入力される。
図１０と同様に、メモリリーダＤＵＣ１１６には、ストリーマＤＵＣ１１５によって、コンポーザＤＵＣ１１４に格納された数値列１〜２５がジグザグスキャンの順序で入力され、ＭＥＭ１内のデータはジグザグスキャンの順序で読み出される。
アルゴリズムコアＡＣ１１２の出力は、コンポーザＤＵＣ１０７に入力され、所定の全体配列が構成される。
【００５８】
図１０におけるメモリリーダＤＵＣ１０４およびアルゴリズムコアＡＣ１０１が不要な場合、例えば、コンポーザＤＵＣ１１１の格納データｄ１１〜ｄ２５が直接メモリに書くべきデータであるときは、図１０のアルゴリズム実行単位表現は図１１Ｂのように変形し得る。
図１１Bは、アルゴリズムコアＡＣ１１１を省略した以外、図１１Aと同様であるので、その他の説明は省略する。
【００５９】
図１０におけるメモリライタＤＵＣ１０７が不要な場合、例えば、アルゴリズムコアＡＣ１０２の処理結果をメモリに保存する必要がないときは、図１０のアルゴリズム実行単位表現は、図１１Ｃのように変形し得る。
【００６０】
図１０におけるアルゴリズムコアＡＣ１０２およびメモリライタＤＵＣ１０７が不要な場合、例えば、メモリから読み出した値を後段のブロックで使用するときは、図１０のアルゴリズム実行単位表現は図１１Ｄのように変形し得る。  
【００６１】
（Ａ４）エレメントリムーバ（Ｅｌｅｍｅｎｔ  Ｒｅｍｏｖｅｒ）
図１２に示すように、エレメントリムーバＥＲ１２は入力データの取捨選択を行う。
例えば、座標（ｘ，ｙ）ごとに設定されているデータＤ（ｘ，ｙ）について、Ｄ（ｘ，ｙ）および座標値ｘ、ｙを出力するとともに、採用、不採用を示すストローブ信号ＳＴＢを出力する。
ストローブ信号ＳＴＢは、例えば、「０」、「１」の１ビット信号とされ、「１」のときに採用、「０」のときに不採用を示す。
これによって、エレメントリムーバＥＲ１２の出力に接続されたアルゴリズムコア等のブロックにおいて、複雑な判断処理は不要であり、極めて単純な処理でデータ採否を判断できる。
エレメントリムーバは、データをアルゴリズムコアに送信するので、「送信側データ転送単位変換器」に含まれる。
エレメントリムーバＥＲ１２の後段のブロックは、ストローブ信号ＳＴＢ＝０のとき、一切の処理が不要になるので、処理を高速化し得る。
なお、エレメントリムーバＥＲ１２におけるストローブ信号ＳＴＢの制御は、データＤ（ｘ，ｙ）自体の値の大小、値域、あるいは座標（ｘ，ｙ）等、データＤ（ｘ，ｙ）に関連したパラメータによって設定でき、あるいは座標（ｘ，ｙ）以外のパラメータによって設定することが可能である。
【００６２】
Ｄ（ｘ，ｙ）＝０のときＳＴＢ＝０とし、後段の演算を省略する処理を図１３に示す。
すなわち、１１×１０画素の画像において、座標（３，１）、（５，１）、（１０，１）、（２，３）、（５，４）、（９，４）、（４，６）、（６，６）、（１１，６）、（３，８）、（７，８）、（９，１０）の画素値Ｄ（ｘ，ｙ）＝１のとき、ＳＴＢ＝１とし、その他の画素値Ｄ（ｘ，ｙ）＝０のとき、ＳＴＢ＝０とする。
その結果、エレメントリムーバＥＲ１２の処理結果は、座標（３，１）、（５，１）、（１０，１）、（２，３）、（５，４）、（９，４）、（４，６）、（６，６）、（１１，６）、（３，８）、（７，８）、（９，１０）について、画素値１の画素列が出力される。
【００６３】
エレメントリムーバＥＲ１２においては、判断結果は、ストローブ信号ＳＴＢの生成に使用されるだけなので、その条件判断が多少複雑化しても、処理速度の低下はわずかである。
【００６４】
（Ａ５）アップサンプラ（Ｕｐ  Ｓａｍｐｌｅｒ）およびダウンサンプラ（Ｄｏｗｎ  Ｓａｍｐｌｅｒ）
アップサンプラは１個の入力データを複数のタイミングで適用する処理を実行し、ダウンサンプラは、複数タイミングの入力データに対応して、１個の出力データを出力する。
アップサンプラは、複数タイミングのデータをアルゴリズムコアに送信するので、「送信側データ転送単位変換器」に含まれる。
一方、ダウンサンプラは、アルゴリズムコアから受信したデータを間引くので、「受信側データ転送単位変換器」に含まれる。
例えば、図１４においては、アルゴリズムコアＡＣ１４の演算について、入力Ｉ１、Ｉ２に関するｉ＝０〜５、ｊ＝０〜５のループ制御要素が定義され、さらに、これら入力に対してパラメータｋがｋ＝０〜５に変化する制御が行われる。
このため、Ｉ１［ｉ］［ｊ］を１データごとに出力するストリーマＤＵＣ１４０と、Ｉ２［ｉ］［ｊ］を１データごとに出力するストリーマＤＵＣ１４１と、Ｉ１［ｉ］［ｊ］の出力に対してｋ＝０〜５を適用するアップストリーマＤＵＣ１４２と、Ｉ２［ｉ］［ｊ］の出力に対してｋ＝０〜５を適用するアップストリーマＤＵＣ１４３とが設けられ、ＤＵＣ１４２、ＤＵＣ１４３の出力がアルゴリズムコアＡＣ１４に入力されている。
一方、アルゴリズムコアＡＣ１４の出力には、アルゴリズムコアＡＣ１４のｋ＝０〜５の演算タイミングを待って１回のデータ出力を行うダウンサンプラＤＵＣ１４４が接続され、ダウンサンプラＤＵＣ１４４の出力に、全てのＩ１、Ｉ２に対応した出力データＤｏｕｔ[６][６]を生成するコンポーザＤＵＣ１４５が接続されている。
【００６５】
アップサンプラは、相前後する入力データＤ１、Ｄ２に対して、これら入力データそのものを出力するとともに、その中間のタイミングで両者の平均値ＤＤ＝（Ｄ１＋Ｄ２）／２を出力するものであってもよい。これによって、例えば、補間付高解像度化画像が得られる。
【００６６】
一方、ダウンサンプラは、入力データＤ１、Ｄ２、・・・、Ｄｋの内の一部のみ出力するものであってもよい。これによって、縮小画像の生成等、データの間引きの処理に適用し得る。
【００６７】
図１５に示すように、機能アルゴリズムライブラリ１１６０Ｌには、アルゴリズム実行単位表現における合理化可能なＤＵＣの組み合わせが格納され、機能アルゴリズム生成手段１１６０は、処理対象のアルゴリズム実行単位表現における、合理化可能なＤＵＣの組み合わせを抽出する。
（Ｂ１）コンポーザ＋ストリーマ
コンポーザの後段にストリーマが接続されており、コンポーザの入力データとストリーマの出力データとが対応していた場合、これらを消去し得る。
図１５の領域Ｂ１に表示した例では、前段のコンポーザの入力と後段のストリーマの出力がいずれも配列［ｉ］［ｊ］であり、これらコンポーザとストリーマを消去できる。
（Ｂ２）ダウンサンプラ＋アップサンプラ
ダウンサンプラの後段にアップサンプラが接続されている場合であって、ダウンサンプラが複数回の同一データを間引き、一方、アップサンプラがダウンサンプラの出力を当初の回数のデータに復元するときには、これらダウンサンプラとアップサンプラを消去し得る。
図１５の領域Ｂ２には、このような条件を満足するダウンサンプラとアップサンプラを消去する例を示している。
（Ｂ３）コンポーザ＋ストリーマ
コンポーザの後段に、ストリーマが接続され、コンポーザの入力データと、ストリーマの出力データとが、異なる配列型であったときに、コンポーザの入力データを、ストリーマの出力データを作成するために必要なデータのみを格納し、格納したデータの中から出力データとして必要な成分のみを抽出することによりストリーマが送信する部分配列に変換するオプチマイズドＤＵＣに変換する。
オプチマイズドＤＵＣは、内部でデータ型の変換を行うものであり、以下、「送受信型データ転送単位変換器」と呼ぶ。
図１５の領域Ｂ３に表示した例では、前段のコンポーザ入力は配列［ｉ］［ｊ］、コンポーザ出力およびストリーマ入力は配列［ｍ］［ｎ］、ストリーマ出力は配列［ｈ］［ｋ］である。
図１７に示すように、このような入出力は、例えば、コンポーザによって、１画素ずつの画像データＤ（ｕ，ｖ）から６×６画素の画像Ｍａｔｒｉｘ１６０を生成し、この画像Ｍａｔｒｉｘ１６０から、ストリーマによって２×２画素のウインドＭａｔｒｉｘ１６２｛Ｄ（ｘ，ｙ），Ｄ（ｘ＋１，ｙ），Ｄ（ｘ，ｙ＋１），Ｄ（ｘ＋１，ｙ＋１）｝を抽出する処理である。
図１６に示すように、このような処理を実現する回路は、例えば、メモリから読み出した画像データ｛Ｄ［ｍ］［ｎ］｝から２画素分の画素データＤ（ｕ，ｖ）を順次保持する直列なラッチＲ１５０、Ｒ１５１と、ラッチＲ１５１から転送されたデータを順次保持するラインバッファＬＢ１５と、ラインバッファＬＢ１５の最終段のデータを順次保持するラッチＲ１５２、Ｒ１５３とによって実現される。Ｍａｔｒｉｘ１６２はラッチＲ１５０〜Ｒ１５３に保持されたデータによって構成される。
オプチマイズドＤＵＣを採用することにより、ＤＵＣ２個に相当するメモリ（フレームメモリ等）を省略でき、回路規模を節減し得るとともに、処理速度の向上できる。
【００６８】
以上で説明したＤＵＣは、処理速度（レート）を設定することも可能であり、以上のＤＵＣをレートごとに定義したアルゴリズム実行単位表現ライブラリ１１４０Ｌ、機能アルゴリズムライブラリ１１６０Ｌを準備しておいてもよい。
例えば、後述する高位合成において、同一回路図内で、同一レートのブロックを使用するという制限がある場合等、レートごとのライブラリを定義することは必須となる。
【００６９】
［開発支援装置の操作］
次に、開発支援装置１０００による処理の流れを、図１８〜図２７を参照して説明する。
【００７０】
図１８は、アルゴリズム実行単位表現手段１１４０によって、アルゴリズム実行単位表現を表示する画面を示す。
同画面には理論アルゴリズム表示領域ＴＤと、アルゴリズム実行単位表現表示領域ＥＵおよびメニュー領域ＭＮが設けられ、理論アルゴリズム表示領域ＴＤには処理対象の理論アルゴリズムが表示される。
アルゴリズム実行単位表現表示領域ＥＵには、アルゴリズム階層判断手段１１２０およびアルゴリズム実行単位表現手段１１４０によって、理論アルゴリズムを処理した結果生成されたアルゴリズム実行単位表現が表示される。
一方、メニュー領域ＭＮには、同画面における種々の操作のためのメニュー、すなわち、アルゴリズム実行単位表現のデータファイルに対する「開」（開く）ｍ１６０１、「上保」（上書き保存）ｍ１６０２、「新保」（新規保存）ｍ１６０３、「名変」（名称変更）ｍ１６０４、「削」（削除）ｍ１６０５、表示されているアルゴリズム実行単位表現に関する「分割」（ＤＵＣ直列分割）ｍ１６０６、「並列」（ＤＵＣ並列分割）ｍ１６０７、「合成」（ＤＵＣ合成）ｍ１６０８、アルゴリズム実行単位表現の「表示倍率」（表示倍率変更）ｍ１６０９、「ＴＥＳＴ」（テスト実行）ｍ１６１０、「終了」ｍ１６１１、「機能アルゴリズム」（機能アルゴリズムへの移行）ｍ１６１２のメニューが設けられている。
【００７１】
図１８の理論アルゴリズム表示領域ＴＤに表示された理論アルゴリズムは、Ｒ、Ｇ、Ｂレベルがそれぞれ８ビットで、４０×１６０画素の画像のエッジ抽出の処理であり、まず、ブロックＡ１において、原画像Ｓｏｕｒｃｅをグレースケール化し、輝度が８ビットで４０×１６０画素のグレースケール画像を生成する。
次に、ブロックＡ２において、グレースケール画像をメジアンフィルタ（Ｍｅｄｉａｎ  Ｆｉｌｔｅｒ）によって処理し、スパイクノイズを除去する。メジアンフィルタは、３×３画素のウインドの中央画素を、輝度の中央値に変換する処理である。
次に、ブロックＡ３において、メジアンフィルタ処理された８ビットのグレースケール画像を、ソーベルフィルタ（Ｓｏｂｅｌ  Ｆｉｌｔｅｒ）によって処理し、エッジを抽出する。ソーベルフィルタは１次微分フィルタであり、３×３画素のウインドの微分方向後方の両端の画素に「−１」、微分方向後方の両端の中央画素に「−２」、微分方向前方の両端の画素に「１」、微分方向前方の中央画素に「２」、微分方向中央の３画素に「０」の重みを与え、ウインドの中央画素をその総計に変換する処理である。
ブロックＡ３では、横方向、縦方向のソーベルフィルタの処理結果の和を閾値処理し、ブーリアン（Ｂｏｏｌｅａｎ）型１ビットの４０×１６０画素の画像Ｓｉｎｋを生成する。
［アルゴリズム実行単位表現］
【００７２】
アルゴリズム実行単位表現表示領域ＥＵに表示されたアルゴリズム実行単位表現の生成に際しては、アルゴリズム階層判断手段１１２０によって、アルゴリズム階層ライブラリ１１２０Ｌ（図４）に基づいて、理論アルゴリズム中のループ制御要素および条件判断要素を抽出し、アルゴリズム実行単位表現手段１１４０によって、アルゴリズム実行単位表現ライブラリ（図５）に基づいて、引数に対応したループ制御要素と、その他のループ制御要素、条件判断要素に対応したＤＵＣを選択し、アルゴリズム実行単位表現を生成する。
【００７３】
図１８に示すように、理論アルゴリズムのブロックＡ１はＤＵＣ１、アルゴリズムコアＡ５１、ＤＵＣ２に変換され、ブロックＡ２はＤＵＣ３、アルゴリズムコアＡ５２、ＤＵＣ４に変換され、ブロックＡ３はＤＵＣ５、アルゴリズムコアＡＣ５３、ＤＵＣ６に変換されている。
【００７４】
２次元画像である原画像の各座標を（ｘ、ｙ）とし、その画素値をＧ０（ｘ，ｙ）とすると、アルゴリズムコアＡ５１は、例えば、各画素のＲ値、Ｇ値、Ｂ値の合計を２ビット、ビットシフト（ＢＳ）して８ビットに収めて、グレースケール処理結果の画像Ｇｇ（ｘ，ｙ）を得る。すなわち、
Ｇｇ（ｘ，ｙ）＝ＢＳ（Ｒ＋Ｇ＋Ｂ）                                      式（１）
となる。
アルゴリズムコアＡ５１は、二次元画像における各画素Ｇ０（ｘ，ｙ）を１画素ずつグレースケール化するため、ＤＵＣ１は、原画像の仕様に応じて、二次元画像の各画素Ｇ０（ｘ，ｙ）を抽出、展開するストリーマである。
ストリーマは、データＤ（ｘ，ｙ）のみならず座標（ｘ，ｙ）を出力するので、その後段のブロックにおいて、ｘ座標、ｙ座標をカウントするｘカウンタ、ｙカウンタを設ける必要はなく、回路構成は単純である。すなわち、ストリーマは一般に全体装置の回路の単純化に寄与する。
【００７５】
ＤＵＣ２は、グレースケール化された各画素Ｇｇ（ｘ，ｙ）によって１画面の画像データを再構築する。すなわち、ＤＵＣ２はコンポーザである（図９）。
コンポーザＤＵＣ２は、入力座標（ｘ,ｙ）に基づいて処理を決定するので、ｘ座標、ｙ座標をカウントするｘカウンタ、ｙカウンタを設ける必要はなく、回路構成は単純である。
【００７６】
ブロックＡ５２は、グレースケール画像Ｇｇ（ｘ，ｙ）を、３×３画素単位でメジアンフィルタ処理する。このため、ＤＵＣ３は、メジアンフィルタの処理結果Ｍ（ｘ，ｙ）を得るために、フレームバッファ等からＧｇ（ｘ，ｙ）を読み出し、Ｇｇ（ｘ−１，ｙ−１）、Ｇｇ（ｘ，ｙ−１）、Ｇｇ（ｘ＋１，ｙ−１）、Ｇｇ（ｘ−１，ｙ）、Ｇｇ（ｘ，ｙ）、Ｇｇ（ｘ＋１，ｙ）、Ｇｇ（ｘ−１，ｙ＋１）、Ｇｇ（ｘ，ｙ＋１）、Ｇｇ（ｘ＋１，ｙ＋１）の画素の組み合わせ、すなわちウインドＷｇ（ｘ，ｙ）を構成する必要がある。
従って、ＤＵＣ３はストリーマである。
ＤＵＣ４は、メジアンフィルタ処理された各画素Ｇｍ（ｘ，ｙ）によって１画面の画像データを再構築する。すなわち、ＤＵＣ４はコンポーザである。
【００７７】
ブロックＡ５２におけるメジアンフィルタの処理は、式（２）の演算を実行する。
Ｍ（ｘ，ｙ）＝Ｍｉｄ｛Ｇｇ（ｘ−１，ｙ−１），Ｇｇ（ｘ，ｙ−１），Ｇｇ（ｘ＋１，ｙ−１），Ｇｇ（ｘ−１，ｙ），Ｇｇ（ｘ，ｙ），Ｇｇ（ｘ＋１，ｙ），Ｇｇ（ｘ−１，ｙ＋１），Ｇｇ（ｘ，ｙ＋１），Ｇｇ（ｘ＋１，ｙ＋１）｝                        式（２）
【００７８】
ブロックＡ５３は、メジアンフィルタの処理結果Ｍ（ｘ，ｙ）を、３×３画素単位でソーベルフィルタ処理する。
そこで、ＤＵＣ５は、２次元画像としての座標（ｘ、ｙ）に対応した処理結果Ｍ（ｘ，ｙ）から、ソーベルフィルタの処理結果Ｓ（ｘ，ｙ）を得るために、Ｍ（ｘ−１，ｙ−１）、Ｍ（ｘ，ｙ−１）、Ｍ（ｘ＋１，ｙ−１）、Ｍ（ｘ−１，ｙ）、Ｍ（ｘ，ｙ）、Ｍ（ｘ＋１，ｙ）、Ｍ（ｘ−１，ｙ＋１）、Ｍ（ｘ，ｙ＋１）、Ｍ（ｘ＋１，ｙ＋１）の画素の組み合わせ、すなわちウインドＷｍ（ｘ，ｙ）を入力する。
ＤＵＣ５の処理は、図８に関連して説明した処理と同様であるので、説明を省略する。
一方、ＤＵＣ６はＤＵＣ４と同様に画像データと同様の４０×１６０画素のデータを生成する。
本実施形態では、ＤＵＣ６の出力データＳ（ｘ，ｙ）は、システム外部への出力Ｓｉｎｋとされ、適宜、外部回路等の仕様に基づいた処理がなされる。
【００７９】
ブロックＡ５３におけるソーベルフィルタの処理は、式（３）の演算を実行する。
Ｓ（ｘ，ｙ）＝−１×Ｍ（ｘ−１，ｙ−１）＋１×Ｍ（ｘ＋１，ｙ−１）
−２×Ｍ（ｘ−１，ｙ）＋２×Ｍ（ｘ＋１，ｙ）
−１×Ｍ（ｘ−１，ｙ＋１）＋１×Ｍ（ｘ＋１，ｙ＋１）    式（３）
［ＤＵＣ直列分割］
【００８０】
図１９に示すように、アルゴリズム実行単位表現に対しては、分割（ＤＵＣ直列分割）のメニューｍ１６０６「分割」によってループ制御要素を直列に分割し得る。
操作入力部１０６０によってメニューｍ１６０６を選択すると、メニューｍ１６０６が反転する等、特定され、ここで、操作入力部１０６０によって、いずれかのＤＵＣを選択し得る。
図１９では、最も左のＤＵＣ（ストリーマＳＴ１９１）が選択されており、同時に、選択されたＤＵＣの処理内容がループ表示部ＲＰ１９内に表示される。ループ表示部ＲＰ１９には、例えば「ｆｏｒ  ｉ＝１  ｔｏ  ５」ループ制御要素と、その内側の「ｆｏｒ  ｊ＝１  ｔｏ  ５」のループ制御要素が表示される。
ここで、操作入力部１０６０によって、両制御要素を分割する分割指標ＰＬ１９を入力することができる。
その結果、図２０に示すように、前後のループ制御要素に対応した２個の直列ストリーマＳＴ２０１、ＳＴ２０２が生成され、ＳＴ２０１、ＳＴ２０２に対して、その処理内容を示すループ表示ＲＰ２０１、ＲＰ２０２が表示される。
［ＤＵＣ並列分割］
【００８１】
図２１に示すように、アルゴリズム実行単位表現に対しては、並列（ＤＵＣ並列分割）のメニューｍ１６０７「並列」によってループ制御要素を並列に分割し得る。
操作入力部１０６０によってメニューｍ１６０７を選択すると、メニューｍ１６０７が反転する等、特定され、ここで、操作入力部１０６０によって、いずれかのＤＵＣを選択し得る。
図２１では、左から２番目のＤＵＣ（ストリーマＳＴ２１２）が選択されており、同時に、選択されたＤＵＣの処理内容がループ表示部ＲＰ２１内に表示される。ループ表示部ＲＰ２１には、並列数を設定する並列数設定ボックスＲＰ２１１、各並列ループのカウンタを設定するカウンタ設定ボックスＲＰ２１２、ＲＰ２１３が表示される。
図２１では、カウンタｋ＝０〜５について、並列数を２、第１の並列ループのカウンタをｋ＝０，２，４、第２の並列ループのカウンタをｋ＝１，３，５としている。
その結果、図２２に示すように、２個の並列なストリーマＳＴ２２１、ＳＴ２２２が生成され、各ＤＵＣ２２１、ＤＵＣ２２２に対して、その処理内容を示すループ表示ＲＰ２２１、ＲＰ２２２が表示される。
［ＤＵＣ合成］
【００８２】
図２３に示すように、アルゴリズム実行単位表現に対しては、合成（ＤＵＣ合成）のメニューｍ１６０８「合成」によって並列、直列の複数のループ制御要素を合成し得る。
操作入力部１０６０によってメニューｍ１６０８を選択すると、メニューｍ１６０８が反転する等、特定され、ここで、操作入力部１０６０によって、並列あるいは直列のＤＵＣを選択し得る。
図２３では、ストリーマＳＴ２３１と、その後段のストリーマＳＴ２３２を合成ボックスＭＢ２３によって括って、選択している。
このとき、選択されたストリーマＳＴ２３１、ＳＴ２３２の処理内容がループ表示部ＲＰ２３内に表示される。ループ表示部ＲＰ２３には、ＳＴ２３１の処理と、ＳＴ２３２の処理が分離線ＰＬ２３で分離して表示される。
図２３で、操作入力部１０６０によって合成を決定すると、図２４に示すように、ＳＴ２３１、ＳＴ２３２を合成したストリーマＳＴ２４が生成され、その処理内容がループ表示部ＲＰ２４内に表示される。
【００８３】
なお、ＤＵＣの分離、合成の処理は、ストリーマに限定されるものではなく、コンポーザ、アップサンプラ、ダウンサンプラについても適用し得る。
［テスト実行］  
【００８４】
アルゴリズム実行単位表現は、各ブロック、例えばアルゴリズムコアＡ５１〜Ａ５３（図１８）の入出力が明確に定義されているため、処理内容のテストにも有効である。
図２５に示すように、アルゴリズム実行単位表現に対しては、テスト実行のメニューｍ１６１０「ＴＥＳＴ」によって選択ブロックをテストし得る。
操作入力部１０６０によってメニューｍ１６１０を選択すると、メニューｍ１６１０が反転する等、特定され、ここで、操作入力部１０６０によって、テストすべきブロックをテストボックスＴＢ２５によって指定し得る。
テストに際しては、テストパターンの入力データおよび正しい処理結果（基準データ）を作製しておき、テストパターンに対する出力データと基準データとを比較する。
出力データが基準データに一致したときは、ＤＵＣ１〜ＤＵＣ６、ブロックＡ５１〜Ａ５３の内容が正しいことを確認でき、出力データと基準データが不一致のときは、不一致の態様に基づいて、ＤＵＣ１〜ＤＵＣ６、ブロックＡ５１〜Ａ５３を修正（デバグ）し得る。
【００８５】
なお、メニュー「終了」ｍ１６１１を選択すると、「ファイル処理」ｍ１６０１〜ｍ１６０５、あるいは「機能アルゴリズムへの移行」ｍ１６１２が選択可能となり、「終了」ｍ１６１１を選択せずに、直接「機能アルゴリズムへの移行」ｍ１６１２を選択することも可能でである。
「機能アルゴリズムへの移行」ｍ１６１２を選択すると、アルゴリズム実行単位表現に基づいて機能アルゴリズムを生成、表示する。
【００８６】
なお、アルゴリズム実行単位表現は、アルゴリズム階層判断手段１１２０、アルゴリズム実行単位表現手段１１４０を適用せずに、開発支援プログラムを使用する設計者が、理論アルゴリズムを自ら解釈して、マニュアル操作によって、作製してもよい。
【００８７】
［機能アルゴリズム］
【００８８】
図２６は、機能アルゴリズム生成手段１１６０によって、機能アルゴリズムを表示する画面を示す。
図２６に示すように、図１８のアルゴリズム実行単位表現は、機能アルゴリズム生成手段１１６０によって、機能アルゴリズムに変換される。
機能アルゴリズムでは、機能アルゴリズムライブラリ１１６０Ｌに基づいて、データ転送単位変換器ＤＵＣ１、ＤＵＣ２、ＤＵＣ３、ＤＵＣ４、ＤＵＣ５、ＤＵＣ６が、より現実的かつ効率的な構成、すなわちより単純な構成に変換される。
まず、ＤＵＣ２、ＤＵＣ３に注目すると、ＤＵＣ２はグレースケール化データＧｇ（ｘ，ｙ）をフレームバッファに書き込み、ＤＵＣ３は、そのフレームバッファからグレースケール化データＧｇ（ｘ，ｙ）を読み出して、ウインドＷ（ｘ，ｙ）を生成するため、必須である。
そこで、ＤＵＣ２、ＤＵＣ３は、図１５の領域Ｂ３に示すように、グレースケール化データＧｇ（ｘ，ｙ）をウインドＷｇ（ｘ，ｙ）に変換するオプチアミズドＤＵＣ９０に書き換え得る。
ＤＵＣ４、ＤＵＣ５も同様に、メジアンフィルタの処理結果Ｇｍ（ｘ，ｙ）をウインドＷｍ（ｘ，ｙ）に変換するＤＵＣ９１に書き換え得る。
【００８９】
機能アルゴリズム生成手段１１６０は、データ転送単位変換器の省略、合成に際して、機能アルゴリズムライブラリ１１６０Ｌを参照して、機能アルゴリズム生成の処理を実行する。
機能アルゴリズム生成の処理は、データ転送単位変換器を機能アルゴリズムライブラリ１１６０Ｌに基づき評価することによって実行される。なお、機能アルゴリズム生成手段１１６０の処理結果を、開発支援プログラムの設計者が適宜修正し、あるいは、ＤＵＣ１〜ＤＵＣ６を評価して、マニュアル操作によって、機能アルゴリズムを生成してもよい。
【００９０】
なお、ＤＵＣ１、ＤＵＣ６は、原画像Ｓｏｕｒｃｅの画素データの取り込み、エッジ抽出された画像Ｓｉｎｋの出力は、開発対象の外部に存在することもあり、またその仕様も多様であるので、ここではそのまま残存させる。
但し、開発対象の仕様に応じて、原データＳｏｕｒｃｅおよび処理結果データＳｉｎｋの直接接続されたデータ転送単位変換器ＤＵＣ１、ＤＵＣ６についても、合成、省略の対象としてもよい。
【００９１】
図２６の画面には、機能アルゴリズム表示領域ＦＡと、アルゴリズム実行単位表現表示領域ＥＵおよびメニュー領域ＭＮが設けられ、アルゴリズム実行単位表現表示領域ＥＵには処理対象のアルゴリズム実行単位表現（図１８）が表示される。
メニュー領域ＭＮには、機能アルゴリズムのデータファイルに対する「開」（開く）ｍ２６０１、「上保」（上書き保存）ｍ２６０２、「新保」（新規保存）ｍ２６０３、「名変」（名称変更）ｍ２６０４、「削」（削除）ｍ２６０５、表示されている機能アルゴリズムに関する「分割」（ＤＵＣ直列分割）ｍ２６０６、「並列」（ＤＵＣ並列分割）ｍ２６０７、「合成」（ＤＵＣ合成）ｍ２６０８、機能アルゴリズムの「表示倍率」（表示倍率変更）ｍ２６０９、「終了」ｍ２６１１、「実装アルゴリズム」（実装アルゴリズムへの移行）ｍ２６１２のメニューが設けられている。
メニューｍ２６０１〜ｍ２６０９、ｍ２６１１の機能は、メニューｍ１６０１〜ｍ１６０９、ｍ１６１１と同様である。
「実装アルゴリズムへの移行」ｍ２６１２を選択すると、機能アルゴリズムに基づいて実装アルゴリズムを生成、表示する。
【００９２】
なお、機能アルゴリズムは、機能アルゴリズム生成手段１１６０を適用せずに、開発支援プログラムを使用する設計者が、実行単位アルゴリズム表現を自ら解釈して、マニュアル操作によって、作製してもよい。
［実装アルゴリズム］
【００９３】
図２７は、実装アルゴリズム生成手段１１８０によって、実装アルゴリズムを表示する画面を示す。
同画面には、実装アルゴリズム表示領域ＭＡ、通信モデル表示領域ＭＣ、およびメニュー領域ＭＮがもう設けられている。
【００９４】
図２６の機能アルゴリズムでは、アルゴリズムコアＡ５１〜Ａ５３による段階的な（シーケンシャルな）処理が含まれるが、このようなシーケンシャルな処理は、前後の処理段の連携が必須である。
その連携の一形態として、いわゆるパイプライン処理がある。
パイプライン処理には、所定のタイミングごとに各処理段の処理を開始し、終了する同期タイプと、前後の処理段の相互承認によって、各処理段の処理を開始、終了する非同期タイプとがあるが、ここでは、非同期タイプのパイプライン処理による連携を実現する。
なお、パイプライン各段の処理ブロックを、以下「単位処理ブロック」と呼ぶ。
図２７に示すように、実装アルゴリズム生成手段１１８０は、まず、原データＳｏｕｒｃｅおよびＤＵＣ１を１個の単位処理ブロックＡ１０１、処理結果データＳｉｎｋおよびＤＵＣ６を１個の単位処理ブロックＡ１０４と定義し、その他の単位処理ブロックは開発者が操作入力部１０６０を操作して定義する。
例えば、開発者が、操作入力部１０６０によって、アルゴリズムコアＡ５１、Ａ５２およびＤＵＣ９０を１個の単位処理ブロックＡ１０２、アルゴリズムコアＡ５３およびＤＵＣ９１を１個の単位処理ブロックＡ１０３とすべく、単位処理ブロック設定ボックスＰＢ２７１、ＰＢ２７２を記入し、これらを単位処理ブロックＡ１０２、Ａ１０３とする。
［高位合成］
【００９５】
実装アルゴリズム（図２７）は、高位合成向けコード生成手段１２００によって、高位合成向けコード生成ライブラリ１２００Ｌに基づいて、高位合成向けコードに変換される。高位合成向けコード生成手段１２００は周知の高位合成ツールに含まれる。
高位合成向けコードは、高位合成手段１２２０によってＲＴＬ記述を生成する。
【００９６】
ＲＴＬ記述は、図２７に示す通信モデルに対応している。
通信モデルでは、処理ブロックＡ１０１、Ａ１０２間にＦＩＦＯ（ファースト・イン・ファースト・アウト）メモリＦ１１０、処理ブロックＡ１０２、Ａ１０３間にＦＩＦＯメモリＦ１１１、処理ブロックＡ１０３、Ａ１０４間にＦＩＦＯメモリＦ１１２を挿入する。
各ＦＩＦＯメモリＦ１１０、Ｆ１１１、Ｆ１１２は、例えば、格納データが満杯であることを示すフルフラグＦＦ、格納データが存在しないことを示すエンプティフラグＥＦを出力し、また、リード信号ＲＳ、ライト信号ＷＳをそれぞれ入力することによってデータの読み、書きが可能になる。
【００９７】
例えば、フルフラグＦＦは、Ｆ１１０、Ｆ１１１、Ｆ１１２から処理ブロックＡ１０１、Ａ１０２、Ａ１０３、すなわち、前処理段の処理ブロックに入力され、前処理段からのデータ入力が可能か否かを示す。これによって、前処理段における処理実行、処理データ出力の可否が明らかになる。
例えば、エンプティフラグＥＦは、Ｆ１１０、Ｆ１１１、Ｆ１１２から処理ブロックＡ１０２、Ａ１０３、Ａ１０４、すなわち、後処理段の処理ブロックに入力され、後処理段からのデータ読み出しが可能か否かを示す。これによって、後処理段の処理実行の可否が明らかになる。
処理ブロックＡ１０１、Ａ１０２、Ａ１０３が処理を実行する際には、それぞれ、Ｆ１１０、Ｆ１１１、Ｆ１１２に対してライト信号ＷＳを入力し、処理結果をＦ１１０、Ｆ１１１、Ｆ１１２に書き込む。
処理ブロックＡ１０２、Ａ１０３、Ａ１０４が処理を実行する際には、それぞれ、Ｆ１１０、Ｆ１１１、Ｆ１１２に対してリード信号ＲＳを入力し、Ｆ１１０、Ｆ１１１、Ｆ１１２の格納データを、格納された順序で読み込む。
高位合成ツールにおける、実装アルゴリズムに基づくＦＩＦＯメモリＦ１１０、Ｆ１１１、Ｆ１１２の挿入は、高位合成ツールに対してあらかじめ設定しておく。
［論理合成・レイアウト］
【００９８】
高位合成によって生成されたＲＴＬは、その後、周知の論理合成ツール（論理合成手段１２４０）によって論理合成され、さらに、周知のレイアウトツール（レイアウト手段１２６０）によって回路レイアウトデータに変換される。
［開発支援プログラム］
【００９９】
次に、制御部１０２０を開発支援装置として機能させる開発支援プログラムについて、以上の実施例と関連付けて説明する。
［アルゴリズム階層判断手段］
【０１００】
図２８に示すように、アルゴリズム階層判断手段１１２０は、例えば、以下のステップを制御手段に実行させる。
【０１０１】
アルゴリズム階層判断手段１１２０の処理に先立って、オペレータはアルゴリズムを所定表記、例えば、Ｃ言語等所定プログラム言語表記、ＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）等動作記述、その他に改めておく。
【０１０２】
ステップＳ２８０１：まず、所定表記のアルゴリズムＡ１〜Ａ３において、ｆｏｒループのループ制御要素を検索する。
【０１０３】
ステップＳ２８０２：ステップＳ２８０１に続いて、ｆｏｒループ制御要素が存在するか否か判断する。ｆｏｒループ制御要素が存在するときは、ステップＳ２８０３に進み、存在しないときはステップＳ２８０４へジャンプする。
【０１０４】
ステップＳ２８０３：最外周のｆｏｒループ制御要素群をＤＵＣとして定義し、ステップＳ２８０４に進む。
【０１０５】
ステップＳ２８０４：アルゴリズムＡ１〜Ａ３において、ｓｗｉｔｃｈ文を検索する。
【０１０６】
ステップＳ２８０５：ステップＳ２８０４に続いて、ｓｗｉｔｃｈ文が存在するか否か判断する。ｓｗｉｔｃｈ文が存在するときは、ステップＳ２８０６に進み、存在しないときはステップＳ２８０７へジャンプする。
【０１０７】
ステップＳ２８０６：ｓｗｉｔｃｈ文をＤＵＣとして定義し、ステップＳ２８０７に進む。
【０１０８】
ステップＳ２８０７：アルゴリズムＡ１〜Ａ３において、ｉｆ文を検索する。
【０１０９】
ステップＳ２８０８：ステップＳ２８０７に続いて、ｉｆ文が存在するか否か判断する。ｉｆ文が存在するときは、ステップＳ２８０９に進み、存在しないときは処理を終了する。
【０１１０】
ステップＳ２８０９：ｉｆ文をＤＵＣとして定義し、処理を終了する。
【０１１１】
以上により、アルゴリズム実行単位表現のためのデータが生成される。
［アルゴリズム実行単位表現手段］
【０１１２】
図２９に示すように、開発支援プログラムは制御部１０２０に以下のステップを実行させることによって、制御部１０２０をアルゴリズム実行単位表現手段１１４０として機能させる。
【０１１３】
ステップＳ２９０１：まず、アルゴリズム階層判断手段１１２０によって生成されたデータを読み込み、アルゴリズム実行単位表現を表示する（図１８）。
【０１１４】
ステップＳ２９０２：ステップＳ２９０１に続いて、メニューｍ１６０１〜ｍ１６１２に基づく処理に移行する。
すなわち、メニューｍ１６１１が選択されたときはステップＳ２９０３に進み、メニューｍ１６１２が選択されたときはステップＳ２９０４に進み、メニューｍ１６０１〜ｍ１６０５が選択されたときはステップＳ２９０７、Ｓ２９０５、Ｓ２９０６、Ｓ２９０８、Ｓ２９０９にそれぞれ進み、メニューｍ１６０６が選択されたときはステップＳ２９１０に進み、メニューｍ１６０７が選択されたときはステップＳ２９１１に進み、メニューｍ１６０８が選択されたときはステップＳ２９１２に進み、メニューｍ１６０９が選択されたときはステップＳ２９１３に進み、メニューｍ１６１０が選択されたときはステップＳ２９１４に進む。
【０１１５】
ステップＳ２９０３：ステップＳ２９０２で「終了」ｍ１６１１が選択されたときは、ファイル処理に移行するか、機能アルゴリズムに移行するかを選択するメッセージが表示される。
ここで開発者が機能アルゴリズムに移行を選択したときは、ステップＳ２９０４に進む。
一方、開発者が、ファイル処理を選択したときは、ファイルの上書き保存か新規保存の選択のメッセージが表示される。開発者が上書きを表示したときはステップＳ２９０５に進み、新規保存を選択したときはステップＳ２９０６に進む。
【０１１６】
ステップＳ２９０４：機能アルゴリズム生成手段１１６０の処理に移行し、処理を終了する。
【０１１７】
ステップＳ２９０５：表示されているアルゴリズム実行単位表現を上書き保存し、処理を終了する。
【０１１８】
ステップＳ２９０６：表示されているアルゴリズム実行単位表現を新たなファイルとして保存する処理を実行し、処理を終了する。
【０１１９】
ステップＳ２９０７：ファイルを開く処理を実行し、処理を終了する。
【０１２０】
ステップＳ２９０８：登録されているファイルの名称を変更する処理を実行し、処理を終了する。
【０１２１】
ステップＳ２９０９：登録されているファイルを削除する処理を実行し、処理を終了する。
【０１２２】
ステップＳ２９１０：ＤＵＣ直列分割の処理を実行し、ステップＳ２９０２に戻る。
【０１２３】
ステップＳ２９１１：ＤＵＣ並列分割の処理を実行し、ステップＳ２９０２に戻る。
【０１２４】
ステップＳ２９１２：ＤＵＣ合成の処理を実行し、ステップＳ２９０２に戻る。
【０１２５】
ステップＳ２９１３：表示倍率変更の処理を実行し、ステップＳ２９０２に戻る。
【０１２６】
ステップＳ２９１４：テスト実行の処理を実行し、ステップＳ２９０２に戻る。
［機能アルゴリズム生成手段］
【０１２７】
図３０に示すように、開発支援プログラムは制御部１０２０に以下のステップを実行させることによって、制御部１０２０を機能アルゴリズム生成手段１１６０として機能させる。
【０１２８】
ステップＳ３００１：まず、機能アルゴリズム生成手段１１６０によって生成されたデータを読み込み、機能アルゴリズムを表示する。
【０１２９】
ステップＳ３００２：ステップＳ３００１に続いて、メニューｍ２６０１〜ｍ２６０９、ｍ２６１１、ｍ２６１２に基づく処理に移行する。
すなわち、メニューｍ２６１１が選択されたときはステップＳ３００３に進み、メニューｍ２６１２が選択されたときはステップＳ３００４に進み、メニューｍ２６０１〜ｍ２６０５が選択されたときはステップＳ３００７、Ｓ３００５、Ｓ３００６、Ｓ３００８、Ｓ３００９にそれぞれ進み、メニューｍ２６０６が選択されたときはステップＳ３０１０に進み、メニューｍ２６０７が選択されたときはステップＳ３０１１に進み、メニューｍ２６０８が選択されたときはステップＳ３０１２に進み、メニューｍ２６０９が選択されたときはステップＳ３０１３に進む。
【０１３０】
ステップＳ３００３：ステップＳ３００２で「終了」ｍ２６１１が選択されたときは、ファイル処理に移行するか、機能アルゴリズムに移行するかを選択するメッセージが表示される。
ここで開発者が機能アルゴリズムに移行を選択したときは、ステップＳ３００４に進む。
一方、開発者が、ファイル処理を選択したときは、ファイルの上書き保存か新規保存の選択のメッセージが表示される。開発者が上書きを表示したときはステップＳ３００５に進み、新規保存を選択したときはステップＳ３００６に進む。
【０１３１】
ステップＳ３００４：実装アルゴリズム生成手段１１８０の処理に移行し、処理を終了する。
【０１３２】
ステップＳ３００５：表示されている機能アルゴリズムを上書き保存し、処理を終了する。
【０１３３】
ステップＳ３００６：表示されている機能アルゴリズムを新たなファイルとして保存する処理を実行し、処理を終了する。
【０１３４】
ステップＳ３００７：ファイルを開く処理を実行し、処理を終了する。
【０１３５】
ステップＳ３００８：登録されているファイルの名称を変更する処理を実行し、処理を終了する。
【０１３６】
ステップＳ３００９：登録されているファイルを削除する処理を実行し、処理を終了する。
【０１３７】
ステップＳ３０１０：ＤＵＣ直列分割の処理を実行し、ステップＳ３００２に戻る。
【０１３８】
ステップＳ３０１１：ＤＵＣ並列分割の処理を実行し、ステップＳ３００２に戻る。
【０１３９】
ステップＳ３０１２：ＤＵＣ合成の処理を実行し、ステップＳ３００２に戻る。
【０１４０】
ステップＳ３０１３：表示倍率変更の処理を実行し、ステップＳ３００２に戻る。
［実装アルゴリズム生成手段］
【０１４１】
図３１に示すように、実装アルゴリズム生成手段１１８０は、例えば、以下のステップを制御手段に実行させる。
【０１４２】
ステップＳ３１０１：まず、機能アルゴリズム生成手段１１６０によって生成されたデータを読み込み、実装アルゴリズムを表示する。
【０１４３】
ステップＳ３１０２：ステップＳ３１０１に続いて、メニューｍ２７０１〜ｍ２７０５、ｍ２７０９、ｍ２７１１、ｍ２７１２に基づく処理に移行する。
すなわち、メニューｍ２７１１が選択されたときはステップＳ３１０３に進み、メニューｍ２７１２が選択されたときはステップＳ３１０４に進み、メニューｍ２７０１〜ｍ２７０５が選択されたときはステップＳ３１０７、Ｓ３１０５、Ｓ３１０６、Ｓ３１０８、Ｓ３１０９にそれぞれ進み、メニューｍ２７０９が選択されたときはステップＳ３１１０に進む。
【０１４４】
ステップＳ３１０３：ステップＳ３１０２で「終了」ｍ２７１１が選択されたときは、ファイル処理に移行するか、機能アルゴリズムに移行するかを選択するメッセージが表示される。
ここで開発者が機能アルゴリズムに移行を選択したときは、ステップＳ３１０４に進む。
一方、開発者が、ファイル処理を選択したときは、ファイルの上書き保存か新規保存の選択のメッセージが表示される。開発者が上書きを表示したときはステップＳ３１０５に進み、新規保存を選択したときはステップＳ３１０６に進む。
【０１４５】
ステップＳ３１０４：高位合成向けコード生成手段１２００の処理に移行し、処理を終了する。
高位合成向けコード生成手段１２００は、開発支援プログラムが制御部１０２０を高位合成手段１２２０として機能させることによって実現され、実装アルゴリズムは高位合成向けコード生成手段１２００によって高位合成向けコードに変換される。
その後、開発支援プログラムは制御部１０２０を高位合成手段１２２０として機能させ、高位合成手段１２２０は、高位合成向けコードに基づいてＲＴＬ記述を生成する。
さらに、開発支援プログラムは、制御部１０２０を論理合成手段１２４０、レイアウト手段１２６０として機能させ、ＲＴＬ記述を論理合成し、論理合成されたＲＴＬ記述を回路レイアウトデータに変換する。
【０１４６】
ステップＳ３１０５：表示されている実装アルゴリズムを上書き保存し、処理を終了する。
【０１４７】
ステップＳ３１０６：表示されている実装アルゴリズムを新たなファイルとして保存する処理を実行し、処理を終了する。
【０１４８】
ステップＳ３１０７：ファイルを開く処理を実行し、処理を終了する。
【０１４９】
ステップＳ３１０８：登録されているファイルの名称を変更する処理を実行し、処理を終了する。
【０１５０】
ステップＳ３１０９：登録されているファイルを削除する処理を実行し、処理を終了する。
【０１５１】
ステップＳ３１１０：表示倍率変更の処理を実行し、ステップＳ３１０２に戻る。
【０１５２】
ステップＳ３１１１：単位処理ブロック定義の処理を実行し、ステップＳ３１０２に戻る。
【０１５３】
以上のとおり、アルゴリズムを、アルゴリズムコアと制御要素であるデータ転送単位変換器の階層に階層分けして、実行単位表現を生成できるので、ハードウエアあるいはソフトウエアの構成に沿った表現となり、さらに、機能アルゴリズムによってデータ転送単位変換器をより現実的かつ効率的なものに変換し得る。
これによって、設計者の能力に依存することなく、合理的なＲＴＬ表現等のハードウエア開発工程を実行できる。
さらに、機能アルゴリズムに基づいて実装アルゴリズムを記述することによって、パイプラインのＲＴＬ構成が自動的に生成でき、開発作業を効率化し得る。
なお、以上の実施例では、ハードウエア開発の例を示したが、機能アルゴリズム、実装アルゴリズムに基づいてソフトウエアを開発し、あるいは、両者が混在したシステム開発に適用し得る。
【産業上の利用の可能性】
【０１５４】
以上の実施例では、汎用コンピュータの制御部によって開発支援プログラムを構成したが、制御部の構成要素１１００、１１２０、１１４０、１１６０、１１８０、１２００、１２２０、１２４０、１２６０の全部または一部をハードウエアによって構成することも当然可能である。
【符号の説明】
【０１５５】
Ａ１〜Ａ５  ブロック
Ａ１０１、Ａ１０２、Ａ１０３、Ａ１０４  単位処理ブロック
Ａ５１〜Ａ５３、ＡＣ１９、ＡＣ１０１、ＡＣ１０２、ＡＣ１１１、ＡＣ１１２  アルゴリズムコア
ＣＭ９  コンポーザ
Ｄ（ｘ，ｙ）  データ
Ｄｉｎ、Ｉ１、Ｉ２、Ｄ（ｕ，ｖ）  入力データ
Ｄｏｕｔ  出力データ
ＤＵＣ１〜ＤＵＣ６、ＤＵＣ１５、ＤＵＣ９０、ＤＵＣ９１、ＤＵＣ１０１〜ＤＵＣ１０７、ＤＵＣ１１１〜ＤＵＣ１１８，ＤＵＣ１４０〜ＤＵＣ１４５、ＤＵＣ２０１、ＤＵＣ２０２、ＤＵＣ２２１、ＤＵＣ２２２、ＤＵＣ２３１、ＤＵＣ２３２、ＤＵＣ２４    データ転送単位変換器
ＥＲ１２  エレメントリムーバ
ＦＦ  フルフラグ
ＥＦ  エンプティフラグ
ＥＵ  アルゴリズム実行単位表示領域
ＦＢ  フレームバッファ
ＦＡ  機能アルゴリズム表示領域
Ｆ１１０、Ｆ１１１、Ｆ１１２  ＦＩＦＯメモリ
Ｇ０（ｘ，ｙ）  画素データ
Ｇｇ（ｘ，ｙ）  グレースケール化した画素データ
Ｇｍ（ｘ，ｙ）  メジアンフィルタ処理した画素データ
ＩＮ  インターネット
ＩＭ２４１、ＩＭ２４２  画像
Ｍａｔｒｉｘ１６０、Ｍａｔｒｉｘ１６２  配列
ＭＮ  メニュー表示領域
ＭＡ  実装アルゴリズム表示部
ＭＣ  通信モデル表示部
ＭＢ２３  合成ボックス
ｍ１６０１〜ｍ１６１２、ｍ２６０１〜ｍ２６０９、ｍ２６１１、ｍ２６１２、ｍ２７０１〜ｍ２７０５、ｍ２７０９、ｍ２７１１、ｍ２７１２  メニュー
ＲＳ  リード信号
ＲＰ１９、ＲＰ２０１、ＲＰ２０２、ＲＰ２１、ＲＰ２２１、ＲＰ２２２、ＲＰ２３、ＲＰ２４  ループ表示部
ＲＰ２１１  並列数設定ボックス
ＲＰ２１２、ＲＰ２１３  カウンタ設定ボックス
ＳＶ  サーバ
Ｓ（ｘ，ｙ）  ソーベルフィルタ処理した画素データ
ＳＴ７  ストリーマ
Ｓ１、Ｓ２  スキャン形態
ＳＴＢ  ストローブ信号
ＴＤ  理論アルゴリズム表示領域
ＴＢ  テストボックス
ＰＬ１９、ＰＬ２３  分離線
ＰＢ２７２、ＰＢ２７３  単位処理ブロック設定ボックス
Ｗｇ（ｘ，ｙ）、Ｗｍ（ｘ，ｙ）  ウインド
ＷＳ  ライト信号
１０００、１００１〜１００３、１００５〜１００７  開発支援装置
１０１０  表示部
１０１２  表示制御部
１０２０  制御部
１０３０  システムメモリ
１０３２  ＲＯＭ
１０３４  記憶媒体
１０６０  操作入力部
１０８０  タイマ
１０４０  通信Ｉ／Ｆ
１１００  表示手段
１１２０  アルゴリズム階層判断手段
１１２０Ｌ  アルゴリズム階層ライブラリ
１１４０  アルゴリズム実行単位表現手段
１１４０Ｌ  アルゴリズム実行単位表現ライブラリ
１１６０  機能アルゴリズム生成手段
１１６０Ｌ  機能アルゴリズムライブラリ
１１８０  実装アルゴリズム生成手段
１１８０Ｌ  実装アルゴリズムライブラリ
１２００  高位合成向けコード生成手段
１２００Ｌ  高位合成向けコード生成ライブラリ
１２２０  高位合成手段
１２４０  論理合成手段
１２６０  レイアウト手段
【図１】
2011215966.tif 000003
【図２】
2011215966.tif 000004
【図３】
2011215966.tif 000005
【図４】
2011215966.tif 000006
【図５】
2011215966.tif 000007
【図６】
2011215966.tif 000008
【図７】
2011215966.tif 000009
【図８】
2011215966.tif 000010
【図９】
2011215966.tif 000011
【図１０】
2011215966.tif 000012
【図１１Ａ】
2011215966.tif 000013
【図１１Ｂ】
2011215966.tif 000014
【図１１Ｃ】
2011215966.tif 000015
【図１１Ｄ】
2011215966.tif 000016
【図１２】
2011215966.tif 000017
【図１３】
2011215966.tif 000018
【図１４】
2011215966.tif 000019
【図１５】
2011215966.tif 000020
【図１６】
2011215966.tif 000021
【図１７】
2011215966.tif 000022
【図１８】
2011215966.tif 000023
【図１９】
2011215966.tif 000024
【図２０】
2011215966.tif 000025
【図２１】
2011215966.tif 000026
【図２２】
2011215966.tif 000027
【図２３】
2011215966.tif 000028
【図２４】
2011215966.tif 000029
【図２５】
2011215966.tif 000030
【図２６】
2011215966.tif 000031
【図２７】
2011215966.tif 000032
【図２８】
2011215966.tif 000033
【図２９】
2011215966.tif 000034
【図３０】
2011215966.tif 000035
【図３１】
2011215966.tif 000036
【図３２】
2011215966.tif 000037