最近、Qsysと格闘している。
Cyclone V SoCのFPGA側に積んでいるDDR3にデータを書き込んでいたら、データがずれて読み書きできた。
データが定期的に欠けるというのではなく、ずれるのだ。
なんかおかしいなぁと思っていろいろ、調べたらDDR3 Controller with UniPhyとDMAのデータのバス幅が違っていて、これが原因でDDR3への読み書きがおかしくなっていた。
アドレスバスがおかしかったわけじゃないから、バス幅が違っていてもデータが欠けるだけだろうと思っていたんだけど、そうじゃなかった。
QsysのInterConnectが中途半端な回路を生成しているような気配。
DDR3 Controller with UniPhyに接続されるI/Fのデータバス幅が同じ幅でないといけないんだったら、InterConnectを生成する前にエラー出力して欲しい。
それでもって、データのバス幅の違いなんだから、バス幅の違いがあるならデータが欠けるような動作をして欲しい。
制限があるのに中途半端に回路を生成するもんだから、動作すると思うよ。
Qsysのコンポーネントで規定の信号ではなく、独自の信号を追加するときにin/outの指定はできないだろうか?
それらしい、指定の方法が見つからない。
毎度、Conduitで繋げると、Qsysの接続本数が多くなって、なんともみっともない。
規定のバス(AvalonとかAXI)なら、1対多接続できるのに独自の信号はそれができない。
この辺もQsysが中途半端に思える点。
1対多接続するためにブリッジするRTLを用意しちゃったよ。
RTLだけを作成するよりも、かえって時間がかかってしまった。
なんか本末転倒なツール。
Qsysって、なんか接続とかやりやすそうだけど、接続本数が多くなってくると、見辛い。
接続本数が多くなってきたから、コンポーネントを分けようとかすると、新しいコンポーネント作らなきゃいけないしね。
これはもしかしたら、できる方法があるのかもしれない。
まとめたいIPを選択して、New Componentとかしたら、まとめてくれればいいんだけど。
Qsysで接続するときはクロックは同じにしなければいけないというエラーが出るのは有難いんだが、組み合わせ回路だけのコンポーネントを作ると、出力にクロックが指定している信号とか接続できなくなってしまう。
それだったら、初めからクロックなんか見るなよ。
InterConnectも同じクロックじゃないといけないし、クロック乗り換えしてくれないの?
Qsysって、便利そうに見えるけど、ちょっと中途半端なツールだなあ。
見易くて、分かりやすくて、使い易いツールを提供してほしいなぁ。
その前に、Quartusが落ちるのは何とかして欲しい。
Quartus上でasmまで回ったこと無いぞ、ほとんど、Synthesisの部分で落ちる。
使えないツールなんか配布しなきゃいいのに。
Xilinxより、酷い。
Xilinxよりアドベンチャー性が高い。