【手続補正書】
【提出日】平成27年1月22日(2015.1.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令がその上に格納されたメモリと、
前記メモリに通信的に結合されたプロセッサであって、前記命令が、前記プロセッサによって実行される際に、前記プロセッサに：
ソースコードを、状態および前記状態間の遷移を含むオートマトンに変換することであって、前記オートマトン内の前記状態が、専用ハードウェア要素に対応する専用状態を含む、ソースコードをオートマトンに変換することと、
前記オートマトンをネットリストに変換することと、
対象装置を構成するための機械コードを提供するために、前記ネットリストを位置付けて、ルーティングすることとを
させる、プロセッサと
を備えるコンピュータ。
【請求項２】
前記ソースコードが数量化を含み、かつ
前記数量化が専用ハードウェア要素にマッピングされるための条件を満足する場合、ソースコードを変換することが、前記数量化を、前記専用ハードウェア状態を含む、複数の状態に変換することを前記プロセッサに実行させることを含む、
請求項１に記載のコンピュータ。
【請求項３】
前記数量化が専用ハードウェア要素にマッピングされるための前記条件を満足しない場合、ソースコードを変換することが、前記数量化を、複数の汎用状態に展開することを前記プロセッサに実行させることを含む、請求項２に記載のコンピュータ。
【請求項４】
展開することが、前記オートマトンの入次数を制御するように前記数量化を展開することを含む、請求項３に記載のコンピュータ。
【請求項５】
前記オートマトンを最適化することをさらに含み、最適化することが、特定の状態の推定された入次数が前記対象装置の制約よりも多い場合に、前記オートマトンの前記特定の状態を複数の状態に分割することを前記プロセッサに実行させる命令を含む、請求項１に記載のコンピュータ。
【請求項６】
前記特定の状態を分割することが、前記複数の状態の各々の入次数が前記制約を満足するように、前記特定の状態の駆動状態を前記複数の状態に分散することを含む、請求項５に記載のコンピュータ。
【請求項７】
前記オートマトンを前記ネットリストに変換することが、前記状態を前記ネットリストのインスタンスにマッピングすることを含み、マッピングすることが、前記専用状態を、専用要素に対応する専用インスタンスにマッピングすることを前記プロセッサに実行させることを含む、請求項１に記載のコンピュータ。
【請求項８】
前記オートマトンをネットリストに変換することが、前記対象装置の物理的設計に基づいて、状態をともにグループ化することを前記プロセッサに実行させることを含む、請求項７に記載のコンピュータ。
【請求項９】
前記インスタンスが、状態機械要素（ＳＭＥ）ハードウェア要素に対応するＳＭＥインスタンスおよびＳＭＥのグループを含むハードウェア要素に対応するＳＭＥグループインスタンスを含み、かつ、グループ化することが、状態をＳＭＥグループインスタンスにグループ化することを含む、請求項１に記載のコンピュータ。
【請求項１０】
コンピュータ実装方法であって、
１つまたは複数のプロセッサを使用して、ソースコードを構文木に解析することと、
前記１つまたは複数のプロセッサを使用して、前記構文木をオートマトンに変換することであって、前記オートマトンが、複数の状態および前記複数の状態間の遷移を有する動作のモデルを定義し、かつ、前記オートマトンの構造が、対象ハードウェア装置によって決定される、前記構文木をオートマトンに変換することと、
前記１つまたは複数のプロセッサを使用して、前記オートマトンをネットリストに変換することであって、前記ネットリストが複数のインスタンスを含み、各インスタンスが対象ハードウェア装置のハードウェア要素に対応する、前記オートマトンをネットリストに変換することと、
前記１つまたは複数のプロセッサを使用して、前記インスタンスの各々を位置付けることであって、位置付けることが、前記ネットリスト内の各インスタンスを前記対象ハードウェア装置のハードウェア要素に割り当てることを含む、前記インスタンスの各々を位置付けることと、
前記１つまたは複数のプロセッサを使用し、前記ネットリストに応じて前記ハードウェア要素間の接続をルーティングすることと、
位置付けおよびルーティングに基づいて前記対象ハードウェア装置をプログラムするために使用されるプログラミングデータを作成することと
を含む、コンピュータ実装方法。
【請求項１１】
前記構文木をオートマトンに変換することが、前記ソースコード内の数量化を、前記対象ハードウェア装置のカウンタ要素に対応する専用状態を含む、複数の状態に変換することを含む、請求項１０に記載のコンピュータ実装方法。
【請求項１２】
ＳＭＥに対応する複数の汎用状態が、Group of Two(ＧＯＴ)ハードウェア要素の出力制約に基づいてＧＯＴインスタンスを形成するために、ともにグループ化される、請求項１０に記載のコンピュータ実装方法。
【請求項１３】
前記オートマトンの前記入次数を制限することを含み、前記入次数を制限することが、前記オートマトンの状態への遷移数を制限することを含む、請求項１０に記載のコンピュータ実装方法。
【請求項１４】
前記入次数を制限することが、特定の状態を複数の状態に分割すること、および前記複数の状態の各々の入次数が制約を満足するように、前記特定の状態の駆動状態を前記複数の状態に分散することを含む、請求項１３に記載のコンピュータ実装方法。
【請求項１５】
前記入次数を制限することが、数量化を複数の展開された状態に展開すること、および任意の前記展開された状態に対する入遷移の前記数を制限することを含む、請求項１３に記載のコンピュータ実装方法。
【請求項１６】
プログラム可能装置であって、
１つまたは複数の入力および１つまたは複数の出力を含む、複数のプログラム可能要素と、
前記複数のプログラム可能要素の部分の外部回路に対するインタフェースのための入力ブロックおよび出力ブロックと、
前記複数のプログラム可能要素と、前記入力ブロックおよび前記出力ブロックを通信的に接続する複数のプログラム可能スイッチであって、１つまたは複数のプログラム可能スイッチの前記設定が、前記複数のプログラム可能要素および前記複数のプログラム可能スイッチのうちの任意の２つ以上の間をルーティングする信号を選択的に制御する、複数のプログラム可能スイッチと、
前記複数のプログラム可能要素および前記複数のプログラム可能スイッチを構成できるプログラミングデータを格納するように構成された複数のレジスタであって、前記プログラミングデータが：
１つまたは複数のプロセッサを使用して、ソースコードを構文木に解析することと；
前記１つまたは複数のプロセッサを使用して、前記構文木をオートマトンに変換することであって、前記オートマトンが、複数の状態および前記複数の状態間の遷移を有する動作のモデルを定義し、かつ、前記オートマトンの構造が、対象装置によって決定される、前記構文木をオートマトンに変換することと；
前記１つまたは複数のプロセッサを使用して、前記オートマトンをネットリストに変換することであって、前記ネットリストが複数のインスタンスを含み、各インスタンスが対象装置のハードウェア要素に対応する、前記オートマトンをネットリストに変換することと；
前記１つまたは複数のプロセッサを使用して、前記インスタンスの各々を位置付けることであって、位置付けることが、前記ネットリスト内の各インスタンスを前記対象装置のハードウェア要素に割り当てることを含む、前記インスタンスの各々を位置付けることと；
前記１つまたは複数のプロセッサを使用し、前記ネットリストに応じて前記ハードウェア要素間の前記接続をルーティングすることと；
位置付けおよびルーティングに基づいて、前記対象装置をプログラムするために使用されるプログラミングデータを作成することと
によって作成される、複数のレジスタと
を含む、プログラム可能装置。
【請求項１７】
一時的な伝送信号ではない、命令を含むコンピュータ可読媒体であって、
前記命令が、１つまたは複数のプロセッサによって実装されるときに：
ソースコードを構文木に解析することと；
前記構文木をオートマトンに変換することであって、前記オートマトンが、複数の状態および前記複数の状態間の遷移を有する動作のモデルを定義し、かつ、前記オートマトンの構造が、対象装置によって決定される、前記構文木をオートマトンに変換することと；
前記オートマトンをネットリストに変換することであって、前記ネットリストが、前記対象装置に関連した、複数のハードウェア要素を含み、かつ、前記ネットリストが前記ハードウェア要素間の接続を定義する、前記オートマトンをネットリストに変換することと；
前記ハードウェア要素の各々を位置付けることであって、位置付けることが、前記ネットリスト内の各ハードウェア要素を前記対象装置内の位置に割り当てることを含む、前記ハードウェア要素の各々を位置付けることと；
前記ネットリストに応じて前記ハードウェア要素間の前記接続をルーティングすることと；
位置付けおよびルーティングを反映するように前記対象装置をプログラムするために使用されるプログラミングデータを作成することと
を含む動作を実行する、
コンピュータ可読媒体。
【請求項１８】
変換することが、前記ソースコード内の数量化が、前記対象装置のカウンタにマッピングされるための条件を満足するかどうかを判断することを含み；
前記数量化が前記条件を満足する場合に、前記数量化を、カウンタ状態を含む複数の状態に変換し；かつ
前記数量化が前記条件を満足しない場合に、前記数量化を展開することにより、前記数量化を、複数のＳＭＥ状態に変換する、
請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記数量化が前記条件を満足するかどうかを判断することが、前記数量化に対する駆動式が、前記数量化が処理されている間に一致できるかどうかを判断することを含む、請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
前記数量化が前記条件を満足するかどうかを判断することが、前記数量化の繰返し式が前記数量化の別の繰返し式のプレフィックスであるかどうかを判断することを含む、請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記数量化を、カウンタ状態を含む複数の状態に変換することが、前記複数の状態を、前記数量化の繰返し式および前記カウンタ状態を含むループとして実装することを含み、前記カウンタ状態が、前記繰返し式が一致する回数をカウントするように構成されていて、かつ、前記繰返し式が、前記数量化によって指定された回数一致する場合に、前記カウンタ状態が、下流の状態をアクティブにする、請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
展開することが、前記対象装置の入次数制約に基づいて、前記オートマトンの入次数を制御するように前記数量化を展開することを含む、請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
請求項１７の前記プロセスによって生成されたプログラミングデータを使用してプログラムされたプログラム可能装置。
【請求項２４】
コンピュータ実装方法であって、
１つまたは複数のプロセッサを使用して、ソースコードを構文木に解析することと；
前記１つまたは複数のプロセッサを使用して、前記構文木をオートマトンに変換することであって、前記変換することが：
対象装置に基づいて前記オートマトンの構造を制限することであって、前記対象ハードウェア装置が、２つのグループにペア形成された状態機械要素を含む、前記オートマトンの構造を制限すること
を含む、前記構文木をオートマトンに変換することと、
前記１つまたは複数のプロセッサを使用して、前記オートマトンをネットリストに変換することであって、前記ネットリストが、前記対象ハードウェア装置に関連付けられた複数のハードウェア要素を含み、かつ、前記ネットリストが前記ハードウェア要素間の接続を定義する、前記オートマトンをネットリストに変換することと；
前記１つまたは複数のプロセッサを使用して、前記ハードウェア要素の各々を位置付けることであって、位置付けることが、前記ネットリスト内の各ハードウェア要素を前記対象装置内の位置に割り当てることを含む、前記ハードウェア要素の各々を位置付けることと；
前記１つまたは複数のプロセッサを使用し、前記ネットリストに応じて前記ハードウェア要素間の前記接続をルーティングすることと；
位置付けおよびルーティングを反映するように前記対象ハードウェア装置をプログラムするために使用される、複数のビットを作成することと
を含む、コンピュータ実装方法。
【請求項２５】
前記構造木をオートマトンに変換することが、共通の出力を共有する前記２つのグループに基づいて、前記オートマトンの構造を制限することを含む、請求項２４に記載の方法。
【請求項２６】
前記オートマトンの構造を制限することが、前記対象装置のカウンタ要素に基づいて、前記オートマトンの構造を制限することを含む、請求項２４に記載の方法。
【請求項２７】
前記複数のビットを公開することをさらに含む、
請求項２４に記載の方法。
【請求項２８】
前記複数の状態を削減するために前記オートマトンを最適化することをさらに含む、請求項２４に記載の方法。
【請求項２９】
請求項２４の前記プロセスによって生成されたプログラミングデータを使用してプログラムされたプログラム可能装置。