Скрипт TCL больше не работает
Раньше я запускал сценарий tcl для инструментов Cadence на сервере, однако теперь сценарий не запускается.
Сценарий основан на следующем:
#### Template Script for RTL->Gate-Level Flow
#### all basic steps except for DFT-scan
#### Fill in the <...> fields for your module
#### and update library search paths for your system
if {[file exists /proc/cpuinfo]} {
sh grep "model name" /proc/cpuinfo
sh grep "cpu MHz" /proc/cpuinfo
}
#### Set up
set DESIGN test
set SYN_EFF medium
set MAP_EFF medium
set DATE test
set global_map_report 1
set map_fancy_names 1
set iopt_stats 1
set SYN_PATH "."
set _OUTPUTS_PATH outputs_${DATE}
set _LOG_PATH logs_${DATE}
set _REPORTS_PATH reports_${DATE}
set_attribute lib_search_path {. ./lib} /
set_attribute hdl_search_path {. ./rtl} /
set_attribute information_level 7 /
set_attribute map_timing true /
set_attribute retime_reg_naming_suffix __retimed_reg /
set_attribute library lib
... continues
Сначала я открываю csh
чтобы запустить скрипт csh для настройки инструментов Cadence на сервере, я запускаю source script.tcl
, Раньше это работало, однако, теперь это терпит неудачу со следующей ошибкой:
Отсутствует ].
И если я прокомментирую первый if
:
установить: синтаксическая ошибка.
Что могло измениться на сервере, чтобы это произошло, и как я могу это исправить? Сценарий не изменился, поэтому его синтаксис правильный.
1 ответ
Как ваши комментарии в коде описаны, вы должны позвонить source script.tcl
внутри инструмента, а не в csh
который не понимает синтаксис Tcl, ни в tclsh
который не понимает эти специфичные для Cadence команды Tcl.
Кроме того, две линии
sh grep "model name" /proc/cpuinfo
sh grep "cpu MHz" /proc/cpuinfo
должно быть
exec grep "model name" /proc/cpuinfo
exec grep "cpu MHz" /proc/cpuinfo
поскольку exec
правильная команда Tcl для вызова команд оболочки