vsim no acepta el parámetro-modelsimini en Windows


Estoy usando el argumento de línea de comandos -modelsimini <modelsim.ini> para especificar mi propio archivo modelsim.ini para la mayoría de los ejecutables QuestaSim / ModelSim.

Esto funciona perfectamente bien en Linux para vcom y vsim, así como para vcom en Windows. Pero las Ventanas vsim abortan y lanzan 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 vendor tools agrega sus asignaciones de biblioteca.)

¿Cómo puedo pasar mi propio modelsim.ini archivo de configuración vsim.exe?

Author: Paebbels, 2016-05-04

2 answers

Es cuestionable si esto debe considerarse como un error o no porque TCL requiere que los nombres de archivo se especifiquen con barras hacia adelante en lugar de barras hacia atrás. Por supuesto, uno esperaría que los nombres de archivo se manejen de la misma manera cuando se llama vcom o vsim. Así que la solución desde este punto de vista es especificar el camino con barras hacia adelante:

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.1 d bajo Windows y un modelsim.ini en mi temporal directorio.


Algunos experimentos bajo la consola TCL vsim revelan que -modelsimini el nombre del archivo 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 del 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 en 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.

He especificado un archivo inexistente, para que uno pueda ver la expansión. Si creo el archivo c:\tmp\modelsim.ini, vcom will proceda como se esperaba. Sí, las barras invertidas en los nombres de archivo están permitidas aquí.

Si 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 nombre-archivo se procesará de la misma manera que antes. Pero luego el script vsim añade otro par de llaves alrededor del argumento expandido. Este comportamiento debe ser considerado como un error, porque 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 del archivo también está encerrado por llaves.

 5
Author: Martin Zabel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 16:06:25

El ejecutable vsim de QuestaSim en Windows no puede hacer frente a las rutas de Windows (usando \ como signo delimitador de ruta) en el conmutador de línea de comandos -modelsimini. La ruta debe estar en escritura posix (usando delimitadores /).

Por lo que puedo ver, vcom no tiene problemas con el signo delimitador de ruta correcto.

 24
Author: Paebbels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 02:57:34