ビット レーンの定義 (メモリ デバイス使用量) - 2023.2 日本語

UpdateMEM ユーザー ガイド (UG1580)

Document ID
UG1580
Release Date
2023-11-01
Version
2023.2 日本語

ビット レーン定義では、CPU バス アクセスのどのビットが特定のブロック RAM に割り当てられるかが指定されます。各定義にはメモリ タイプ (MemType) と配置データ (Placement) が含まれ、その後にビット レーンが配置されるビット番号とアドレス範囲 (AddressRange) が指定されます。構文は次のとおりです。

<BitLane MemType=”RAMB32” Placement=”X2Y19”>
          <DataWidth MSB=”31” LSB=”16”/>
          <AddressRange Begin=”0” End=”2047”/>
          <Parity ON=”false” NumBits=”0”/>
        </BitLane>
重要: ビット レーン パリティは MMI ファイルで定義されますが、UpdateMEM ではサポートされていません。

通常、ビット数は次の順序で指定されます。

<DataWidth MSB=bit_num LSB=bit_num>

順序を逆にして先に最下位ビット (LSB)、次に最上位ビット (MSB) を指定すると、UpdateMEM でビット レーン値がブロック RAM に配置される前に反転されます。

バス ブロックと同様、ビット レーンが定義される順序は重要ですが、ビット レーンでは、この順序によりビット レーンがバス ブロック CPU アクセスのどの部分に配置されるかが推論されます。最初に定義されたビット レーンが最上位ビット レーン値に、最後に定義されたビット レーンが最下位ビット レーン値に推論されます。下の図では、最上位ビット レーンは BRAM7、最下位ビット レーンは BRAM0 です。図 1 のレイアウト例に示すように、これはビット レーンが定義された順序に対応しています。

UpdateMEM でデータが入力されると、データ入力ファイルからビット レーンのサイズごとに、一番右の値から一番左の値の順にデータが取り込まれます。たとえば、最初の 64 ビット入力データが 0xB47DDE02826A8419 であれば、値 0xB4 がブロック RAM に最初に設定されます。

ビット レーンの順序 BRAM7 は 0xB4 に、BRAM6 は 0x7D に設定され、BRAM0 が 0x19 に設定されるまで繰り返されます。このプロセスは、メモリ空間全体が満たされるか、入力データがすべて消費されるまで、後続の各バス ブロック アクセス ブロック RAM に対して繰り返されます。次の図に、最初のバス ブロックを展開してこのプロセスを示します。

図 1. ビット レーンの充填順序

ビット レーン定義は、ハードウェア コンフィギュレーションと同じである必要があります。
警告: MMI の定義が実際のハードウェアの動作と異なると、メモリ コンポーネントから正しいデータが取得されません。

アドレス ブロック定義で使用されるデバイス タイプ キーワードに応じて、ビット レーン定義にはオプションの構文もいくつかあります。

ブロック RAM セルを指定する場合、FPGA デバイス内の物理的な行と列の位置を指定する必要があります。次の例では、物理的な行と列の位置を示しています。

Placement=”X3Y5”

Placement= キーワードを使用すると、対応するブロック RAM を FPGA 内の特定のリソース位置に割り当てることができます。この例では、ブロック RAM は FPGA の列 3、行 5 に配置されます。

制限

ビット レーンとバス ブロックの定義に正しい構文を使用することに加え、次の制限が適用されます。

  • この資料の例では、わかりやすくするためにバイト幅のデータ幅しか使用していませんが、同じ原則はブロック RAM が設定されるデータ幅にも適用されます。
  • ビット レーンの番号付けにはギャップや重複がないようにしてください。アドレス ブロックのビット レーンはすべて同じビット幅である必要があります。
  • ビット レーン幅はデバイス タイプ キーワードで指定されたメモリ デバイスに対して有効です。
  • バス ブロックでビット レーンのブロック RAM 用に使用できるバイト ストレージは、バス ブロックの開始アドレスと終了アドレスで推論されるアドレス範囲と同じである必要があります。
    • バス ブロックは、すべて同じバイト数サイズです。
    • ブロック RAM のインスタンス名は一度だけ指定します。
    • バス ブロックには、有効なビット レーン定義が 1 つ以上含まれます。
    • アドレス ブロックには、有効なバス ブロック定義が 1 つ以上含まれます。

    UpdateMEM でこれらすべての条件がチェックされ、違反があるとエラー メッセージが表示されます。