Point 1. 遊びながら学ぶ、だから遊ぼう!いくつか試してみてください。ツールの機能を参照してください。問題を感じ取ってください。何かを試してみないと、これを乗り越えることはできません。多くの場合、問題は自分が思っている場所にありません。
ポイント 2. これらの決定には、何らかのコンテキストを取得する必要があります。FPGA / デザインの容量と比較して、シフト レジスタにイネーブルを追加する量はどれくらいですか?
ポイント 3. 考慮すべき「リソース」には、主に 2 つのタイプがあります。セルと時間です。
Cells は、広い意味で比較的簡単です。何フロップ?識別可能なブロック (例: ALU: 乗算器、加算器など) のロジックの量は? 多くの場合、これは実行しようとしている設計によって定義されます。レジスタ、乗算器、加算器などがなければ、ALU を構築することはできません。
時間はより微妙であり、セルに対して常にトレードオフされます。何らかのパフォーマンス目標を達成しようとし、それを難しくする構造を認識することで、ポイント 1 から経験することができます。
注意すべき点は次のとおりです。
- 多数のものを駆動する単一のネット。ファンアウトが大きいと、1 つのドライバーに大きな負荷がかかり、速度が低下します。次に、ツールはセルを使用してその信号をバッファリングする必要があります。古典的な時間とセルのトレードオフ。
- レジスタ ステージ間のロジックの深い塊。ここでも、エッジに近い場合、ロジックがタイミングを満たすようにするために、ツールはより多くのセルを消費する必要があります。単純なロジックは高速で小さいです。パイプライン ステージを導入すると、どちらの側のロジックもはるかに簡単になり、デザインのサイズを縮小できる場合があります。
各ビットのファンアウトが低く、レジスタの予算を立てている場合は、大規模なバスについてそれほど心配する必要はありません。高帯域幅が必要なため、大規模なバスは多くの場合、高速設計に固有のものです。より高いクロック速度に移行するよりも、ワイドに移行する方が簡単な場合があります。一方、幅の広いバスの制御ロジックについて考えてみましょう。これは、ファンアウトが大きい可能性があるためです。
ツールやターゲット デバイスが異なれば特性も異なるため、セットアップのルールをプレイして学習する必要があります。サイズと速度 (そして最近では「パワー」) の妥協点は常にあります。その曲線に沿ってそれぞれの方向に移動するものを理解する必要があります。それには経験が伴います。
設計オプションをコーディングして評価する価値があるかどうかをすばやく判断するために使用できる規則はありますか?
私が思いつくことができる唯一のルールは、「時間はありますか?」か否か?'
あれば探索します。そうでない場合は、何かを機能させたほうがよいでしょう。
ああ、締め切りまでデザインする人生!