web-dev-qa-db-ja.com

vsimはWindowsで-modelsiminiパラメーターを受け入れません

コマンドライン引数-modelsimini <modelsim.ini>を使用して、ほとんどのQuestaSim/ModelSim実行可能ファイルに独自のmodelsim.iniファイルを指定しています。

これは、Linuxのvcomvsim、およびWindowsのvcomで完全に正常に機能します。しかし、Windows vsimは異常終了し、エラーをスローします。

C:\Mentor\QuestaSim64\10.4c\win64\vsim.exe -do "do D:/git/PoC/sim/vSim.batch.tcl" -c -modelsimini D:\git\PoC\temp\precompiled\vsim\modelsim.ini -error 3473 -t 1fs test.arith_prng_tb
Reading C:/Mentor/QuestaSim64/10.4c/tcl/vsim/pref.tcl

# 10.4c

# ** Error: (vsim-7) Failed to open -modelsimini file "{D:\git\PoC\temp\precompiled\vsim\modelsim.ini}" in read mode.
#
# Invalid argument. (errno = EINVAL)
# Error loading design
Error loading design
# Errors: 1, Warnings: 0

modelsim.iniファイルが存在し、次の内容が含まれています。

[Library]
others = $MODEL_TECH/../modelsim.ini

(ベンダーツールがライブラリマッピングを追加した場合、このファイルにはさらに多くの行が含まれます。)

自分のmodelsim.ini構成ファイルをvsim.exeに渡すにはどうすればよいですか?

34
Paebbels

TCLではバックスラッシュではなく ファイル名はスラッシュで指定 が必要なため、これをバグと見なす必要があるかどうかは疑問です。もちろん、vcomまたはvsimを呼び出すときは、ファイル名が同じように処理されることが期待されます。したがって、この観点からの解決策は、スラッシュを使用してパスを指定することです。

C:\Mentor\QuestaSim64\10.4c\win64\vsim.exe -do "do D:/git/PoC/sim/vSim.batch.tcl" -c -modelsimini D:/git/PoC/temp/precompiled/vsim/modelsim.ini -error 3473 -t 1fs test.arith_prng_tb

ここで、WindowsのModelSim 10.1dと、一時ディレクトリのmodelsim.iniで確認しました。


vsim TCLコンソールでのいくつかの実験では、-modelsiminiファイル名がvcomコマンドとvsimコマンドによって異なる方法で処理されることが明らかになっています。最初、バックスラッシュはエスケープシーケンスを示し、ファイル名の\tは次のようにタブに展開されます。

vcom -modelsimini c:\tmp\modelsim.ini test.vhdl
# ** Error: (vcom-7) Failed to open -modelsimini file "c:   mpmodelsim.ini" in read mode.
# 
# Invalid argument. (errno = EINVAL)
# D:/altera/13.1_web/modelsim_ase/win32aloem/vcom failed.

これを防ぐために、引数を中括弧{}で囲むことができます。例:

vcom -modelsimini {c:\tmp\modelsim.ini} test.vhdl
# ** Error: (vcom-7) Failed to open -modelsimini file "c:\tmp\modelsim.ini" in read mode.
# 
# No such file or directory. (errno = ENOENT)
# D:/altera/13.1_web/modelsim_ase/win32aloem/vcom failed.

展開を確認できるように、存在しないファイルを指定しました。ファイルc:\tmp\modelsim.iniを作成すると、vcomは期待どおりに続行されます。はい、ここではファイル名の円記号を使用できます。

vsimに同じ引数を指定すると、エラーメッセージ(および実際の動作)は異なります。

vsim -modelsimini c:\tmp\modelsim.ini test
# vsim -modelsimini {{c:    mpmodelsim.ini}} test 
# ** Error: (vsim-7) Failed to open -modelsimini file "{c:  mpmodelsim.ini}" in read mode.
# 
# No such file or directory. (errno = ENOENT)
# Error loading design

vsim -modelsimini {c:\tmp\modelsim.ini} test
# vsim -modelsimini {{c:\tmp\modelsim.ini}} test 
# ** Error: (vsim-7) Failed to open -modelsimini file "{c:\tmp\modelsim.ini}" in read mode.
# 
# Invalid argument. (errno = EINVAL)
# Error loading design

File-name引数は、以前と同じ方法で処理されます。ただし、vsimスクリプトは、expanded引数の前後にもう1組の中括弧を追加します。この動作は意味がないため、バグと見なす必要があります。 vsimは、最終的に{c:\tmp\modelsim.ini}というファイルを探します。このファイルは、Windowsファイルシステムでは見つけることができません。エラーメッセージでは、ファイル名も中括弧で囲まれています。

5
Martin Zabel

Windows上のQuestaSimのvsim実行可能ファイルは、\コマンドラインスイッチのWindowsパス(パス区切り記号として-modelsiminiを使用)を処理できません。パスはposix書き込みである必要があります(/区切り文字を使用)。

私が見る限り、vcomは正しいパス区切り記号に問題はありません。

25
Paebbels