(57)【要約】  本発明は、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備えるヘテロジニアスハードウェアシステム上で実行するのに適する複数のコードの自動化生成のための方法を提供し、上記コードは実行可能な較正命令を含み、上記方法は、（i）1つ以上のコード記述を含む初期コードをロードすること、（ii）上記初期コード上で、較正パラメーターとして考えられるコード記述内の変数及び／又はモニターされる値であると考えられるコード記述内の変数を指定する、ユーザー較正命令を提供すること、（iii）上記コードを、利用可能なユニットごとに少なくとも1つ、較正命令を備える上記ロードされた初期コードに基づいて、自動的に生成するステップを含む。【選択図】図１【特許請求の範囲】
【請求項１】
少なくとも1つのソフトウェアプログラマブルユニット（210）及び少なくとも1つのハードウェアプログラマブルユニット（220）並びに任意選択でデバッグ及びテストインフラストラクチャ（700）を備えるヘテロジニアスハードウェアシステム（200）上で実行するのに適する複数のコードの自動化生成のための方法であって、前記コードは実行可能なデバッグ及び／又はテスト命令を含み、前記方法は、（i）1つ以上のコード記述を含む初期コード（10）をロードすることと、（ii）前記初期コード（10）上で、較正パラメーターとして考えられる前記コード記述内の変数及び／又はモニターされる値であると考えられる前記コード記述内の変数を指定する、ユーザーデバッグ及び／又はテスト命令（20）を提供することと、（iii）前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、自動的に生成する（30）ステップとを含む、方法。
【請求項２】
前記ユーザーは、前記ソフトウェアプログラマブルユニット（210）及び前記ハードウェアプログラマブルユニット（220）についてそれぞれ前記生成されるコードが、前記デバッグ及び／又はテスト命令を備えることになるか否か、又は、備えるとき、前記デバッグ及びテストインフラストラクチャ（700）が前記デバッグ及び／又はテスト命令（前記デバッグ及び／又はテスト命令の一部）を実施することになるか否かを（提供することはできるが）提供する必要はない、請求項1に記載の方法。
【請求項３】
前記コード（40）は、前記初期コード内の前記ユーザーデバッグ及び／又はテスト命令内で示される変数の値をオーバーライドする及び／又はサンプリングすることを可能にする、請求項1に記載の方法。
【請求項４】
（iii）前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、自動的に生成する（30）ステップは、前記ソフトウェアプログラマブルユニット（210）及び前記ハードウェアプログラマブルユニット（220）についてそれぞれ前記生成されるコードが、前記デバッグ及び／又はテスト命令を備えることになるか否か、又は、備えるとき、前記デバッグ及びテストインフラストラクチャ（700）が前記デバッグ及び／又はテスト命令（前記デバッグ及び／又はテスト命令の一部）を実施することになるか否かを自動的に判定する（800）ステップ（a）と、その後、前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、ステップ（a）の前記自動判定に基づいて、自動的に生成する（810）ステップ（b）とを含む、請求項2に記載の方法。
【請求項５】
前記ステップ（a）（800）は、前記パラメーター又は変数が、前記デバッグ及びテストインフラストラクチャ（700）及び／又は前記ソフトウェアプログラマブルユニット（210）上にロードされた前記コードによってアクセスされるか否かを判定することに基づく、請求項４に記載の方法。
【請求項６】
（iv）前記ヘテロジニアスハードウェアシステムに接続される較正及び／又はデバッグ機器（330）に適するコード（340）を自動的に生成するステップを更に備え、任意選択で（請求項4に応じて）、前記ステップ（iv）はステップ（a）の前記自動判定に基づく、請求項1に記載の方法。
【請求項７】
前記ソフトウェアプログラマブルユニット（210）はマイクロプロセッサコアであり、前記マイクロプロセッサコアの対応するコードはソフトウェア言語コード（50）であり、前記ハードウェアプログラマブルユニット（220）はプログラマブルロジックマトリクスであり、前記プログラマブルロジックマトリクスの対応するコードはハードウェア記述言語コード（60）である、請求項1〜6のいずれか一項に記載の方法。
【請求項８】
前記ヘテロジニアスハードウェアシステムは、デバッグ及び／又はテストに関連するデータ転送をサポートする特定のリソース（230）を含み、前記自動的に生成されるコード（40）は前記リソースを利用する、請求項1〜7のいずれか一項に記載の方法。
【請求項９】
ステップ（iii）は、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードからの信号のリストの自動化採取（のステップ）を含み、較正信号のリストをもたらす、請求項1に記載の方法。
【請求項１０】
ステップ（iii）は、特定のリソース（230）の一部であるオンチップメモリ（240）からの／への較正データ転送を、特定された採取及び／又は更新期間に前記較正データ転送を制限するメカニズムをサポートすることによって実行することができるHDLモジュールを生成するための自動HDLモジュールコード（100）生成のステップ（610）を含み、好ましくは、前記自動HDLモジュールコード生成は較正信号の前記リストを使用する、請求項7及び8（及び好ましくは請求項9）に記載の方法。
【請求項１１】
ステップ（iii）は、（a）前記初期コードからHDLを生成するステップ（630）及び（コード（60）を得るために）前記生成されたHDLを前記生成されたHDLモジュールに（有線）接続するステップ（620）を含み、好ましくは、前記ステップ（620）は較正信号の前記リストを使用する、請求項10に記載の方法。
【請求項１２】
初期コードの機能的な類似性及び前記初期コードから生成された自動的に生成されるコードを制御する方法であって、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コードを実行（シミュレート）することと、（ii）請求項1〜11のいずれか一項に記載の方法によって、前記初期（高レベルシミュレーション）コードから生成されるコードを実行することと、（iii）前記実行の結果を比較して、前記コードの（実質的に）機能的な類似性を検証することとを含む、方法。
【請求項１３】
電気エンジン及び前記エンジンのための制御を提供するエンジン制御ユニットハードウェアを備える配置構成であって、前記エンジン制御ユニットハードウェアは、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備えるヘテロジニアスハードウェアシステムを備え、前記ユニットは、請求項1〜11のいずれか一項に記載の方法によって生成されるコードを実行するために適合される、配置構成。
【請求項１４】
前記ソフトウェアプログラマブルユニットはマイクロプロセッサコアであり、前記マイクロプロセッサコアの対応するコードはソフトウェア言語コードであり、前記ハードウェアプログラマブルユニットはプログラマブルロジックマトリクスであり、前記プログラマブルロジックマトリクスの対応するコードはハードウェア記述言語コードである、請求項13に記載の配置構成。
【請求項１５】
前記ヘテロジニアスハードウェアシステムは、較正に関連するデータ転送をサポートする特定のリソースを含む、請求項13又は14に記載の配置構成。
【請求項１６】
請求項13〜15のいずれか一項に記載の配置構成並びに前記ヘテロジニアスハードウェアシステム及び前記エンジンに接続される較正機器を備える較正配置構成であって、前記較正機器は、請求項6の方法によって生成されるコードを実行するために適合される、較正配置構成。
【請求項１７】
コンピューター可読コードを含むコンピュータープログラム製品であって、前記コンピューター可読コードは、コンピューターシステム上で実行されると、請求項１〜１２のいずれか一項に記載の方法を前記コンピューターシステムに実行させる、コンピュータープログラム製品。
【請求項１８】
請求項１７に記載のコンピュータープログラム製品を記憶する非一時的機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気エンジンデジタル制御ドメインの分野に関し、特に、純電気自動車又はハイブリッド自動車の電気モーターの制御を対象とする（が、それに限定されない）。
【０００２】
本発明は、上記ドメインについてのデバッグ及び／又はテスト及び／又は較正又は調節の文脈におけるコードハンドリングに関連する方法、及び、上記方法及び／又は関連するコードによって可能にされる種々の使用、特定のターゲットハードウェアシステム、その使用及び配置構成、並びに、ソフトウェア環境、上記方法をサポート又は使用するプラットフォームに関する。
【背景技術】
【０００３】
モーター制御システムを開発するための一般的に使用される方法は以下の通りである：
1．ステップ#1：ループアルゴリズム開発におけるモデル
・このフェーズにおいて、制御のモデル及びシステム（モーター、パワートレイン、．．．）のモデルが開発され、純粋な仮想的な方法で（Matlab／Simulinkの種類のシミュレーションソフトウェアを使用して）デバッグされる。
・このステージにおいて、全ての理論的な（理想と仮定される）制御曲線が計算され妥当性検証される。
・このフェーズで開発されたモデルが、「ゴールデン（golden）」参照として考えられる。
2．ステップ#2：ECUへの制御アルゴリズムマッピング
・このフェーズにおいて、ステップ#1からの理想的な制御アルゴリズムが、選択されたエンジン制御ユニットハードウェアに適合する操作アルゴリズムに変換される。
・このフェーズは、おおよそ自動化することができる（特に、ECUが純粋なソフトウェア実装である場合）。しかしながら、マニュアルエンジニアリングが、通常、以下の場合に必要である。すなわち、
i．制御の一部が、外部FPGAデバイス内でマッピングされるために主制御から分離される場合（これは、高速なリアルタイム動作を扱うためのものである）、
ii．制御アルゴリズムの一部が、マイクロコントローラーターゲット特有のハードウェアアクセラレーター（数学演算子等）上にマッピングされる場合である。
・いずれの場合も、マッピングフェーズが、ハードウェア制限に対処するために制御アルゴリズム精度における妥協をもたらす。
3．ステップ#3：ループアルゴリズム調節におけるハードウェア
・この動作は、正確に制御された動作状態下に電気モーターが置かれる実験台において通常行われる。
・このフェーズにおいて、較正インフラストラクチャが、調節パラメーターを投入し、動作変数曲線を採取することができるように、制御アルゴリズムに付加される。
・これらの曲線は、理想曲線と比較され、パラメーター値に関するフィードバックループが、最適値に達するために実行される。
・この操作は、非常に多数の調節パラメーターに適用される。
・この操作は、必要に応じて理想モデルを再訪するためにステップ#1へのフィードバックをもたらすこともできる。
・このフェーズの終わりにおいて、制御アルゴリズムが最終と考えられ、縮小された調節パラメーターのセットが、ステップ#4で使用するために規定される。
4．ステップ#4：ループアルゴリズム調節における車両
・この動作は、現実の動作状態の実際の車両において行われる。
・この較正メカニズムは、調節パラメーターの数が減少したことを除いてステップ#3と同じである。
【０００４】
好ましくは、開発フローは高度に自動化される。これは、制御アルゴリズムモデからECU上で実行される操作コードまで、基本的に、手作業によるコーディングが含まれないことを意味する。
【０００５】
この原理は、多数の利益を提供し、その利益は、以下を含む。
・実装エラーのリスクが最小である（手作業による再コーディングがない）、
・全てのECUターゲットハードウェア制限が、アルゴリズム開発の早期フェーズにおいて考慮される。これは、アルゴリズムの精度における適切な妥協が、ステップ#2の代わりに、ステップ#1で決定されることを意味する。
【０００６】
上記で導入したように、較正タスクは、アルゴリズムの予め規定された一部のパラメーターに較正値を投入し、一部のキー変数の値を抽出するために、一部の追加のコンピューティング機能が初期制御アルゴリズムに付加されることを示唆する。
【０００７】
そのため、較正インフラストラクチャは、規定によれば、制御アルゴリズムに関して侵入的である。
【０００８】
侵入的であることは、２つの角度から考えることができる：
・操作コードにおいて、較正インフラストラクチャはそこに存在しなければならない。これを回避する方法は存在しない。
・開発フェーズにおいて、問題は、どのステップで、この較正フェーズがフロー内に現れるかを規定することである。
○このインフラストラクチャが、ステップ#1中に規定される。
これは、「ゴールデン」モデル内に「非機能的（non-functional）」操作が付加されるため、問題である。したがって、このモデルをゴールデンであるともはや考えることができない。
○又は、インフラストラクチャが、ステップ#2において、生成されたコードに対する手作業のオーバーライドとして付加される。
これは、モデルベース自動化フローが破壊されるため、問題である。
【０００９】
初期コードからコードを自動化生成する（automated generating）ための方法（特許文献1及び／又は非特許文献1等）が存在するが、それらのいずれも、ヘテロジニアスハードウェアシステムであって、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備え、コードを、利用可能なユニットごとに少なくとも1つ自動的に生成するステップを必要とする、ヘテロジニアスハードウェアシステムの詳細を対象としないし、それを扱わない。
【００１０】
初期コードからコードを自動化生成するための方法が存在するが、それらのいずれも、上記コードがデバッグ及び／又はテスト命令を備えることを必要とする、上記で述べた特にターゲットプラットフォームのための、デバッグ及び／又はテストの文脈でのコードハンドリングの詳細を対象としないし、それを扱わない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許６７４２１７５号
【非特許文献】
【００１２】
【非特許文献１】「Ａｕｔｏｍａｔｉｃ  ｆｌｉｇｈｔ  ｃｏｄｅ  ｇｅｎｅｒａｔｉｏｎ  ｗｉｔｈ  ｉｎｔｅｇｒａｔｅｄ  ｓｔａｔｉｃ  ａｎｄ  ｒｕｎ−ｔｉｍｅ  ｅｒｒｏｒ  ｃｈｅｃｋｉｎｇ  ａｎｄ  ｃｏｄｅ  ａｎａｌｙｓｉｓ」ＸＰ  ００７９０５８２８
【発明の概要】
【発明が解決しようとする課題】
【００１３】
較正インフラストラクチャであって、（好ましくは全く）ゴールデンモデルの修正がない及び／又は生成されたコードの手作業によるオーバーライドがない状態で、操作コード内に含むのに適するようにさせることによって上記で述べた問題に対処する、較正インフラストラクチャを有することが本発明の目的である。
【課題を解決するための手段】
【００１４】
本発明の第1の態様において、本発明は、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備えるヘテロジニアスハードウェアシステム上で実行するのに適する複数のコードの自動化生成のための方法に関し、上記コードは較正命令を含み、上記方法は、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コードをロードすること、（ii）較正命令をロードすること、（iii）上記コード40を、利用可能なユニットごとに少なくとも1つ、上記ロードされた初期コード及び上記ロードされた較正命令に基づいて、自動的に生成することを含む。
【００１５】
本発明の第2の態様において、本発明は、電気エンジンと、このエンジンのための（リアルタイム）制御を提供するエンジン制御ユニットハードウェアとを備える配置構成（駆動車両の一部又は駆動車両の一部であるのに適する）に関し、上記エンジン制御ユニットハードウェアは、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備えるヘテロジニアスハードウェアシステムを備え、上記ユニットは、本発明の第1の態様の方法によって生成されるコードを実行する。
【００１６】
本発明の第3の態様において、本発明は、先行する態様の方法及び／又は配置構成によって可能にされる更なる方法、特に、コードの機能的な類似性を制御する方法に関し、方法は、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コードを実行（シミュレート）することと、（ii）本発明の第1の態様の方法によって、上記初期（高レベルシミュレーション）コードから生成されるコードを実行することと、iii）上記実行の結果を比較して、上記コードの（実質的に）機能的な類似性を検証するとともに、例えば、これら（比較結果、例えば、差）を使用して、較正プロセスを誘導することとを含む。
【００１７】
本発明の第4の態様において、本発明は、コンピューター可読コードを含む関連するコンピュータープログラム製品に関し、コンピューター可読コードは、コンピューターシステム上で実行されると、先行する方法請求項のうちのいずれかの方法をコンピューターシステムに実行させる。
【００１８】
本発明の第5の態様において、本発明は、上述したコンピュータープログラム製品を記憶する、関連する非一時的機械可読記憶媒体に関する。
【図面の簡単な説明】
【００１９】
【図１】本発明（左側）及び本発明がサポートする較正課題の文脈を示す図である。
【図２】本発明が特定の利点を有するFPCUデバイスを示す図である。
【図３】発明された方法の高レベルステップ、入力及び出力（コード）、並びに、ソフトウェア環境及び関与する異なるハードウェア等の関連要素を概略的に示す図である。
【図４】本発明の更なる使用の高レベルステップを概略的に示す図である。
【図５】本発明の例示的な実施形態を示す図である。
【図６】本発明の特定の実現のステップの（順序付けられた）リストの詳述された更なるリストを示す図である。
【図７】本発明で使用される一例示的なインターフェースを示す図である。
【図８】本発明の使用中に生成される特定のハードウェア構造（特に、右側）を示す図である。
【図９】較正によって引き起こされるデータ転送に関して、本発明によって行われ実装される技術的考察を示す時間ダイヤグラムである。
【図１０】本発明の例示的な実装態様において使用される或る特定の詳細なフローチャートである。
【図１１】本発明の例示的な実装態様において使用される或る特定の詳細なフローチャートである。
【図１２】本発明が特定の更なる有利な特徴を有するデバッグインフラストラクチャを有する図2のFPCUデバイスの変形を示す図である。
【図１３】特に図12のFPCUについての、本発明（左側）の文脈の変形及び本発明がサポートする較正課題を示す図である。
【図１４】図12及び図13の文脈についての一例示的な例を示す図である。
【発明を実施するための形態】
【００２０】
本発明は、（i）デバッグ及び／又はテスト及び／又は較正又は調節を含む、（マルチ）コード設計、（半）自動（マルチ）コード生成、及び（マルチ）コード実行等のコードハンドリングに関連する方法、及び、上記方法及び／又は設計されたコード、生成されたコードによって可能にされる種々の使用、並びに、（ii）（特定のリソース等を適合させることにより）適するように作られたターゲットハードウェアシステム、特に、ヘテロジニアスハードウェアシステム（したがって、マルチコードを必要とする）、上記方法をサポートする及び／又は上記方法から最適に利益を得るための、それらのハードウェアシステムを含む適したターゲット（アプリケーション）システムに関する。
【００２１】
本発明は、特に、上記に関し、上記ターゲット（アプリケーション）システムの1つ以上の部分について、コード記述が利用可能であり、上記（マルチ）コード設計方法は、最初に、上記1つ以上のコード記述から始まり、さらに、上記（マルチ）コード設計方法は、その入力が後続の（半）自動（マルチ）コード生成に適しなければならないように適合され、（半）自動（マルチ）コード生成が、それ自体、ターゲットハードウェアシステムのための種々のコード（上記でマルチコードを意味する）を生成するために適合される。さらに、本発明によって提供される、発明された設計及び／又は生成及び／又は実行及び／又はシミュレーション環境（又はフレームワーク）によって提供される、デバッグ及び／又はテスト及び／又は較正又は調節能力は、デバッグ及び／又はテスト及び／又は較正又は調節に関連する、任意の命令、コード等が付加される前のコードである、オリジナルの（マルチ）コードを十分に保護するように適合される。
【００２２】
発明された特に設計された方法は、調節又は較正及び／又は参照（高レベルアブストラクション）との比較等の種々の（半）自動化可能な使用の配備を可能にする。さらに、これらの方法は、ターゲット（アプリケーション）システムのためのかつターゲット（アプリケーション）システムによって要求される安全な実行（手作業によるコード操作を回避すること及び／又は十分過ぎるほどのテスト／デバッグ及び較正機会を提供することによる）と組み合わせた最適性能のために設計しながら、ハードウェアシステムのハードウェア制限を、（例えば、どれほど多くの追加のコードを提供することができるかを詳しく調査することを設計者が求められるため、それらの限界で）考慮することができることを同様に保証する。
【００２３】
したがって、本発明は、コードを設計する設計方法であって、1つ以上のシステムコード記述を含む初期コードから始めて、初期コードをロードし、デバッグ、テスト、又は較正命令をロードし、ターゲットハードウェアシステム、より詳細にはヘテロジニアスハードウェアシステムのプログラミング又はヘテロジニアスハードシステム上での実行に適する更なるコードの更なる（半）自動生成のための、設計方法を提供し、したがって、複数の更なるコードが生成され、上記生成方法は、上記設計されたコードから始めて、上記設計されたコードをロードし、どのデバッグ、テスト、又は較正命令が使用されるかに関する命令をロードする。上記生成方法は、上記設計方法内に直接統合することができる。上記ハードウェアシステム及び／又はアプリケーションシステムがデバッグ、テスト、又は較正機器に接続されて、関連機能を提供することができるが、生成方法及び／又は統合された設計方法は、そのような機器を誘導するのに適するコードの生成も含むことができる。
【００２４】
上述した種々のコードの可用性を仮定すると、本発明は、デバッグ、テスト、又は較正機器に接続された上記ターゲットハードウェアシステム又はそれらのために使用される任意の他のコンピューティングサポートシステム上での、上記生成されたコードの1つ以上の実行に基づいて、デバッグ、テスト、又は較正方法を提供する。さらに、自動化調節又は較正及び／又は参照（高レベルアブストラクション）との比較は、これらの実行をユーザーが規定するループ内に埋め込むことによって提供することができる。
【００２５】
上記のより一般的な用語で更に述べるように、本発明は、種々のコードハンドリング方法に関し、したがって、種々のコードハンドリング方法は、それ自体、コンピューター配置構成上で実行可能なコンピューター可読コードを通して実現され、上記コード及び関連するコンピューター配置構成はともに、環境又はフレームワーク又はインフラストラクチャを形成する。
【００２６】
述べたように、本発明は、特に上記に関し、上記ターゲット（アプリケーション）システムの1つ以上について、モデルとも呼ばれるシステムコード記述が利用可能であり、したがって、上記方法はモデルベースと呼ぶことができる。典型的なターゲットアプリケーションは、純電気自動車又はハイブリッド自動車の電気モーターにおいて見出される電気エンジン、したがって、その（デジタル）制御である。したがって、上記モデル（複数の場合もある）の例示的な実施形態は、モーター、パワートレインに関連する。初期コードが、（Matlab又はSimulinkコード等であるがそれらに限定されない）高レベル（シミュレーション）コードであることにここで留意する価値がある。
【００２７】
本発明は、エンジン制御ユニットハードウェアのための方法、特に、ヘテロジニアスハードウェアシステム（したがって、マルチコードを必要とする）、特に、少なくとも1つ以上のマイクロプロセッサコア及び１つ以上のプログラマブルロジックマトリクスを備えるFPCUシステムに基づく方法に特に関し、したがって、上記マルチコードは、上記コアのための操作コード及び上記プログラマブルロジックマトリクスのためのハードウェア記述言語コードを含む。さらに、上記ハードウェアシステムは、好ましくは、自動車（automotive）パワートレイン制御に専用の周辺機器（回路）及びプログラマブルロジックから周辺機器を制御するためのカスタムインターコネクト構造を含む。エンジン制御ユニットハードウェアにおいて、特に、プログラマブルロジックマトリクスによって手配される（taken care of）高速リアルタイム操作を、ターゲットアプリケーションドメインが課したことに、このステージで留意する価値がある。
【００２８】
本発明は、選択されたECUマイクロコントローラーデバイスが実際にはFPCU（Field Programmable Control Unit：フィールドプログラマブル制御ユニット）である特定の文脈において特に適用される。
【００２９】
特定の一実施形態において、FPCUは、以下の要素を同じシリコン上に埋め込んだデバイスである。以下の要素とは、
・1つ以上の標準的なマイクロプロセッサコア、
・幾つかの標準的なデバッグ及びトレースハードウェアインフラストラクチャ、
・幾つかの汎用マイクロコントローラーモジュール（DMA、ウォッチドグ、タイマー、．．．）、
・サブシステムであって、
○埋め込み式プログラマブルロジックマトリクス（FLU）、
○自動車パワートレイン制御に専用の周辺機器のセット（PWM、キャプチャー、ADC、CAN、．．．）
○FLU内にマッピングされた任意のロジックからこれらの周辺機器の直接制御を可能にするカスタムインターコネクト構造、
○FLUから／へのデータ転送を可能にするDPRAM、
を含む、サブシステム、である。
【００３０】
述べたように、本発明は、デバッグ及び／又はテスト及び／又は較正又は調節能力をサポートする。そのようなサポートを導入することによって引き起こされるこの技術的問題は、較正に対してここで述べられるが、同様な考察は、デバッグ及び／又はテスト能力について行うことができる。本質的に、較正は、追加のコードが、設計コードに対して、また同様に、更なる（半）自動生成コード、したがって、構成されるマトリクスにおいて、付加されることを必要とし、実行コードは、少なくとも原理上、意図されるコードと異なり、これは、必要とされる高速リアルタイム操作と組み合わせたハードウェア制限を特に考慮して、操作に影響を及ぼす場合がある。したがって、較正又は調節に関連付けられた任意の命令、コード等が存在する前のコードである、オリジナルの（マルチ）コード（したがって、ゴールデンモデルとも呼ぶ）を十分に保護するという要求が存在する。
【００３１】
したがって、本発明は、コードを設計し、1つ以上のシステムコード記述を含む初期コードから始め、初期コードをロードし、（デバッグ、テスト、又は）較正命令（較正パラメーターとして考えられるコード記述内の変数及び／又はモニターされる値として考えられるコード記述内の変数を指定する）をロードし、これらの命令を上記初期コードに（或る特定の程度まで）特定の方法で、（例えば、十分な明瞭な注釈によって又はメタデータとして）付加するための設計方法を提供し、それにより、ターゲットハードウェアシステム（より詳細には、ヘテロジニアスハードウェアシステム、したがって、複数の更なるコードが生成される）のプログラミング又はその上での実行に適する更なるコードの更なる（半）自動生成は、（例えば、更なる（半）自動生成が、提供される注釈を認識するため）更なる（半）自動生成が最初に生成することになるコード以外に、上記較正に関連する追加のコードを提供する。したがって、上記コアのための追加の操作較正コード（例えば、Cコード）及び上記プログラマブルマトリクスのための較正ハードウェア記述言語コードが生成される。
【００３２】
ハードウェアレベルで、較正に関連するデータ転送を較正が必要とし、そのデータ転送が、通常、較正されるシステムの通常の使用中におけるより要求が厳しいことをこのステージで指摘することができる。したがって、好ましくは、ターゲットヘテロジニアスハードウェアシステム特有のリソース（オンチップRAM等の内部メモリ、コア又はプログラマブルマトリクスへのデータ転送を可能にするインターコネクト、及び上記メモリに向かう入力／出力ポート等）はこれらのデータ転送をサポートするのに十分である。これらの追加の更なるコードの更なる（半）自動生成が、提供されるこれらの特有のリソースに依存するか又は特有のリソースに依存するように強制されることをここで強調することができる。
【００３３】
本発明の寄与における更なる洞察がここで述べられる。
【００３４】
一部の追加のコンピューティング機能が、初期制御アルゴリズムに付加されて、アルゴリズムの予め規定された一部のパラメーターに較正値を投入し、一部のキー変数の値を抽出することを、較正タスクが示唆するため、そのようなアクションは、制御アルゴリズムに関して侵入的である。
【００３５】
これは、「ゴールデン」モデルにおいて「非機能」操作が付加されるため、問題である。したがって、一般的に言えば、このモデルをゴールデンと考えることはもはやできない。さらに、好ましくは、較正なしの設計フローにおいて、モデルベースの自動化フローが使用される一方で、生成されるコードに対する手作業によるオーバーライドとして較正を付加することは、モデルベースの自動化フローを破壊する。
【００３６】
述べたように、本発明は、コードを設計／生成し、特にシステムモデル及び／又はその制御モデルを含む1つ以上のシステムコード記述を含む初期コードから始め、初期コードをロードし、デバッグ、テスト、又は較正命令を（パラメーターの投入及び／又は変数の抽出のために）ロードする設計方法を提供する。本発明は、ゴールデンモデルの修正が好ましくは絶対になく、生成されるコードの手作業によるオーバーライドが好ましくはない状態で、操作モードに含まれる較正特徴を有するように、コードを設計／生成する方法を提供する。
【００３７】
FPCUデバイスの文脈で、制御アルゴリズムは、マイクロプロセッサコア（複数の場合もある）上でのソフトウェア実行とFLU上でのハードウェア実行とに分割される。
【００３８】
両方の場合に、操作コードは、モデルから自動生成される。
・プロセッサのためのCコード
・FLUのためのHDL
【００３９】
モデルレベルにおいて、モデルベースのフローは、アルゴリズムのどの部分がプロセッサ上で又はFLU上で実行されるかを、設計者が容易に規定することを可能にする。
【００４０】
問題は、較正を付加するために同じ柔軟性を維持できることである。これは、これらの較正操作が、プロセッサ内又はFLU内であることができるが、ユーザーモデルから、両者が同じ方法で指定されるべきであることを意味する。
【００４１】
この文脈は図1によって示される。
【００４２】
本発明は、コードを設計し、1つ以上のシステムコード記述を含む初期コードから始めて、初期コードをロードし、ヘテロジニアスハードウェアシステムのプログラミング又はヘテロジニアスハードウェアシステム上での実行に適する更なるコードを（半）自動生成する設計方法を更に改良し、したがって、複数の更なるコードが生成され、それにより、ハードウェアシステムの種々の部分上への上記コード記述のマッピングは、設計者によって特定の方法で規定される。実際には、本発明は、較正（及び同様なものの）命令の付加を可能にする設計方法をここで提供し、それにより、ハードウェアシステムの種々の部分上への較正命令に対する関連コードのマッピングは、オリジナルの設計方法の場合と同じ方法で、設計者によって規定される。
【００４３】
本方法が、複数のコード40の自動化生成のための方法を提供し、方法が、（i）1つ以上のコード記述（ゴールデンモデル）を含む初期（高レベルシミュレーション）コード10をロードすること、（ii）較正命令20（メタデータ）をロードすること、（iii）上記コードを、利用可能なユニットごとに少なくとも1つ（したがって、（50）は、マイクロプロセッサコアであるソフトウェアプログラマブルユニットのためのソフトウェアのためのものであり、（60）は、プログラマブルロジックマトリクスである上記ハードウェアプログラマブルユニットのためのハードウェア記述言語コードである）、上記ロードされた初期コード及び上記ロードされた較正命令に基づいて、自動生成すること（30）を含むことを想起されたい。
【００４４】
したがって、開発される解決策は以下の要素を含む。以下の要素とは、
・特定のメタデータをゴールデンモデルにどのように関連付けることができるかを規定する方法であって、
この方法は、以下の情報：
○較正パラメーター（したがって、較正値オーバーライドに対する候補）として考えられるべきモデル変数又は信号のリスト、
○モニターされる値として考えられるべき変数又は信号のリスト、
をどのように指定することができるかを述べる、方法、
・コンピューター実行式ソフトウェアであって、
○メタデータ内で規定されるパラメーター変数について、
Cコードであって、このコードがゴールデンモデル内でCPUコアマッピング済み関数に対応する場合、対応するソフトウェア変数の値をオーバーライドすることを可能にする、Cコードを自動生成すること、
HDLコードであって、このコードがゴールデンモデル内でFLUマッピング済み関数に対応する場合、対応するHDL信号の値をオーバーライドすることを可能にする、HDLコードを自動生成すること、
○メタデータにおいて規定されるモニターされる変数について、
Cコードであって、このコードがゴールデンモデル内でCPUコアマッピング済み関数に対応する場合、対応するソフトウェア変数の値をサンプリングすることを可能にする、Cコードを自動生成すること、
HDLコードであって、このコードがゴールデンモデル内でFLUマッピング済み関数に対応する場合、対応するHDL信号の値をサンプリングすることを可能にする、HDLコードを自動生成すること、
を可能にする、コンピューター実行式ソフトウェア、である。
【００４５】
生成されるコードは、FPCUデバッグ又は外部較正デバイスから／へ較正データを受信／送信するためのCAN通信ポートに依存する。
【００４６】
要約すると、（更なる）コード50、60の（半）自動生成は、最初に生成することになるコード70、80以外に、上記較正に関連する追加のコード、特に、上記コアのための追加の操作較正コード90（例えば、Ｃコード）を提供し、上記プログラマブルマトリクスのための較正ハードウェア記述言語コード100が生成され、特に、上記コード90、100は、それぞれの最初のコード70、80において（較正又は同様の命令に示されるように）変数の値をオーバーライドする及び／又はサンプリングすることを可能にする。
【００４７】
このステージにおいて、発明される方法の幾つかの要素を更に明確にする価値がある。較正命令（又は、調節、テスト、又はデバッグの場合の同様なもの）を含む上記コードが生成されるため、より詳細には、そのような較正命令によって、パラメーター値を提供し、較正操作に必要とされる変数値を抽出するために必要な最小量のコードが意味され、較正操作は、手作業で更に実施されている場合があるが、好ましくは、発明された方法によって可能にされるように自動的に（或る特定の程度まで）行われる。自動的に生成される較正命令は、上述したハードウェアシステムのサブシステム上で実行される命令である。これは、ロードされる較正命令と対照的である。これらの較正命令は、代わりに初期（高レベルシミュレーション）コードの同じレベルで提供され、したがって、高レベル較正命令と呼ばれ、また、追加の較正命令の生成についての単に開始基盤として、ハードウェアシステム上で実行される実行可能な較正命令とも呼ばれる。これらの高レベル較正命令のローディングが、必ずしもコードの1つのバルクローディングではなく、ロードされる初期シミュレーションコードを（特定の方法で）変更するステップを含むことができることも興味深い。したがって、コードの自動生成は、入力として受信し、その後、シミュレーションコードを修正した。上記で説明したように、ソフトウェアコンパイラー及びプログラマブルユニットマッピングツールの組み合わせによって実施される自動生成のステップは、これらの較正命令を認識し、これに相応して働くように適合されなければならない。
【００４８】
したがって、本発明は、少なくとも1つのソフトウェアプログラマブルユニット210及び少なくとも1つのハードウェアプログラマブルユニット220を備えるヘテロジニアスハードウェアシステム200上で実行するのに適する複数のコードの自動化生成のための方法として正式に規定することができ、上記コードは実行可能な較正命令を含み、上記方法は、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コード10をロードすること、（ii）高レベル較正命令20を提供又はロードすること、（iii）上記コード40を、利用可能なユニットごとに少なくとも1つ、（i）上記ロードされた初期コード及び上記提供若しくはロードされた較正命令、又は（ii）上記提供された較正命令によって修正された上記初期コードに基づいて、自動生成すること（30）を含み、それにより、上記自動生成ステップは、上記提供又はロードされた（高レベル）較正命令に基づいて上記較正に関連する追加の（実行）コードを生成するために適合される。
【００４９】
本発明は、設計及び／又は較正（デバッグ、テスト）フレームワーク、より詳細には、上述した方法をサポート又は促進するための、1つ以上のコンピューター上で動作するためにコンパイルされるソフトウェア環境を提供し、したがって、コンピューター可読コードを含むコンピュータープログラム製品A（及び、関連する非一時的機械可読記憶媒体）にも関しており、コンピューター可読コードは、コンピューターシステム上で実行されると、コンピュータープログラム製品をコンピューターシステムに実行させる。
【００５０】
図3に示すように、本発明は、したがって、少なくとも1つのソフトウェアプログラマブルユニット210及び少なくとも1つのハードウェアプログラマブルユニット220を備えるヘテロジニアスハードウェアシステム200上で実行するのに適する複数のコードの自動化生成のためのソフトウェア環境300を提供し、上記コードは較正命令を含み、上記方法は、（i）（注釈又はメタデータの使用によって）較正命令によって又はそれを用いて修正された初期コード320をロードすること、及び、（ii）上記コード40を、利用可能なユニットごとに少なくとも1つ、ロードされたコードに基づいて自動生成すること（30）を含む。
【００５１】
本発明は、少なくとも1つのソフトウェアプログラマブルユニット210及び少なくとも1つのハードウェアプログラマブルユニット220を備えるヘテロジニアスハードウェアシステム200上で実行するのに適する複数のコードの自動化生成のためのソフトウェア環境310を更に提供し、上記コードは較正命令を含み、上記方法は、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コード10をロードすること、（ii）較正命令20をロードすること、（iii）上記コード40を、利用可能なユニットごとに少なくとも1つ、上記ロードされた初期コード及び上記ロードされた較正命令に基づいて、自動的に生成すること（310）、修正する及び／又は注釈する中間ステップをもし伴えば、その後、自動的に生成することを含む。
【００５２】
本発明の一実施形態において述べたように、較正機器330も提供され、方法及び関連するソフトウェア環境は、上記ヘテロジニアスハードウェアシステムに接続される較正機器を誘導するのに適するコード340を同様に自動的に生成する。
【００５３】
したがって、本発明は、種々の配置構成、特に、設計又は較正フレームワークによって構成されるコンピューターシステムを有する第1の配置構成と、上記第1の配置構成及び上記第1の配置構成がコードを生成するヘテロジニアスハードウェアシステムを含む第2の配置構成と、上記第1の配置構成及び／又は第2の配置構成を含み、上記較正機器を更に含む第3の配置構成と、いわばテスト下のデバイス（例えば、電気エンジン、及び、ヘテロジニアスハードウェアシステムがその一部である上記エンジンについて（リアルタイム）制御を提供するエンジン制御ユニットハードウェア）を備える第4の配置構成とを提供し、これらの配置構成の所定の部分は、上記で論じたそれらの機能を実施するが、所定の部分が共有するコードと、所定の部分が生成するデータストリーム（命令、結果）と、特に、自動アプローチにより、所定の部分の特殊性（ヘテロジニアスなリアルタイム制約）が、ユーザーに対しそれを隠蔽しながら、必要に応じて考慮されることとによって、しっかりと相互接続される。
【００５４】
この時点で、同様に、本発明の更なる機能を指摘することができる。実際には（確かに高性能デバイスであるが）、ハードウェア200は、ハードウェアが実行できるコードの量に対する制限を有し、較正中に、追加の（自動的に生成される）コードがハードウェア上にロードされ、ハードウェアによって実行される必要があるため、ユーザー又は設計者は、このことを考慮する傾向がある又は考慮するよう強制される場合があり、それが、悪い結果を更にもたらす場合がある。好ましくは、ユーザー又は設計者又はテスターは、この問題を（過度に）心配する必要なく、自身のデバッグ、テスト、若しくは較正アプローチを設計できるべきであるか、又は、自身のアプローチ開発からこの懸念を切り離す可能性を少なくとも有するべきである。本発明は、これを、自動生成器又はコンパイラーによって認識可能な方法で較正命令を（例えば、自身の方策又はアプローチを実施するために、自身が好む本格的な（full-fledged）方法で）提供することによって可能にし、ユーザーは、好ましい実施形態において、或る特定のステージでどの較正命令を使用するかを示す命令350を提供することもできる（したがって、ハードウェアに適合するサブセットが生成される）。ユーザー又は設計者は、ここで、この方策を段階的に、コードを書き直す労力を伴わずに実行することができる。好ましい実施形態において、ソフトウェア環境は、適合の程度を更に示し、したがって、ユーザー又は設計者がこの方策を段階的に使用していくことを誘導する。
【００５５】
図4に示す本発明によって可能にされる更に別の機能（及び図5に示される更なる例示的な実施形態）は、その機能が、自動較正フィードバックループを実施する可能性をここでサポートすることであり、自動較正フィードバックループは、較正機器から及び／又はテスト下のデバイスに関する他の測定からデータを受信することから始め、ハードウェアシステムに給送される較正パラメーターを変更する。ソフトウェア環境は、データを受信し、受信データに従って、また更に、実行される自動較正ループをユーザーがどれほど好むかに関するユーザー命令410（例えば、パラメーター範囲及び離散化ステップ）に従ってパラメーターを準備するための手段400を有する。ユーザーは、ハードウェア、較正機器の動作をもはや調整する必要はなく、コードにもコード内のパラメーターにも適応する必要はない。これは、全て環境によって自動的にサポートされる。
【００５６】
初期コード10が、同様にシミュレートされ、それにより、シミュレーションデータ420を生成できるようにソフトウェア内で内容的に変更されないことを想起されたい。これは、コードの機能的な類似性を制御する方法を可能にし、その方法は、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コードを実行（シミュレート）することと、（ii）方法によって上記初期（高レベルシミュレーション）コードから生成されるコードを実行することと、（iii）上記実行の結果を比較して、上記コードの（実質的に）機能的な類似性を検証するするとともに、好ましくは、この比較結果を使用して、上記で述べた自動較正ループを誘導することとを含む。
【００５７】
本発明の上述した機能を代替的に述べるのは、較正インフラストラクチャが内部アルゴリズム変数の進化の一部の曲線を経時的に抽出できることを強調するためである。自動生成式較正インフラストラクチャのおかげで、未処理データは、FPCUオンチップRAMに記憶され、デバッグ又はCANポートを通して現行技術水準の機器によって読み出すことができる。この未処理データが読み出されると、問題は、較正インフラストラクチャによってモニターされる変数のそれぞれの変数及び任意の変数に対応するデータのブロックを分離できることである。「メタデータ（meta-data）」ベースのフロー及び関連する自動生成プログラムのおかげで、デバッグ機器がデータ曲線を抽出することを可能にすることになる構成スクリプトを自動生成し、構成スクリプトをゴールデンモデル内のそれらの理想値と比較することが可能である。
【００５８】
図6は、ユーザー入力（ステップ350によるユーザー注釈付きモデル320）から、生成される資料50、60、80、100、340までの処理フローの概要を提供する。フローの各部分は以下で詳述される。
【００５９】
本発明の一実施形態において、フローのモデルメタデータ割り当て部分は特定のMatlab GUI拡張に依存する。これらの拡張は、最終ユーザーによって開発されるシミュレーションモデルの処理オペレーターボックス間の接続信号上で利用可能なコンテクスチャルメニューに基づいて、（Matlab）ユーザーインターフェースから実行することができる。一例示的な実施形態が図７に示される。
【００６０】
これらの拡張は、役割として、
・或る特定のワイヤが較正又はデバッグについての候補として考えられるべきか否かを指定することを可能にする専用ダイアログウィンドウを作成し、制御する、
・較正された／デバッグされた信号のそれぞれにユーザーが識別名を関連付けることを可能にする、
・これらの情報を拡張としてモデルデータベースに記憶する、
を有する。
【００６１】
信号リスト採集ステップは全自動プログラムである。このプロセスは、フローの以下の部分について較正及びデバッグ信号のリストを準備する。
【００６２】
このプロセスは、以下のように要約することができる。
1．モデルデータベース内で先行するステップから入力メタデータを抽出する。本発明の一例示的な実施形態において、このプロセスは、これらの情報にアクセスするフックを与えるMatlabスクリプティングAPIに依存する。
2．各「タグ付き（tagged）」信号について：
a．（例えば、Matlab APIから）信号名及びモデル階層構造を得る、
b．（例えば、Matlab APIから）信号データ型を得る、
c．このデータ型に関連する必要なデータ記憶サイズを計算する、
3．信号リスト及びメモリサイズ要件をフローの次のステップのために中間データベースに記憶する。これが、上記で述べた較正方策段階的アプローチについての指示を与えることができることに留意されたい。
【００６３】
Cコード生成器は全自動プログラムである。このプロセスは、デバッグ及びトレース能力を含むために、コンパイルされるとともに、ユーザー規定のアプリケーションソフトウェアとリンクされるべき埋め込み式ソフトウェアCコードを自動的に生成する。生成されるコードは信号メモリマッピング情報を提供する単純なヘッダーファイルである。
【００６４】
HDLコード生成器は、オンチップメモリから／への較正／デバッグデータ転送を適切に実行することができるHDLモジュールを生成する全自動プログラムである。生成されるこのモジュールは、Matlabモデルから生成される「ゴールデン」HDLに更に接続されるものとする。この接続は、処理フローの次のフェーズで行われる（HDLインテグレーション生成器）。
【００６５】
このモジュールは、図8に示す入力／出力ポートとともに生成される。
【００６６】
デバッグタグ付き信号のアレイ：
○フローの先行のステップにおいて準備したデバッグ信号リストから、生成器は、適切なビット幅を有する各信号についての入力ポートを作成する。
・較正タグ付き信号のアレイ：
○フローの先行のステップにおいて準備した較正信号リストから、生成器は、適切なビット幅を有する各信号についての出力ポートを作成する。
・ループスタートトリガー
○この信号は、ゴールデンモデルから抽出される。それは、ゴールデンモデルアルゴリズムの各反復においてアサートされる。
・オンチップRAMアクセスバス
○これは、埋め込み式FPGAとシステムRAMとの間のデータ転送インターフェースである。
・較正ハンドシェイク
○これは、ゴールデンモデルアルゴリズム反復ループに関する較正データ更新の適切な同期化を可能にする較正インフラストラクチャ間の要求／肯定応答プロトコルである。
【００６７】
生成されるモジュールによって解決される主要な課題は：
・オンチップRAMから／へのデータ転送をできる限り高速に実施する、
・競合を回避するため、ゴールデンモデル反復と同期してデータ転送を実施する、
である。
【００６８】
図9は、埋め込み式FPGA内にマッピングされたリアルタイム制御ループアルゴリズムの典型的な挙動を示す。挙動は、基本的に3つのフェーズで作られる：
1．取得：埋め込み式FPGAは、外部システムセンサーモジュール（例：ADC）から複数の入力を採取する。
2．処理：FPGAは、これらの入力を演算し、出力データ値を計算する。
3．更新：演算された出力データは、デジタルモジュール（すなわち、PWM）を通りパワートレインアクチュエーターを通って転送される。
【００６９】
この挙動は、本発明者らの較正及びデバッグインフラストラクチャに以下の困難な制約を課す。
1．処理フェーズは、較正データをアルゴリズムのためのパラメーターとして使用することである。したがって、このフェーズ中に、較正パラメーターを安全に変更することは可能でない。
2．処理フェーズは、デバッグデータを計算することである。そのため、これらの値が、処理の終了まで有効であることを保証できない。
【００７０】
結論：課題解決は、デバッグ及び較正データ転送を取得及び更新期間に制限するメカニズムを有することである。
【００７１】
図10に示す生成されるHDLモジュールにおけるデバッグデータ転送プロセスは、直前に特定されたデバッグ信号の値をオンチップRAMに転送することに専用である。図11に示す生成されるHDLモジュールにおける較正データ転送プロセスは、直前に特定された較正信号の値をオンチップRAMに転送することに専用である。
【００７２】
HDLインテグレーション生成器は全自動プログラムである。
【００７３】
HDLインテグレーション生成器は、
・（標準的なMatlab HDL生成器を使用して）Matlabモデルから生成されるゴールデンHDLモデル、
・直前に生成されたRAMロガーモジュール、
の両方をインスタンス化するHDLラッパーを自動的に生成することにその本質がある。
【００７４】
そして、その後、両者間のワイヤ接続を作成する。
【００７５】
デバッガースクリプト生成器は、フローの第1のフェーズから演算されるデバッグ信号及び関連するメモリマッピングのリストを入力としてとる自動プログラムである。
【００７６】
この情報に基づいて、デバッガースクリプト生成器は、ターゲットデバッガーシステムの言語でスクリプトのセットを生成する。これらのスクリプトの目的は、デバイスから流出する未処理ビットストリームから、各デバッグ信号に対応するデータのチャンクを、デバッガーが適切に抽出することを可能にする。
【００７７】
要約すると、コード生成ステップは、複数のサブステップから構成され、複数のサブステップは、その入力コード（モデルデータベース）からの自動化信号リスト採取ステップで始まり、フローの後続の部分に適する較正及びデバッグ信号のリストをもたらす。別のステップは、デバッグ及びトレース能力を含むために、コンパイルされるとともに、ユーザー規定のアプリケーションソフトウェアとリンクされるべきソフトウェアCコードを提供する自動Cコード生成器である。生成されるコードは信号メモリマッピング情報を提供する。更に別のステップは、オンチップメモリから／への較正／デバッグデータ転送を適切に実行することができるHDLモジュールを生成する自動HDLコード生成器である。生成されるこのモジュールは、HDLインテグレーション生成器である次のサブステップによって、モデルから生成される「ゴールデン」HDLに更に接続されるものとし、HDLインテグレーション生成器は、デバッグ及び較正データ転送を特定された取得及び更新期間に制限するメカニズムをサポートすることによって競合を回避するため、ゴールデンモデル反復と同期して（オンチップ）メモリ（RAM）からの、またそこへのデータ転送を実施するためのHDLモジュールを提供する。最後に、自動HDLインテグレーション生成器サブステップは、ゴールデンHDLモデル及び直前に生成されたRAMロガーモジュールをともにインスタンス化するHDLラッパーを自動的に生成し、その後、両者間のワイヤ接続を作成する。さらに、自動デバッガースクリプト生成器サブステップは、フローの第1のフェーズから演算されるデバッグ信号及び関連するメモリマッピングのリストを入力としてとり、この情報に基づいてターゲットデバッガーシステムの言語でスクリプトのセットを生成する。
【００７８】
最後に、デバッグ及びトレースインフラストラクチャとして一般に知られるデバッグインフラストラクチャ700をFPCUが有する図12及び図13の特定の文脈を強調する価値がある。実際には、そのようなインフラストラクチャは、利用可能とすることができ、
（1）種々の侵入的要素のおかげで、回路全体にわたって全てのデバッグ及びトレースデータを採取すること：
・CPUによって実行される命令のプロービング、
・システムバス上でのデータ転送のプロービング、
・FPCU内の多くのイベント（IRQ、DMA要求、トリガー、．．．）のプロービング、
・FLUの周りの全ての入力及び出力トランザクションのプロービング、
（2）これらの全てのデータのタイムスタンプ
（3）これらのデータのパッキング及びエンコーディング
（4）これらのデータのオンチップトレースメモリへの記憶
（5）適切なインターフェースを通した外部デバッグ機器への転送
を担当することができる。
【００７９】
FPCUがデバッグインフラストラクチャ700を有する場合について上記で述べた方法に更なる特徴を提供し、それにより、現行の技術水準では想定されないより複雑なデバッグ及びテストシナリオをサポートすることが本発明の特定の寄与である。
【００８０】
したがって、本発明は、少なくとも1つのソフトウェアプログラマブルユニット210及び少なくとも1つのハードウェアプログラマブルユニット220並びにデバッグ及びテストインフラストラクチャ700を備えるヘテロジニアスハードウェアシステム200上で実行するのに適する複数のコードの自動化生成のための方法において、上記コードは実行可能なデバッグ及び／又はテスト命令を含み、上記方法は、（i）1つ以上のコード記述を含む初期コード10をロードすること、（ii）上記初期コード10上で、較正パラメーターとして考えられるコード記述内の変数及び／又はモニターされる値であると考えられるコード記述内の変数を指定する、ユーザーデバッグ及び／又はテスト命令20を提供すること、（iii）上記コード40を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える上記ロードされた初期コードに基づいて、自動的に生成する（30）ステップを含み、中間ステップ800が想定され、特に、上記コード40を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える上記ロードされた初期コードに基づいて、自動的に生成する（30）ステップ（iii）は、ソフトウェアプログラマブルユニット210及びハードウェアプログラマブルユニット220についてそれぞれ生成されるコードが、上記デバッグ及び／又はテスト命令を備えることになるか否か、又は、上記デバッグ及びテストインフラストラクチャ700がデバッグ及び／又はテスト命令（その一部）を実施することになるか否かを自動的に判定する（800）ステップ（a）と、その後、上記コード40を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える上記ロードされた初期コードに基づいて、ステップ（a）の上記自動判定に基づいて、自動的に生成する（810）ステップ（b）とを含むことを特徴とする、方法を提供する。
【００８１】
単純な例（図14に示す）がここで述べられる：
・アナログデータが、ADC周辺機器を通してサンプリングされ、FLUによって前処理され、FLUに送信される別のデータに変換されるモデルの単純な例を採用する。
・FLU及びCPU処理における幾つかの中間変数も想像することができる。
・この例において、デバッグプロービングのための候補である5つの変数が存在する。
−VAR＿A：FLUの内部でありかつデバッグインフラストラクチャによって可視性がある（FLUインターフェースプロービング）、
−VAR＿B：FLUインターフェースロジックによってのみアクセス可能、
−VAR＿C：FLU及びデバッグインフラストラクチャによってアクセス可能、
−VAR＿D：デバッグインフラストラクチャ及びCPUによってアクセス可能、
−VAR＿E：CPUソフトウェアによってのみアクセス可能。
【００８２】
そのため、コード生成コンフィギュレーター800の役割は、3つのコンポーネントのうちのどのコンポーネントがデバッグ及びテストについての変数を管理するのに最も適切かを決定することである。このソフトウェアは、ゴールデンモデルを解析して、3つの要素のうちのどの要素が所与の変数に関して可視性を有するかを理解することができる。これに基づいて、ソフトウェアは、変数管理を適切なコード生成器に割り当てることになる。
【００８３】
例示的な実施形態において、決定は、以下のようになる。
○変数がデバッグインフラストラクチャから可視性がある場合、変数は、デバッグ機器スクリプトを通して扱われることになる。なぜならば、これが、侵入的でない管理であるからである。
○そうでない場合、すなわち、変数が、CPUとFLUとの両方によって可視である場合、選択は、通常、ハードのリアル処理の影響を制限するためにCPUであることになる。
○他の優先度管理は、他の制約に基づいて規定することができる。
例：CPUソフトウェアが、ゴールデンモデル関数によって既に100%ロードされている場合、アルゴリズムは、FLU内の変数を管理することを決定することができる。
【符号の説明】
【００８４】
１０  コード，ゴールデンモデル，コード１
２０  テスト命令，較正メタデータ，較正命令，デバッグ＆テストメタデータ
３０  標準的な自動生成
４０  コード，ビットストリームを含むコード３
５０  コード，Ｃコード
６０  コード
７０  操作コード（プロセッサ上のC）
８０  操作コード（FLU上のHDL），HDLコード
９０  コード，Cでの較正アドオン，Cでのデバッグ＆テストアドオン
１００  コード，HDLでの較正アドオン，HDLコード，HDLでのデバッグ＆テストアドオン
２００  ヘテロジニアスハードウェアシステム，FPCUデバイス
２１０  ソフトウェアプログラマブルユニット，CPUコア
２２０  ハードウェアプログラマブルユニット，操作コード（FLU上のHDL）
２４０  オンチップRAM
３００，３１０  ソフトウェア環境
３２０  ユーザー注釈付きモデル，コード２＝コード１＋注釈，モデルメタデータ割り当て
３３０  較正機器，デバッグ及び較正機器，デバッグ機器
３４０  コード，コード４，デバッグ機器構成，デバッガー，デバッグ機器スクリプト
３５０  ユーザー命令，モデルメタデータ割り当て
４００  手段
４１０  ユーザー命令
４２０  シミュレーションデータ
６００  信号リスト採取
６１０  HDLコード生成器
６２０  HDLインテグレーション生成器
７００  デバッグインフラストラクチャ，テストインフラストラクチャ，SOCデバッグ及びトレースインフラストラクチャ
８００  コード生成コンフィギュレーター，デバッグ＆テスト生成器構成
８１０  デバッグ＆テストCコード生成器
【図１】
2021501953.tif 000002
【図２】
2021501953.tif 000003
【図３】
2021501953.tif 000004
【図４】
2021501953.tif 000005
【図５】
2021501953.tif 000006
【図６】
2021501953.tif 000007
【図７】
2021501953.tif 000008
【図８】
2021501953.tif 000009
【図９】
2021501953.tif 000010
【図１０】
2021501953.tif 000011
【図１１】
2021501953.tif 000012
【図１２】
2021501953.tif 000013
【図１３】
2021501953.tif 000014
【図１４】
2021501953.tif 000015
【手続補正書】
【提出日】令和1年11月19日(2019.11.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも1つのソフトウェアプログラマブルユニット（210）及び少なくとも1つのハードウェアプログラマブルユニット（220）並びに任意選択でデバッグ及びテストインフラストラクチャ（700）を備えるヘテロジニアスハードウェアシステム（200）上で実行するのに適する複数のコードの自動化生成のための方法であって、前記コードは実行可能なデバッグ及び／又はテスト命令を含み、前記方法は、（i）1つ以上のコード記述を含む初期コード（10）をロードすることと、（ii）前記初期コード（10）上で、較正パラメーターとして考えられる前記コード記述内の変数及び／又はモニターされる値であると考えられる前記コード記述内の変数を指定する、ユーザーデバッグ及び／又はテスト命令（20）を提供することと、（iii）前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、自動的に生成する（30）ステップとを含み、前記ソフトウェアプログラマブルユニット（210）はマイクロプロセッサコアであり、前記マイクロプロセッサコアの対応するコードはソフトウェア言語コード（50）であり、前記ハードウェアプログラマブルユニット（220）はプログラマブルロジックマトリクスであり、前記プログラマブルロジックマトリクスの対応するコードはハードウェア記述言語コード（60）であり、前記コード（50,60）は、最初に生成することになるコード（70,80）以外に、それぞれの最初のコード（70，80）において、変数の値をオーバーライドする及び／又はサンプリングすることを可能にする追加のコード（90，100）を提供する、方法。
【請求項２】
前記ユーザーは、前記ソフトウェアプログラマブルユニット（210）及び前記ハードウェアプログラマブルユニット（220）についてそれぞれ前記生成されるコードが、前記デバッグ及び／又はテスト命令を備えることになるか否か、又は、備えるとき、前記デバッグ及びテストインフラストラクチャ（700）が前記デバッグ及び／又はテスト命令（前記デバッグ及び／又はテスト命令の一部）を実施することになるか否かを（提供することはできるが）提供する必要はない、請求項1に記載の方法。
【請求項３】
前記コード（40）は、前記初期コード内の前記ユーザーデバッグ及び／又はテスト命令内で示される変数の値をオーバーライドする及び／又はサンプリングすることを可能にする、請求項1に記載の方法。
【請求項４】
（iii）前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、自動的に生成する（30）ステップは、前記ソフトウェアプログラマブルユニット（210）及び前記ハードウェアプログラマブルユニット（220）についてそれぞれ前記生成されるコードが、前記デバッグ及び／又はテスト命令を備えることになるか否か、又は、備えるとき、前記デバッグ及びテストインフラストラクチャ（700）が前記デバッグ及び／又はテスト命令（前記デバッグ及び／又はテスト命令の一部）を実施することになるか否かを自動的に判定する（800）ステップ（a）と、その後、前記コード（40）を、利用可能なユニットごとに少なくとも1つ、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードに基づいて、ステップ（a）の前記自動判定に基づいて、自動的に生成する（810）ステップ（b）とを含む、請求項2に記載の方法。
【請求項５】
前記ステップ（a）（800）は、前記パラメーター又は変数が、前記デバッグ及びテストインフラストラクチャ（700）及び／又は前記ソフトウェアプログラマブルユニット（210）上にロードされた前記コードによってアクセスされるか否かを判定することに基づく、請求項４に記載の方法。
【請求項６】
（iv）前記ヘテロジニアスハードウェアシステムに接続される較正及び／又はデバッグ機器（330）に適するコード（340）を自動的に生成するステップを更に備え、任意選択で（請求項4に応じて）、前記ステップ（iv）はステップ（a）の前記自動判定に基づく、請求項1に記載の方法。
【請求項７】
前記ヘテロジニアスハードウェアシステムは、デバッグ及び／又はテストに関連するデータ転送をサポートする特定のリソース（230）を含み、前記自動的に生成されるコード（40）は前記リソースを利用する、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
ステップ（iii）は、デバッグ及び／又はテスト命令を備える前記ロードされた初期コードからの信号のリストの自動化採取（のステップ）を含み、較正信号のリストをもたらす、請求項1に記載の方法。
【請求項９】
ステップ（iii）は、特定のリソース（230）の一部であるオンチップメモリ（240）からの／への較正データ転送を、特定された採取及び／又は更新期間に前記較正データ転送を制限するメカニズムをサポートすることによって実行することができるHDLモジュールを生成するための自動HDLモジュールコード（100）生成のステップ（610）を含み、好ましくは、前記自動HDLモジュールコード生成は較正信号の前記リストを使用する、請求項６及び７（及び好ましくは請求項８）に記載の方法。
【請求項１０】
ステップ（iii）は、（a）前記初期コードからHDLを生成するステップ（630）及び（コード（60）を得るために）前記生成されたHDLを前記生成されたHDLモジュールに（有線）接続するステップ（620）を含み、好ましくは、前記ステップ（620）は較正信号の前記リストを使用する、請求項９に記載の方法。
【請求項１１】
初期コードの機能的な類似性及び前記初期コードから生成された自動的に生成されるコードを制御する方法であって、（i）1つ以上のコード記述を含む初期（高レベルシミュレーション）コードを実行（シミュレート）することと、（ii）請求項１〜１０のいずれか一項に記載の方法によって、前記初期（高レベルシミュレーション）コードから生成されるコードを実行することと、（iii）前記実行の結果を比較して、前記コードの（実質的に）機能的な類似性を検証することとを含む、方法。
【請求項１２】
電気エンジン及び前記エンジンのための制御を提供するエンジン制御ユニットハードウェアを備える配置構成であって、前記エンジン制御ユニットハードウェアは、少なくとも1つのソフトウェアプログラマブルユニット及び少なくとも1つのハードウェアプログラマブルユニットを備えるヘテロジニアスハードウェアシステムを備え、前記ユニットは、請求項１〜１０のいずれか一項に記載の方法によって生成されるコードを実行するために適合される、配置構成。
【請求項１３】
前記ソフトウェアプログラマブルユニットはマイクロプロセッサコアであり、前記マイクロプロセッサコアの対応するコードはソフトウェア言語コードであり、前記ハードウェアプログラマブルユニットはプログラマブルロジックマトリクスであり、前記プログラマブルロジックマトリクスの対応するコードはハードウェア記述言語コードである、請求項１２に記載の配置構成。
【請求項１４】
前記ヘテロジニアスハードウェアシステムは、較正に関連するデータ転送をサポートする特定のリソースを含む、請求項１２又は１３に記載の配置構成。
【請求項１５】
請求項１２〜１４のいずれか一項に記載の配置構成並びに前記ヘテロジニアスハードウェアシステム及び前記エンジンに接続される較正機器を備える較正配置構成であって、前記較正機器は、請求項6の方法によって生成されるコードを実行するために適合される、較正配置構成。
【請求項１６】
コンピューター可読コードを含むコンピュータープログラム製品であって、前記コンピューター可読コードは、コンピューターシステム上で実行されると、請求項１〜１１のいずれか一項に記載の方法を前記コンピューターシステムに実行させる、コンピュータープログラム製品。
【請求項１７】
請求項１６に記載のコンピュータープログラム製品を記憶する非一時的機械可読記憶媒体。
【国際調査報告】
2021501953.tif 000016
2021501953.tif 000017
2021501953.tif 000018