(57)【要約】      （修正有）【課題】機能的な分離が設定、調整されたシャドーレジスタとＦＰＧＡソースコードからなるネットリストの作成。【解決手段】ＦＰＧＡソースコード２０は、少なくとも１つの機能と少なくとも１つの信号とを規定する。シャドーレジスタは、少なくとも１つの信号に割り当てられ、かつ、割り当てられた信号値を実行時間中に記憶するように調整及び設定される。該ソースコードにおいて規定された機能は、該レジスタによって変更されない。ネットリストは、ＦＰＧＡ上にロードされ、実行されるように設定される。該ソースコードによって記述された機能は、実行される。該レジスタの、該ソースコードにおいて記述された機能からの機能的な分離が設定および調整され、該レジスタはこの分離によって、分離の時点で記憶された信号値を保持する。また、該ソースコードにおいて記述された機能が実行される。【選択図】図１
2017204279.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡネットリストを作成する方法であって、
前記ネットリストは、ＦＰＧＡソースコード（２０）と少なくとも１つのシャドーレジスタ（１０）とから形成され、
前記ＦＰＧＡソースコード（２０）は、少なくとも１つの機能と少なくとも１つの信号（３０）とを規定し、
前記シャドーレジスタ（１０）は、前記少なくとも１つの信号（３０）に割り当てられ、かつ、当該割り当てられた信号（３０）の値を実行時間中に記憶するように調整および設定され、
記憶された前記信号値を実行時間中に読み出す手段が設定および調整され、
前記ＦＰＧＡソースコード（２０）において規定された機能は、前記シャドーレジスタ（１０）によって変更されず、
前記ネットリストは、ＦＰＧＡ上にロードされ、当該ＦＰＧＡによって実行されるように設定され、
前記ＦＰＧＡソースコード（２０）によって記述された前記機能は、前記ＦＰＧＡによって実行される方法において、
前記シャドーレジスタ（１０）の、前記ＦＰＧＡソースコード（２０）において記述された前記機能からの機能的な分離が設定および調整され、
前記シャドーレジスタ（１０）は当該分離によって、当該分離の時点で記憶された前記信号値を保持し、また、前記ＦＰＧＡソースコード（２０）において記述された前記機能が実行される、
ことを特徴とする、ＦＰＧＡネットリストを作成する方法。
【請求項２】
前記ＦＰＧＡソースコード（２０）は、複数の信号（３０）を規定し、
複数のシャドーレジスタ（１０）がそれぞれ１つの信号（３０）に割り当てられ、
前記機能的な分離は、前記複数のシャドーレジスタ（１０）を同期して分離するように設定されている、請求項１記載の方法。
【請求項３】
前記分離のために、前記シャドーレジスタ（１０）のイネーブル信号（６０）または前記シャドーレジスタ（１０）のクロック信号（７００）が中断される、請求項１または２記載の方法。
【請求項４】
前記ＦＰＧＡソースコード（２０）は、グラフィックモデルまたはテキスト形式のコードとして存在する、請求項１から３までのいずれか１項記載の方法。
【請求項５】
前記シャドーレジスタ（１０）は前記ＦＰＧＡソースコード（２０）または前記ＦＰＧＡソースコード（２０）のコピー内に挿入される、請求項１から４までのいずれか１項記載の方法。
【請求項６】
前記ソースコード（２０）からネットリストが作成され、前記シャドーレジスタ（１０）が当該ネットリスト内に挿入される、請求項１から５までのいずれか１項記載の方法。
【請求項７】
前記シャドーレジスタ（１０）は自動的に挿入され、前記信号（３０）に割り当てられる、請求項１から６までのいずれか１項記載の方法。
【請求項８】
前記信号（３０）が既に前記ソースコード（２０）の別の箇所でシャドーレジスタ（１０）に割り当てられているか否かが自動的に検査され、前記信号（３０）が既に前記ソースコード（２０）の別の箇所でシャドーレジスタ（１０）に割り当てられている場合には、当該信号（３０）にさらなるシャドーレジスタ（１０）は割り当てられない、請求項  記載の方法。
【請求項９】
少なくとも２つのシャドーレジスタ（１０，１００）が挿入され、前記信号（３０）に割り当てられ、
前記第１のシャドーレジスタ（１００）は、実行時間中に、最新の信号値を記憶するように設定および調整され、また、前記第２のシャドーレジスタ（１０）は分離されている、請求項１から８までのいずれか１項記載の方法。
【請求項１０】
前記ネットリストの作成時に、前記ＦＰＧＡの外部リードバックインタフェースおよび／または内部リードバックインタフェースを介した前記シャドーレジスタ（１０）の読み出しが設定および調整される、請求項１から９までのいずれか１項記載の方法。
【請求項１１】
複数のシャドーレジスタ（１０）が挿入され、
当該複数のシャドーレジスタ（１０）が結合されて、１つのシフトレジスタチェーンになり、前記ＦＰＧＡの外部インタフェースを介して読み出されるように設定および調整される、請求項１から１０までのいずれか１項記載の方法。
【請求項１２】
複数のシャドーレジスタ（１０）が挿入され、前記ＦＰＧＡの外部インタフェースを介した当該複数のシャドーレジスタ（１０）の読み出しのために、アドレスコードが設定および調整される、請求項１から１１までのいずれか１項記載の方法。
【請求項１３】
前記シャドーレジスタに対して付加的にロジック（１１０，１４０）が挿入され、
当該ロジック（１１０，１４０）は、実行時間中に、前記信号値が変化すると、トリガ信号（１３０）を出力するように設定および調整され、
当該トリガ信号（１３０）は、前記シャドーレジスタの分離を引き起こす、請求項１から１２までのいずれか１項記載の方法。
【請求項１４】
前記シャドーレジスタ（１０）の挿入前に、
・最初の前記信号値（３０）が依存する、前記ＦＰＧＡソースコード（２０）における全ての定数を求めるステップと、
・前記定数の見出された値に対して最小の必要ビット幅を求めるステップと、
・前記定数を、各求められた前記最小の必要ビット幅で、再構成する、または、前記定数を、各求められた前記最小の必要ビット幅で、後からキャスティングするステップと、
・前記ＦＰＧＡソースコードを通して、前記ビット幅を伝えるステップとが実行される、
請求項１から１３までのいずれか１項記載の方法。
【請求項１５】
前記シャドーレジスタ（１０）は、前記ネットリストの作成および／またはさらなる処理の際、ルート最適化から保護される、請求項１から１４までのいずれか１項記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡ用のネットリストを作成する方法に関する。
【０００２】
複雑かつダイナミックなモデルのリアルタイムシミュレーションは、時間的な周辺条件が厳しいので、現在の計算ノードでも、高い要求を課す。自動車のＨａｒｄｗａｒｅ−ｉｎ−ｔｈｅ−Ｌｏｏｐシミュレーション（ＨｉＬ）では、このようなモデルは特に、高速の調整ループが閉成されなければならない箇所で使用される。これは例えば、燃費の低減または排ガスの低減において、ますます大きな役割を担う、シリンダ内圧センサのシミュレーションである。また、例えば電動機の場合のような、高い動性を有する調整システムでも、短い周期時間と短いレイテンシとが不可欠である。実際にはこれは、ＣＰＵベースのシミュレーションでは、もはや、ほぼ実現不可能である。
【０００３】
Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙｓ（ＦＰＧＡｓ）は、モデルの動的部分の計算を担うことによって、リアルタイムシミュレーションにおいて計算ノードをサポートすることができる。高い柔軟性および複数の信号の並列処理が可能であることによって、ＦＰＧＡを使用することによって、困難なリアルタイム要求も容易に満たされる。ＦＰＧＡは、計算ノードのＣＰＵに対するハードウェアアクセラレータとして用いられる。相応に、例えば、環境モデルの極めて動的な部分がＦＰＧＡに移され、このようにして、制御機器に対して、十分に正確かつ迅速な応答時間が保証され続ける。ＦＰＧＡネットリストは、通常、ハードウェア記述言語で、ＦＰＧＡモデルに基づいて、構築プロセスにおいて形成される。
【０００４】
調整システムのモデルは、精度への要求が高まるにつれて、ますます複雑になり、これに伴って、操作も困難になる。自動車Ｈｉｌ環境では、このようなモデルは通常、Ｔｈｅ  ＭａｔｈＷｏｒｋｓ  Ｉｎｃ．のツールセット、Ｍａｔｌａｂ／Ｓｉｍｕｌｉｎｋを用いて作成される。Ｓｉｍｕｌｉｎｋは、このようなモデルの、ブロックダイアグラムの形態の、ブロックベースの概観を提供する。複数のモデル部分は、ブロックダイアグラムにおいて、複数のサブシステムにまとめられ、信号によって相互に結合される。ここで、これらのブロック間のデータフローは、信号線路によって表される。
【０００５】
ＦＰＧＡベースのシミュレーションは、Ｘｉｌｉｎｘ  Ｓｙｓｔｅｍ  Ｇｅｎｅｒａｔｏｒ（ＸＳＧ）およびｄＳＰＡＣＥ社のＦＰＧＡプログラミングブロックセットを用いて、ＣＰＵベースのシミュレーションと同様に、ブロックダイアグラムにおいて、Ｓｉｍｕｌｉｎｋによってモデリング可能である。
【０００６】
しかしＣＰＵシミュレーションとは異なり、このモデルは、反復プログラミング言語に変換されず、顧客固有のデジタル回路を記述するＦＰＧＡネットリストに変換される。このＦＰＧＡネットリストは、ＦＰＧＡコンフィギュレーションデータストリームに変換可能である。
【０００７】
欧州特許出願公開第２７６５５２８号明細書（EP2765528A1）から、実行時間中に、ＦＰＧＡから変数を読み出す方法が公知である。
【０００８】
幾つかの読み出し技術では、データは直接的に、ワーキングレジスタから読み出される。ＦＰＧＡの実行時間中の読み出し時には、これは欠点である。なぜなら、しばしば、レジスタを特定の時間に読み出すことができないからである。ワーキングレジスタは、実行時間中、常に、最新の値で上書きされるので、特定の時点で存在する値を検出することができないことがしばしばある。
【０００９】
本発明の課題は、従来技術を改善することである。
【００１０】
本発明は、ＦＰＧＡネットリストを作成する方法に関する。ここでこのネットリストは、ＦＰＧＡソースコードと少なくとも１つのシャドーレジスタとから形成される。ここでＦＰＧＡソースコードは、少なくとも１つの機能と少なくとも１つの信号とを規定する。ここでシャドーレジスタは、少なくとも１つの信号に割り当てられ、割り当てられた信号の値を実行時間中に記憶するように調整および設定される。ここで、記憶された信号値を実行時間中に読み出す手段が設定および調整される。ここでＦＰＧＡソースコードにおいて規定された機能は、シャドーレジスタによって変更されない。ここでネットリストは、ＦＰＧＡ上にロードされ、ＦＰＧＡによって実行されるように設定される。ここでＦＰＧＡソースコードによって記述された機能は、ＦＰＧＡによって実行される。ここで、シャドーレジスタの、ＦＰＧＡソースコードにおいて記述された機能からの機能的な分離が設定および調整される。ここでシャドーレジスタは、この分離によって、分離の時点で記憶された信号値を保持する。また、ＦＰＧＡソースコードにおいて記述された機能が実行される。
【００１１】
本発明ではさらに、プロセッサユニットを備えたデータ処理装置が提示されている。ここでは、データ処理装置は、上述した方法を実行するように構成されている。
【００１２】
本発明では、コンピュータによって実装される指示を含んだコンピュータプログラム製品も提示される。このコンピュータプログラム製品は、ロードおよび適切な処理装置内での実行後に、上述した方法を実行する。
【００１３】
さらに、本発明では、電子的に読み出し可能な制御信号を含んでいるデジタル記憶媒体が提示される。この制御信号は、上述した方法が、データ処理装置上で実行されるように、プログラミング可能なデータ処理装置と協働することができる。
【００１４】
ネットリストはビットストリームに変換され、ＦＰＧＡ上にロード可能である。ここでＦＰＧＡは、ＦＰＧＡソースコードにおいて規定された機能を実行することができる。分離によって、信号値の読み出しが遅れて行われる場合であっても、分離の時点で最新であった値を正確に読み出すことが可能になる。本願では実行時間中とは、ＦＰＧＡソースコードにおいて規定された機能が継続して実行され、信号値が継続して更新されることであり、その間に、シャドーレジスタは分離され、分離の時点で最新の値を保持する。分離は有利には、トリガ信号によってトリガされる。ＦＰＧＡネットリストでは、このために、分離メカニズムがトリガ信号と接続される。択一的に、通常状態においてシャドーレジスタが分離されていて、トリガ信号に基づいて、短時間、機能と接続されてもよい。この場合には、シャドーレジスタ内に、トリガ信号の時点で最新の信号値が記憶され、シャドーレジスタは再び、機能から分離される。
【００１５】
したがって、本発明の方法の結果は、ＦＰＧＡネットリストであり、ここでこのネットリスト内には、少なくとも１つのシャドーレジスタが規定されており、ここでこのＦＰＧＡネットリスト内では、少なくとも１つの機能と少なくとも１つの信号が規定されており、ここでこのシャドーレジスタは、少なくとも１つの信号と接続されており、実行時間中に、信号の値を記憶するように調整および設定されている。ここでこのネットリストは、ＦＰＧＡ上にロードされ、かつ、ＦＰＧＡによって実行されるように設定されている。ここで、シャドーレジスタ内に記憶されている信号値を、ＦＰＧＡの実行時間中に読み出す手段がネットリスト内に設定および調整されている。ここで、信号からの、シャドーレジスタの機能的な分離が設定および調整されている。ここでこのシャドーレジスタは、この分離によって、分離の時点で記憶された信号値を保持し、また、ＦＰＧＡは、この機能を実行する。
【００１６】
有利な構成では、ＦＰＧＡソースコードは、多数の信号を規定する。ここでは多数のシャドーレジスタがそれぞれ１つの信号に割り当てられる。ここで機能的な分離は、多数のシャドーレジスタを同期して分離するように設定されている。
【００１７】
この同期した分離によって、多数の、同時に存在する信号値を、実行時間中に、ＦＰＧＡから読み出すことが可能になる。ＦＰＧＡからの複数の信号値の同期した読み出しは、しばしば不可能である。同期分離可能な複数のシャドーレジスタによって、同時に存在している複数の信号値が記憶され、順次読み出されることが可能になる。このようにして、同時に存在する複数の変数の、一貫したデータセットを記録することが可能になる。
【００１８】
この有利な構成の結果は、多数の信号が規定されているＦＰＧＡネットリストである。ここでは多数のシャドーレジスタがそれぞれ１つの信号に割り当てられている。ここで機能的な分離は、多数のシャドーレジスタを同期して分離するために設定されている。
【００１９】
ある構成では、分離のために、シャドーレジスタのイネーブル信号またはシャドーレジスタのクロック信号が中断される。
【００２０】
シャドーレジスタのイネーブル信号のこの中断によって、シャドーレジスタは、実行時間中に、もはや更新されない。これは、１つまたは複数のシャドーレジスタに対する分離の極めて容易な手段である。
【００２１】
シャドーレジスタのクロック信号の中断によって、シャドーレジスタはもはや変化しない。したがって、レジスタの状態はほぼ、フリーズされる。それにもかかわらず、シャドーレジスタ内に記憶された値は、種々の様式で読み出し可能である。
【００２２】
この有利な構成の結果は、分離のために、シャドーレジスタのイネーブル信号、または、シャドーレジスタのクロック信号を中断するように設定されているＦＰＧＡネットリストである。
【００２３】
ある構成では、ＦＰＧＡソースコードは、グラフィックモデルまたはテキスト形式のコードとして存在する。
【００２４】
ＦＰＧＡソースコードは、しばしば、グラフィックモデルの形態で存在する。これは例えば、開発環境におけるブロックダイアグラムとして存在する。例えば、この種のブロックダイアグラムの例は、Ｔｈｅ  ＭａｔｈＷｏｒｋｓ社のＳｉｍｕｌｉｎｋである。グラフィックソースコードでは、シャドーレジスタは、容易に、付加的なレジスタとして挿入される。ここで、この付加的なレジスタは、割り当てられている信号と接続され、同様に挿入されている分離メカニズムを介して、実行時間中に、機能的に、信号から分離可能である。
【００２５】
ＦＰＧＡソースコードの択一的な形態は、テキスト形式のコード、例えば、ＶＨＤＬまたはＶｅｒｉｌｏｇである。テキスト形式のソースコードにおいても、シャドーレジスタは容易に、付加的なレジスタとして挿入可能である。ここで、この付加的なレジスタは、割り当てられている信号と接続され、同様に挿入されている分離メカニズムを介して、実行時間中に、機能的に、信号から分離可能である。
【００２６】
有利な構成では、シャドーレジスタは、ＦＰＧＡソースコード、または、ＦＰＧＡソースコードのコピー内に挿入される。
【００２７】
シャドーレジスタを直接的にＦＰＧＡソースコード内に挿入することによって、ネットリストの作成は特に容易になる。なぜなら、ＦＰＧＡソースコードだけが、ネットリストに変換されればよいからである。ＦＰＧＡソースコードのコピーへのシャドーレジスタの挿入によって、元来のＦＰＧＡソースコードには手が加えられない。この方法が、ユーザーにとってトランスペアレントであるべき場合、これは有利である。すなわち、ユーザーは、シャドーレジスタが挿入されたことを知らず、それにもかかわらず、実行時間中の信号値の読み出し時の利点が利用可能である。
【００２８】
択一的な構成では、ソースコードからネットリストが作成され、シャドーレジスタがこのネットリスト内に挿入される。
【００２９】
ネットリスト内にシャドーレジスタを挿入することによって、ＦＰＧＡソースコードは変更されないままであり、コピーが作成される必要はない。その後、シャドーレジスタを含むネットリストは、他のネットリストのように、さらなる処理が可能である。例えば、このネットリストをビットストリームに変換し、これに続いて、ＦＰＧＡ上にロードすることが可能である。シャドーレジスタが挿入されているネットレジスタは、ここでは、単なるネットリストとして、または、マッピング、配置および／またはルーティングに関する付加情報を有するネットリストとして存在し得る。
【００３０】
有利な構成では、シャドーレジスタは自動的に挿入され、信号に割り当てられる。
【００３１】
この自動化によって、ユーザーは、シャドーレジスタを挿入し、信号に割り当てるタスクから解放される。特に、信号が多数あり、これらの信号の各々にシャドーレジスタが割り当てられるべき場合には、このような自動化は大きな利点である。
【００３２】
別の構成では、この信号が既に別の箇所でシャドーレジスタに割り当てられているか否かが自動的に検査され、この信号が既に別の箇所でシャドーレジスタに割り当てられている場合には、この信号にさらなるシャドーレジスタは割り当てられていない。
【００３３】
自動化されたこの検査によって、１つの信号に対して、多数のシャドーレジスタが挿入され、この信号に割り当てられることが回避される。特に、ＦＰＧＡソースコードが大きい場合、すなわち、多くの行のテキストを含んでいる場合、または、グラフィックモデルとして、多数のヒエラルキーレベルを含んでいる場合、マニュアルで行われる検査は手間がかかり、エラーが生じやすい。したがって、この自動化された検査は有利である。
【００３４】
別の構成では、少なくとも２つのシャドーレジスタが挿入され、この信号に割り当てられる。ここで、第１のシャドーレジスタは、実行時間中に、最新の信号値を記憶するように設定および調整され、また、第２のシャドーレジスタは分離されている。
【００３５】
２つのシャドーレジスタによって、古い信号値を第１のシャドーレジスタ内に記録し、同時に、最新の信号値を第２のシャドーレジスタ内に記録することが可能になる。これは例えば、シャドーレジスタの読み出し過程が、複数のＦＰＧＡクロックにわたって継続する、または、すぐには実行可能でない場合に使用される。この場合には、第１のシャドーレジスタの読み出し中に、最新の値が、第２のシャドーレジスタ内に記憶される。
【００３６】
複数のシャドーレジスタが、１つのメモリウィンドウであってもよい。この場合には、一方のシャドーレジスタ内に最新の信号値が記憶され、他方のシャドーレジスタ内に古い信号値が記憶される。トリガ信号に基づいて、複数のシャドーレジスタが同時に分離されてよい。これによって、トリガ信号前の信号値を読み出すことが可能になる。
【００３７】
択一的な実施形態では、トリガ信号に続く信号値を記録するために、メモリウィンドウが利用可能である。この場合には、複数のシャドーレジスタは順次、所定の持続時間の後に分離される。３つ以上のシャドーレジスタによって、２つのバリエーションを同時に使用することが可能である。したがって、トリガ信号前および後の信号値を記録および読み出すことが可能である。
【００３８】
この有利な構成の結果は、少なくとも２つのシャドーレジスタが規定されており、１つの信号に割り当てられているＦＰＧＡネットリストであり、ここでは、第１のシャドーレジスタは、実行時間中に、最新の信号値を記憶するように設定および調整されている。また、第２のシャドーレジスタは分離されている。
【００３９】
特に有利な構成では、ネットリストの作成時に、ＦＰＧＡの外部リードバックインタフェースおよび／または内部リードバックインタフェースを介したシャドーレジスタの読み出しが設定および調整される。
【００４０】
内部または外部リードバックインタフェースを介したシャドーレジスタの読み出しは、読み出しの快適な手段である。この実施形態では、特に、ＦＰＧＡの極めて少ないロジックおよびルーティングリソースしか、読み出しのために必要でない。シャドーレジスタは、実装ツールによって、直接的に、割り当てられた信号に並んで配置可能である。これによって、シャドーレジスタの挿入を伴わずに、ネットリストに対する変更が最小になる。
【００４１】
別の構成では、多数のシャドーレジスタが挿入され、ここでは、多数のシャドーレジスタが結合されて、１つのシフトレジスタチェーンになり、ＦＰＧＡの外部インタフェースを介して読み出されるように設定および調整される。
【００４２】
択一的な構成では、多数のシャドーレジスタが挿入され、ここで、ＦＰＧＡの外部インタフェースを介した多数のシャドーレジスタの読み出しのために、アドレスコードが設定および調整される。
【００４３】
外部インタフェースを介した読み出しは典型的に、リードバックインタフェースよりも高いデータスループットを可能にする。したがって、実行時間中に頻繁に、多数の信号値が読み出されるべき場合には、読み出しのこの形態は有利である。
【００４４】
別の構成では、シャドーレジスタに対して付加的にロジックが挿入される。ここでこのロジックは、実行時間中に、信号値が変化するとトリガ信号を出力するように設定および調整される。ここでこのトリガ信号は、シャドーレジスタの分離を引き起こす。
【００４５】
組み入れられたこのロジックによって、分離は極めて迅速に、所定の結果の発生時に、トリガされる。トリガ信号は、ここで、１つまたは複数のシャドーレジスタの分離を迅速に、または、所定の遅延を伴って、トリガすることができる。このようなロジックは、種々の様式で実装可能である。これに対する例は、実施例に挙げられている。
【００４６】
有利な構成では、シャドーレジスタの挿入前に、以下のステップが実行される：すなわち、
・最初の信号値が依存する、ＦＰＧＡソースコードにおける全ての定数を求めるステップ
・これらの定数の見出された値に対して最小の必要ビット幅を求めるステップ
・これらの定数を、各求められた最小の必要ビット幅で、再構成する、または、これらの定数を、各求められた最小の必要ビット幅で、後からキャスティング（Ｃａｓｔｉｎｇ）するステップ
・ＦＰＧＡモデル全体を通して、このビット幅を伝えるステップ
が実行される。
【００４７】
グラフィックＦＰＧＡモデル内の定数ブロック、もしくは、ＶＨＤＬモデル内のＶＨＤＬ信号は、しばしば、固定されたビット幅（例えば３２ビット）で、インスタンス作成される。しかし、これに続く、値の設定時には、多くの場合に、提示されたビット幅の値領域を超えない値が使用される。グラフィックモデルから作成されたＶＨＤＬコードは、同様に、実際に必要なビット幅とは無関係に、最大限のビット幅を含んでいる。ＶＨＤＬコードの、手によるプログラミングの際にも、通常は、人は同様の手段をとる。
【００４８】
通常、これは問題無い。なぜなら、ロジックリソースおよびルーティングリソースを節約するために、不必要なビットが、合成ツールおよび実装ツールによってルート最適化されるからである。
【００４９】
しかし、外部インタフェースを介した読み出しのために調整された、挿入されたシャドーレジスタは、合成ツールおよび実装ツールによって最適化されない。なぜなら、これらのツールは、外部のアクセスを最適化しないからである。したがって、挿入されたシャドーレジスタおよび読み出しロジックによるリソース消費を少なく保つために、有利には、定数の最低限必要なビット幅と、この定数に依存する全ての信号の最低限必要なビット幅とを求めることが有利である。この場合には、シャドーレジスタは、割り当てられた信号の最小の必要ビット幅で実装される。
【００５０】
別の構成では、シャドーレジスタは、ネットリストの作成および／またはさらなる処理の際、ルート最適化から保護される。
【００５１】
アウトプットを有していないレジスタは、通常、ネットリストの作成およびさらなる処理時に使用される自動化されたツールによって、ルート最適化、すなわち、消去される。これは、一般的に合理的である。なぜなら、そうでない場合には、これらのレジスタは、その機能に貢献することなく、ＦＰＧＡ内のリソースを占有するからである。本発明の方法において挿入された、リードバックインタフェースを介して読み出されるべきシャドーレジスタは、アウトプットを有しておらず、したがって、ツールによって消去されるだろう。しかし、信号値を実行時間中にＦＰＧＡから読み出すことを可能にするために、これらのシャドーレジスタは必要である。したがって、有利にはこれらのシャドーレジスタは、ルート最適化から保護されるべきである。これを可能にする手段は、シャドーレジスタおよびその中に含まれている信号に属性を与えることである。ここでこの属性はツールに既知であり、これらのツールはこのため、これらのレジスタで最適化措置の実行を引き起こすことはない。
【００５２】
ルート最適化から保護されたシャドーレジスタと、最小の必要ビット幅を求める上述のステップとの組み合わせは、特に有利である。
【００５３】
本発明を以降で、図面を参照して詳細に説明する。ここでは、同様の部分には、同じ参照番号が付けられている。図示された実施形態は著しく概略化されており、すなわち、間隔および水平方向および垂直方向の延在は縮尺通りではなく、そうでないことが明記されていない限り、相互に、導出可能な幾何学形状的な関係も有していない。
【図面の簡単な説明】
【００５４】
【図１】本発明の第１の実施形態の概略図
【図２】本発明の第２の実施形態の概略図
【図３】本発明の第３の実施形態の概略図
【図４】本発明の第４の実施形態の概略図
【図５】第１、第２、第３の実施形態の概略図
【図６】リードバックインタフェースを介したレジスタの読み出しのための準備がされた、ネットリストの概略図
【図７】クロック線路が中断される、概略的な分離回路
【図８】イネーブル線路が中断される、概略的な分離回路
【図９】本発明の方法のステップ
【００５５】
この方法を、図１〜図４において、概略的なグラフィックＦＰＧＡソースコードに基づいて説明する。この方法は、テキスト形式のＦＰＧＡソースコードでも同様に実施可能である、ということを理解されたい。ＦＰＧＡソースコードから、それぞれ１つのネットリストが作成される。このネットリスクはＦＰＧＡ上にロード可能であり、これによってＦＰＧＡは、ＦＰＧＡソースコードにおいて規定された機能を実行することができる。
【００５６】
図１は、第１の実施形態を示している。これは、フリーラン（Ｆｒｅｉｌａｕｆ）モードにおいて、シャドーレジスタ１０を有している。ＦＰＧＡソースコード２０において、機能が、信号３０によって規定される。この信号３０は、シャドーレジスタ１０に割り当てられている。シャドーレジスタ１０は、２つの入口４０、５０を有している。信号３０のための第１の入口４０と、イネーブル信号６０のための第２の入口５０である。イネーブル信号６０によって、シャドーレジスタ１０はアクティブに切り替えられる。アクティブな状態においてのみ、シャドーレジスタ１０は、割り当てられた信号３０の最新の信号値を受け取る。最新の値を継続的にシャドーレジスタ内に記憶するために、イネーブル信号６０が継続的に加えられ、所望の時点でのみ中断されてよい。択一的に、イネーブル信号６０が、短い時間だけ加えられてもよく、これによって、アクティブなイネーブル信号の時点で、信号３０の最新の信号値が継続的にシャドーレジスタ内に記憶される。この方法の間に挿入される部分７０は、この例では、シャドーレジスタ１０と、信号３０およびイネーブル信号６０用の線路とを含んでいる。イネーブル信号６０は、有利には外部から、ＦＰＧＡに加えられる。しかし、イネーブル信号６０を、ＦＰＧＡによって制御させることも可能である。
【００５７】
図２には、第２の実施形態が示されている。以降では、図１との違いのみを説明する。第２のシャドーレジスタとして見なすこともできる中間レジスタ（テンポラリレジスタ）１００が信号３０およびシャドーレジスタ１０と接続される。中間レジスタ１００では、最新の信号値が記憶され、また、シャドーレジスタは分離されている。２つの部分のロジック回路１１０、１４０は、信号３０および中間レジスタ１００と接続される。ロジック回路の第１の部分１１０は実行時間中に、信号値の変化が生じたことを識別する。ロジック回路の第２の部分１４０は、ロジック回路の第１の部分１１０によって、信号値の変化が識別されたときに、トリガ信号１３０を生成する。このトリガ信号は、第２のレジスタに対するイネーブル信号として用いられる。ロジック回路１１０、１４０は、トリガ信号１３０が、信号値の変化時に、１クロックの間だけ生成されるように調整されている。これによって、最初の変化した信号値だけが、中間レジスタ１００内に記憶される。イネーブル信号６０は、中間レジスタ１００内に記憶された信号値の、シャドーレジスタ１０内への引き取りを可能にする。次にシャドーレジスタ１００から、値が、例えば、リードバックインタフェースを介して読み出され得る。イネーブル信号６０は、ロジック回路１１０、１４０および中間レジスタ１００に対するリセット信号としても用いられる。ロジック回路１１０、１４０は、リセット信号を受信してから、新たなトリガ信号１３０を生成するように設計されている。中間レジスタ１００のリセットは、読み出されたデータにおいて、次のことを明瞭に区別することを可能にする。すなわち、最新の値が読み出されたのか、または、リセット後のレジスタの初期値が読み出されただけなのかを区別することができる。
【００５８】
トリガ信号１３０が、挿入されている別の回路へも転送可能であるということを理解されたい。したがって、トリガ信号は、多数の信号値の記憶をトリガすることができる。これは、同時にＦＰＧＡ内に存在する複数の信号値の一貫したセットが検出されるべき場合に有利である。
【００５９】
この方法の間に挿入される部分７０は、この例では、シャドーレジスタ１０と、中間レジスタ１００と２つの部分のロジック回路１１０、１４０とを含んでいる。
【００６０】
図３には、第３の実施形態が示されている。以降では、図２との違いのみを説明する。イネーブル信号６０は、ここでは、第２のレジスタ１００および２つ部分のロジック回路１１０、１４０に対するリセット信号として使用されるのではない。イネーブル信号６０は、シャドーレジスタ１０への信号値の受け入れのためだけに用いられる。ロジック回路１１０、１４０および中間レジスタ１００用のリセット信号７０は、イネーブル信号６０と別個であり、実装に応じて、ＦＰＧＡ外から、または、ＦＰＧＡ内で駆動制御可能である。
【００６１】
図４では、第４の実施形態が示されている。以降では、図３との違いのみを説明する。モード切り替えロジック２００が挿入されている。このモード切り替えロジック２００は、リセット信号７０と、イネーブル信号６０と、モード信号２１０とを入力として得る。モード信号２１０の値に依存して、２つの部分のロジック回路１１０、１４０がクリッピング（ｕｅｂｅｒｓｔｅｕｅｒｔ）され、したがって、第４の実施形態の回路は、図１の第１の実施形態の回路と同様に動作する。付加的に、モード信号２１０に依存して、イネーブル信号６０が、中間レジスタ１００および２つの部分のロジック回路１１０、１４０に対するリセット信号として用いられる。したがって、この回路は、図２の第２の実施形態の回路のように動作する。モード信号２１０が加えられていない場合には、この回路は、図３の第３の実施形態の回路と同様に動作する。すなわち、第４の実施形態は、最初の３つの実施形態を組み合わせたものであり、その動作は、モード信号２１０によって、実行時間中に選択可能である。これは、ネットリストの作成時に、どの動作が望まれるのかがまだ確定されていない場合に有利である。
【００６２】
図５は、第１、第２および第３の実施形態の動作の概略図を示している。
【００６３】
最も上の行５００は、信号３０の例示的な信号経過を示している。時間にわたって、この信号値は複数回、０と１とで切り替わる。
【００６４】
第２の行５１０は、図１の第１の実施例の例に即したシャドーレジスタ１０の値を示している。イネーブル信号６０は、４つの異なる時間５５０、５６０、５７０、５８０でそれぞれ短時間、アクティブにされる。シャドーレジスタの値は、イネーブル信号６０がアクティブな場合にのみ更新されるので、シャドーレジスタ１０の値は、信号値３０が１であり、同時にイネーブル信号がアクティブである状態になるまで、０のままである。次に、シャドーレジスタから、値が読み出し可能である。
【００６５】
第３の行５２０は、図３の第３の実施例の例に即した中間レジスタ１００の値を示している。信号３０の信号値の最初の変化時に、２つの部分のロジック回路１１０、１４０は、トリガ信号１３０をトリガし、最新の値が、中間レジスタ１００内に引き継がれる。リセット信号７０は第５の時点５９０でアクティブになる。このリセット信号７０は、中間レジスタ１００の値を０にセットし、２つの部分のロジック回路１１０、１４０をリセットする。したがって、信号３０の信号値の次の変化時には、再び、トリガ信号１３０が生成される。イネーブル信号６０が、図示されている４つの時点５５０、５６０、５７０、５８０の１つでアクティブになるたびに、この時の最新の、中間レジスタ１００の値が、シャドーレジスタ１０内に引き継がれ、ここから読み出し可能である。
【００６６】
第４の行５３０は、中間レジスタ１００の値を、図２の第２の実施例の例に即して示している。信号３０の信号値の最初の変化時に、２つの部分のロジック回路１１０、１４０はトリガ信号１３０をトリガし、最新の値が、中間レジスタ１００内に引き継がれる。イネーブル信号６０が、図示されている４つの時点５５０、５６０、５７０、５８０の１つでアクティブになるたびに、この時の最新の、中間レジスタ１００の値が、シャドーレジスタ１０内に引き継がれ、ここから読み出し可能である。
【００６７】
同時に、イネーブル信号６０は、中間レジスタ１００の値を０にセットし、２つの部分のロジック回路１１０、１４０をリセットする。したがって、信号３０の信号値の次の変化時には、再び、トリガ信号１３０が生成される。
【００６８】
図６は、リードバックインタフェースを介したレジスタの読み出しのための準備がされた、ネットリストの概略図を示している。ネットリストは、３つのロジックブロックＭＵＸ、ＡＤＤ、ＭＵＬＴと、複数の線路とから成る。ネットリストの２つの入口６１０、６２０が、第１のロジックブロックＭＵＸの２つの入口に案内される。第１のロジックブロックＭＵＸの出口は、第２のロジックブロックＡＤＤの第１の入口と接続される。ネットリストの第３の入口６３０は、第２のロジックブロックＡＤＤの第２の入口と接続される。第２のロジックブロックＡＤＤの出口は、第３のロジックブロックＭＵＬＴの第１の入口と接続される。ネットリストの第４の入口６４０は、第３のロジックブロックＭＵＬＴの第２の入口と接続される。第３のロジックブロックの出口は、ネットリストの出口を形成する。このネットリストには、３つのシャドーレジスタＲＥＧが挿入される。各シャドーレジスタＲＥＧは、それぞれ、１つのロジックブロックの１つの出力信号に割り当てられる。シャドーレジスタＲＥＧは、リードバックインタフェースを介した読み出しのために設定および調整されている。したがって、読み出しロジックは、ネットリスト内に挿入されない。これらのシャドーレジスタは、分離回路を介して、同じクロックステップで、これらのロジックブロックから、機能的に分離される。これによって、シャドーレジスタ内に、一貫したデータセットが記録可能である。
【００６９】
図７は、クロック信号が中断される、概略的な分離回路を示している。シャドーレジスタのクロック信号７００は、挿入された分離メカニズム７１０を介して、このシャドーレジスタに割り当てられている信号のクロックネット（Ｔａｋｔｎｅｔｚ）ＣＬＫと接続される。この分離メカニズムは、ＦＰＧＡ内部で／ＦＰＧＡ外部から、実行時間中に呼びかけ可能であり、クロック信号を中断する。シャドーレジスタ１０に割り当てられている、ＦＰＧＡソースコード２０からの信号３０は、固定的に、シャドーレジスタ１０の信号入口４０と接続される。シャドーレジスタ１０は、分離メカニズム７１０が、シャドーレジスタ１０のクロック信号をクロックネットＣＬＫと接続している場合にのみ、最新の信号値を受け取る。
【００７０】
図８は、イネーブル信号が中断される、概略的な分離回路を示している。シャドーレジスタ１０のクロック信号７００は、この実施形態では、直接的に、クロックネットＣＬＫと接続される。シャドーレジスタ１０の分離のために、分離メカニズムが挿入され、シャドーレジスタ１０のイネーブル入口５０と接続される。この分離メカニズムは、ＦＰＧＡ内部で／ＦＰＧＡ外部から、実行時間中に呼びかけ可能であり、イネーブル信号を中断する。
【００７１】
複数のクロックドメイン（Ｔａｋｔｄｏｍａｅｎｅｎ）を有するＦＰＧＡプログラムも、上述した様式で、安定して、すなわち、準安定の状態なく、動作可能である。このために、クロック信号の中断による分離時には、シャドーレジスタはクロックネットに接続される。これによって、割り当てられた信号も動作される。種々の信号に割り当てられているシャドーレジスタが多数の場合には、これらのシャドーレジスタのクロック線路は、割り当てられている信号の各クロックネットに接続される。イネーブル線路の中断による分離時には、ＦＰＧＡネットリスト内の各クロックドメインに対して、正しいクロックドメイン移行を伴う、固有のイネーブル信号が挿入され、各クロックドメインのシャドーレジスタのイネーブルポートに接続される。クロックドメイン移行は、例えば、二重のレジスタによって正しく上書き可能である。
【００７２】
図９は、本発明の方法のステップを示している。ここで、幾つかのステップは必須であり、他のステップはオプションである。第１のオプションのステップＳ１１０では、ソースコードのコピーが作成される。第２のオプションのステップＳ１２０では、定数の最小の必要ビット幅が、ソースコードもしくはソースコードのコピーにおいて特定される。第３のオプションのステップＳ１３０では、第２のステップＳ１２０において特定された、最小の必要ビット幅が、ソースコードを通して伝えられる。第４の必須のステップＳ１４０では、シャドーレジスタ１０が割り当てられるべき信号３０が特定される。このステップは、自動的に、アルゴリズムまたはユーザー入力によって行われ得る。第５のオプションのステップＳ１５０では、第４のステップＳ１４０において特定された信号の値が、既に挿入されているシャドーレジスタの値から特定可能であるか否かが検査される。第６の必須のステップＳ１６０では、第４のステップＳ１４０において特定された信号３０に対して、シャドーレジスタ１０が挿入される。付加的に、このシャドーレジスタ１０に対して、分離メカニズムが挿入および調整される、または、このシャドーレジスタ１０は、既に挿入されている分離メカニズムと接続される。第５のステップＳ１５０において、第４のステップＳ１４０において特定された信号３０の値が、既に挿入されたシャドーレジスタから特定可能であることが確定されると、第６のステップＳ１６０において、シャドーレジスタは挿入されず、そこから信号の値が特定される、既に挿入されているシャドーレジスタが参照される。第７の必須のステップＳ１７０では、第６のステップＳ１６０において挿入されたシャドーレジスタ１０に対して、読み出しメカニズムが挿入および調整される。読み出しメカニズムの挿入および調整は、例えば、ネットリストがロードされるべきＦＰＧＡ上で、リードバックインタフェースを介した読み出しが可能にされるべきである、という実装ツールへの指示がソースコード内に挿入される、ということにあり得る。多数の信号に、シャドーレジスタを割り当てるために、第４〜第７のステップが、複数回、繰り返されてよい。有利には、第４〜第７のステップは自動的に、アルゴリズムによって繰り返し、処理される。ここでこのアルゴリズムは、手順通りに、ソースコードにおいて規定されている全ての信号を処理する。
【００７３】
必須の第８のステップＳ１８０では、ソースコードから、ネットリストが合成される。第８のステップＳ１８０を、第４のステップＳ１４０の前に実行することも可能である、ということに留意されたい。いずれにせよ、ネットリストは、元来のソースコードの情報も、挿入されたシャドーレジスタも含んでおり、このシャドーレジスタは、調整された分離メカニズムと、調整された読み出しメカニズムとを有している。オプションである、第９のステップＳ１９０では、第８のステップＳ１８０において作成されたネットリストが、ビットストリームに変換される。これは次に、オプションの第１０のステップＳ２００において、ＦＰＧＡ上にロードされ、ＦＰＧＡ上で、実行可能である。ここでＦＰＧＡの実行時間中に、オプションである第１１のステップＳ２１０において、第６のステップＳ１６０において挿入されたシャドーレジスタ１０が、分離メカニズムを介して、元来のソースコードの機能から分離可能であり、かつ、第７のステップＳ１７０において調整された読み出しメカニズムを介して読み出し可能である。この方法のこの必須のステップは、ＦＰＧＡの実行時間中の、第４のステップＳ１４０において特定された信号３０の値の確実な読み出しを可能にする。
【図１】
2017204279.tif 000003
【図２】
2017204279.tif 000004
【図３】
2017204279.tif 000005
【図４】
2017204279.tif 000006
【図５】
2017204279.tif 000007
【図６】
2017204279.tif 000008
【図７】
2017204279.tif 000009
【図８】
2017204279.tif 000010
【図９】
2017204279.tif 000011
【外国語明細書】
2017204279.tif 000012
2017204279.tif 000013
2017204279.tif 000014
2017204279.tif 000015
2017204279.tif 000016
2017204279.tif 000017
2017204279.tif 000018
2017204279.tif 000019
2017204279.tif 000020
2017204279.tif 000021
2017204279.tif 000022
2017204279.tif 000023
2017204279.tif 000024
2017204279.tif 000025
2017204279.tif 000026
2017204279.tif 000027
2017204279.tif 000028
2017204279.tif 000029
2017204279.tif 000030
2017204279.tif 000031
2017204279.tif 000032
2017204279.tif 000033
2017204279.tif 000034
2017204279.tif 000035
2017204279.tif 000036
2017204279.tif 000037
2017204279.tif 000038
2017204279.tif 000039
2017204279.tif 000040
2017204279.tif 000041
2017204279.tif 000042
2017204279.tif 000043
2017204279.tif 000044