(57)【要約】ＦＰＧＡクラウドホストの開発方法およびシステムが提供される。本方法は、開発管理プラットフォームによって実行することができ、開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれ、かつＦＰＧＡクラウドホストのＦＰＧＡに対応する実際の制約ファイルの有効性を検出することと、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理することと、合成処理から得られたバーナーファイルをＦＰＧＡに書き込むことと、を含む。実際の制約ファイルの有効性が検出され、それによりＦＰＧＡハードウェアに対するユーザーの悪意のある攻撃を防ぐ。
2021502648.tif 000002
【特許請求の範囲】
【請求項１】
開発管理プラットフォームに適用されるＦＰＧＡクラウドホストの開発方法であって、
開発デバイスによってアップロードされた設計ファイルに応答して、前記設計ファイルに含まれる実際の制約ファイルの有効性を検出することであって、前記実際の制約ファイルが、前記ＦＰＧＡクラウドホストのＦＰＧＡに対応する、検出することと、
前記実際の制約ファイルが有効であることを検出したことに応答して、前記設計ファイルを合成処理することと、
前記合成処理から得られたバーナーファイルを前記ＦＰＧＡに書き込むことと、を含む、方法。
【請求項２】
前記合成処理から得られた前記バーナーファイルの前記ＦＰＧＡへの前記書き込みの前に、前記方法は、前記合成処理から得られた合成レポートを前記開発デバイスにフィードバックすることをさらに含み、
前記合成処理から得られた前記バーナーファイルの前記ＦＰＧＡへの前記書き込みが、前記開発デバイスによってトリガーされた書き込み命令に応答して、前記書き込み命令に対応する前記バーナーファイルを前記ＦＰＧＡに書き込むことを含む、請求項１に記載の方法。
【請求項３】
前記設計ファイルに含まれる前記実際の制約ファイルの有効性の前記検出が、
ローカルに記憶されているテンプレート制約ファイルと前記実際の制約ファイルとの比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定することに応答して、前記実際の制約ファイルが有効であると決定することを含み、前記テンプレート制約ファイルが前記ＦＰＧＡに対応する、請求項１に記載の方法。
【請求項４】
前記方法は、
前記開発デバイスによってトリガーされた開発要求に応答して、前記テンプレート制約ファイルを前記開発デバイスに送信することをさらに含む、請求項３に記載の方法。
【請求項５】
前記設計ファイルの前記合成処理は、サードパーティのＩＰコアが前記設計ファイルに呼び出されたことを決定することに応答して、ローカルに記憶されている前記呼び出されたサードパーティのＩＰコアおよび前記設計ファイルを合成処理することを含み、
前記合成処理から得られた前記合成レポートの前記開発デバイスへの前記フィードバックは、
前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックすることを含み、前記非機密合成レポートは、前記呼び出されたサードパーティのＩＰコアの情報を含まない、請求項１に記載の方法。
【請求項６】
前記書き込み命令に対応する前記バーナーファイルの前記ＦＰＧＡへの前記書き込みは、
前記バーナーファイルをＦＰＧＡクラウドホストに対応する仮想マシンマネージャに、前記仮想マシンマネージャを通して前記バーナーファイルを前記ＦＰＧＡに書き込むために伝送することを含む、請求項２に記載の方法。
【請求項７】
開発デバイスに適用されるＦＰＧＡクラウドホストの開発方法であって、
設計ファイルを開発管理プラットフォームにアップロードすることであって、前記設計ファイルは、前記開発管理プラットフォームによって、実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理するために、前記ＦＰＧＡクラウドホストのＦＰＧＡに対応する前記実際の制約ファイルを含む、アップロードすることと、
前記開発管理プラットフォームによって送信された合成レポートを受信することと、
前記合成レポートに従ってトリガーされた書き込み命令を、前記開発管理プラットフォームに送信することであって、前記書き込み命令は、前記設計ファイルに対応するバーナーファイルを前記ＦＰＧＡに書き込むように命令する、送信することと、を含む、方法。
【請求項８】
前記設計ファイルの前記開発管理プラットフォームへの前記アップロードの前に、前記方法が、
開発開始動作に応答して開発要求を前記開発管理プラットフォームに送信することと、
前記開発要求に応答して前記開発管理プラットフォームによって送信される前記ＦＰＧＡに対応するテンプレート制約ファイルを受信することと、をさらに含む、請求項７に記載の方法。
【請求項９】
ＦＰＧＡクラウドホストの開発システムであって、
開発デバイスと、
前記開発デバイスと遠隔通信する開発管理プラットフォームと、
ＦＰＧＡクラウドホストにおけるＦＰＧＡと、を含み、
前記開発デバイスは、前記ＦＰＧＡに対応する実際の制約ファイルを含む設計ファイルを設計し、前記得られた設計ファイルを前記開発管理プラットフォームにアップロードするように構成され、
前記開発管理プラットフォームは、前記実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理し、前記合成処理から得られたバーナーファイルを前記ＦＰＧＡに書き込むように構成されている、システム。
【請求項１０】
前記開発デバイスは、前記合成処理から得られ、前記開発管理プラットフォームによってフィードバックされた合成レポートを受信し、前記合成レポートに従ってトリガーされた書き込み命令を前記開発管理プラットフォームに送信するようにさらに構成され、
前記開発管理プラットフォームは、前記合成処理から得られた前記合成レポートを前記開発デバイスにフィードバックし、前記書き込み命令に従って前記バーナーファイルを前記ＦＰＧＡに書き込むようにさらに構成されている、請求項９に記載のシステム。
【請求項１１】
前記開発管理プラットフォームは、
ローカルに記憶されているテンプレート制約ファイルを前記実際の制約ファイルと比較し、比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定したことに応答して、前記実際の制約ファイルが有効であることを決定するように具体的に構成され、前記テンプレート制約ファイルは、前記ＦＰＧＡに対応する、請求項９に記載のシステム。
【請求項１２】
前記開発デバイスは、開発開始動作に応答して開発要求を前記開発管理プラットフォームに送信するようにさらに構成され、
前記開発管理プラットフォームは、前記開発要求に応答して前記テンプレート制約ファイルを前記開発デバイスに送信するようにさらに構成されている、請求項１１に記載のシステム。
【請求項１３】
前記開発管理プラットフォームは、サードパーティのＩＰコアを記憶し、
前記開発管理プラットフォームは、
前記サードパーティのＩＰコアが前記設計ファイルに呼び出されたことを決定したことに応答して、前記呼び出されたサードパーティのＩＰコアおよび前記設計ファイルを合成処理し、前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックするように具体的に構成され、前記非機密合成レポートは、前記呼び出されたサードパーティのＩＰコアの情報を含まない、請求項９に記載のシステム。
【請求項１４】
前記開発管理プラットフォームによって送信された前記バーナーファイルを受信し、前記バーナーファイルを前記ＦＰＧＡに書き込むように構成された仮想マシンマネージャをさらに含む、請求項９に記載のシステム。
【請求項１５】
前記ＦＰＧＡとのデータアクセスリンクを有し、前記設計ファイルにコードを配置し、前記データアクセスリンクを通して前記ＦＰＧＡにアクセスするように構成されたユーザー仮想マシンをさらに含む、請求項９に記載のシステム。
【請求項１６】
開発管理プラットフォームであって、
プロセッサと、
前記プロセッサによって実行されたとき、請求項１〜６のいずれかに記載のＦＰＧＡクラウドホストの開発方法を実施する１つ以上のコンピュータ可読命令を記憶するメモリと、を含む、開発管理プラットフォーム。
【請求項１７】
開発デバイスであって、
プロセッサと、
前記プロセッサによって実行されたとき、請求項７または８に記載のＦＰＧＡクラウドホストの開発方法を実施する１つ以上のコンピュータ可読命令を記憶するメモリと、を含む、開発デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、全体が参照によって本明細書に組み込まれる、２０１７年１１月１３日に出願され、「ＦＰＧＡ  ＣＬＯＵＤ  ＨＯＳＴ  ＤＥＶＥＬＯＰＭＥＮＴ  ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ」という表題の中国特許出願第２０１７／１１１１７７８４．６号の優先権を主張する。
【０００２】
本発明は、インターネット技術の分野に関し、より詳細には、ＦＰＧＡクラウドホストの開発方法およびシステムに関する。
【背景技術】
【０００３】
ＦＰＧＡクラウドホストは、ＦＰＧＡクラウドサーバとも呼ばれ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）に基づくコンピューティングサービスである。一方で、これは、並列演算処理を通してサーバーの計算パフォーマンス、エネルギー効率比およびリアルタイム計算を改善する異機種コンピューティングプラットフォームに属するハードウェアアーキテクチャである。ＦＰＧＡクラウドホストはまた、アプリケーションのための基礎をなすハードウェアアクセラレーションを実装する。他方で、クラウドサービスは、ユーザーがオンデマンドでＦＰＧＡの使用料を支払い得るように、ユーザーに提供され、それによりＦＰＧＡの使用コストを大幅に削減できる。
【０００４】
ＦＰＧＡクラウドホストは、ＦＰＧＡデバイスを伴う共通のクラウドホスト（仮想マシン）であると理解され得る。ＦＰＧＡクラウドホストを購入後、ユーザーがＦＰＧＡを使用したい場合、自分がバーナーファイルを得るためにＦＰＧＡを開発し、それからファイルをＦＰＧＡに書き込む必要がある。それにより、ＦＰＧＡはユーザーによって開発された機能を実装する。
【０００５】
従来のＦＰＧＡ開発環境およびプロセスでは、ユーザーが自己のオフライン環境、つまり、ユーザー側環境においてＦＰＧＡを開発およびデバッグし、ＦＰＧＡハードウェアは開発者によって所有される。しかしながら、ＦＰＧＡクラウドホストのコンテキストでは、ＦＰＧＡの開発は、いくつかの新しいセキュリティ課題に直面し、ユーザーがＦＰＧＡを開発し得ることを保証するだけでなく、悪意のある攻撃を防ぐためにクラウドホストのセキュリティも保証することが必要である。
【発明の概要】
【０００６】
上記を考慮して、ユーザーによるＦＰＧＡの開発を達成し、ＦＰＧＡハードウェアに対する悪意のある攻撃を防ぐためのＦＰＧＡクラウドホストの開発方法およびシステムが、本発明の実施形態において提供される。
【０００７】
第１の態様では、開発管理プラットフォームに適用されるＦＰＧＡクラウドホストの開発方法が、本発明の実施形態において提供され、本方法は、
開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれる実際の制約ファイルの有効性を検出することであって、実際の制約ファイルがＦＰＧＡクラウドホストのＦＰＧＡに対応する、検出することと、
実際の制約ファイルが有効であるという検出に応答して、設計ファイルを合成処理することと、
合成処理から得られたバーナーファイルをＦＰＧＡに書き込むことと、を含む。
【０００８】
任意に、合成処理から得られたバーナーファイルをＦＰＧＡに書き込む前に、本方法は、
合成処理から得られた合成レポートを開発デバイスにフィードバックすることをさらに含み、
合成処理から得られたバーナーファイルをＦＰＧＡに書き込むことが、
開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応するバーナーファイルをＦＰＧＡに書き込むことを含む。
【０００９】
第２の態様では、開発デバイスに適用されるＦＰＧＡクラウドホストの開発方法が、本発明の実施形態において提供され、本方法は、
設計ファイルを開発管理プラットフォームにアップロードすることであって、設計ファイルは、開発管理プラットフォームによって、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理するためのＦＰＧＡクラウドホストのＦＰＧＡに対応する実際の制約ファイルを含む、アップロードすることと、
開発管理プラットフォームによって送信された合成レポートを受信することと、
合成レポートに従ってトリガーされた書き込み命令を開発管理プラットフォームに送信することであって、書き込み命令が設計ファイルに対応するバーナーファイルをＦＰＧＡに書き込むように命令する、送信することと、を含む。
【００１０】
第３の態様では、ＦＰＧＡクラウドホストの開発システムが、本発明の実施形態に提供され、
開発デバイスと、開発デバイスと遠隔通信する開発管理プラットフォームと、ＦＰＧＡクラウドホストにおけるＦＰＧＡとを含み、
開発デバイスは、ＦＰＧＡに対応する実際の制約ファイルを含む設計ファイルを設計し、得られた設計ファイルを開発管理プラットフォームにアップロードするように構成され、
開発管理プラットフォームは、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理し、合成処理から得られたバーナーファイルをＦＰＧＡに書き込むように構成される。
【００１１】
例示的な設計では、プロセッサおよびメモリは、上記開発管理プラットフォームの構造に含まれる。メモリは、上記第１の態様におけるＦＰＧＡクラウドホストの開発方法を実施するために開発管理プラットフォームをサポートするためのプログラムを記憶するように構成され、プロセッサはメモリに記憶されたプログラムを実行するように構成される。開発管理プラットフォームは、別のデバイスまたは通信ネットワークと通信するために開発管理プラットフォーム用通信インターフェースをさらに含み得る。
【００１２】
開発管理プラットフォームによって使用されるコンピュータソフトウェア命令を記憶するように構成されたコンピュータ記憶媒体は、本発明の実施形態において提供され、上記第１の態様におけるＦＰＧＡクラウドホストの開発方法を実施するためのプログラムを含む。
【００１３】
別の例示的な設計では、プロセッサおよびメモリは、上記開発デバイスの構造に含まれる。メモリは、上記第２の態様におけるＦＰＧＡクラウドホストの開発方法を実施するために開発デバイスをサポートするためのプログラムを記憶するように構成され、プロセッサはメモリ中に記憶されたプログラムを実行するように構成される。開発デバイスは、別のデバイスまたは通信ネットワークと通信するために開発デバイス用の通信インターフェースをさらに含み得る。
【００１４】
開発デバイスによって使用されるコンピュータソフトウェア命令を記憶するように構成された別のコンピュータ記憶媒体は、本発明の実施形態において提供され、上記第２の態様におけるＦＰＧＡクラウドホストの開発方法を実施するためのプログラムを含む。
【００１５】
本発明の実施形態において提供されたＦＰＧＡクラウドホストの開発方法およびシステムによれば、ユーザーは、ＦＰＧＡ用のユーザーによって実際に設計された実際の制約ファイルを含む設計ファイルを得るためにユーザー側における開発デバイスでＦＰＧＡを開発および設計し、それから開発デバイスを通して設計ファイルを開発管理プラットフォームにアップロードし得る。開発管理プラットフォームは、制約ファイルを変更することによってＦＰＧＡをユーザーが悪意を持って攻撃するのを防ぐために実際の制約ファイルの有効性を検出し、それによりＦＰＧＡハードウェアのセキュリティを保証する。
【図面の簡単な説明】
【００１６】
本発明の実施形態または従来技術における技術的解決策をより明確に説明するために、実施形態または従来技術の説明で使用される添付図面を以下に簡単に紹介する。以下の説明における添付図面は、単に本発明のいくつかの実施形態を表すことは明らかである。当業者はまた、創造的努力なしに添付図面に従って他の図面を得ることができる。
【００１７】
【図１】本発明の一実施形態によるＦＰＧＡクラウドホストの開発システムの実施形態１の概略構造図である。
【図２】本発明の一実施形態によるＦＰＧＡクラウドホストの開発システムの実施形態２の概略構造図である。
【図３】本発明の一実施形態によるＦＰＧＡクラウドホストの開発方法の実施形態１のフローチャートである。
【図４】本発明の一実施形態によるＦＰＧＡクラウドホストの開発方法の実施形態２のフローチャートである。
【図５】本発明の一実施形態による開発管理プラットフォームの概略構造図である。
【図６】本発明の一実施形態による開発デバイスの概略構造図である。
【発明を実施するための形態】
【００１８】
本発明の実施形態の目的、技術的解決策、および利点をより明確にするために、本発明の実施形態における技術的解決策を、本発明の実施形態における添付図面を参照して以下に明確および完全に説明する。説明される実施形態は、本発明の実施形態のすべてではなく一部にすぎないことは明らかである。創造的努力なしに本発明の実施形態に基づいて当業者によって得られた全ての他の実施形態は、本発明の保護範囲内に包含される。
【００１９】
本発明の実施形態で使用される用語は、特定の実施形態を説明する目的のためだけであり、本発明を限定することを意図していない。本発明の実施形態および添付の特許請求の範囲で使用される単数形「１つ（ｏｎｅ）」、「前記（ｓａｉｄ）」および「その（ｔｈｅ）」はまた、文脈において他の意味が明確に示されていない限り、複数形を含むことが意図され、一般に「複数の」には、少なくとも２つが含まれるが、少なくとも１つが含まれるケースを除外しない。
【００２０】
このテキストで使用される「および／または」という用語は、関連付けられた目的語を説明する単なる関連付けであることを理解すべきであり、３つの関係性があり得ることを示している。例えば、Ａおよび／またはＢは、Ａのみが存在する、ＡとＢの両方が存在する、Ｂのみが存在するという３つのケースを示し得る。さらに、このテキスト中の文字「／」は、一般に文字の前後の関連付けられた目的語が「ｏｒ」関係にあることを意味する。
【００２１】
文脈に応じて、本明細書で使用される「もし〜ならば」および「〜の場合には」という単語は、「．．．するとき（ｗｈｅｎ）」、「．．．するとき（ａｓ）」または「決定したことに応答して」または「検出したことに応答して」と解釈され得る。同様に、文脈に応じて、「もし決定するならば」または「もし（既定の条件またはイベントを）検出するならば」というフレーズは、「決定するときは」もしくは「決定したことに応答して」または「（既定の条件またはイベントを）検出するときは」もしくは「（既定の条件またはイベントを）検出したことに応答して」と解釈され得る。
【００２２】
「含む」、「備える」という用語、またはそれらの任意の他の変形は、一連の要素を含む商品またはシステムが、明確にリストされる要素を含むだけでなく、明確にリストされない他の要素、または商品やシステムに固有の要素も含むように、排他的包含をカバーするように意図されていることも留意すべきである。それ以上の制限なしに、「．．．を含む」という表現によって定義された要素は、他の同一要素もまた、その要素を含む商品またはシステムに存在し得ることを除外しない。
【００２３】
さらに、本発明の実施形態におけるステップ間のシーケンスは調整可能であり、ステップは以下に示されたシーケンスで必ずしも実行されないことに留意する価値がある。
【００２４】
図１は、本発明の一実施形態によるＦＰＧＡクラウドホストの開発システムの実施形態１の概略構造図である。図１に示すように、システムは、
開発デバイス、開発デバイスと遠隔通信する開発管理プラットフォーム、およびＦＰＧＡクラウドホストのＦＰＧＡを含む。
【００２５】
開発デバイスは、ユーザー側で所有される開発デバイスであり、開発管理プラットフォームは、ネットワーク側またはクラウド管理プラットフォームであり、これは、例えば、サーバーであり得る。開発デバイスおよび開発管理プラットフォームは、クライアント端末とサーバーとの関係として理解され得、つまり、開発デバイスは、ユーザー開発をサポートするクライアント端末を提供され得る。
【００２６】
開発デバイスは、ユーザーによって選択され、ＦＰＧＡ開発用のデバイスである。任意に、ユーザーのコンピュータ、またはＦＰＧＡクラウドホストの仮想マシン等、ユーザーのオフラインデバイスであり得る。一般に、ユーザーは、コーディング、制約設計、および合成レポートの閲覧等、このデバイスでＦＰＧＡ設計および開発に関連した作業を実行し得る。
【００２７】
詳細には、開発デバイスは、ユーザーが設計ファイルを設計し、得られた設計ファイルを開発管理プラットフォームにアップロードできるように構成される。設計ファイルは、ＦＰＧＡに対応する実際の制約ファイルを含む。それに応じて、開発管理プラットフォームは、実際の制約ファイルの有効性を検出し、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理し、合成処理から得られたバーナーファイルをＦＰＧＡに書き込むように構成される。
【００２８】
任意の実施形態では、開発デバイスはさらに、合成処理から得られ、開発管理プラットフォームによってフィードバックされた合成レポートを受信し、合成レポートによってトリガーされた書き込み命令を開発管理プラットフォームに送信するように構成される。それに応じて、開発管理プラットフォームはさらに、合成処理から得られた合成レポートを開発デバイスにフィードバックし、書き込み命令に従って合成処理から得られたバーナーファイルをＦＰＧＡに書き込むように構成される。
【００２９】
実際のアプリケーションでは、ユーザーは、開発デバイスにおいて自分自身が必要とする開発ファイル用のコードを書き込み、最終的に設計ファイル形成するために書き込まれたコードをコンパイルおよびデバッグし得る。設計ファイルは、実際の制約ファイルと呼ばれる、実際に設計された制約ファイルだけでなくユーザーによって書き込まれたコードも含み得る。
【００３０】
書き込まれたコードがコンパイルされるとき、多くの場合、ＦＰＧＡの制約ファイルが必要になり、テンプレート制約ファイルと呼ばれ、実際の制約ファイルと区別される。したがって、開発デバイスはさらに、テンプレート制約ファイルを要求するために、ユーザーによってトリガーされた開発開始動作に応答して開発要求を開発管理プラットフォームに送信するように構成される。したがって、開発管理プラットフォームはさらに、開発要求に応答してテンプレート制約ファイルを開発デバイスに送信するように構成される。
【００３１】
ユーザーは、自分で購入したＦＰＧＡクラウドホストを開発し、開発管理プラットフォームは、統合管理プラットフォームとみなすことができ、これは、異なるユーザーがそれぞれのＦＰＧＡクラウドホストを開発することを支援し得る。したがって、ユーザーのＦＰＧＡクラウドホスト用の識別情報の設定項目は、開発デバイスにおいて設けることができる。ユーザーが設定項目を書き込み、あらかじめ設定された制御またはメニュー項目をトリガーした後、ユーザーが開発開始動作をトリガーしたとみなされる。したがって、ＦＰＧＡクラウドホストの識別情報は、開発管理プラットフォームが、識別情報に基づいてＦＰＧＡクラウドホストでＦＰＧＡのテンプレート制約ファイルを取得し、得られたテンプレート制約ファイルを開発デバイスにフィードバックするように開発デバイスによって開発管理プラットフォームに送信される開発要求で伝達され得る。任意で、複数のＦＰＧＡクラウドホスト中のＦＰＧＡに対応するテンプレート制約ファイルは、ＦＰＧＡクラウドホストの識別情報をストレージインデックスとすることによって開発管理プラットフォームに事前記憶され得る。
【００３２】
一般に、本発明の実施形態において述べられた制約ファイルの機能は、ＦＰＧＡ入出力信号がバインドされるチップピン、つまり、ＦＰＧＡのどのピンから信号が入力され、およびＦＰＧＡのどのピンから信号が出力されるかを定義することである。加えて、制約ファイルはさらに、一部の他の制約だけでなく、ＦＰＧＡのさまざまなクロック関係、レベル規格等を定義する。
【００３３】
開発管理プラットフォームは、ユーザーによって開発されるＦＰＧＡのテンプレート制約ファイルを、開発デバイスを通してユーザーに提供する。しかしながら、実際の開発中に、ユーザーは、テンプレート制約ファイル上で修正、削除、追加および他の動作を実行することができ、それにより実際に設計された実際の制約ファイルを形成し、その動作がＦＰＧＡ自体ならびにその周辺のハードウェアおよびソフトウェアシステムにダメージを与え得る。したがって、ＦＰＧＡのセキュリティを保証し、かつユーザーからの悪意のある攻撃を防ぐために、ユーザーがサブミットした後、すなわち、開発デバイスを通して開発管理プラットフォームに設計ファイルをアップロードした後、開発管理プラットフォームは、設計ファイルの有効性を検出し、特に設計ファイル中の実際の制約ファイルの有効性を検出する必要がある。任意に、開発管理プラットフォームは、ＦＰＧＡに対応し、ローカルに記憶されたテンプレート制約ファイルと実際の制約ファイルを比較し、そのテンプレート制約ファイルが実際の制約ファイルと一致していることを比較の結果が示す場合、実際の制約ファイルは有効であると決定し得る。テンプレート制約ファイルが実際の制約ファイルと一致していることは、この２つのファイルに含まれるさまざまな制約が相応に同じであることを意味する。例えば、信号が実際の制約ファイルにおいてＦＰＧＡのピンから入力されるように制約されている場合、信号がテンプレート制約ファイルにおいてもピンから入力されるように制約されるとすると、ピン上の信号入力制約は２つのファイルにおいて一致している。
【００３４】
実際の制約ファイルが無効であることを開発管理プラットフォームによって検出されるとき、エラープロンプトメッセージは、ユーザーが設計ファイルを再設計できるように開発デバイスに送信され得る。実際の制約ファイルが有効であることを開発管理プラットフォームによって検出されるとき、開発デバイスによってアプロードされる設計ファイルは、そのときに合成処理され得る。実際のアプリケーションでは、合成処理は既存の合成ツールを使用することによって実現され得る。したがって、開発管理プラットフォームには、合成ツールが設けられている。
【００３５】
合成処理は、分析、合成、および最適化の３つのステップを含む。設計ファイルは、ハードウェア記述言語（ＨＤＬ）で記述され得る。分析とは、標準ＨＤＬ文法規則を使用することによってＨＤＬ文法ＨＤＬ設計ファイルを分析し、文法エラーを訂正することを意味する。合成とは、選択されたＦＰＧＡ構造とデバイスを対象としてＨＤＬおよびＦＰＧＡネットリストファイルを論理的に合成し、設計ファイルを実際のゲートレベル回路ではなく、ＡＮＤゲート、ＯＲゲート、ＮＯＮゲート、ＲＡＭ、フリップフロップ、および他の基本論理ユニットから成る論理接続のネットリストにコンパイルすることを意味する。最適化とは、ユーザーの設計制約に従って速度および領域を論理的に最適化してＦＰＧＡレイアウトおよび配線ツールによる使用のために最適化されたＦＰＧＡネットリストファイルを生成することを意味する。合成完了後、多くの合成レポートおよびバーナーファイルが出力され得る。例えば、合成レポートは、タイミングレポート、電力レポート、温度レポート等を含み、バーナーファイルは、アプリケーションによってコンパイルされた実行可能ファイルと比較され得る。合成後のリソース使用やレベル情報等、合成ステータスおよび合成結果は、レポートファイルにリストされる。
【００３６】
ＦＰＧＡクラウドホストの開発プロセスでは、ユーザーは、開発の繰り返しを回避するために、サードパーティのＩＰコア、つまり、サードパーティの知的財産コアを使用し得ることを留意すべきである。ユーザーは、認証後（購入または他の方法による）、これらのＩＰコアを使用し得る。
【００３７】
簡単に言えば、ＩＰコアは機能を実装するモジュールである。ユーザーは、対応する機能を実装するためにアプリケーションコードのＩＰコアを直接呼び出すことができ、これは、開発の繰り返しを回避するために、既存機能モジュールを直接使用することに相当する。
【００３８】
サードパーティのＩＰコアは、ユーザーの開発効率を改善し、開発の繰り返しを回避することができるが、一旦ＩＰコアが拡散されると、ユーザーは他の認証されていないユーザーにＩＰコアを提供することができるか、またはＩＰコアをインターネット等に拡散することができ、「１度の購入ですべて使用できる」という問題につながるため、ユーザーが自分自身のデバイスにＩＰコアを出力するのを技術的に防ぐ必要がある。したがって、サードパーティのＩＰコアの使用は安全であり、サードパーティのＩＰコアが認証されていないユーザーに拡散されないことを保証するために、サードパーティのＩＰコアを保護する解決策が、本発明の実施形態においてさらに提供される。
【００３９】
具体的には、開発管理プラットフォームは、あらかじめユーザーに認証された利用可能なサードパーティのＩＰコアを取得し、サードパーティのＩＰコアをローカルに記憶することができ、つまり、ユーザーが利用できるサードパーティのＩＰコアは、開発管理プラットフォームに記憶される。上述したＦＰＧＡクラウドホストの識別情報の設定項目のように、開発デバイスは、ユーザーＩＤの設定項目をさらに提供することができ、それによりユーザーＩＤも、上記の開発要求に含めることができる。したがって、対応するサードパーティのＩＰコアは、サードパーティのＩＰコアが維持されるサーバーからユーザーＩＤに基づいて開発管理プラットフォームによって取得され得る。
【００４０】
本発明の実施形態では、サードパーティのＩＰコアは開発管理プラットフォームに記憶されるが、ユーザーに公開されることはなく、つまり、ユーザーの開発デバイスに提供されることはない。
【００４１】
ユーザーが開発プロセスにおいてサードパーティのＩＰコアを使用する必要があるとき、それは、呼び出しによって使用され得る。例えば、ユーザーが利用できるサードパーティのＩＰコアの機能記述および入力パラメータは、ユーザーが実際の要求に従ってサードパーティのＩＰコアを呼び出すことを選択し得るように、ユーザーに提供され得る。したがって、ユーザーが開発プロセスにおいてサードパーティのＩＰコアを呼び出す必要があるとき、ユーザーは設計ファイル中のサードパーティのＩＰコアを呼び出すための呼び出しコードのみを書き込む必要があり、これは、どのサードパーティのＩＰコアが呼び出される必要があるのかを宣言することに相当する。
【００４２】
ユーザーがサードパーティのＩＰコアを呼び出すとき、開発管理プラットフォームはさらに、サードパーティのＩＰコアが設計ファイルに呼び出される場合、呼び出されたサードパーティのＩＰコアおよび設計ファイルを合成処理し、合成処理から得られた事前定義された非機密合成レポートを開発デバイスにフィードバックするように構成され、呼び出されたサードパーティのＩＰコアの情報は、非機密合成レポートに含まれない。
【００４３】
つまり、サードパーティのＩＰコアがユーザーの設計ファイルに呼び出されるとき、設計ファイルに加えて、呼びだれたサードパーティのＩＰコアもまた合成処理の入力に含まれる。任意に、サードパーティのＩＰコアが呼び出されるか否か、およびどのサードパーティのＩＰコアが呼び出されるかは、サードパーティのＩＰコアの名前が設計ファイルに含まれるか否かを分析することにより開発管理プラットフォームによって決定され得る。
【００４４】
さらに、本発明の実施形態において、サードパーティのＩＰコアを保護するために、サードパーティのＩＰコアをユーザーに公開しないことに加えて、サードパーティのＩＰコアが、リバースエンジニアリングまたは抽出され得る合成結果の合成レポートは、ユーザーに提供されない。したがって、呼び出されたサードパーティのＩＰコアおよび設計ファイル上で合成処理を実行後、開発管理プラットフォームは、合成処理の結果において事前定義された非機密合成レポートのみを開発デバイスにフィードバックし、呼び出されたサードパーティのＩＰコアの情報は、非機密合成レポートに含まれない、つまり、サードパーティのＩＰコアをリバースエンジニアリングまたは抽出することができない合成レポートである。
【００４５】
合成処理から得られた合成レポートの量およびタイプは、多くの場合、既定されていて、したがって、合成レポートは、事前定義され得るサードパーティのＩＰコアの関連情報を含む可能性が高く、そのような合成レポートは機密合成レポートと定義され、他の合成レポートは非機密合成レポートと定義される。
【００４６】
したがって、サードパーティのＩＰコアは、サードパーティのＩＰコアおよびサードパーティのＩＰコアの情報を含む合成結果をユーザーにフィードバックしないことによって保護され得る。
【００４７】
次に、開発デバイスを通して受信された合成レポートを分析することによって、ユーザーはＦＰＧＡ用の設計ファイルがさらに修正される必要があるか否かを決定し得る。修正する必要がある場合、設計ファイルは再設計され、それから、上記の設計ファイルのアップロード、有効性検出、合成および他の処理が再度トリガーされるであろう。修正する必要がない場合、ユーザーは開発デバイスを通して現在の設計ファイル用の書き込み命令をトリガーすることができ、これは、どの設計ファイルがＦＰＧＡに書き込まれるかまたは書き込まれる必要があるかに対応するバーナーファイルを示す。
【００４８】
任意に、設計ファイル名とチェックボックスと設計ファイルに対応する書き込み制御等、設計ファイルのＩＤは、開発デバイスに表示することができ、ユーザーは設計ファイルのチェックボックスを選択して、対応する書き込み制御をクリックすることによって上記書き込み命令をトリガーすることができる。したがって、開発管理プラットフォームは、書き込み命令に担持された設計ファイルのＩＤに従って、ユーザーがプログラムしたいバーナーファイルに対応する設計ファイルを取得することができ、それによって設計ファイルの合成処理から得られたバーナーファイルをＦＰＧＡに書き込むことができる。
【００４９】
実際には、ユーザーは、開発プロセスにおいて複数の設計ファイルを開発することができ、異なる設計ファイルは、異なるバーナーファイルを生成するために開発管理プラットフォームによって合成されるであろう。合成後に得られた異なる設計ファイルに対応するバーナーファイルは、開発管理プラットフォームに記憶され、どのバーナーファイルをＦＰＧＡに書き込まれるべきかがユーザーによって選択され得る。
【００５０】
図２に示すように、任意に、ＦＰＧＡクラウドホストの開発システムは、ＦＰＧＡクラウドホストに対応する、つまり、ＦＰＧＡクラウドホストを管理するための仮想マシンマネージャ（ハイパーバイザー）をさらに含み得る。したがって、ＦＰＧＡへのバーナーファイルの書き込みは、仮想マシンマネージャを通して開発管理プラットフォームによって実現され得る。具体的には、仮想マシンマネージャは、開発管理プラットフォームによって送信されたバーナーファイルを受信し、あらかじめ設定された書き込みプログラムを実行することによってバーナーファイルをＦＰＧＡに書き込むように構成される。
【００５１】
さらに、図２に示すように、ＦＰＧＡクラウドホストの開発システムはさらに、ＦＰＧＡとのデータアクセスリンクを有し、設計ファイルにおいてコードを配置し、かつデータアクセスリンクを通してＦＰＧＡにアクセスするように構成されたユーザー仮想マシンを含む。
【００５２】
ユーザー仮想マシンは、ユーザーに配信される仮想マシンであり、これは、ユーザーがＦＰＧＡデバイスを見て、自分自身の設計コードを配置し、データリンクを通してＦＰＧＡデバイスにアクセスすることができる。
【００５３】
仮想マシンマネージャはユーザー仮想マシンおよびＦＰＧＡクラウドホストを管理し、ユーザーは仮想マシンマネージャに入ることができないが、仮想マシンマネージャはユーザー仮想マシンに対してＦＰＧＡのダウンロードリンクを公開しない。したがって、ユーザーは、ユーザー仮想マシンにおいてＦＰＧＡのダウンロード操作を直接開始することができない、つまり、ユーザーは直接バーナーファイルをＦＰＧＡに書き込むことができない。ＦＰＧＡのダウンロードリンクは、ユーザーがＦＰＧＡ上でダウンロードタイプの動作を実行できず、アクセス動作のみ実行できるように、ユーザーに公開されず、それによりユーザーが悪意のある攻撃要素を含むバーナーファイルをＦＰＧＡに書き込むのを防ぐ。さらに、仮想マシンマネージャを通してＦＰＧＡに書き込まれるバーナーファイルは、有効性検出後の設計ファイルの合成結果からのものであり、それによりＦＰＧＡへの悪意のある攻撃も防ぐ。
【００５４】
結論として、ユーザーは、ＦＰＧＡ用のユーザーによって実際に設計された実際の制約ファイルを含む設計ファイルを得るためにユーザー側において開発デバイスでＦＰＧＡを開発および設計することができ、そして開発デバイスを通して設計ファイルを開発管理プラットフォームにアップロードすることができる。開発管理プラットフォームは、実際の制約ファイルの有効性を検出してユーザーが制約ファイルを変更することによって悪意を持ってＦＰＧＡを攻撃するのを防ぐ。そして、開発管理プラットフォームは、設計ファイルを合成処理し、合成処理の結果における合成レポートをユーザーが閲覧するように開発デバイスにフィードバックし、設計ファイルまたは合成レポート用のユーザーによってトリガーされた書き込み命令に応答して対応する合成処理の結果に含まれるバーナーファイルをＦＰＧＡにプログラムし、それによりＦＰＧＡの開発を実現しながらＦＰＧＡハードウェアのセキュリティを保証する。
【００５５】
上記開発システムの実際の使用における開発プロセスは、以下の手順を含み得る実際の例を用いて以下に簡単に説明する。
【００５６】
ａ．ユーザーは、開発デバイスを通して、プロジェクトファイル、最上位ファイル、制約ファイル等を含む、ＦＰＧＡ基本プロジェクトを取得する。
【００５７】
上述のように、ユーザーは、開発デバイスの開発インターフェースにおいて開発開始動作を実行することによって開発管理プラットフォームに開発要求の送信をトリガーすることができ、開発要求に応答して、開発管理プラットフォームは、上記の制約ファイル、つまり、上述されたテンプレート制約ファイルを含むＦＰＧＡ基本プロジェクトを、ユーザーが開発に使用するために、ユーザーの開発デバイスにフィードバックし得る。
【００５８】
ｂ．ユーザーは、設計ファイルを得るために、アプリケーションコーディング、シミュレーション等を含む開発デバイスにおいてプロジェクト開発を実行する。
【００５９】
ｃ．ユーザーは、開発の完了後に設計ファイルを開発管理プラットフォームにサブミットする。
【００６０】
ｄ．開発管理プラットフォームは、ユーザーによってサブミットされた設計ファイルの有効性を検出し、設計ファイルが無効であることが検出された場合、エラープロンプトメッセージがユーザーに返され、プロセスはステップｂに戻り、そして、設計ファイルが有効であることが検出された場合、プロセスは次のステップに進む。
【００６１】
ｅ．開発管理プラットフォームは、サードパーティのＩＰコアがユーザーの設計ファイルに呼び出されるか否かを決定する。肯定であれば、呼び出されたサードパーティのＩＰコアおよび設計ファイルは、合成処理される必要があり、否定であれば、設計ファイルは直接合成処理される。
【００６２】
ｆ．非機密合成結果が開発デバイスに返される。
【００６３】
ｇ．ユーザーは、合成結果を分析し、ＦＰＧＡをプログラム（ダウンロード）するか否かを決定し、否定であれば、プロセスは、ＦＰＧＡの設計ファイルが修正されるステップｂに戻る。肯定であれば、プロセスは次のステップに進む。
【００６４】
ｈ．開発管理プラットフォームは、書き込まれるバーナーファイルを仮想マシンマネージャに送信し、次に、仮想マシンマネージャは、関連ドライブを呼び出してＦＰＧＡを書き込む。
【００６５】
ｉ．開発管理プラットフォームは、ＦＰＧＡが正常に書き込まれたことをユーアーに通知し、ユーザーは、ユーザー仮想マシンを通してＦＰＧＡへのアクセスを開始する。
【００６６】
図３は、本発明の実施形態によるＦＰＧＡクラウドホストの開発方法の実施形態１のフローチャートである。本実施形態によるＦＰＧＡクラウドホストの開発方法は、ユーザーによるＦＰＧＡクラウドホストにおけるＦＰＧＡの開発を実施するために用いられる。本方法は、上記の開発システムにおいて開発管理プラットフォームによって実施される。開発管理プラットフォームはサーバーであり得る。図３に示すように、本方法は以下のステップを含む。
【００６７】
３０１では、ＦＰＧＡクラウドホストのＦＰＧＡに対応するテンプレート制約ファイルは、開発デバイスによってトリガーされた開発要求に応答して開発デバイスに送信される。
【００６８】
ステップ３０１は、オプションのステップであることに留意するべきである。実際には、ユーザーはまた、他の方法でテンプレート制約ファイルを得ることができ、例えば、ユーザーが自分自身で購入したＦＰＧＡクラウドホストにログインし、ＦＰＧＡクラウドホストを通してテンプレート制約ファイルを得る。
【００６９】
３０２では、開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれる実際の制約ファイルの有効性が検出され、実際の制約ファイルは、ＦＰＧＡクラウドホストのＦＰＧＡに対応する。
【００７０】
任意に、開発管理プラットフォームは、ローカルに記憶されたテンプレート制約ファイルと設計ファイルにおける実際の制約ファイルとを比較し、比較の結果が、テンプレート制約ファイルが実際の制約ファイルと一致していることを示す場合、実際の制約ファイルが有効であると決定することができ、そうでなければ、実際の制約ファイルが無効であると決定することができる。
【００７１】
３０３では、合成処理は、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルに適用される。
【００７２】
任意に、サードパーティのＩＰコアは、ユーザーの設計ファイルでスケジュールされ得る。したがって、サードパーティのＩＰコアが設計ファイルに呼び出される場合、ローカルに記憶された呼び出されたサードパーティのＩＰコアおよび設計ファイルが合成処理される。そうでなければ、サードパーティのＩＰコアが呼び出されない場合、設計ファイルは合成処理される。
【００７３】
任意に、合成処理後、合成処理から得られたバーナーファイルは直接ＦＰＧＡに書き込まれ得る。プロセスはまた、以下の方法で実行され得る。
【００７４】
３０４では、合成処理から得られた合成レポートが開発デバイスにフィードバックされる。
【００７５】
合成処理から得られたどの合成レポートが、機密合成レポートであり、そしてどの合成レポートが非機密合成レポートであるかは、事前定義され得る。呼び出されたサードパーティのＩＰコアの情報は、非機密合成レポートに含まれない。したがって、合成処理後、非機密合成レポートのみが開発デバイスにフィードバックされる。
【００７６】
３０５では、開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応するバーナーファイルがＦＰＧＡに書き込まれ、バーナーファイルは合成処理から得られる。
【００７７】
ユーザーが、設計ファイルをさらに修正する必要がないことを受信した合成レポートに基づいて決定した場合、設計ファイルの書き込み命令はトリガーされ得る。開発管理プラットフォームは、書き込み命令に基づいて設計ファイルに対応するバーナーファイルをＦＰＧＡにプログラムする。任意で、開発管理プラットフォームは、バーナーファイルをＦＰＧＡクラウドホストに対応する仮想マシンマネージャに、仮想マシンマネージャを通してバーナーファイルをＦＰＧＡに書き込むために伝送し得る。
【００７８】
本実施形態においてカバーされない詳細な説明のプロセスは、上記システムの実施形態において開発管理プラットフォームに関連した記述を参照して得ることができ、これは、本明細書で詳細に記述する。
【００７９】
本実施形態では、ユーザーによるＦＰＧＡクラウドホストにおけるＦＰＧＡの開発は、ネットワーク側の開発管理プラットフォームを通して遠隔支援によって完了される。第１に、ユーザーによってアップロードされた設計ファイルの有効性が検出されて、ユーザーからのＦＰＧＡハードウェアに対する悪意のある攻撃を回避する。第２に、保護されるサードパーティのＩＰコアは、ユーザーに公開されず、合成プロセスは開発管理プラットフォームの側で完了し、合成結果における機密部分はユーザーに提供されないことによりサードパーティのＩＰコアを保護する。第３に、ＦＰＧＡは開発管理プラットフォームを通して書き込まれ、これは、ユーザーによるＦＰＧＡの直接的な書き込みによって引き起こされる悪意のある攻撃も防ぐ。
【００８０】
図４は、本発明の一実施形態によるＦＰＧＡクラウドホストの開発方法の実施形態１のフローチャートである。本実施形態によるＦＰＧＡクラウドホストの開発方法は、ユーザーによるＦＰＧＡクラウドホストにおけるＦＰＧＡの開発を実施するために使用される。本方法は、上記の開発システムにおける開発デバイスによって実施される。図４に示すように、本方法は以下のステップを含む。
【００８１】
４０１では、開発要求は、ユーザーによってトリガーされた開発開始動作に応答して、開発管理プラットフォームに送信される。
【００８２】
４０２では、開発要求に応答して開発管理プラットフォームによって送信されるＦＰＧＡクラウドホストのＦＰＧＡに対応するテンプレート制約ファイルが受信される。
【００８３】
ステップ４０１〜４０２はオプションのステップであることに留意すべきである。実際には、テンプレート制約ファイルはまた、例えば、ユーザーが自分自身で購入したＦＰＧＡクラウドホストにログインし、ＦＰＧＡクラウドホストを通してテンプレート制約ファイルを得るといった、他の方法で得ることができる。
【００８４】
４０３では、設計ファイルが開発管理プラットフォームにアップロードされる。設計ファイルは、開発管理プラットフォームによって、実際の制約ファイルの有効性を検出するために、ＦＰＧＡクラウドホストのＦＰＧＡに対応する実際の制約ファイルを含み、実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理する。
【００８５】
ユーザーは、設計ファイルを設計するために、ユーザーの開発デバイスと開発管理プラットフォームとの間の相互作用を通して所望のテンプレート制約ファイルを得る。しかしながら、実際の設計では、ユーザーがテンプレート制約ファイルを変更することができ、結果としてＦＰＧＡハードウェアに損傷が生じる。したがって、ユーザーの設計ファイルは、有効性検出のために開発管理プラットフォームにサブミットされる必要がある。
【００８６】
４０４では、開発管理プラットフォームによって送信された合成レポートが受信される。
【００８７】
合成レポートは、非機密合成レポートを指す。ユーザーは、設計ファイルを修正する必要があるか否かを合成レポートを分析することによって決定し得る。設計ファイルが修正される必要がない場合、設計ファイル用の書き込み命令は、トリガーされて、開発管理プラットフォームに設計ファイルに対応するバーナーファイルをＦＰＧＡに書き込むよう指示し得る。
【００８８】
４０５では、設計ファイルに対応するバーナーファイルをＦＰＧＡに書き込むことを指示するように構成された書き込み命令が、開発管理プラットフォームに送信される。
【００８９】
本実施形態においてカバーされていない詳細な説明のプロセスは、上記システムの実施形態における開発管理プラットフォームに関連する記述を参照して得ることができ、これは、本明細書で詳細に記述される。
【００９０】
本実施形態では、ユーザーは、ネットワーク側において開発管理プラットフォームの支援に基づいてＦＰＧＡクラウドホストにおけるＦＰＧＡを遠隔で開発することができ、これは、簡易かつ便利である。
【００９１】
例示的な設計では、上記の開発管理プラットフォームはサーバーとして実装され得る。図５に示すように、開発管理プラットフォームは、プロセッサ１１およびメモリ１２を含み得る。メモリ１２は、上記実施形態のいずれかにおいて提供されるＦＰＧＡクラウドホストの開発方法を実施するために開発管理プラットフォームをサポートするためのプログラムを記憶するように構成される。プロセッサ１１は、メモリ１２に記憶されたプログラムを実行するように構成される。
【００９２】
プログラムは、１つ以上のコンピュータ可読命令を含み、１つ以上のコンピュータ可読命令がプロセッサ１１によって実行されるとき、以下のステップが実施され得る。
開発デバイスによってアップロードされた設計ファイルに応答して、設計ファイルに含まれ、およびＦＰＧＡクラウドホストのＦＰＧＡに対応する実際の制約ファイルの有効性を検出することと、
実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理することと、
合成処理から得られた合成レポートを開発デバイスにフィードバックすることと、
開発デバイスによってトリガーされた書き込み命令に応答して、書き込み命令に対応し、合成処理から得られたバーナーファイルをＦＰＧＡに書き込むこと。
【００９３】
任意に、プロセッサ１１はさらに、上記方法におけるステップのうちのすべてまたは一部を実行するように構成される。
【００９４】
通信インターフェース１３は、開発管理プラットフォームの構造にさらに含めることができ、開発管理プラットフォームが別のデバイスまたは通信ネットワークと通信するように、例えば、ユーザーの開発デバイスと通信するように、構成することができる。
【００９５】
さらに、コンピュータ記憶媒体が、本発明の一実施形態において提供され、上記方法の実施形態におけるＦＰＧＡクラウドホストの開発方法を実施するためのプログラムを含み、開発管理プラットフォームによって使用されるコンピュータソフトウェア命令を記憶するように構成される。
【００９６】
さらに、例示的な設計では、上記の開発デバイスとは、例えば、ＰＣである。図６に示すように、開発デバイスは、プロセッサ２１およびメモリ２２を含むことができる。メモリ２２は、上記実施形態のうちのいずれかにおいて提供されるＦＰＧＡクラウドホストの開発方法を実施するための開発デバイスをサポートするためのプログラムを記憶するように構成される。プロセッサ２１は、メモリ２２に記憶されたプログラムを実行するように構成される。
【００９７】
プログラムは、１つ以上のコンピュータ可読命令を含み、その１つ以上のコンピュータ可読命令がプロセッサ２１によって実行されるとき、以下のステップが実施され得る。
開発管理プラットフォームによって、実際の制約ファイルの有効性を検出および実際の制約ファイルが有効であることを検出したことに応答して設計ファイルを合成処理するために、設計ファイルを開発管理プラットフォーム、ＦＰＧＡクラウドホストのＦＰＧＡに対応する実際の制約ファイルを含む設計ファイルにアップロードすることと、
開発管理プラットフォームによって送信された合成レポートを受信することと、
設計ファイルに対応するバーナーファイルをＦＰＧＡに書き込むことを指示するように構成された書き込み命令を、開発管理プラットフォームに送信すること。
【００９８】
任意に、プロセッサ２１はさらに、上記の方法におけるステップのうちのすべてまたはいくつかを実行するように構成される。
【００９９】
通信インターフェース２３は、開発デバイスの構造にさらに含めることができ、開発デバイスが別のデバイスまたは通信ネットワークと通信するように、例えば、開発管理プラットフォームと通信するように、構成することができる。
【０１００】
さらに、コンピュータ記憶媒体が、本発明の一実施形態で提供され、開発デバイスによって使用されるコンピュータソフトウェア命令を記憶するように構成され、上記方法の実施形態におけるＦＰＧＡクラウドホストの開発方法を実施するためのプログラムを含む。
【０１０１】
上記の実装形態の説明から、当業者は、実装形態をソフトウェアに加えて必要な汎用ハードウェアプラットフォームによって実施することができ、ハードウェアおよびソフトウェアの組み合わせによって明確に実施することができることもはっきりと理解することができる。そのような理解に基づいて、本質的に上記の技術的解決策または先行技術に寄与する部分は、コンピュータ製品の形態で具体化することができる。本発明は、コンピュータが使用可能なプログラムコードを含む１つ以上のコンピュータ使用可能記憶媒体（ディスクメモリ、ＣＤ−ＲＯＭ、光学メモリ等を含むが、これらに限定されない）上に実装されるコンピュータプログラム製品の形態であり得る。
【０１０２】
本発明は、本発明の実施形態による方法、デバイス（システム）、およびコンピュータプログラム製品のフローチャートおよび／またはブロック図を参照して説明される。フローチャートおよび／またはブロック図の各プロセスおよび／またはブロック、ならびにフローチャートおよび／またはブロック図におけるプロセスおよび／またはブロックの組み合わせを実施するためにコンピュータプログラム命令を使用し得ることを理解すべきである。コンピュータプログラム命令は、コンピュータまたは別のプログラム可能なデータ処理デバイスのプロセッサが、フローチャートにおける１つ以上のプロセスおよび／またはブロック図における１つ以上のブロックに指定された機能を実施するように構成された装置を生成するための命令を実行するように、マシンを生成するための汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または別のプログラム可能なデータ処理デバイスのプロセッサに提供することができる。
【０１０３】
コンピュータプログラム命令はまた、コンピュータ可読メモリに記憶された命令が、命令装置を含む製造品を生成するように、コンピュータまたは別のプログラム可能なデータ処理デバイスを特定の方法で機能するように導くことができる、コンピュータ可読メモリに記憶することができる。命令装置は、フローチャートにおける１つ以上のプロセスおよび／またはブロック図における１つ以上のブロックによって指定された機能を実施する。
【０１０４】
コンピュータプログラム命令はまた、一連の動作ステップがコンピュータまたは別のプログラム可能なデバイス上で実施されて、コンピュータ実装処理を生成するように、コンピュータまたは別のプログラム可能なデータ処理デバイスにロードすることができ、したがって、コンピュータまたは別のプログラム可能なデバイスで実行される命令は、フローチャートにおける１つ以上のプロセスおよび／またはブロック図における１つ以上のブロックで指定された機能を実施するためのステップを提供する。
【０１０５】
典型的な構成では、コンピューティングデバイスは、１つ以上のプロセッサ（ＣＰＵ）、入力／出力インターフェース、ネットワークインターフェース、およびメモリを含む。
【０１０６】
メモリは、揮発性メモリ、ランダムアクセスメモリ（ＲＡＭ）、および／または不揮発性メモリ、例えば、読み出し専用メモリ（ＲＯＭ）またはフラッシュＲＡＭ等、コンピュータ可読媒体を含み得る。メモリは、コンピュータ可読媒体の一例である。
【０１０７】
コンピュータ可読媒体は、取り外し可能および取り外し不可能な媒体だけでなく不揮発性および揮発性媒体も含み、任意の方法または技術によって情報ストレージを実装し得る。情報は、コンピュータ可読命令、データ構造、およびプログラムまたは他のデータのモジュールであり得る。コンピュータの記憶媒体の例は、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのＲＡＭ、ＲＯＭ、電気的に消去可能なプログラム可能な読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくはその他のメモリ技術、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）もしくはその他の光学式ストレージ、カセットテープ、磁気テープ／磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または他の任意の非伝送媒体を含むが、これらに限定されず、コンピューティングデバイスにアクセス可能な情報を記憶するために使用し得る。このテキストの定義によれば、コンピュータ可読媒体は、変調されたデータ信号およびキャリア等、一時的な媒体を含まない。
【０１０８】
最後に、上記実施形態は、本発明の技術的解決策を説明するためだけに提供されたものであり、本発明を限定することを意図したものではないことに留意されるべきである。本発明は、上記実施形態を参照して詳細に説明されてきたが、上記実施形態で説明された技術的解決策に変更を行うことができ、または同等の置き換えを技術的解決策における一部の技術的特徴に行うことができ、そのような修正または置換が、対応する技術的解決策の本質が本発明の実施形態における技術的解決策の精神および範囲から逸脱しないということは、当業者によって理解されるべきである。
【図１】
2021502648.tif 000003
【図２】
2021502648.tif 000004
【図３】
2021502648.tif 000005
【図４】
2021502648.tif 000006
【図５】
2021502648.tif 000007
【図６】
2021502648.tif 000008
【手続補正書】
【提出日】令和2年7月14日(2020.7.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
開発管理プラットフォームに適用されるＦＰＧＡクラウドホストの開発方法であって、
開発デバイスによってアップロードされた設計ファイルに応答して、前記設計ファイルに含まれる実際の制約ファイルの有効性を検出することであって、前記実際の制約ファイルが、前記ＦＰＧＡクラウドホストのＦＰＧＡに対応する、検出することと、
前記実際の制約ファイルが有効であることを検出したことに応答して、前記設計ファイルを合成処理することと、
前記合成処理から得られたバーナーファイルを前記ＦＰＧＡに書き込むことと、を含む、方法。
【請求項２】
前記合成処理から得られた前記バーナーファイルの前記ＦＰＧＡへの前記書き込みの前に、前記方法は、前記合成処理から得られた合成レポートを前記開発デバイスにフィードバックすることをさらに含み、
前記合成処理から得られた前記バーナーファイルの前記ＦＰＧＡへの前記書き込みが、前記開発デバイスによってトリガーされた書き込み命令に応答して、前記書き込み命令に対応する前記バーナーファイルを前記ＦＰＧＡに書き込むことを含む、請求項１に記載の方法。
【請求項３】
前記設計ファイルに含まれる前記実際の制約ファイルの有効性の前記検出が、
ローカルに記憶されているテンプレート制約ファイルと前記実際の制約ファイルとの比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定することに応答して、前記実際の制約ファイルが有効であると決定することを含み、前記テンプレート制約ファイルが前記ＦＰＧＡに対応する、請求項１に記載の方法。
【請求項４】
前記方法は、
前記開発デバイスによってトリガーされた開発要求に応答して、前記テンプレート制約ファイルを前記開発デバイスに送信することをさらに含む、請求項３に記載の方法。
【請求項５】
前記設計ファイルの前記合成処理は、サードパーティのＩＰコアが前記設計ファイルに呼び出されたことを決定することに応答して、ローカルに記憶されている前記呼び出されたサードパーティのＩＰコアおよび前記設計ファイルを合成処理することを含み、
前記合成処理から得られた前記合成レポートの前記開発デバイスへの前記フィードバックは、
前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックすることを含み、前記非機密合成レポートは、前記呼び出されたサードパーティのＩＰコアの情報を含まない、請求項１に記載の方法。
【請求項６】
前記書き込み命令に対応する前記バーナーファイルの前記ＦＰＧＡへの前記書き込みは、
前記バーナーファイルをＦＰＧＡクラウドホストに対応する仮想マシンマネージャに、前記仮想マシンマネージャを通して前記バーナーファイルを前記ＦＰＧＡに書き込むために伝送することを含む、請求項２に記載の方法。
【請求項７】
開発デバイスに適用されるＦＰＧＡクラウドホストの開発方法であって、
設計ファイルを開発管理プラットフォームにアップロードすることであって、前記設計ファイルは、前記開発管理プラットフォームによって、実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理するために、前記ＦＰＧＡクラウドホストのＦＰＧＡに対応する前記実際の制約ファイルを含む、アップロードすることと、
前記開発管理プラットフォームによって送信された合成レポートを受信することと、
前記合成レポートに従ってトリガーされた書き込み命令を、前記開発管理プラットフォームに送信することであって、前記書き込み命令は、前記設計ファイルに対応するバーナーファイルを前記ＦＰＧＡに書き込むように命令する、送信することと、を含む、方法。
【請求項８】
ＦＰＧＡクラウドホストの開発システムであって、
開発デバイスと、
前記開発デバイスと遠隔通信する開発管理プラットフォームと、
ＦＰＧＡクラウドホストにおけるＦＰＧＡと、を含み、
前記開発デバイスは、前記ＦＰＧＡに対応する実際の制約ファイルを含む設計ファイルを設計し、前記得られた設計ファイルを前記開発管理プラットフォームにアップロードするように構成され、
前記開発管理プラットフォームは、前記実際の制約ファイルの有効性を検出し、前記実際の制約ファイルが有効であることを検出したことに応答して前記設計ファイルを合成処理し、前記合成処理から得られたバーナーファイルを前記ＦＰＧＡに書き込むように構成されている、システム。
【請求項９】
前記開発デバイスは、前記合成処理から得られ、前記開発管理プラットフォームによってフィードバックされた合成レポートを受信し、前記合成レポートに従ってトリガーされた書き込み命令を前記開発管理プラットフォームに送信するようにさらに構成され、
前記開発管理プラットフォームは、前記合成処理から得られた前記合成レポートを前記開発デバイスにフィードバックし、前記書き込み命令に従って前記バーナーファイルを前記ＦＰＧＡに書き込むようにさらに構成されている、請求項８に記載のシステム。
【請求項１０】
前記開発管理プラットフォームは、
ローカルに記憶されているテンプレート制約ファイルを前記実際の制約ファイルと比較し、比較の結果が、前記テンプレート制約ファイルが前記実際の制約ファイルと一致していることを示すことを決定したことに応答して、前記実際の制約ファイルが有効であることを決定するように具体的に構成され、前記テンプレート制約ファイルは、前記ＦＰＧＡに対応する、請求項８に記載のシステム。
【請求項１１】
前記開発デバイスは、開発開始動作に応答して開発要求を前記開発管理プラットフォームに送信するようにさらに構成され、
前記開発管理プラットフォームは、前記開発要求に応答して前記テンプレート制約ファイルを前記開発デバイスに送信するようにさらに構成されている、請求項１０に記載のシステム。
【請求項１２】
前記開発管理プラットフォームは、サードパーティのＩＰコアを記憶し、
前記開発管理プラットフォームは、
前記サードパーティのＩＰコアが前記設計ファイルに呼び出されたことを決定したことに応答して、前記呼び出されたサードパーティのＩＰコアおよび前記設計ファイルを合成処理し、前記合成処理から得られた事前定義の非機密合成レポートを前記開発デバイスにフィードバックするように具体的に構成され、前記非機密合成レポートは、前記呼び出されたサードパーティのＩＰコアの情報を含まない、請求項８に記載のシステム。
【請求項１３】
前記開発管理プラットフォームによって送信された前記バーナーファイルを受信し、前記バーナーファイルを前記ＦＰＧＡに書き込むように構成された仮想マシンマネージャをさらに含む、請求項８に記載のシステム。
【請求項１４】
前記ＦＰＧＡとのデータアクセスリンクを有し、前記設計ファイルにコードを配置し、前記データアクセスリンクを通して前記ＦＰＧＡにアクセスするように構成されたユーザー仮想マシンをさらに含む、請求項８に記載のシステム。
【請求項１５】
開発管理プラットフォームであって、
プロセッサと、
前記プロセッサによって実行されたとき、請求項１〜６のいずれかに記載のＦＰＧＡクラウドホストの開発方法を実施する１つ以上のコンピュータ可読命令を記憶するメモリと、を含む、開発管理プラットフォーム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
ユーザーは、自分で購入したＦＰＧＡクラウドホストを開発し、開発管理プラットフォームは、統合管理プラットフォームとみなすことができ、これは、異なるユーザーがそれぞれのＦＰＧＡクラウドホストを開発することを支援し得る。したがって、ユーザーのＦＰＧＡクラウドホスト用の識別情報の設定項目は、開発デバイスにおいて設けることができる。ユーザーが設定項目を書き込み、あらかじめ設定された制御またはメニュー項目をトリガーした後、ユーザーが開発開始動作をトリガーしたとみなされる。したがって、ＦＰＧＡクラウドホストの識別情報は、開発管理プラットフォームが、識別情報に基づいてＦＰＧＡクラウドホストでＦＰＧＡのテンプレート制約ファイルを取得し、得られたテンプレート制約ファイルを開発デバイスにフィードバックするように開発デバイスから開発管理プラットフォームに送信される開発要求で伝達され得る。任意で、複数のＦＰＧＡクラウドホスト中のＦＰＧＡに対応するテンプレート制約ファイルは、ＦＰＧＡクラウドホストの識別情報をストレージインデックスとすることによって開発管理プラットフォームに事前記憶され得る。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
合成処理は、分析、合成、および最適化の３つのステップを含む。設計ファイルは、ハードウェア記述言語（ＨＤＬ）で記述され得る。分析とは、標準ＨＤＬ文法規則を使用することによってＨＤＬ文法ＨＤＬ設計ファイルを分析し、文法エラーを訂正することを意味する。合成とは、選択されたＦＰＧＡ構造とデバイスを対象としてＨＤＬおよびＦＰＧＡネットリストファイルを論理的に合成し、設計ファイルを実際のゲートレベル回路ではなく、ＡＮＤゲート、ＯＲゲート、ＮＯＴゲート、ＲＡＭ、フリップフロップ、および他の基本論理ユニットから成る論理接続のネットリストにコンパイルすることを意味する。最適化とは、ユーザーの設計制約に従って速度および領域を論理的に最適化してＦＰＧＡレイアウトおよび配線ツールによる使用のために最適化されたＦＰＧＡネットリストファイルを生成することを意味する。合成完了後、多くの合成レポートおよびバーナーファイルが出力され得る。例えば、合成レポートは、タイミングレポート、電力レポート、温度レポート等を含み、バーナーファイルは、アプリケーションによってコンパイルされた実行可能ファイルと比較され得る。合成後のリソース使用やレベル情報等、合成ステータスおよび合成結果は、レポートファイルにリストされる。
【国際調査報告】
2021502648.tif 000009
2021502648.tif 000010
2021502648.tif 000011
2021502648.tif 000012