add_ip_buffer——路径

news/2025/10/29 17:50:02/文章来源:https://www.cnblogs.com/yjxmike/p/19175044

define_proc_arguments add_ip_buffer -info "Add repeater for IPs"
-define_args {
{-insts "Target IP insts" "insts" list required}
{-BOX "to core area, last location is the last inverter's location. {{x1 y1} {x2 y2} ...}" "path" list required}
{-prefix "Prefix for new insts and nets, default is IP_WZC" "prefix" string optional}
{-side "IP side, T,B,L or R" "side" string required}
}
proc add_ip_buffer {args} {
set inputs(-prefix) IP_WZC
global _IP_REPEATER_INDEX _IP_REPEATER_INDEX
parse_proc_arguments -args $args inputs
if {[info exists inputs(-start_index)]} {
set _IP_REPEATER_INDEX $inputs(-start_index)
} elseif {![info exists _IP_REPEATER_INDEX]} {
set _IP_REPEATER_INDEX 0
}
set IPname $inputs(-insts)
set distance 10
set max_distance 700
foreach ipname $IPname {
set ip [dbget [dbget top.insts.name $ipname -p1]]

	set orient [dbget $ip.orient]set ipName [dbget $ip.name]set PinA [dbget $ip.instTerms.name *A[*] -p1]set netA  [dbget $PinA.net]set Pinlists ""if {$netA != "0x0"} {lappend Pinlists $PinA}set PinY [dbget $ip.instTerms.name *DOUT[*] -p1]set netY  [dbget $PinY.net]if {$netY != "0x0"} {lappend Pinlists $PinY}set pinss [concat $PinA $PinY]foreach pins $pinss {set pinsname [dbget $pins.name]set obj [get_property [get_pins $pinsname] dbObject]set x [dbget $obj.pt_x]set y [dbget $obj.pt_y]

puts $y
case $inputs(-side) {
T {
set y [expr $y - $distance]
}
B {
set y [expr $y + $distance]
}
L {
set x [expr $x + $distance]
}
default {
set x [expr $x - $distance]
}
}
set inv_locs [list [list $x $y]]
set loc [list $x $y]
set tot_len 0
foreach tbox1 $inputs(-BOX) {
set ll [expr abs([lindex $tbox1 0] - [lindex $loc 0]) + abs([lindex $tbox1 1] - [lindex $loc 1])]
set tot_len [expr $tot_len + $ll]
set loc $tbox1
}

			set invnum [expr int(ceil($tot_len*1.0/$max_distance))] if {[expr $invnum%2]} {incr invnum} else {set invnum [expr $invnum + 2]}puts "invnum:$invnum"set invspace [format %.2f [expr $tot_len*1.0/($invnum-1)]]set loc [lindex $inv_locs 0]set nn 0for {set i 0} {$i < [llength $inputs(-BOX)]} {} {incr nnset loc_i [lindex $inputs(-BOX) $i] set dx [expr [lindex $loc_i 0] - [lindex $loc 0]] set dy [expr [lindex $loc_i 1] - [lindex $loc 1]] set l [expr abs($dx) + abs($dy)]set loc_last $loc_i set loc_last1 $loc set flag 0 set break_flag 0 while {$l < $invspace && $i < [llength $inputs(-BOX)]} {incr i if {$i == [llength $inputs(-BOX)]} {set break_flag 1  break}set loc_i [lindex $inputs(-BOX) $i]set dx [expr abs([lindex $loc_i 0] - [lindex $loc_last 0])]set dy [expr abs([lindex $loc_i 1] - [lindex $loc_last 1])]set loc_last1 $loc_last set loc_last $loc_iset l [expr $dx + $dy +$l]set flag 1 	}if {$break_flag} {if {$invnum != [llength $inv_locs]} {lappend inv_locs [lindex $inputs(-BOX) end]}} elseif {$flag} {set l1 [expr $l - $dx - $dy]  set l2 [expr $invspace - $l1] set dx [expr [lindex $loc_last 0] - [lindex $loc_last1 0]]set dy [expr [lindex $loc_last 1] - [lindex $loc_last1 1]]if {[expr abs($dx)] < [expr abs($dy)]} {set x [lindex $loc_last 0] if {$dy > 0} {set y [expr [lindex $loc_last1 1] + $l2] } else {set y [expr [lindex $loc_last1 1] - $l2] }		} else {set y [lindex $loc_last 1] if {$dx > 0} {set x [expr [lindex $loc_last1 0] + $l2] } else {set x [expr [lindex $loc_last1 0] - $l2] }}set loc [list $x $y] lappend inv_locs $loc } else { set l2 $invspace set dx [expr [lindex $loc_i 0] - [lindex $loc 0]]set dy [expr [lindex $loc_i 1] - [lindex $loc 1]]if {[expr abs($dx)] < [expr abs($dy)]} {set x [lindex $loc_i 0]if {$dy > 0} {set y [expr [lindex $loc 1] + $l2]} else {set y [expr [lindex $loc 1] - $l2]}		} else {set y [lindex $loc_i 1]if {$dx > 0} {set x [expr [lindex $loc 0] + $l2]} else {set x [expr [lindex $loc 0] - $l2]}}set loc [list $x $y]lappend inv_locs $loc}if {[llength $inv_locs] == $invnum} {}if {$l < 40 && [expr [llength $inv_locs]%2] == 0} {	break}if {$nn == 100} {break}}if {[expr [llength $inv_locs] %2]} {continue}set net [lindex [dbget $obj.net.name] 0]set pin_name [file tail $pinsname]puts "$inv_locs"set inv_locs_re [lreverse $inv_locs]for {set n 0} {$n < [expr $invnum/2]} {incr n} {set input [dbget $pins.isInput] set idx1 [expr {$n * 2}]set idx2 [expr {$n * 2 + 1}]set x1 [lindex [lindex $inv_locs_re $idx1] 0]set y1 [lindex [lindex $inv_locs_re $idx1] 1]set x2 [lindex [lindex $inv_locs_re $idx2] 0]set y2 [lindex [lindex $inv_locs_re $idx2] 1]if {$input} {redirect ../scr/addipbufftcl.tcl {puts "ecoAddRepeater -term [dbGet $pins.name] -cell JLSCL6CNMV2_INV_16 -loc {$x1 $y1 $x2 $y2}"} -append} else {redirect ../scr/addipbufftcl.tcl {puts "ecoAddRepeater -term [dbGet $pins.name] -cell JLSCL6CNMV2_INV_16 -loc {$x2 $y2 $x1 $y1}"} -append}}}
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/950124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx响应超时upstream timed out (110: Connection timed out) while reading response header from upstream

本文介绍了解决Nginx代理超时的问题及优化网络吞吐量的方法。通过调整配置如proxy_connect_timeout、proxy_read_timeout等参数,可以有效提升Nginx性能。 问题描述解决方法 提高nginx网络吞吐量buffers优化指令说明 n…

2025年碳化铬堆焊耐磨板厂家最新推荐:堆焊耐磨板/碳化铬耐磨板/定制耐磨板/复合耐磨板/高硬度耐磨板/耐冲击耐磨板/汇森增材——耐用性与定制化双优之选

随着制造业向高端化、精细化发展,耐磨板作为关键耗材,广泛应用于矿山、冶金、建材、工程机械等领域,其需求随设备耐磨升级、生产强度提升而持续增长。2025 年,耐磨板市场规模预计进一步扩大,但市场中厂商产品质量…

抖音防封搭建方案,青否数字人提供全套的防封方案,能够进行稳定直播带货!

抖音:强调节奏、互动与内容创意 抖音以其快节奏、娱乐化的内容生态著称。在规则上,抖音对直播内容的创新性和趣味性要求极高,鼓励数字人主播在短时间内抓住观众眼球。直播画面需清晰流畅,数字人动作表情要自然生动…

2025年河北电信业务增值许可证培训权威推荐榜单:增值电信经营许可证/电信与信息服务业务经营许可证/电信业务许可证源头公司精选

在数字化经济蓬勃发展的今天,增值电信业务许可证已成为企业合法经营相关业务的必备资质,而专业的培训服务正成为企业高效获证的关键支撑。 据河北省通信管理局官方数据统计,2025年7月至9月期间,河北省新发放的增值…

docker-compose常用命令

启动服务 docker-compose -f ***.yaml up -d-d参数表示后台启动docker-compose -f ***.yaml up -d app1 app2启动指定服务app1 app2停止服务 docker-compose -f ***.yaml down停止所有服务docker-compose -f ***.yaml …

浅谈 FHQ-Treap

本文同步发表在洛谷博客。什么是 FHQ-Treap? 平衡树上存放两个信息,权值 \(val\) 以及随机索引 \(key\)。值满足二叉搜索树性质,随机值索引满足堆的性质,通过结合二叉搜索树和二叉堆的性质来使树平衡。至于这里用的…

2025 年天津保安公司最新推荐榜,技术实力与市场口碑深度解析

引言 为精准筛选天津地区优质保安服务企业,本次推荐榜由天津市安全防范行业协会联合第三方测评机构共同完成,测评数据覆盖 2024-2025 年度行业动态。测评采用 “三维九项” 评估体系:在企业资质维度,核查营业执照、…

接口自动化测试项目实战day1

Requests库发送请求 Requests get 导入requsts库 import requests url = " http:" r = request.get Requests post import requests url = " http:" data = "some " r_res = request.po…

打破视频壁垒:视频融合平台EasyCVR如何实现多路视频监控上屏的高效管理?

打破视频壁垒:视频融合平台EasyCVR如何实现多路视频监控上屏的高效管理?一、背景概述 在现代安防监控领域,视频监控系统的应用愈发广泛,而将多路网络视频监控投放到电视墙大屏上,实现集中化、可视化的监控管理,成…

MySQL MVCC:通过 ReadView与 undolog版本链 分析读提交RC和可重复读RR的原理 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

upstream timed out (110: Connection timed out) while reading response header from upstream

在使用 Nginx 时,错误信息 upstream timed out (110: Connection timed out) while reading response header from upstream 是一个常见的超时问题。这一错误意味着 Nginx 作为反向代理,在等待上游服务器(如 Tomcat…

Halcon算法——Hough变换

当然可以。以下是对你提供的博客《Hough变换基础》的学习笔记总结:🧭 一、Hough变换概述 Hough变换(霍夫变换)是一种用于检测几何形状(如直线、圆等)的图像处理方法。 其核心思想是:将图像空间中的点映射到参数…

2025 年不锈钢管源头厂家最新推荐排行榜:覆盖焊管、花纹管、菱形管、工业管等品类,结合协会测评数据精选优质品牌

引言 为解决采购方在不锈钢管市场面临的选品难题,本次 2025 年不锈钢管源头厂家推荐榜,由中国金属结构协会不锈钢分会联合行业权威检测机构共同测评编制。测评过程严格遵循 “三维九项” 评估体系,从产品维度(材质…

2025年挖泥船生产商权威推荐榜单:清淤船/挖沙船/绞吸船源头厂家精选

在航道疏浚、港口建设、水域环保等领域,挖泥船作为核心施工装备,其性能优劣直接关系到工程效率与运营成本。 据QYResearch调研统计,2031年全球自航式挖泥船市场销售额预计将达亿元规模,年复合增长率保持稳定增长。…

99%的企业都不知道GEO搜索优化怎么做,讯灵AI来解答

现在AI月活超5亿,用户消费决策早从“刷内容”转向“问AI”,搜门店、查品牌都靠它 —— 推荐里没有你,用户根本不会看。踩准AI搜索风口,才能走得更稳、看得更远。99%的企业还没意识到,GEO搜索优化能提前布局。当你…

开了 8 年母婴店,靠微擎守住了 20000 会员的信任,再也不怕数据泄露

会员信息被泄露,一天接到 5 个诈骗电话,还有 3 个老客户因为担心隐私安全退了储值卡!” 想起 3 年前的那场 “数据危机”,我至今心有余悸。作为一家在本地开了 8 年的母婴店,我们靠着口碑积累了 20000 多名会员,…

建筑全场景安全监测 “无死角”!思通数科 AI 卫士多模态大模型覆盖文明施工、基坑与消防

在建筑施工安全管理中,传统监测模式常因 “场景分散、隐患隐蔽” 陷入 “顾此失彼” 的困境:文明施工中,围挡高度不达标、垃圾清运不及时、施工道路未硬化等问题,靠人工巡检易漏检;基坑施工时,支护结构裂缝、周边…

实况足球8下载安装教程(图文步骤 + 全流程配置指南)

实况足球8下载安装教程(含图文步骤),详细介绍实况足球8下载、安装、配置、补丁、优化与常见问题解决方法,兼容Win7/Win10/Win11系统,帮助玩家重回经典绿茵场。实况足球8下载安装教程(图文步骤 + 全流程配置指南)…

SQL优化必备脚本:Oracle获取绑定变量的字面SQL文本

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。今天分享一个…

20251029周三日记

20251029周三日记昨天日记忘了发了,刚把周二日记提交哈哈 昨天晚上明确了要生成宫格图,而非3d assets。今天先把同门发的超多视点看看,请教一下。 今日: 1.早上起床洗漱完直接去上课了,这课简直是浪费人生中的一早…