使用PT工具怎样report出网表中存在的异步路径
check_timing -verbose -override_defaults clock_crossing
clock_crossing:
Check clock interactions when there are multiple clock domains. If a clock launches one or more paths, which are captured by other clocks, it is listed in clock crossing report.
check_timing -verbose -override_defaults clock_crossing列出了对应的时钟域
我这里是想得到具体的跨时钟域的时序路径,不知道这个怎么得到。
假如你用了我上面提的第一个命令,得到了对应的时钟域,然后你想看clk1时钟域,到时钟域clk2的path,这样试试?不知道是不是你想要的?
get_timing_paths -from [get_clocks clk1] -to [get_clocks clk2]
卧槽,我回复的怎么没了。审核没通过?
打个比方,你用上面的命令报出来了时钟域A,B
你想知道具体的路径,用:
get_timing_paths -from [get_clocks A] -to [get_clocks B]
试试
不知道是不是你想要的
服了,第二次回复又没回复上。
第三次回复
假如你用上面的命令得到了时钟域A和B
那么用 get_timing_paths -from [get_clocks A] -to [get_clocks B]
试试看
使用你给出的命令只得到了一个返回值sel168,并没有给出path信息。
我使用report_timing -from [get_clocks clk1] -to [get_clocks clk2] 命令可以得到两个时钟域之间的路径,但他给出了详细的路径延时信息。我想问一下,pt有什么命令可以直接生成只给出startpoint和endpoint的信息,还是只能在后期用脚本处理了?
我倒是没有试过那个命令,刚才测试了下,返回的确实是你说的那个玩意儿,好怪异,这个命令按说明就是报paths的
我估计这个估计需要自己写脚本了,以前写过一个proc,报过,等晚上给你找找,贴上来,其实很简单。
PST这返回的是神马鬼!
多谢大神,这个我也是刚开始学有好多不懂,还望赐教。
今天上班测试了下昨天给你说的命令,get_timing_paths原来不是直接报的,需要多走一步就可以报,比如
set paths[get_timing_paths -from clk1 -to clk2]
report_timing $paths就可以了
于是我写了个proc给你,自己测试了下,只报出来异步时钟的startpoint和endpoint以及slack,输出报告,直接查看报告即可
proc report_asy_clocks_paths {args} {
set fileID [open ./clock_list.tcl w 0750]
parse_proc_arguments -args $args options
puts $fileID [format "%-50 %-50% %7s" "FROM" "TO" "SLACK"]
puts $fileID "-----------------------------------------------------------------"
foreach_in_collection path [get_timing_paths -from $option(-from) -to $option(-to)] {
set slack [get_attribute $path startpoint]
set slack [get_attribute $path endpoint]
set slack [get_attribute $path slack]
puts $fileID [format "%-50 %-50% %s" [get_attribute $startpoint full_name] [get_attribute $endpoint full_name] $slack]
}
close $fileID
}
define_proc_attributes report_asy_clocks_paths \
-info "report asy_clocks paths for PT" \
-define_args {
{-from "" "" list optional}
{-to "" "" list optional}
}
使用方法:
1,在pt里用之前我给你说的check_timing报出来异步clock后
2,source这个proc脚本
3, report_asy_clocks_paths -from clk1 -to clk2
4,打开输出的文件,里面就有了
如果你懒得一条一条报,就check_timing > ./run/asy_clock_all.tcl
然后处理下脚本,再写个脚本统一批量用这个proc报就可以了,反正最后都是统一打到一个报告里