XILINXのPCIe XDMAコアによる起動不具合の原因
XILINXのPCIe XDMAコアを入れたFPGAをPCにつないで起動すると、OSが起動する途中にハングアップしてしまったり、再起動を繰り返すという現象があります。
海外のforumを見ても問題は報告されています。
- https://forums.xilinx.com/t5/PCI-Express/XDMA-Linux-hang-up-on-boot-time/td-p/737666
- https://forums.xilinx.com/t5/PCI-Express/pcie-xdma-hang-up-Windows7-booting/td-p/762747
- https://forums.xilinx.com/t5/PCI-Express/PCIE-DMA-subsystem-hang-up-while-PC-booting/td-p/775955
すべてのPCで起きるわけではなく、現象が起きるPCとそうでないPCがあります。
Kintex-7搭載のPCI Expressボード「Cosmo-K」でもこの現象が出るので、ハードの問題なのか、VivadoのIPコアのバグなのか切り分けができませんでした。
この現象は、MIGを入れてDMAとDDR3メモリを連携させたあたりから起き始めた気がするので、シグナルインテグリティの問題だったら・・と思うと量産に踏み切る覚悟ができませんでした。
私の古いPC(上の写真)では、起動時にリブートしてしまうときに一瞬ブルースクリーンが出るのですが、エラーメッセージに何がかかれているかわからなかったので、画面をビデオに撮ってコマ送りで見てみました。
すると、
ACPI BIOS ERRORと書かれています。これは根が深そうです。新しいPCでは画面にランダムな点がいっぱいでて再起動してしまいます。
いろいろチャレンジしてみて、ようやく原因がわかりました。
問題は未接続のAXIのBYPASSが存在するためのようです。
M_AXI_BYPASSというポートは、BAR2にアクセスされたデータが出てくるポートなのですが、これが未接続だとPCの起動時に問題を起こすようです。
使わないのであれば、XDMAの設定でAXI_BYPASSを無効にしたほうがいいでしょう。
AXI_BYPASSに適当なBRAMをつないでおくくらいではダメで、全アドレスを処理できなければならないのかもしれません。
こうしてAXI_BYPASSのポートが消えると、いままで起動できなかったPCでも問題なく起動するようになりました。
いま、PCI Express経由でDDR3メモリ(データレート1600MHz)に6TByte程度くらいReadとWriteを繰り返していますが、エラーは一つも起きていません。
Cosmo-Kのエラー率は10^-13以下といえます。
これで、Kintex-7搭載のPCI Expressボード「Cosmo-K」の量産に踏み切れます。
Cosmo-Kをどうぞよろしくお願いします。
| 固定リンク










コメント
SPF+とは・・・
SFP+っすかね?
http://www.tokudenkairo.co.jp/cosmok/
投稿: インフラ屋 | 2017.11.01 00:54
SPF豚は美味いですね。どうしたのですか?
投稿: なひたふ | 2017.11.29 14:53
「Cosmo-K」のサイトで、「SFP」が「SPF」になっている綴り間違いが有るのでは?
と指摘されていると思います。
投稿: かたおか | 2017.11.30 11:45