【问题标题】:vsim does not accept -modelsimini parameter on Windowsvsim 在 Windows 上不接受 -modelsimini 参数
【发布时间】:2016-08-29 04:48:30
【问题描述】:

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

这对于vcomvsim 在Linux 上非常有效,对于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

【问题讨论】:

  • 虽然我不是反对者,但无论您在哪里看到所描述的 -modelsimini 命令行参数,您都会看到在 Windows 系统上,路径分隔符应该是正斜杠 (/)。 i> 与ModelSim ® Reference Manual Software Version 10.1c 一样,大约有 10 个位置。在 Questasim 用户手册中至少有一个地方找到了相同的句子(我首先在那里找到了它)。这种行为可能并不像您发现的那么奇怪。
  • @Gab 对不起。这不是我的意图。报告的问题似乎在 SO 上传播得更广泛。

标签: vhdl modelsim questasim


【解决方案1】:

这是否应该被视为错误是值得怀疑的,因为 TCL 要求 file names are specified with forward slashes 而不是反斜杠。当然,人们会期望在调用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

在这里使用 Windows 下的 ModelSim 10.1d 和我的临时目录中的 modelsim.ini 进行了检查。


vsim TCL 控制台下的一些实验表明-modelsimini 文件名由vcomvsim 命令处理不同。起初反斜杠表示转义序列,文件名中的\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

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

【讨论】:

  • 早期的 Modelsim 命令行解释器似乎将反斜杠视为路径分隔符,直到 VHDL '93 中出现扩展标识符。有一个开关可以启用扩展标识符,它要求路径分隔符使用正斜杠。请参阅ModelSim Command Reference 5.5e 第 CR-15 页,以及 CR-11 扩展标识符,我们发现这是命令行参数限制。看起来有意义可能是一个观点问题。
【解决方案2】:

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

据我所见,vcom 对正确的路径分隔符符号没有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2016-10-31
    • 2018-03-16
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多