Запуск команды для нескольких файлов с использованием сценария TCL

Я использую определенный инструмент (Synopsys Design Vision), который я запускаю с помощью сценария TCL.

Команда примерно такая

analyze -library work -format verilog {/user/codes/abcd.v }

Теперь у меня есть папка с 5000 файлами расширения .v с именами abcd_1, abcd_2, abcd_3.....abcd_5000. Теперь я хочу автоматизировать скрипт, чтобы команда работала над каждым файлом.

Я пытался сделать что-то вроде этого

for { set a 1}  {$a < 5001} {incr a} {
analyze -library work -format verilog {/user/codes/abcd_$a.v }
#other commands
.
.
}

Однако он не работает и выдает ошибку. Я не так много работал с tcl-скриптами.

Пожалуйста, укажите, где я ошибаюсь и что я могу сделать, чтобы заставить его работать. Спасибо.


person avi1987    schedule 16.02.2021    source источник
comment
Фигурные скобки Tcl предотвращают раскрытие переменных, просто заключают их в одинарные кавычки в оболочке. Вместо этого используйте двойные кавычки.   -  person glenn jackman    schedule 17.02.2021
comment
Обратите внимание, что ваш стиль цитирования делает пробел после .v важным. Ваши файлы на самом деле заканчиваются точкой v?   -  person glenn jackman    schedule 17.02.2021


Ответы (1)


Короче говоря, используйте кавычки, а не фигурные скобки, так как последние предотвращают подстановка переменных не происходит:

for {set a 1}  {$a < 5001} {incr a} {
  analyze -library work -format verilog "/user/codes/abcd_$a.v"
  # ...
}

Однако вы также можете проверить команду file для сборки путей к файлам.

person mrcalvin    schedule 17.02.2021