PT: DMSA辅助调tree报告前后级余量脚本

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

拾陆楼知识星球入口

bash 复制代码
使用方法:选择launch或者capture上的pin,需要做长就用-late,需要做短就用-early
示例:GetThroughPinSlack -launch -early -pin xx/Y
proc GetThroughPinSlack args {
if {[regexp"\-pin"  $args]}{
remote_execute "set clock_through_pin_name [lindex $args [expr [lsearch $args "-pin"]+1]]">tmp
remote_execute {set ck_list [get_object_name [all_fanout -flat -end -from $clock_through_pin_name]]
set da_list [get_object_name [get_pins-of_objects [get_cells -of_objects [all_fanout -flat -end -from $clock_through_pin_namel] -filter "direction == in && is_data_pin"]]}>tmp
if{[regexp"\-launch" $args] && [regexp "\-late" $args]} {
remote_execute {
echo "${mode} ${corner}: $clock_ through_pin_name launch_setup [get_attr -quiet [get_timing_ paths -pba_mode path -from $ck_list] slack]; capture_hold [get_attr -quiet [get_timing_paths -pba_mode path -delay min -to $da_list] slack]" > GetThroughPinSlack.rpt} > tmp
}
if {[regexp"\-capture"$args]&& [regexp"\-late"$args]} {
remote_execute {
echo "${mode} ${corner}:$clock_through_pin_name capture_hold [get_attr-quiet [get timing_paths -pba_mode path -delay min -to $da_list] slack]; launch_setup [get_attr -quiet [get_timing_paths -pba_mode path -from $ck_list] slack]" > GetThroughPinSlack.rpt} > tmp
)
if {[regexp"\-launch"$args]&& [regexp"\-early" $args]} {
remote_execute {
echo "${mode} ${corner}: $clock through pin_name launch_hold [get_attr -quiet [get_timing_paths -pba_mode path -delay min -from $ck_list] slack]; capture_setup [get_attr -quiet [get_timing_paths -pba_mode path -to $da_list] slack]" > GetThroughPinSlack.rpt}>tmp
]
if {[regexp"\-capture" $args] && [regexp"\-early" $args]} {
remote_execute {
echo "${mode} ${corner}: $clock_through_pin_name capture_setup [get attr -quiet [get_timing_paths -pba_mode path -to $da_list] slack] ; launch_hold [get_attr -quiet [get_timing_paths -pba_mode path -delay min -from $ck_list] slack]" > GetThroughPinSlack.rpt} > tmp

sh cat work/*/GetThroughPinSlack.rpt > GetThroughPinSlack.rpt
set in [open GetThroughPinSlack.rpt r+]
set value1 "" ; set value2 ""
while {[gets $in line] >= 0} {
if {[llength $line]="7"} {
lappend value1 [lindex $line 3];lappend value2 [lindex $line 6]
set attr1 [lindex $line 2]; set attr2 [lindex $line 5]}}
close $in
puts "[lindex $args [expr [lsearch $args "-pin"]+1]] $attr1 [lindex [lsort -real $valuel] 0]; $attr2 [lindex [lsort-real $value2] 0]"}
define_proc_attributes GetThroughPinSlack \
-info {
GetThroughPinSlack -launch/-capture (specifyed whether the through
pin is from launch or capture) \
-early/-late (specigy whether the through pin nead to be made shorter -pin clock_through_pin_name
or longer) \
-pin clock_through_pin_name
}\
-define_args {
{-launch "specifyed whether the through pin is from launch" "" boolean required
 {-capture "specifyed whether the through pin is from capture" "" boolean required 
{-early "specigy whether the through pin nead to be made shorter" "" boolean required
{-late "specigy whether the through pin nead to be made longer" "" boolean required
{-pin "clock through pin name" clock_ through_pin_name string required 
{-help "usage" "" boolean optional}
}\
-define_arg_groups {
{exclusive {-launch -capture}}
{exclusive {-early -late}}
}
相关推荐
今天的砖头有点烫手啊2 小时前
接口太慢?Spring Boot 缓存体系 @Cacheable 全链路拆解
spring boot·后端·缓存
雪隐3 小时前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
952363 小时前
Sentinel
java·后端·spring·sentinel·springcloud
名字还没想好☜3 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
sbjdhjd4 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php
zzzll11114 小时前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
运维行者_4 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
长栎4 小时前
你用了五年的消息队列,不知道它背后站着中介者模式
后端
Gopher_HBo4 小时前
路由注册:RouterGroup(routergroup.go)
后端