- 获取两个时钟之间的关系,比如是否有设置allow_path
get_clock_relationship{<clock A><clock B>}即可获取clock A和clock B之间的关系
- report_timing时,增加如下指令,可以在报timing的时候把当前path设置且当前生效(exception可能被覆盖)的exception报出来:
report_timing-fromA-toB-exceptionsdominant可以在报timing的时候把当前path设置的所有的exception(可以debug exception被覆盖的情况)报出来
report_timing-fromA-toB-exceptionsall可以把exception设置的from/through/to的信息全部报出来。
- 在get_pins时,可以通过增加-f "full_name=~xxx"来进行filter全称操作。-f 等价于-filter
还可以-f "ref_name =~ xxx"来匹配module名的方式进行。
若想通过get_pins命令获取某个get_cell得到的cell的全部pins,且该cell是时序器件(非组合逻辑cell)。可以:
get_pins-of_object[get_cells-hier-filter"ref_name =~ <module name> && is_sequential == true"]或者:
get_pins-of[get_cells-hier-filter"ref_name =~ <module name> && is_sequential == true"]若想进一步filter该cell为leaf cell,可以:
get_pins-of[get_cells-hier-filter"ref_name =~ <module name> && is_sequential == true"&&is_hierarchical==false]- report_timing 报告延时信息更加详细的方法
report_timing-inputs_pins-fromxxx-toxxx-input_pins:强烈推荐始终开启的选项。默认报告只显示单元的输出引脚(O、Z、Q等)的延迟。加上这个选项后,它会多显示一列输入引脚(A、D、B等)。关键好处在于,你能看到线网延迟被单独剥离出来了!原来一个 Incr 值里混在一起的单元延迟和互连延迟,现在一目了然。你能直接判断延迟大头是单元本身慢,还是走线太长了。
显示某个cell输入引脚与时序延迟。在默认情况下,时序报告仅显示单元的输出引脚,线网延迟隐含在输出到输入的路径中。启用后,强制显示路径中所有单元的输入引脚,让路径节点更完整,明确展示线网延迟(从驱动单元输出引脚到负载单元输入引脚的延迟)
-nets:这个选项会把路径上的线网名称和它的扇出数显示出来。对于分析高扇出网络、了解信号分布很有帮助。但注意,它本身不显示延迟,需要配合 -input_pins 才能看到线网的具体延迟贡献。
report_timing-include_hierarchical_pins-fromxxx-toxxx默认pt工具报告中只会显示leaf cell的延时,无法显示hierarchical pin的延时。开始该选项可以让报告显示地更加全面。
- 可以通过如下指令查看某个class有哪些属性
list_attributes-class[xxx]-application-nosplit有效的class有:pin、net、cell、timing_path、clock、port、design
比如,要获取timing_path有哪些attribute,可以:
list_attributes-classtiming_path-application-nosplit比如想要获取某个时钟的频率,周期,可以:
get_attribute[get_clock xxx]period或者获取其waveform,显示其占空比,可以:
get_attribute[get_clock xxx]waveform ---->{217.5,870}或者获取该时钟的master clock或者master pin:
get_attribute[get_clock xxx]master_clockget_attribute[get_clock xxx]master_pin或者获取该时钟是否是lib中生成的:
get_attribute[get_clock xxx]is_generated_from_lib_cell比如想获取某个leaf cell在Lib库中调用的lib cell名:
get_attribute[get_cells xxx]lib_cell比如想要获取某个信号设置case或者外部tie0或1,可以获取某个pin的属性:
get_attribute[get_pins xxx]case_valueget_attribute[get_pins xxx]constant比如想要获取某个path的data delay信息,可以:
get_attribute[get_timing_path-fromA-toB-delay_typemin]arrival比如想要获取某个path的slack信息,可以:
get_attribute[get_timing_path-fromA-toB-delay_typemin]slack- 将pt抓出来的collection(比如get_cell,或者get_pins的结果)按列整齐排放的方法:
join[get_object_name[get_cells xxx]]"\n"如果想整齐地打印到某个文件中,则:
echo[join[get_object_name[get_cells xxx]]"\n"]>>xxx.log- 检查某个cell是否设置disable timing的方法
report_disable_timing[get_cells xxx]可以报出disable的timing arc是什么。
- 如何在pt_shell中查看当前顶层设计是啥
current_design- report_timing -path_type full_clock_expanded 的含义
默认的path_type为full_clock。在timing报告中将会把clock的演示合并为单一clock source latency项,隐藏中间逻辑
选择-path_type full_clock_expanded后,可以显示主时钟→生成时钟的完整转换路径(如分频、门控、MUX 时钟),让clock的路径更加完成,可以更好地分析时钟路径延时。 - all_fanin/all_fanout相关
要想得到连接到某个寄存器D端的cell,且为timing的start_point起点的cell:
all_fanin-startpoints_only-flat-to$reg/D-only_cells要想从某个寄存器的CP
all_fanout-endpoints_only-flat-from$reg/CP-only_cells- 如果想用图形化的界面看一下cell之间的连接关系,则可以通过下面的指令:
start_gui 选择view->Schematic_View change_selection[get_pins$pin_name]双击pin则会显示前面和后面的链接
- pt要想获取某个object的名字,比如cell的名字
比如,抓到某个cell,想要打印它的名字:
setpin_name[get_cells-quiet-hier-filter"ref_name == "xxxx""]puts$pin_name此时虽然终端打印结果为:
{"aaa"}但是pin_name这个变量本质上返回的是一个指针,打印结果为:
_sel263如果想要返回真实的名字,需要:
setpin_real_name[get_object_name$pin_name]puts$pin_real_name然后打印结果为:
aaa