Скрипт 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:

установить: Синтаксическая ошибка.

Что могло измениться на сервере, чтобы это произошло, и как я могу это исправить? Скрипт не менялся, поэтому его синтаксис правильный.


person Deadlock    schedule 17.01.2015    source источник
comment
Ты source script.tcl в КШ?   -  person timrau    schedule 17.01.2015
comment
Я пытался, но на самом деле я забыл сначала запустить инструмент cadence, как в ответе от timrau   -  person Deadlock    schedule 17.01.2015
comment
Звучит слишком хорошо, чтобы быть правдой. Как выглядел скрипт csh для настройки инструментов Cadence? Это привело вас к инструменту Cadence вместо того, чтобы остаться в csh?   -  person timrau    schedule 17.01.2015


Ответы (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 для вызова команд оболочки.

person timrau    schedule 17.01.2015
comment
Спасибо, я забыл позвонить rc перед запуском скрипта. - person Deadlock; 17.01.2015