相关阅读
SDC命令详解
https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482
目录
annotate_trace命令与report_trace命令类似,都是用于进行命令级性能剖析,不同的是,annotate_trace命令允许命令在执行过程中进行实时注释(包括命令注释和性能数据注释)。本文将详细介绍annotate_trace命令的使用方法(其实它并不是一个SDC命令,归为此类只是为了方便管理)。
report_trace命令的BNF范式(有关BNF范式,可以参考以往文章)为:
annotate_trace
[-start | -stop]
[-profile profile_annotation_type]
[-log log_string]
[-quiet]
// 注:该命令的选项和参数顺序任意
指定开始注释输出
-start选项指定开始在命令执行过程中进行实时注释,命令执行的开始阶段会输出命令字符串,并在行首添加前缀;##,是否进行性能数据注释则取决于-profile选项。
-start选项和-start选项互斥,只能使用其中一个。
指定停止注释输出
-start选项指定停止在命令执行过程中进行实时注释,需要注意的是,与report_trace命令不同,此命令的性能数据统计不依赖-start选项,也不会随着实时注释的关闭而停止统计。
-start选项和-start选项互斥,只能使用其中一个。
指定实时注释中是否包含性能数据
-profile选项指定实时注释中是否输出性能数据,以及输出的时机,该选项需要与-start选项选项同时使用,或之前已开始注释输出。
set_trace_option命令可用于对实时注释进行定制化设置,比如可以关闭某些命令的实时注释、设置性能数据种类(CPU时间、内存消耗、wall clock时间),设置性能数据注释的增量阈值(CPU时间、内存消耗、wall clock时间的增量超过对应阈值才会输出)。
当-profile选项设置为on时,命令执行的结束阶段会输出当前消耗的CPU时间、内存、wall clock时间的总量和增量(以;###作为前缀);当-profile选项设置为with_start时,命令执行的开始阶段会输出当前消耗的CPU时间、内存、wall clock时间的总量(不受阈值影响),结束阶段会输出当前消耗的CPU时间、内存、wall clock时间的总量和增量;当-profile选项设置为off时,表示实时注释中不包含性能数据。
如果不使用该选项,相当于将该选项设置为off,即只输出命令字符串。
指定显式注释内容
-log选项用于输出一段字符串并在行首添加前缀;##,如果字符串包含换行符\n,则会在每一行都添加前缀。
指定静默
-quiet选项用于指定静默输出,例如重复指定开始注释输出,此时不会报错或警告(不过语法错误仍会报错)。
简单使用
dcnxt_shell-topo> set_trace_option -time_threshold 0
dcnxt_shell-topo> set_trace_option -memory_threshold 0
dcnxt_shell-topo> set_trace_option -cpu_threshold 0
dcnxt_shell-topo> set_trace_option -profile all
dcnxt_shell-topo> annotate_trace -start -profile with_start
dcnxt_shell-topo> compile_ultra -spg
;## compile_ultra -spg
;### Start: MEM: 1934608 CPU: 00:00:13.98 TIME: Wed Jan 7 18:58:10 2026
*****
*****
*****
*****
;### End compile_ultra: MEM: 2237480 (delta: 302872) CPU: 00:00:32.94 (delta: 00:00:18.96) TIME: Wed Jan 7 18:58:29 2026 (delta: 00:00:18.95)
dcnxt_shell-topo> annotate_trace -profile on
;## annotate_trace -profile on
;### Start: MEM: 2237480 CPU: 00:00:32.95 TIME: Wed Jan 7 18:59:59 2026
;### End annotate_trace: MEM: 2237480 (delta: 0) CPU: 00:00:32.95 (delta: 00:00:00.00) TIME: Wed Jan 7 18:59:59 2026 (delta: 00:00:00.00)
dcnxt_shell-topo> report_timing
;## report_timing
Information: Updating design information... (UID-85)
****************************************
Report : timing
-path full
-delay max
-max_paths 1
Design : MY_DESIGN
Version: W-2024.09-SP2
Date : Wed Jan 7 19:00:14 2026
****************************************
* Some/all delay information is back-annotated.
Operating Conditions: ss0p75v125c Library: saed32lvt_ss0p75v125c
Wire Load Model Mode: Inactive.
Startpoint: Cin2[0] (input port)
Endpoint: Cout[4] (output port)
Path Group: (none)
Path Type: max
Point Incr Path
-----------------------------------------------------------
input external delay 0.00 0.00 r
Cin2[0] (in) 0.00 0.00 r
U73/Y (INVX1_HVT) 0.10 * 0.10 f
U74/Y (NOR2X0_HVT) 0.74 * 0.84 r
U82/Y (AO222X1_HVT) 2.63 * 3.47 r
U88/Y (AO222X1_HVT) 3.21 * 6.67 r
U90/Y (AO22X1_HVT) 2.07 * 8.74 r
U91/S (FADDX1_HVT) 1.54 * 10.29 r
U92/CO (FADDX1_HVT) 1.71 * 11.99 r
U97/S (FADDX1_HVT) 2.57 * 14.56 f
Cout[4] (out) 0.00 * 14.56 f
data arrival time 14.56
-----------------------------------------------------------
(Path is unconstrained)
;### End report_timing: MEM: 2237548 (delta: 68) CPU: 00:00:32.98 (delta: 00:00:00.02) TIME: Wed Jan 7 19:00:18 2026 (delta: 00:00:04.15)
关于命令字符串,有一些与log_trace命令相同需要注意的点,请参考下面博客的末尾。
SDC命令详解:使用log_trace命令进行调试
https://chenzhang.blog.csdn.net/article/details/156659891