vhdl - vsim no acepta el parámetro-modelsimini en Windows
questasim (2)
El ejecutable vsim de vsim
en Windows no puede hacer frente a las rutas de Windows (usando /
como signo delimitador de ruta) en el -modelsimini
línea de comando -modelsimini
. La ruta debe estar en la escritura posix (usando /
delimitadores).
Por lo que puedo ver, vcom
no tiene problemas con el signo de delimitador de ruta correcto.
Estoy usando el argumento de la línea de comando -modelsimini <modelsim.ini>
para especificar mi propio archivo modelsim.ini
para la mayoría de los ejecutables de QuestaSim / ModelSim.
Esto funciona perfectamente bien en Linux para vcom
y vsim
, así como para vcom
en Windows. Pero el vsim
Windows aborta y arroja un error:
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
Los archivos modelsim.ini
existen y tienen el siguiente contenido:
[Library]
others = $MODEL_TECH/../modelsim.ini
(Este archivo contendrá más líneas si las herramientas del proveedor agregan sus asignaciones de biblioteca).
¿Cómo puedo pasar mi propio archivo de configuración vsim.exe
a vsim.exe
?
Es cuestionable si esto se debe considerar como un error o no, ya que TCL requiere que los nombres de archivo se especifiquen con barras diagonales en lugar de barras diagonales inversas. Por supuesto, uno esperaría que los nombres de archivo se manejen de la misma manera cuando se llama a vcom
o vsim
. Entonces, la solución desde este punto de vista es especificar la ruta con barras diagonales:
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
Lo comprobé aquí con ModelSim 10.1d en Windows y un modelsim.ini en mi directorio temporal.
Algunos experimentos bajo la consola vsim
TCL revelan que el -modelsimini
archivo -modelsimini
es manejado de manera diferente por los comandos vcom
y vsim
. Al principio, una barra invertida indica una secuencia de escape, un /t
en el nombre de archivo se expande a una pestaña, por ejemplo:
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.
Para evitar esto, el argumento se puede poner entre llaves {}
por ejemplo:
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.
Especifiqué un archivo inexistente, para que uno pueda ver la expansión. Si creo el archivo c:/tmp/modelsim.ini
, vcom
procederá como se espera. Sí, las barras invertidas en nombres de archivos están permitidas aquí.
Si le damos los mismos argumentos a vsim
, los mensajes de error (y el comportamiento real) serán diferentes:
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
El argumento de nombre de archivo se procesará de la misma manera que antes. Pero luego la vsim
comandos de vsim
agrega otro par de llaves alrededor del argumento expandido . Este comportamiento se debe considerar como un error, ya que no tiene ningún sentido. vsim
finalmente busca un archivo llamado {c:/tmp/modelsim.ini}
que nunca se puede encontrar en un sistema de archivos de Windows. En su mensaje de error, el nombre de archivo también está rodeado por llaves.