ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SDC命令详解:使用log_trace命令进行调试

2026/8/12 21:38:05 拓冰建站 浏览量
SDC命令详解:使用log_trace命令进行调试

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482


目录

指定开始记录

指定停止记录

指定暂停记录

指定恢复记录

指定显式记录

指定静默

简单使用


在使用Synopsys的EDA工具(如Design Compiler、PrimeTime、Fusion Compiler、IC Compiler II等)的过程中,用户编写的Tcl脚本往往包含大量条件判断、嵌套过程(procedure)以及对其他脚本的调用。这种复杂性会导致以下问题:

  • 难以确认实际执行了哪些命令
  • 难以复现流程中出现的问题
  • 隐式调用、不建议或废弃的命令执行难以被察觉

为了解决这些问题,Synopsys提供了log_trace命令(在2023版本引入),用于记录所有被跟踪命令的实际执行过程,并生成一个可复现结果的Tcl脚本。本文将详细介绍log_trace命令的使用方法(其实它并不是一个SDC命令,归为此类只是为了方便管理)。

log_trace命令的BNF范式(有关BNF范式,可以参考以往文章)为:

log_trace [-start file_name | -stop | -pause | -resume] [-log log_string] [-quiet] //注:该命令的选项和参数顺序任意

指定开始记录

-start选项指定开始记录工具执行的命令(包括设置应用变量,不包括用户自定义变量和Tcl控制结构),并选择一个输出文件,需要注意的是,同一时间只能存在一个正在记录的输出文件。

-start选项、-stop选项、-pause选项和-resume选项是互斥的,只能使用其中一个。

指定停止记录

-stop选项指定停止记录并关闭正在记录的输出文件,需要注意的是,一旦停止记录,输出文件的内容无法被追加(如果再次用-start选项指定,则会覆盖)。

-start选项、-stop选项、-pause选项和-resume选项是互斥的,只能使用其中一个。

指定暂停记录

-pause选项指定暂停记录(立刻在输出文件中留下一条注释:#----- Trace Log Paused -----),在此期间,所有工具执行的命令不会被记录到输出文件中,直到通过-resume选项恢复记录。需要注意的是,暂停记录可能会导致准确复现工具的运行结果(停止记录时会在输出文件中留下一条注释:This trace log may not replay or replicate tool results),谨慎使用。

-start选项、-stop选项、-pause选项和-resume选项是互斥的,只能使用其中一个。

指定恢复记录

-pause选项指定恢复记录,后续工具执行的命令将会追加到输出文件中。

-start选项、-stop选项、-pause选项和-resume选项是互斥的,只能使用其中一个。

指定显式记录

-log选项用于将给定的字符串显式记录在输出文件中,它可以是一条Tcl命令,也可以是以#开头的注释。

指定静默

-quiet选项用于指定静默输出,例如尝试在尚未开始记录时就暂停记录,此时不会报错或警告(不过语法错误仍会报错)。

简单使用

最终生成的Tcl脚本并不能100%保证可以回放或完全复现工具的运行结果。其中一个原因是工具的执行环境可能发生变化。在不使用任何选项调用log_trace命令时,工具会报告当前记录的状态,可能的状态包括on、paused或off,并显示当前打开的输出文件。

图1展示了一个日常使用的脚本,以及使用log_trace命令记录的脚本。

图1 脚本对比

下面有几点需要注意。

  • 即使命令在执行过程中失败,只要该命令已经真正进入工具执行阶段,其执行过程仍然会被记录到输出文件中。例如,在创建时钟时未指定源对象而导致执行失败的情况。相反,如果命令由于语法错误(例如使用了不存在的选项)而在语法解析阶段就被拒绝执行,则不会被记录,因为该命令并未真正进入工具的执行流程。
  • 对于某些复合命令,例如create_clock -period 15.0 [get_ports pclk],在记录时会被拆分为若干离散的命令调用,以更加准确地反映工具内部的真实执行顺序。
  • 于部分命令(如read_verilog),在输出文件中会被记录为其等价的底层形式,例如read_file -format verilog,从而体现工具内部实际调用的接口。
  • 此外,如果在脚本中使用了命令别名(alias)、选项缩写或命令缩写,在记录到输出文件时都会被还原为完整、标准的命令格式。