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}}
}
相关推荐
实名上网宋凯宣7 小时前
Django
后端·python·django
利威尔xu9 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF10 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间10 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
利威尔xu10 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员11 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
IT_陈寒12 小时前
SpringBoot多环境配置把我坑惨了,这个踩坑经验你最好看看
前端·人工智能·后端
码事漫谈13 小时前
DeepSeek 搞了个 "Super-agent",但不是超级智能
后端
吴凡wudianmei13 小时前
从 0 搭一个 AI Agent(四):SSE 跑通之后,三处“契约错配”与它们的修复边界
前端·后端·aigc