最近、ZYNQのAXI接続はAXI Smartconnectを使用している。
Vivado 2016.4のAXI接続には次の3つが存在する。
リファレンスデザインなどでAXI接続でよく使われるのはAXI Interconnectなのだが、Interconnectよりも速くなっているというAXI Smartconnectが2016.4から利用できるようになっている。
ただ、PreProductなので動作保証はされない。
今日はAXI Smartconnectで思わぬ不具合に遭遇した。
AXI SmartconnectでPLの回路モジュールをAXI接続したのだがARMからアクセスすると反応しない不具合に遭遇した。
今回はPLの回路モジュールは既存のもので、以前にAXI Smartconnectで接続して動作実績のあるものを使用して、ソフトウェアをガッツリと並行して開発していたのでてっきり、ソフト側の不具合でアクセスできていないのだろうと思っていた。
あまりにおかしいのでu-bootでアクセスしてみるとリセットがかかる。
つまり、PLの回路モジュールにアクセスできていないのだ。
PLの既存回路モジュールにデバッグ回路を仕込んでみても不具合は解消しない。
プロジェクトも新規で起こしているものなのでプロジェクトバージョンアップの洗礼でもない。
原因が不明なので諦めかけた時、AXI Smartconnectが論理合成できないとういエラーが発生した。
はぁ〜!?
いろいろ試行錯誤でやってみたところ、AXI Smartconnectを一旦削除して再度配置したらPLの回路モジュールにアクセスできるではないか!
原因はAXI Smartconnectの論理合成にあったようだ。
振り返ってみると、いつも回路を修正した時はSynthesisをResetしてから再合成するんだけど、合成がやたら速い。
Synthesisをリセットしているんだから全てやり直しのはずである。
だから、フル合成のはずなので時間がかかるはずなのである。
ここに気が付かなかった。
SynthesisをResetしてもリセットになっていないようなのだ。
再フル合成する場合は、プロジェクト名.runsディレクトリを全部削除してから再合成するのと良い。
技術書典の時に電車の中でタブレットで論議合成したら一発で問題なかったのは新規作成プロジェクトでかつ、最初の合成だったからみたいだな。
Xilinx謹製メーカ製IPがXilinx謹製論理合成で不具合を起こすのは勘弁してほしい。
そこは時間がかかってもいいから一発で不具合無しで通してほしい。
自作IPはシミュレーションとかしまっくって不具合でないのわかってるのにメーカ謹製IPの不具合で前に進めないのは辛いっす。
あ、それとAXI Smartconnectはプロトコルを混ぜると不具合が発生しやすいようですね。
怪我の功名か、Linux Kernelはmainlineの4.10.9、u-bootはmainlineの2017.5ができちゃいました。
ついでなのでLinux KernelはSDSoC対応にしちゃったかも・・・
まだ、試していないのでなんとも言えないけどぉ〜(^-^;
Tweet write: 2017/04/12/ 00:49:16