On peut se demander si cela doit être considéré comme un bogue ou non car TCL exige que les noms de fichiers sont spécifiés avec des barres obliques au lieu des barres obliques inversées. Bien sûr, on pourrait s'attendre à ce que les noms de fichiers soient traités de la même manière lors de l'appel à vcom
o vsim
. La solution de ce point de vue est donc de spécifier le chemin d'accès avec des barres obliques :
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
Je l'ai vérifié ici avec ModelSim 10.1d sous Windows et un modelsim.ini dans mon répertoire temporaire.
Certaines expériences dans le cadre du vsim
La console TCL révèle que -modelsimini
est traité différemment par la fonction vcom
y vsim
des commandes. Au début, une barre oblique inverse indique une séquence d'échappement, un \t
dans le nom du fichier est étendu à un onglet, par exemple :
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.
Pour éviter cela, l'argument peut être mis entre accolades {}
par exemple :
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.
J'ai spécifié un fichier inexistant, afin que l'on puisse voir l'expansion. Si je crée le fichier c:\tmp\modelsim.ini
, vcom
se déroulera comme prévu. Oui, les backslashes dans les noms de fichiers sont autorisés ici.
Si nous donnons les mêmes arguments à vsim
les messages d'erreur (et le comportement réel) seront différents :
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
L'argument nom-fichier sera traité de la même manière que précédemment. Mais alors l'argument vsim
script ajoute une autre paire d'accolades autour de la balise élargi argument. Ce comportement doit être considéré comme un bogue, car il n'a aucun sens. vsim
cherche finalement un fichier appelé {c:\tmp\modelsim.ini}
qui ne peut jamais être trouvé sur un système de fichiers Windows. Dans votre message d'erreur, le nom du fichier est également entouré d'accolades.