TCL 脚本不再工作
TCL script not working anymore
我曾经 运行 服务器上的 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
。这曾经有效,但是现在失败并出现以下错误:
Missing ].
如果我评论第一个 if
:
set: Syntax Error.
发生这种情况的服务器可能发生了什么变化,我该如何解决这个问题?脚本没有改变,所以它的语法是正确的。
正如您在代码中的评论所述,您应该在工具内部调用 source script.tcl
,而不是在不理解 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
是调用 shell 命令的正确 Tcl 命令。
我曾经 运行 服务器上的 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
。这曾经有效,但是现在失败并出现以下错误:
Missing ].
如果我评论第一个 if
:
set: Syntax Error.
发生这种情况的服务器可能发生了什么变化,我该如何解决这个问题?脚本没有改变,所以它的语法是正确的。
正如您在代码中的评论所述,您应该在工具内部调用 source script.tcl
,而不是在不理解 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
是调用 shell 命令的正确 Tcl 命令。