vsim 在 Windows 上不接受 -modelsimini 参数
vsim does not accept -modelsimini parameter on Windows
我正在使用命令行参数 -modelsimini <modelsim.ini>
为大多数 QuestaSim / ModelSim 可执行文件指定我自己的 modelsim.ini
文件。
这在 Linux vcom
和 vsim
以及 vcom
Windows 上工作得很好。但是 Windows vsim
中止并抛出错误:
C:\Mentor\QuestaSim64.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
?
QuestaSim 在 Windows 上的 vsim
可执行文件无法处理 -modelsimini
命令行开关中的 Windows 路径(使用 \
作为路径分隔符)。路径需要用 posix 书写(使用 /
分隔符)。
据我所知,vcom
正确的路径分隔符没有问题。
这是否应该被视为错误是值得怀疑的,因为 TCL 要求 file names are specified with forward slashes 而不是反斜杠。当然,人们会期望在调用 vcom
或 vsim
时以相同的方式处理文件名。所以从这个角度来看解决办法就是用正斜杠指定路径:
C:\Mentor\QuestaSim64.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
file-name 被 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
文件名参数的处理方式与以前相同。但是随后 vsim
脚本在 expanded 参数周围添加了另一对花括号。这种行为应该被视为一个错误,因为它没有任何意义。 vsim
最终查找名为 {c:\tmp\modelsim.ini}
的文件,该文件在 Windows 文件系统中永远找不到。在您的错误消息中,文件名也用大括号括起来。
我正在使用命令行参数 -modelsimini <modelsim.ini>
为大多数 QuestaSim / ModelSim 可执行文件指定我自己的 modelsim.ini
文件。
这在 Linux vcom
和 vsim
以及 vcom
Windows 上工作得很好。但是 Windows vsim
中止并抛出错误:
C:\Mentor\QuestaSim64.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
?
QuestaSim 在 Windows 上的 vsim
可执行文件无法处理 -modelsimini
命令行开关中的 Windows 路径(使用 \
作为路径分隔符)。路径需要用 posix 书写(使用 /
分隔符)。
据我所知,vcom
正确的路径分隔符没有问题。
这是否应该被视为错误是值得怀疑的,因为 TCL 要求 file names are specified with forward slashes 而不是反斜杠。当然,人们会期望在调用 vcom
或 vsim
时以相同的方式处理文件名。所以从这个角度来看解决办法就是用正斜杠指定路径:
C:\Mentor\QuestaSim64.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
file-name 被 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
文件名参数的处理方式与以前相同。但是随后 vsim
脚本在 expanded 参数周围添加了另一对花括号。这种行为应该被视为一个错误,因为它没有任何意义。 vsim
最终查找名为 {c:\tmp\modelsim.ini}
的文件,该文件在 Windows 文件系统中永远找不到。在您的错误消息中,文件名也用大括号括起来。