パイプラン段数と SRL の使用量のバランス - 2023.2 日本語

Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 日本語

レジスタ パイプラインの段数が多い場合、できるだけ多くのレジスタを SRL にマップし、レジスタの使用率が大幅に増加するのを回避します。たとえば、データ幅 32 の 9 段のパイプラインには、各ビットに 9 個のレジスタ、合計 32 x 9 = 288 個のレジスタが使用されます。同じ構造を SRL にマップすると、32 個の SRL が使用されます。各 SRL には、5'b01000 に接続されたアドレス ピン A4 ~ A0 があり、9 段のパイプラインをインプリメントできます。

合成で SRL を推論する方法は、次のように複数あります。

  • SRL
  • REG -> SRL
  • SRL -> REG
  • REG -> SRL -> REG

これらの構造は、次のように RTL コードで srl_style 属性を使用すると作成できます。

  • (* srl_style = "srl" *)
  • (* srl_style = "reg_srl" *)
  • (* srl_style = "srl_reg" *)
  • (* srl_style = "reg_srl_reg" *)

より深いパイプライン段で異なるイネーブル/リセット制御信号を使用してしまうというのが、よくある間違いです。次は、深さ 9 のパイプライン段で使用されるリセット (3、4、8 つ目のパイプライン段に接続) の例です。この構造では、SRL プリミティブにリセット ピンがあるので、パイプライン段はレジスタのみにマップされます。

FF->FF->FF(reset) -> FF->FF(reset)->FF->FF->FF(reset)->FF

SRL 推論の利点を活かすには、次のようにします。

  • パイプライン段用のリセットがないようにします。
  • リセットが本当に必要かどうかを解析します。
  • フリップフロップの 1 つ (たとえばパイプラインの最初または最後の段) でリセットを使用します。