AR# 47484

Zynq-7000 SoC、AXI - AXI_HP が OCM および DDR にアクセスするとデッドロック状態が発生する可能性がある

説明

AXI_HP ソースと、DMAC などの別のソースがそれぞれ相互依存する形で OCM および DDR の両方にアクセスすると、PS AXI インターコネクトでデッドロック状態になる可能性があります。 

これらのソースのいずれかで 1 つのデスティネーション (OCM または DDR) にのみリクエストを出力するようにするか、または AXI_HP インターフェイスの書き込み数を 1 度に 1 回に制限することで、このデッドロックを回避できます。  

問題となるソースには AXI_HP インターフェイスのペアや、中央インターコネクト (DMAC、IOP マスターなど) が含まれます。APU メモリ リクエスト (CPU および ACP) は問題ではありません。

ソリューション

影響: 深刻な問題です。システムが停止する可能性があります。
回避策:「ソリューション」セクションの「回避策の詳細」を参照してください。
対象となる構成: AXI_HP インターフェイスを使用するデザイン
対象となるデバイス リビジョン:(Xilinx Answer 47916) - 「Zynq-7000 デザイン アドバイザリ マスター アンサー」を参照してください。

 

あるシーケンスで 2 つのソースがOCM および DDR にアクセスすると、デッドロック状態が発生する可能性があります。デッドロック状態に影響するソースは 3 つあります。これらのソースには APU (CPU および ACP インターフェイス) からのメモリ リクエストは含まれません。

OCM および DDR の両方にアクセスする 3 つのソースのうち、どの 2 つを組み合わせてもデッドロックが発生する可能性があります。

 

  • AXI_HP{1,0} のペア
  • AXI_HP{3,2} のペア

中央インターコネクト (DMAC、IOP マスターなど)

たとえば、AXI_HP{1:0} には、OCM にアクセスする AXI_HP0 と、DDR にアクセスする AXI_HP1 があります (両方のマスターが同じ HP ペアにある)。

デッドロックが起きないときの例は次のとおりです。

  • AXI_HP ペアが OCM および DDR の両方にアクセスしていない。
  • 中央インターコネクトが OCM および DDR の両方にアクセスしていない。
  • AXI_HP0 が OCM にアクセスし、AXI_HP3 が DDR にアクセスしている (異なる AXI_HP ペア)。

つまり、デッドロック状態が発生するには、2 つのソースがどちらも OCM および DDR にアクセスしている必要があり、 

2 つのソースのうち 1 つが AXI_HP ペアの 1 つである必要があります。もう 1 つのソースは他の AXI_HP ペアまたは中央インターコネクトに接続されているマスターの可能性があります。


2 つのソースのそれぞれが OCM および DDR の両方にアクセスしているだけでなく、特定シーケンスでアクセスが行われている必要があります。

そのシーケンスの具体例は次のとおりです。

AXI_HP マスターDMA 制御マスター
AXI_HP_DDR1_1 (DDR ポート 1 へ)DMA_OCM (OCM へ)
AXI_HP_DDR1_2 (DDR ポート 1 へ)DMA_ DDR2 (DDR ポート 2 へ)
AXI_HP_OCM (OCM へ) 


書き込みアドレスと書き込みデータは別々のチャネルで送信されますが、スレーブでは、書き込みデータ順序は、スレーブで許可されている書き込みアドレス シーケンスに従う必要があります。たとえば、順序並び替えは許可されていません。 

DDR でのトランザクションの順序は、次のようになります。

  • AXI_HP_DDR1_1: AXI_HP からの最初の書き込みが行われる。
  • DMA_DDR2: DDRC がトランザクションを許可するが、書き込みデータは DMA_OCM の後まで使用できないので、完了できない。
  • AXI_HP_DDR1_2: DDR は DMA_DDR2 が完了するまでこれを処理できない。
OCM でのトランザクションの順序は次のようになります。
  • AXI_HP_OCM: OCM がトランザクションを許可するが、書き込みデータは AXI_HP_DDR1_2 完了後まで使用できないので、完了できない。
  • DMA_OCM: OCM は AXI_HP_OCM が完了するまでこれを処理できない。

上記で説明したように、デッドロックが発生します。

この問題を回避するには、次のいずれかの方法を使用します。

  • AXI_HP0/AXI_HP1 のマスター ペアが OCM または DDR のどちらかにアクセスしていて、AXI_HP2/AXI_HP3 のマスター ペアからのアクセスが、OCM または DDR にのみに制限されているようにしてください。
  • AXI_HP ポートの書き込み出力が 1 度に 1 書き込みとなるように制限します。このように制限するには、0x0 を AFI_WRCHAN_ISSUINGCAP に書き込みます。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
53051 Zynq-7000 SoC - PS DDR コントローラー N/A N/A
AR# 47484
日付 06/13/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス