来自modelsim vsim“做文件”脚本:
tcheck_set {/tb/dut/U1} OFF
run -all
这将禁用实例 U1 中的所有计时检查。
注意实例名称中是否有“\”等特殊字符,例如:
VSIM> tcheck_set {/tb_top/U1/\tp_mux_pad[15]} OFF
# ERROR: instance "\tp_mux_pad[15]" not found
VSIM> tcheck_set {/tb_top/U1/*tp_mux_pad[15]} OFF
# /tb/U1/\tp_mux_pad[15]/U0/U1
# 1 ( WIDTH (posedge E) ) MsgOff XOff
# 2 ( WIDTH (negedge E) ) MsgOff XOff
# 3 ( WIDTH (posedge D) ) MsgOff XOff
# 4 ( WIDTH (negedge D) ) MSgOff XOff
不太确定如何转义“\”字符,所以我使用星号通配符“*”代替...但是实例路径周围的花括号“{}”可以转义 TCL 特殊字符的正方形大括号 "[ ]" 和括号 "( )" 以便它原封不动地传递给 tcheck_set 命令。
另一个例子:
VSIM> find instances {tb_top/U1/*tp_mux_pad* }
# {/tb_top/U1/\tp_mux_pad[15]/U0/U0 (IOPAD_TRI)} {/tb_top/U1/\tp_mux_pad[15]/U0/U1 (IOTRI_OB_EB)}
更新:
我想出了如何转义退格字符“\”。
信号名称中的反斜杠表示门级网表标准,该标准允许门级信号在信号名称中包含特殊字符,例如“./[] ()”等。每当您在信号名称中看到反斜杠字符时,所有字符被视为“A-Z”字符,包括通常的特殊字符,直到信号名称以空格字符结尾。 (有时您还需要使用反斜杠转义信号名称中的最后一个空格字符,但在我们的例子中,我们使用 TCL 大括号,它将大括号内的所有字符视为文字字符,包括末尾的空格字符。因此,示例变为:
VSIM> check_set {/tb_top/U1/\tp_mux_pad[15]/U0/U0 } ON
# /tb_top/U1/\tp_mux_pad[15]/U0/U0 :
# 1 ( WIDTH (posedge E) ) MsgOn XOn
# 2 ( WIDTH (negedge E) ) MsgOn XOn
# 3 ( WIDTH (posedge D) ) MsgOn XOn
# 4 ( WIDTH (negedge D) ) MsgOn XOn
这里,“\tp_mux_pad[15]/U0/U0”是整个实例名称,其中特殊字符的正常含义,“./[ ] ( )”,当反斜杠 ' 时被视为普通 A-Z 字符\' 一直存在于信号路径中,直到在信号名称中找到空格字符。
# CASE 1:
#
# SPACE AT END OF SIGNAL NAME REQUIRED WHEN BACKSLASH CHARACTER
# EXAMPLE: check_set {/tb_top/U1/\tp_mux_pad[15]/U0/U0 } ON
# ^space
# CASE 2:
#
# SPACE AT END OF SIGNAL NOT REQUIRED IF THERE IS NO BACKSLASH CHARACTER)
# EXAMPLE: check_set {/tb_top/U1} ON
#