vsim在Windows上不接受-modelsimini参数

Pae*_*els 34 vhdl modelsim questasim

我正在使用命令行参数为大多数QuestaSim/ModelSim可执行文件-modelsimini <modelsim.ini>指定我自己的modelsim.ini文件.

这适用于Linux for vcom和Windows vsim,以及适用vcom于Windows.但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
Run Code Online (Sandbox Code Playgroud)

这些modelsim.ini文件存在并具有以下内容:

[Library]
others = $MODEL_TECH/../modelsim.ini
Run Code Online (Sandbox Code Playgroud)

(如果供应商工具添加其库映射,则此文件将包含更多行.)

如何将自己的modelsim.ini配置文件传递给vsim.exe

Pae*_*els 25

QuestaSim vsim在Windows上的可执行文件无法\-modelsimini命令行开关中处理Windows路径(使用路径分隔符号).该路径需要以posix编写(使用/分隔符).

据我所知,vcom正确的路径分隔符符号没有问题.

  • @TaW因为这个答案解决了我的特定问题,所以这是一个定义的答案.而且,这是将正确答案标记为解决方案的唯一方法.你不能接受评论.如果那是你关注的话,我也没有自我回答的声誉......顺便说一句.简而言之,但正确的答案仍然是答案. (4认同)
  • @Paebbels你的意思是你没有通过自我回答获得声誉?除非我将其标记为社区维基,否则您确实会获得声誉. (3认同)

Mar*_*bel 5

这是否应该被视为错误是值得怀疑的,因为TCL要求使用正斜杠而不是反斜杠指定文件名.当然,人们会认为文件名的处理方式当调用同样的方式vcomvsim.因此,从这个角度来看,解决方案是使用正斜杠指定路径:

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
Run Code Online (Sandbox Code Playgroud)

使用Windows下的ModelSim 10.1d和临时目录中的modelsim.ini进行检查.


vsimTCL控制台下的一些实验表明,-modelsimini文件名由vcomvsim命令处理不同.首先,反斜杠表示转义序列,\t文件名中的a扩展为选项卡,例如:

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.
Run Code Online (Sandbox Code Playgroud)

为了防止这种情况,可以将参数放在花括号中{},例如:

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.
Run Code Online (Sandbox Code Playgroud)

我指定了一个不存在的文件,以便可以看到扩展.如果我创建该文件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
Run Code Online (Sandbox Code Playgroud)

file-name参数将以与以前相同的方式处理.但随后vsim脚本在扩展参数周围添加了另一对花括号.这种行为应该被视为一个错误,因为它没有任何意义.vsim最后查找一个{c:\tmp\modelsim.ini}在Windows文件系统上永远找不到的文件.在您的错误消息中,文件名也用大括号括起来.