ホストPCからPCI-Xターゲット・アクセスをしてきたときに、内部レジスタ以外はスプリット応答で返すことにした。その際に、PCIマスタ・モジュールを用いて、スプリット完了を64ビットアクセスで返したところ、ホストPCがNMIを受信してしまい、You probably have a hardware problem with your RAM chipsと表示が出てしまった。
ダンプデータも0番地(ボードのアクセス番地は4)は0、4番地(ボードのアクセス番地は0)は6、8番地は0、C番地は8。1つおきにデータが取れていない。
これがChipscopeで撮った波形。

最初のアクセスがTRDY#='0', DEVSEL#='1', STOP#='1'で応答しているのでスプリット応答、その次のアクセスのC/BE#が"C"で始まっているのでスプリット完了である。
最初のアクセスのリクエスタ・ファンクション番号は0、リクエスタ・デバイス番号は0、リクエスタ・バス番号は0。タグ番号は14。
ボードのファンクション番号は0、デバイス番号は2、バス番号は4。
スプリット完了時のアドレスフェーズのC/BE#はC。Split CompletionなのでOK。タグ番号は14、リクエスタの3つの番号は、0,0,0、ローアドレスも4でOK。(14000004)
アトリビュートフェーズのC/BE#は0。ファンクション番号は0、デバイス番号は2、バス番号は4。ビット29,30,31も0でOK。(00041004)
その後、データフェーズでC/BE#が0になっていて、オール1に保持されていないのは問題だ。(修正予定)
やはり、データフェーズでC/BE#をオール1にしても、ホストPCがNMIを受信してしまい、You probably have a hardware problem with your RAM chipsと表示が出るのは変わらない。

どうやら、Memory read DWORDに64ビットアクセスでスプリット完了を返すのは問題があるのかもしれない。そうではないようだ。32ビットアクセスでやってみたが同様にだめ。
1つバグがあった、下の図で、pcix_req_b_cがピンクの矢印で、いったんリクエストが解除されている。これは、PCI-Xマスタ転送メイン・ステートマシンがバグでバス・パーキングの状態になってしまったためである。このバグのためにスプリット完了トランザクションがなくなってしまっていた。
バグは解消できたが、まだNMIがかかってしまう。
- 2007年12月19日 13:44 |
- PCI
-
| トラックバック:0
-
| コメント:0