Ответ 1
Несомненно, следует ли это считать ошибкой или нет, потому что 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
Проверено здесь с ModelSim 10.1d под Windows и modelim.ini в моем временном каталоге.
Некоторые эксперименты в консоли vsim
TCL показывают, что -modelsimini
имя файла обрабатывается по-разному с помощью команд vcom
и vsim
. Сначала обратная косая черта указывает escape-последовательность, a \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
script добавляет еще одну пару фигурных скобок вокруг аргумента расширенный. Это поведение следует рассматривать как ошибку, потому что это не имеет никакого смысла. vsim
наконец ищет файл с именем {c:\tmp\modelsim.ini}
, который никогда не может быть найден в файловой системе Windows. В сообщении об ошибке имя файла также заключено в фигурные скобки.