Frequently Asked Questions
makeを実行するときの問題
"Permission Denied"と出る
MSYSのプロンプトにてmakeを実行すると、"Permission Denied"と出てコンパイラやサブシェルの起動に失敗することがあります。
推測ですが、MSYSをマルチプロセッサPCで実行した場合にたまに発生するようです。
MSYSのインストールパス\bin\sh.exe=0x00000001
を追記し、sh.exeを動かすプロセッサを1つに固定すれば発生しなくなるようです。
(あくまでNOODLYBOXの作者のPC(Xeon3110 WinXP Home)で実験した話ですので、効果は保証できませんが)
"/etc/makerule: No such file or directory"と出る
". settings.sh"をし忘れた場合、環境変数の設定が足りなくて必要なファイルを探し出せなくなります。
sampleディレクトリやdpisampleディレクトリにて、". settings.sh"を実行してください。
"** Error: License checkout has been disallowed ~"と出る
ModelSimのウィンドウがライセンスを握っているときにmakeを実行すると、DPIヘッダを自動作成するときに
ライセンスの取得に失敗します。
そのような場合は、いったんModelSimのウィンドウを閉じて、makeを再実行してください。
makeを再実行してもうまくいかない場合は、make cleanして、それからmakeを再実行してください。
VerilogとVHDL、どうやって判定しているの?
makeを実行した時のカレントディレクトリの名前が'v'で終わればVerilog、そうでなければVHDLという判定を、etc/makeruleで行っています。
たとえば、msimvならばVerilog、msimならばVHDLという判定が行われます。
デバッグするときの問題
printfデバッグ
DPI-C版は、#include <cstdio>して、std::printf()を呼び出すことで、シミュレータの画面に文字列を表示させることができます。
NOODLYBOX本体の開発も、printfデバッグして、デグレードしないようにリグレッションテストをして、という感じでやっています。
insightを使ったデバッグ
insightでvsimk.exeにattachして、自分の作ったDPI用のDLLにブレークポイントを張るというのはできたのですが、
そのあとcontinueするとvsimk.exeの動作がやたらと遅くなります(HDLの行数が制限を超えた場合の動作と似ています。)
Xilinx EditionでないModelSimを使えば遅くならないかもしれませんが、XEだけしかもっていない場合は別の手を考えたほうがよさそうです。