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 つを組み合わせてもデッドロックが発生する可能性があります。
中央インターコネクト (DMAC、IOP マスターなど)
たとえば、AXI_HP{1:0} には、OCM にアクセスする AXI_HP0 と、DDR にアクセスする AXI_HP1 があります (両方のマスターが同じ 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 でのトランザクションの順序は、次のようになります。
上記で説明したように、デッドロックが発生します。
この問題を回避するには、次のいずれかの方法を使用します。
Answer Number | アンサータイトル | 問題の発生したバージョン | 修正バージョン |
---|---|---|---|
53051 | Zynq-7000 SoC - PS DDR コントローラー | N/A | N/A |
AR# 47484 | |
---|---|
日付 | 06/13/2018 |
ステータス | アクティブ |
種類 | デザイン アドバイザリ |
デバイス |