【问题标题】:TCL script not working anymoreTCL 脚本不再工作
【发布时间】:2015-01-17 15:52:29
【问题描述】:

我曾经在服务器上运行 Cadence 工具的 tcl 脚本,但是现在该脚本无法运行。
该脚本基于以下内容:

#### 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

设置:语法错误。

发生这种情况的服务器可能发生了什么变化,我该如何解决这个问题?脚本没有改变,所以它的语法是正确的。

【问题讨论】:

  • 你在 csh 中 source script.tcl 吗?
  • 我试图这样做,但实际上我忘了先运行 cadence 工具,就像 timrau 的回答一样
  • 听起来好得令人难以置信。 “用于设置 Cadence 工具的 csh 脚本”是什么样的?它是否将您带入了 Cadence 工具而不是停留在 csh 中?

标签: tcl cadence


【解决方案1】:

正如您在代码中描述的 cmets,您应该在工具内调用 source script.tcl,而不是在不理解 Tcl 语法的 csh 中,也不在不理解那些 Cadence 特定 Tcl 命令的 tclsh 中。

还有两行

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 是调用shell 命令的正确Tcl 命令。

【讨论】:

  • 谢谢,在运行脚本之前我忘了打电话给rc