(57)【要約】【課題】Ｃ言語などのソフトウェア言語で記述されたソースコードに基づいてターゲットハードウェアへの実装に適したソースコードを生成する。【解決手段】電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコード（１０３）を参照して、動作アルゴリズムで実現する回路種別を順次検索し、検索された回路種別の記述に対応する候補を記述ライブラリ（１０２）から選択し、選択された候補に基づいて前記第１ソースコードの回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換えてターゲット用の第２ソースコード（１０４）とする、それぞれの処理を、コンピュータ装置で実行することによって、第１ソースコードに基づいてターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードを生成する。【選択図】図１
2010026968.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置で実行することにより、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコードに基づいて、ターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードを生成するための処理を制御する回路生成支援プログラムであって、
前記生成するための処理は、第１ソースコードを入力する第１処理と、入力した第１ソースコードを参照して、動作アルゴリズムで実現する回路種別を順次検索する第２処理と、検索された回路種別の記述に対応する候補を選択する第３処理と、前記第３処理で選択された候補に基づいて前記第１ソースコードの回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換えて前記第２ソースコードとする第４処理とを含む、回路生成支援プログラム。
【請求項２】
前記ソフトウェア言語はＣ言語である、請求項１記載の回路生成支援プログラム。
【請求項３】
前記第３処理において、記述ライブラリから前記候補を選択する、請求項１記載の回路生成支援プログラム。
【請求項４】
前記記述ライブラリを更に有する、請求項３記載の回路生成支援プログラム。
【請求項５】
前記第２処理は、前記第1ソースコードに回路種別として予め埋め込まれている回路種別コードを検索する検索処理と、検索された回路種別コードとその記述位置を特定するための情報を蓄積する蓄積処理とを含み、
前記第４処理において、前記回路種別コードはコメント化され、当該コメントの次に、ターゲットハードウェアの仕様に則った対応する記述が挿入される、請求項３記載の回路生成支援プログラム。
【請求項６】
前記第４処理は、前記記述ライブラリから選択した一つの候補に与えるパラメータの入力ウインドウを表示し、前記入力ウインドウで指定されたパラメーラがあるときにはそれに従った記述を生成して置き換えを行なう請求項５記載の回路生成支援プログラム。
【請求項７】
コンピュータ装置を用いて、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコードに基づいてターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードを生成する回路生成支援方法であって、
第１ソースコードを入力する第１処理と、
入力した第１ソースコードを参照して、動作アルゴリズムで実現する回路種別を順次検索する第２処理と、
検索された回路種別の記述に対応する候補を選択する第３処理と、
前記第３処理で選択された候補に基づいて前記第１ソースコードの回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換えて前記第２ソースコードとする第４処理と、を含む回路設計支援方法。
【請求項８】
前記ソフトウェア言語はＣ言語である、請求項７記載の回路生成支援方法。
【請求項９】
前記第３処理において、記述ライブラリから前記候補を選択する、請求項７記載の回路生成支援方法。
【請求項１０】
前記第２処理は、前記第1ソースコードに回路種別として予め埋め込まれている回路種別コードを検索する検索処理と、検索された回路種別コードとその記述位置を特定するための情報を蓄積する蓄積処理とを含み、
前記第４処理において、回路種別コードはコメント化され、当該コメントの次に、ターゲットハードウェアの仕様に則った対応する記述が挿入される、を含む請求項９記載の回路生成支援方法。
【請求項１１】
前記第４処理は、前記記述ライブラリから選択した一つの候補に与えるパラメータの入力ウインドウを表示し、前記入力ウインドウで指定されたパラメーラがあるときにはそれに従った記述を生成して置き換えを行う、請求項１０記載の回路設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソースコードをターゲットハードウェアへの実装に適したソースコードに変換するプログラム及び変換方法に関し、例えば半導体集積回路（ＬＳＩ）の開発環境に適用して有効な自動化技術に関する。
【背景技術】
【０００２】
電子回路の動作アルゴリズムを例えばＣ言語等の高級言語で記述した信号処理ソースコード(以下、信号処理Ｃソースコードと称する)を入力して、ハードウェア記述言語を出力する方法が特許文献1に記載される。これは、入力したソースコード記述の構文を解析し、リソースバインディングとスケジューリングを行ってＲＴＬ回路図を出力するものである。
【０００３】
また、特許文献２には、Ｃ言語で書かれたアルゴリズム記述をハードウェア設計に最適化する技術が記載される。すなわち、論理回路の演算または制御アルゴリズムをＣ言語によって記述したアルゴリズムＣ記述１を、機能Ｃ変換システムにおいて、処理単位で複数の状態に分割し、分割した処理の実行順序を状態の遷移として記述して、制御記述が埋め込まれた機能Ｃ記述２を生成する。この機能Ｃ記述２に、ＲＴレベルＣ変換システムにおいて、時間の概念であるクロック記述を挿入して、ＲＴレベルＣ記述３に変換する。ＲＴレベルＣ記述３は、既存の変換ツールによって、ＨＤＬによるＲＴレベル記述に変換される。
【０００４】
【特許文献１】特開２００５-７８４０２号公報
【特許文献２】特開２００３-１６１２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
コンピュータ上で実行することを目的に作成された上記信号処理Ｃソースコードは、演算に使用するバッファメモリを大きな容量で確保し、且つ、処理が複雑なループ構造で構成される傾向にある。上記特許文献１、２では、前述の信号処理Ｃソースコードをそのまま入力した場合、ターゲットハードウェア上でメモリや回路素子のリソース不足となることが予想され、これについて考慮されていない。
【０００６】
本発明の目的は、Ｃ言語などのソフトウェア言語で記述されたソースコードに基づいてターゲットハードウェアへの実装に適したソースコードを生成する技術を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
すなわち、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコードを参照して、動作アルゴリズムで実現する回路種別を順次検索し、検索された回路種別の記述に対応する候補を選択し、選択された候補に基づいて前記回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換え、置き換えが完了されたターゲット用の第２ソースコードを出力するそれぞれの処理を、コンピュータ装置で実行することによって、前記第１ソースコードに基づいてターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードを生成する。
【発明の効果】
【００１０】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、Ｃ言語などのソフトウェア言語で記述されたソースコードに基づいてターゲットハードウェアへの実装に適したソースコードを生成することができる。
【発明を実施するための最良の形態】
【００１２】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１３】
〔１〕本発明に係る回路生成支援プログラム（１００）は、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコード（１０３）を入力する第１処理（４０１）と、入力した第１ソースコードを参照して、動作アルゴリズムで実現する回路種別を順次検索する第２処理（４０２〜４０５）と、検索された回路種別の記述に対応する候補を選択する第３処理（５０７，５０８）と、前記第３処理で選択された候補に基づいて前記第１ソースコードの回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換えてターゲット用の第２ソースコード（１０４）とする第４処理（５０９）とを、コンピュータ装置で実行することにより、前記第１ソースコードからターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードを得る。
【００１４】
一般的に、第1ソースコードとしての信号処理Ｃソースコードから第２ソースコードとしてのハードウェア用Ｃソースコードへの変換は、ノウハウと高度なテクニックが必要であり、開発工数も大きくなる傾向であることが知られている。上記手段によれば、任意の動作アルゴリズムで実現する回路部分を、演算器の構成やメモリ容量等のハードウェアの仕様に即してチユーニングされた記述に変換することができ、回路若しくはシステムの開発工数の短縮に寄与することができる。
【００１５】
〔２〕項１の回路生成支援プログラムにおいて、前記ソフトウェア言語はＣ言語である。
【００１６】
〔３〕項１の回路設生成援プログラムにおいて、前記第３処理において、記述ライブラリ（１０２）から前記候補を選択する。ライブラリから候補の選択を行うので、動作実績のあるものをライブラリとして用意することも可能であり、それによって、第２ソースコードを用いて開発される回路若しくはシステムの動作面での信頼性を高めることも容易になる。例えば、処理の実行サイクルが短いこと、演算に使用するメモリ容量が小さいこと、等の仕様上の制約に対して実績のある記述、あるいは、データ読み出し、書き込みが遅いデバイスへのアクセス回数を少なくするための記述等が基本的なセットとしてライブラリに格納される。
【００１７】
〔４〕項３の回路生成支援プログラムは前記記述ライブラリを更に有する。後から記述ライブラリを構築する手間が省ける。
【００１８】
〔５〕項３の回路生成支援プログラムにおいて、前記第２処理は、前記第1ソースコードに回路種別として予め埋め込まれている回路種別コードを検索する検索処理（４０２）と、検索された回路種別コードとその記述位置を特定するための情報を蓄積する蓄積処理（４０４，４０５）とを含む。前記第４処理において、前記回路種別コードはコメント化され、当該コメントの次に、ターゲットハードウェアの仕様に則った対応する記述が挿入される。回路種別コードは例えば関数のタグ若しくはヘッダ、又はラベルである。
【００１９】
〔６〕項５の回路生成支援プログラムにおいて、前記第４処理は、前記記述ライブラリから選択した一つの候補に与えるパラメータの入力ウインドウを表示（５０４）し、前記入力ウインドウで指定されたパラメーラがあるときにはそれに従った記述を生成して置き換えを行う（５０５〜５０９）。変換内容に対する融通性を増すことができる。
【００２０】
〔７〕本発明に係る回路生成支援方法は、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコード（１０３）を入力する第１処理（４０１）と、入力した第１ソースコードを参照して、動作アルゴリズムで実現する回路種別を順次検索する第２処理（４０２〜４０５）と、検索された回路種別の記述に対応する候補を選択する第３処理（５０７，５０８）と、前記第３処理で選択された候補に基づいて前記第１ソースコードの回路種別の記述をターゲットハードウェアの仕様に則った記述に置き換えてターゲット用の第２ソースコードとする第４処理（５０９）とを含み、コンピュータ装置を用いて、第１ソースコードをターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードに変換する。
【００２１】
上記手段によれば、任意の動作アルゴリズムで実現する回路部分を、演算器の構成やメモリ容量等のハードウェアの仕様上の制約に即してチユーニングされた記述に変換することができる。
【００２２】
〔８〕項７の回路生成支援方法において、前記ソフトウェア言語はＣ言語である。
【００２３】
〔９〕項７の回路生成支援方法において、前記第３処理において、記述ライブラリ（１０２）から前記候補を選択する。
【００２４】
〔１０〕項９の回路生成支援方法において、前記第２処理は、前記第1ソースコードに回路種別として予め埋め込まれている回路種別コードを検索する検索処理（４０２）と、検索された回路種別コードとその記述位置を特定するための情報を蓄積する蓄積処理（４０５，４０４）とを含む。前記第４処理において、回路種別コードはコメント化され、当該コメントの次に、ターゲットハードウェアの仕様に則った対応する記述が挿入される。
【００２５】
〔１１〕項１０の回路生成支援方法において、前記第４処理は、前記記述ライブラリから選択した一つの候補に与えるパラメータの入力ウインドウを表示し（５０４）、前記入力ウインドウで指定されたパラメーラがあるときにはそれに従った記述を生成して置き換えを行う（５０５〜５０９）。
【００２６】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための形態を図面に基づいて詳細に説明する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００２７】
図１には本発明に係る回路生成支援プログラムの構成、及び回路生成支援プログラムと設計対象にされる回路のソースコードとの関係が模式的に示される。回路設計生成プログラムは半導体集積回路等の回路若しくはシステムを開発するための開発環境の一部を構成するものであり、ＰＣ（パーソナルコンピュータ）又はＥＷＳ（エンジニアリングワークステーション）等のコンピュータ装置で実行されるプログラムである。
【００２８】
この回路生成支援プログラム１００は、コンピュータ装置で実行されることにより、電子回路の動作アルゴリズムをソフトウェア言語で記述した第１ソースコードとしての信号処理Ｃソースコード１０３を、ターゲットハードウェアへの実装に向けたターゲット用の第２ソースコードとしてのハードウェア用Ｃソースコード１０４に変換するための処理を制御する。ターゲットハードウェアとは開発対象とされる回路若しくはシステムを意味する。回路生成支援プログラム１００は、前記変換を行うための処理手順を規定するためのハードウェア用Ｃモデル生成部１０１と、信号処理ライブラリ１０２から成る。
【００２９】
ハードウェア用Ｃモデル生成部１０１は、信号処理Ｃソースコード１０３を入力し、入力した信号処理Ｃソースコード１０３を参照して、当該信号処理Ｃソースコード１０３に記述された動作アルゴリズムで実現する回路種別を順次検索し、検索された回路種別の記述に対応する候補を前記信号処理ライブラリ１０２から選択し、選択した候補に基づいて前記回路種別のターゲットハードウェアの仕様に則った記述に置き換え、置き換えが完了されたハードウェア用Ｃソースコード１０４を出力する、一連の処理を制御する。信号処理ライブラリ１０２には例えば機能単位で複数種類のハードウェア用Ｃソースコードフォームが格納されている。ハードウェア用Ｃソースコードフォームが選択可能な前記候補とされる。
【００３０】
回路生成支援プログラム１００の具体的な処理手順を説明する前に当該プログラムの動作環境である前記コンピュータ装置にいて説明する。図２には回路生成支援プログラム１００を実行するコンピュータ装置が例示される。
【００３１】
回路生成支援プログラム１００を実行する前記コンピュータ装置２００は、例えば、中央演算処理装置としてのＣＰＵ２０１、実行プログラムや演算対象のデータ等を格納するためのワーク領域として利用されるＲＡＭ（ランダム・アクセス・メモリ）などのメモリ２０２、及び実行プログラムや実行プログラムが使用する入出力ファイルを格納するためのファイルストレージとしての補助記憶装置２０３を備え、それらはバス２１５に共通接続される。また、ユーザがコンピュータ装置２００を操作するための入出力デバイスとして、モニタ２０９、キーボード２１０、及びマウス２１１がバス２１５に接続される。更にバス２１５には、記録媒体読出し書込み装置２０７、そして、ネットワークコントローラ２０８が接続される。記録媒体読出し書込み装置２０７はＣＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体２１２，２１３，２１４に対する読出し及び書き込みのアクセス制御を行う。ネットワークコントローラ２０８は図示を省略するネットワークに対してデータやプログラムのダウンロード及びアップロードのための通信プロトコルを制御する。
【００３２】
回路生成支援プログラム１００および信号処理Ｃソースコードは、特に制限されないが、記録媒体２１２、２１３で提供され、記録媒体２１２，２１３から読み取られた回路生成プログラム１００及び信号処理Ｃソースコード１０３は補助記憶装置２０３に一旦格納される。
【００３３】
回路生成支援プログラム１００を実行するとき、先ず、ＣＰＵ２０１が回路生成支援プログラム１００を補助記憶装置２０３からメモリ２０２にロードし、ＣＰＵ２１０はロードされた回路生成支援プログラム１００をメモリアクセスによってフェッチして実行する。回路生成支援プログラム１００は、実行制御用中間データとして回路生成情報ファイル２０４作成し、回路生成情報ファイル２０４および生成されたハードウェア用Ｃソースコード１０４は補助記憶装置２０３に一時的に格納される。回路生成情報ファイル２０４および生成されたハードウェア用Ｃソースコード１０４の補助記憶装置２０３への一時的な格納はメモリ２０２のワーク領域が足りなくなったとき逐次行うようにすれば足りる。信号処理Ｃソースコード１０３は、コンピュータ装置２００上でオペレータが編集して用意してもよいし、前述の如く、記録媒体読出し書込み装置２０７を介して記録媒体２１３からダウンロードし、あるいはネットワークコントローラ２０８を介してネットワークからダウンロードして用意してもよい。回路生成支援プログラム１００が出力したハードウェア用Ｃソースコード１０４は一時的に補助記憶装置２０３が保持し、記録媒体読出し書込み装置２０７を介して記録媒体２１４に書き込み、あるいはネットワークコントローラ２０８を介して特定の通信相手にアップロードしてもよい。
【００３４】
図３には回路生成支援プログラムの最上位の処理フローを例示する。回路生成支援プログラム１００が起動されると(３００)、回路生成情報ファイル２０４、信号処理Ｃソースコード１０３、ハードウェア用Ｃソースコード１０４の入出力先を選択するための入出力ファイル選択用ウインドウを表示する(３０１)。入出力ファイル選択用ウインドウでは、まず、信号処理Ｃソースコード１０３の入力元をファイル名等で選択し(３０２)、回路生成情報ファイル２０４の出力先をファイル名等で選択し(３０３)、ハードウェア用Ｃソースコード１０４の出力先をファイル名等で選択する処理(３０４)を行う。次に、回路種別検索ボタン(図８に図示)の操作等による検索指示に応答して、信号処理Ｃソースコード１０３を参照して、当該信号処理Ｃソースコード１０３に記述された動作アルゴリズムで実現する回路種別を順次検索する(３０５)。さらに、回路生成実行ボタン(図８に図示)の操作等による開始指示に応答して、検索された回路種別の記述に従って信号処理ライブラリから選択した候補を用いて当該検索された回路種別の記述からターゲットハードウェアの仕様に則った記述を生成する処理を実行する(３０６)。生成処理の終了後、継続して別の信号処理Ｃソースコード１０３を対象に同様の処理を行うかが判別される(３０７)。継続する場合は処理ステップ３０２に戻る。継続しない場合は、回路生成支援プログラム１００の実行を終了する(３０８)。
【００３５】
図４には回路種別検索（図３のステップ３０５）の詳細な処理フローが例示される。ここでは回路種別して信号処理Ｃソースコードに回路種別コードが埋め込まれている場合を一例とする。
【００３６】
まず、回路種別が記述された記述数を数えるためのカウンタＣＮＴをゼロに初期化し(４００)、処理対象の信号処理Ｃソースコード２０５を読み出す(４０１)。信号処理Ｃソースコード２０５から回路種別コードを検索する(４０２)。回路種別コードの出現の有無を判断し(４０３)、出現した場合は、回路種別コードおよび回路種別コードの出現位置を回路生成情報ファイル２０４に記録し(４０４)、カウンタＣＮＴに１を加算して処理ステップ４０２に戻る(４０５)。回路種別コードが出現しなくなるまでステップ４０２乃至４０５の処理を繰り返し、回路種別コードが出現しなくなったとき、カウンタＣＮＴを回路生成情報ファイル２０４に記録して、図３の上位フローに戻る(４０６)。
【００３７】
図５には回路記述生成処理（図３のステップ３０６）の詳細な処理フローが示される。回路生成情報ファイル２０４から前記回路種別の記述数を示すカウンタＣＮＴの値が読み出される(５００)。ここで、カウンタＣＮＴの値がゼロの場合、変換すべき対象回路が無いことを示しているので、直ちに処理を終了する(５０１)。カウンタＣＮＴの値がゼロより大きい場合、回路生成情報ファイル２０４から、回路種別コードと生成回路挿入位置を読み出す(５０２,５０３)。次に、回路種別コードに対応する回路パラメータ入力ウインドウを表示する(５０４)。回路パラメータ入力ウインドウには、回路記述の生成に必要なパラメータが入力される(５０５)。同ウインドウ表示直後は、回路パラメータの入力欄には所定の初期値が表示されており、修正が無ければ初期値が回路パラメータとされる(５０５)。必要な全部の回路パラメータの入力が完了するまで処理ステップ５０５が行なわれる(５０６)。全部の回路パラメータの入力が完了した時点で、信号処理ライブラリ１０２から回路種別コードに該当する候補としてのソースコードフォームが読み出され(５０７)、入力された回路パラメータがソースコードフォームに与えられ、これによって、当該回路種別コードに対応する回路部分についてのハードウェア用Ｃソースコードが生成される（５０８）。これによって生成されたＣソースコードが信号処理Ｃソースコード２０５における対応する回路種別コードの位置に挿入され、カウンタＣＮＴの値から１を減算して処理ステップ５０１に戻る。以後、カウンタＣＮＴの値がゼロになるまで、処理ステップ５０１乃至処理ステップ５１０を繰り返す。
【００３８】
図６には回路種別コードテーブルの構成が例示される。回路種別コードテーブル６００は、回路生成支援プログラム１００の一部に組み込まれて構成され、例えばハードウェア用Ｃモデル生成部１０１の一部を成るものであると理解されたい。回路種別コードテーブル６００は、機能単位に割り当てた回路種別コードと、その回路をハードウェア用Ｃソースコードとして表現するために用意したソースコードフォームの参照先アドレスの２つの情報で構成される。ソースコードフォームは、信号処理ライブラリ１０２に一括して登録されている。例えば図６では、回路種別コード１(６０１)として、画像処理用水平フィルタの回路種別コード「ＨＦＩＬ」が割当てられ、その参照先１(６０２)には信号処理ライブラリ１０２の水平フィルタソースコードフォームの格納アドレスが記録されている。回路種別コード２(６０３)として、画像処理用垂直フィルタの回路種別コード「ＶＦＩＬ」が割当てられ、参照先２(６０４)には信号処理ライブラリ１０２の垂直フィルタソースコードフォームの格納アドレスが記録されている。前記回路種別コードテーブルを備えない場合には、ハードウェア用Ｃモデル生成部１０１におけるプログラム記述で直接ソースコードフォームの格納アドレスを個別に指定すればよい。
【００３９】
図７は、回路生成情報ファイルの構成が例示される。回路生成情報ファイル２０４は、回路種別の記述数を示すカウンタＣＮＴと、生成する回路の路種別コードと、信号処理Ｃソースコード上の回路種別コード記述位置（すなわち生成したハードウェア用Ｃソースコードの挿入位置を示す情報）で構成される。回路種別コードは、回路種別の記述数のカウンタＣＮＴの値(７０１)の個数だけ存在する。図７では、１番目の回路種別コード１(７０２)は「ＨＦＩＬ」であり、画像処理用水平フィルタを生成することを示している。記述位置１(７０２)には、信号処理Ｃソースコード１０３上の「ＨＦＩＬ」を記述した位置が格納される。２番目の回路種別コード２(７０３)は「ＶＦＩＬ」であり、画像処理用垂直フィルタを生成することを示している。記述位置２(７０４)には、信号処理Ｃソースコード１３上の「ＶＦＩＬ」を記述した位置が格納される。
【００４０】
図８には入出力ファイル選択用ウインドウが例示される。入出力ファイル選択用ウインドウ８００では、回路生成支援プログラムが使用する入出力ファイルの選択と、生成する回路の種別選択と、回路生成実行の操作を行う。信号処理Ｃソースコード１０３のファイルは、ボタン８０１の操作で入力ファイル名が指定される。回路生成情報ファイル２０４は、ボタン８０２の操作で出力ファイル名が指定される。ハードウェア用Ｃソースコード１０４のファイルは、ボタン８０３の操作で出力ファイル名が指定される。信号処理Ｃソースコード１０３のファイルにおける回路種別検索は、ボタン８０５の操作で実行が開始される。回路生成の処理はボタン８０６の操作で実行開始される。信号処理Ｃソースコード１０３およびハードウェア用Ｃソースコード１０４はテキストウインドウ８０４に表示される。
【００４１】
図９には回路パラメータ入力ウインドウが例示される。同図の例は、画像処理用水平フィルタの回路パラメータ入力ウインドウの例を示している。回路ＩＤは、ユーザが任意に指定する名称である。これから作成する水平フィルタと他の水平フィルタ回路とを区別するために用いる。フィルタタップ係は、水平フィルタを構成するフィルタ係数の数である。フィルタ係数は、フィルタの周波数特性を表現した数値である。ビットシフト量は、水平フィルタ演算後に計算結果のレンジの修正量である。水平画像サイズは、演算対象画像の水平方向の画素数である。垂直画像サイズは、演算対象画像の垂直方向の画素数である。それぞれのパラメータは９０１〜９０６で示される入力欄に入力可能にされる。入力欄９０１〜９０６には当所初期値が表示され、所望の値に書換え可能にされる。９０７はパラメータの入力完了を指示するボタンである。
【００４２】
図１０は信号処理Ｃソースコードに記述された回路種別コードの例が示される。信号処理Ｃソースコード１０３に回路種別コードを記載する場合には、同ソースコードの任意の場所(例えば当該ソースコード先頭付近)に、ハードウェア用Ｃソースコードへの変換を行う記述が存在することを明示するために、例えばその処理を実行できるようにする旨の宣言文を記述しておく。同図の例では「#define HARDWARE」(１００１)と記載する。「HARDWARE」の部分は任意でよい。回路を挿入したい部分１００３に、「#ifdef HARDWARE」と「#endif」を記載し、その間に、挿入したい回路の回路種別コード１００４を記載する。例えば、水平フィルタの場合は「CTYPE=ＨＶＦＩＬ」と記載する。左辺の「CTYPE＝」は、右辺の記述コードが回路種別コードであることを示す。１００２は上記回路種別コードによる置き換え対象外の信号処理Ｃソースコードの部分である。
【００４３】
図１１にはハードウェア用Ｃソースコード１０４の出力例が示される。回路種別コードに対応して生成されたハードウェア用Ｃソースコードは、信号処理Ｃソースコードの中の回路種別コードが記載されていた場所に挿入される。同図では、回路種別コード「CTYPE=ＨＶＦＩＬ」と記載した箇所１００３の後に、水平フィルタのハードウェア用Ｃソースコード１１０５が挿入された例を示している。ハードウェア用Ｃソースコードは、幾つかの引数を伴った関数の形で記述しても良い。この場合、回路種別コード「CTYPE=ＨＶＦＩＬ」の後には関数呼び出し命令のみ記載し、関数本体は別の任意の位置に配置することもできる。「CTYPE=ＨＶＦＩＬ」記述部分は例えば「/* CTYPE=ＨＦＩＬ */」のようにコメント化され(１１０４)、回路生成の完了を意味することにもなる。
【００４４】
上記回路生成支援プログラムをコンピュータ装置で実行することによる生成されたハードウェア用Ｃソースコードは、例えば論理合成ツールに入力されて回路図の生成に利用され、あるいは、シミュレータに入力されてシミュレーションに等に利用される。
【００４５】
一般的に、ターゲットハードウェアへの実装に最適化してＣソースコードを生成するには、ノウハウと高度なテクニックが必要であり、開発工数も大きくなる傾向であることが知られている。上記回路生成支援プログラムを用いれば、任意の動作アルゴリズムで実現する回路部分を、演算器の構成やメモリ容量等のハードウェアの仕様に即してチユーニングされた記述を生成することができ、回路若しくはシステムの開発工数の短縮に寄与することができる。特に、ライブラリから候補の選択を行うので、動作実績のあるものをライブラリとして用意することも可能であり、それによって、このプログラムを用いて生成されたＣソースコードによって開発される回路若しくはシステムの動作面での信頼性を高めることも容易になる。例えば、処理の実行サイクルが短いこと、演算に使用するメモリ容量が小さいこと、等の仕様上の制約に対して実績のある記述、あるいは、データ読み出し、書き込みが遅いデバイスへのアクセス回数を少なくするための記述等が基本的なセットとしてライブラリに格納されていれば、回路種別コードの指定だけでそのような設計資産を容易に利用できるようになる。
【００４６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４７】
例えば、本発明に係る回路生成支援プログラムや回路生成方法で使用される信号処理ライブラリの機能には、例えば、動画像の高画質化で用いるスケーリングフィルタ、画質変換フィルタ、所定方式の符号化および復号化等で用いる離散コサイン変換、動き推定、動き補償等はもとより、種々のデータ処理やデータ転送処理等を実現する回路機能が含まれてよいうことは当然である。本発明は、Ｃプログラムで記述された信号処理プログラムをハードウェア用Ｃプログラムに変換する技術として各種半導体集積回路の開発環境に適用することができる。
【図面の簡単な説明】
【００４８】
【図１】図１は本発明に係る回路生成支援プログラムの構成、及び回路生成支援プログラムと設計対象にされる回路のソースコードとの関係を模式的に例示する説明図である。
【図２】図２は回路生成支援プログラムを実行するコンピュータ装置のブロックダイヤグラムである。
【図３】図３は回路生成支援プログラムの最上位の処理を例示するフローチャートである。
【図４】図４は回路種別検索（図３のステップ３０５）処理の詳細を例示するフローチャートである。
【図５】図５は回路記述生成処理（図３のステップ３０６）処理の詳細を例示するフローチャートである。
【図６】図６は回路種別コードテーブルの構成を例示する説明図である。
【図７】図７は回路生成情報ファイルの構成を例示する説明図である。
【図８】図８は入出力ファイル選択用ウインドウの構成を例示する説明図である。
【図９】図９は回路パラメータ入力ウインドウの構成を例示する説明図である。
【図１０】図１０は信号処理Ｃソースコードに記述された回路種別コードを例示する説明図である。
【図１１】図１１はハードウェア用Ｃソースコードの出力形態を例例示する説明図である。
【符号の説明】
【００４９】
１００…回路生成支援プログラム
１０１…ハードウェア用Cモデル生成部
１０２…信号処理ライブラリ
１０３…信号処理Ｃソースコード
１０４…ハードウェア用Ｃソースコード
２００…コンピュータ装置
２０１…ＣＰＵ
２０２…メモリ
２０３…補助記憶装置
６００，６０３，１００４…回路種別コード
１１０４…コメント化された回路種別コード
１１０５…回路種別コードに対応して挿入されたハードウェア用Ｃソースコード
９００…パラメータ入力ウインドウ
【図１】
2010026968.tif 000003
【図２】
2010026968.tif 000004
【図３】
2010026968.tif 000005
【図４】
2010026968.tif 000006
【図５】
2010026968.tif 000007
【図６】
2010026968.tif 000008
【図７】
2010026968.tif 000009
【図８】
2010026968.tif 000010
【図９】
2010026968.tif 000011
【図１０】
2010026968.tif 000012
【図１１】
2010026968.tif 000013