FPGAを使い始めたばかりで、正しく理解できれば、コードを使用して論理ゲートを接続していることになります。VerilogでCPUを設計する場合、いくつかのロジックゲートを接続して動作するはずですが、DIY CPUの実行速度をどのように知ることができますか?何に依存していますか?
FPGAを使い始めたばかりで、正しく理解できれば、コードを使用して論理ゲートを接続していることになります。VerilogでCPUを設計する場合、いくつかのロジックゲートを接続して動作するはずですが、DIY CPUの実行速度をどのように知ることができますか?何に依存していますか?
回答:
設計の速度はいくつかの制限事項があります。最大の可能性は、クリティカルパスと呼ばれるデザインの組み合わせロジックを介した伝搬遅延です。高速FPGAを使用し、HDLを非常に慎重に記述する場合、おそらくVirtex Ultrascale +のようなもので700 MHzに達する可能性があります。Spartan 6などのローエンドFPGAでは、合理的な数値は250 MHzに近いでしょう。これにはどこでもパイプライン処理が必要であるため、ステートフルコンポーネント間の最小限の組み合わせロジック(ロジックレベルの最小化)、低ファンアウト(ロジック要素への負荷の最小化)、および混雑したラットネスト(効率的なルーティングパス)がありません。
異なるFPGAのファブリックロジックには、異なるタイミングパラメーターがあります。高速で高価なFPGAの遅延は小さく、その結果、同じデザインで高いクロック周波数を実現したり、同じ周波数でより複雑なデザインやパイプラインの少ないデザインを実行したりできます。特定のプロセス内のパフォーマンスは類似している可能性があります。たとえば、Kintex UltrascaleとVirtex Ultrascaleは同じプロセスで作成され、同様のセル遅延とルーティング遅延があります。ツールチェーンを介して実行し、静的タイミング解析からのタイミングレポートを見ることなく、特定のデザインがどれほど高速になるかを言うことは不可能です。
ツールチェーンを実行して最大クロック速度を決定する場合、ツールはタイミング駆動型であることに注意してください。指定されたタイミング制約を満たそうとします。タイミング制約が指定されていない場合、ツールはデザインの速度を最適化しようとしないため、結果が非常に悪くなる可能性があります。一般に、ツールは異なるクロック周期の制約で複数回実行して、達成可能な最大クロック周波数を見つける必要があります。
クリティカルパスが制限にならないようにデザインを最適化できる場合、クロックの生成と分配の制限(PLL、DCM、クロックバッファー、グローバルクロックネット)に直面します。これらの制限は部品のデータシートに記載されていますが、重要な設計でそれらに近づくことは困難です。Virtex Ultrascaleで500 MHzで実行しましたが、これは他のコンポーネントにトリガー信号を提供する少数のカウンターでした。
ターゲットテクノロジ(特定のFPGA)でデザインを合成し、静的タイミング解析ツールに最小クロック周期を通知させます。
または、最初にデザインに制約を追加すると、ツールはそれらが満たされているかどうかを知らせます。
CPUが実行される速度は、合成されたデザインでの最長のフロップ間遅延に基づきます。フロップからフロップへの遅延には、クロックからQ、ルーティング、ロジック/ LUT、フロップのセットアップ時間が含まれます。これらが一緒に追加されると、タイミングのクリティカルパスが形成され、配置配線ツールで出力されるタイミングレポートで確認できます。
パイプライン化、並列実行、投機的実行など、特定のプロセスを最大限に活用するためにこの遅延を最小限に抑えるアーキテクチャの作成に専念する設計分野があります。これは魅力的で、タスクを伴い、FPGA(または、その点ではASIC)のパフォーマンスの最後の1オンスを絞り込みます。
ただし、FPGAベンダーは、最大MHzレートに対応するさまざまなスピードグレードをデバイスに提供します。たとえば、-2のザイリンクスArtixは大まかに言って「250 MHz」の部品ですが、パイプラインの高いデザインではより高いクロックレートが可能です。
FPGA合成および配置配線ツールを操作するときは、デザインに制約を与える必要があります。これらは、達成しようとしているターゲットフロップ間遅延をツールフローに伝えます。Quartus(Altera)およびVivado(Xilinx)では、これらの制約はSynopsys Design Constraintsを表すSDCと呼ばれる構文を使用します。SDCは当初ASICの世界から来たもので、FPGA業界でも採用されています。SDCを理解する-必要な結果を得るのに役立ちます。
アルテラとザイリンクスには、SDC構文の使用方法やその他の多くのトピックに関するヘルプを提供するオンラインコミュニティがあります。
つまり、速度を重視する場合は、ZynqなどのCPUハードマクロを含むFPGAを検討する必要があります。