34

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

これは、Windowsだけでなく、vcomLinuxでも完全に正常に機能します。しかし、Windows は中止し、エラーをスローします。vsimvcomvsim

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ですか?

4

2 に答える 2

25

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

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

于 2016-05-03T23:41:02.097 に答える
5

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 を使用して確認しました。


TCL コンソールでのいくつかの実験では、ファイル名がコマンド とコマンドによって異なる方法で処理されるvsimことが明らかになりました。最初のバックスラッシュはエスケープ シーケンスを示し、ファイル名の a はタブに展開されます。-modelsiminivcomvsim\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.inivcom、期待どおりに進みます。はい、ここではファイル名にバックスラッシュを使用できます。

に同じ引数を指定する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の周りに別の中かっこのペアを追加します。この動作は意味がないため、バグと見なす必要があります。最後に、Windows ファイル システムでは決して見つからないというファイルを探します。エラー メッセージでは、ファイル名も中かっこで囲まれています。vsim{c:\tmp\modelsim.ini}

于 2016-05-04T15:48:50.307 に答える