尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

IO出pin

IO出pin
📅 发布时间:2026/6/20 23:43:32
proc align_to_grid {value} {set grid 0.005return [expr round($value / $grid) * $grid]
}
define_proc_arguments VDD_IO_pin \-info "Extend VDD IO pins" \-define_args {{-IOcelltype "IO instance name" IOcelltype string optional}{-extend_length "Extension length" extend_pin_length string optional}{-metal "Extension metal" Metal string optional}
}
proc VDD_IO_pin {args} {parse_proc_arguments -args $args args_arrayif {[info exists args_array(-IOcelltype)]} {set macro1 $args_array(-IOcelltype)set macro [dbget [dbget top.insts.cell.name $macro1 -p2].name]} else {puts "AKRO INFO: extend All macro pin shape" set macro [dbget [dbget top.insts.cell.name RCMCU_PLVDD -p2].name]}if {[info exists args_array(-extend_length)]} {set extend_pin_length $args_array(-extend_length)} else {set extend_pin_length 51.43}if {[info exists args_array(-metal)]} {set metallayer $args_array(-metal)} else {set metallayer M2}foreach macro $macro {if {$macro1 == "RCMCU_PLVDD"} {set pin_name1 "VDDH"set pin_name2 "VSSH"set pin_name3 "POC"set pin_name4 "GND"set Tleng 58.21} elseif {$macro1 == "RCMCU_PLVSS"} {set pin_name1 "VDDH"set pin_name2 "VSSH"set pin_name3 "POC"set pin_name4 "VDD"set Tleng 57} elseif {$macro1 == "RCMCU_PLVSSH"} {set pin_name1 "VDDH"set pin_name2 "GND"set pin_name3 "POC"set pin_name4 "VDD"set Tleng 53.8} else {set pin_name1 "VDDH"set pin_name2 "VSSH"set pin_name3 "POC"set pin_name4 "GND"set Tleng 58.21}if {$metallayer == "M2"} {set layerNumber 2} elseif {$metallayer == "M3"} {set layerNumber 3} else {set layerNumber 2}set inst_ptr [dbget top.insts.name $macro -p]set macro_box [dbget $inst_ptr.box]puts $macro_boxset inst_terms_ptr [dbget $inst_ptr.PGInstTerms]foreach ptr $inst_terms_ptr {set term_name [dbget $ptr.name]puts $term_nameif {[regexp $pin_name1 $term_name]} {continue}if {[regexp $pin_name2 $term_name]} {continue}if {[regexp $pin_name3 $term_name]} {continue}if {[regexp $pin_name4 $term_name]} {continue}if {[lsearch [dbget $ptr.term.pins.layerShapeShapes.layer.num] 10] == "-1"} {set layerNum $layerNumberset orien [dbget $ptr.inst.orient]if {$orien == "R90" || $orien == "R270"} {set cell_pin_rect [dbget [dbget [dbget [dbget $ptr.term.pins.layerShapeShapes.shapes.rect_sizex $Tleng -p2].layer.name $metallayer -p2].shapes.rect_sizex $Tleng -p1].rect]set pin_mask [dbget [dbget [dbget [dbget $ptr.term.pins.layerShapeShapes.shapes.rect_sizex $Tleng -p2].layer.name $metallayer -p2].shapes.rect_sizex $Tleng -p1].mask]set abs_pin_rect [dbTransform -inst $inst_ptr -localPt $cell_pin_rect]set stretch_rect [dbShape $abs_pin_rect SIZEX $extend_pin_length]set wire_rect [dbShape [dbShape $stretch_rect ANDNOT $macro_box] SIZEX 0.72]set net [regsub -all {{|}} [dbget $ptr.net.name] "" ]puts $netif {![dbget [dbget top.nets.name $net -p].isPwrOrGnd]} {editDelete -net $net -type Regular}set original_rect [lindex $wire_rect 0]set llx [align_to_grid [lindex $original_rect 0]]set lly [align_to_grid [lindex $original_rect 1]]set urx [align_to_grid [lindex $original_rect 2]]set ury [align_to_grid [lindex $original_rect 3]]set total_height [expr $ury - $lly]set segment_height [align_to_grid [expr ($total_height - 2 * 0.54) / 3.0]]set actual_total_height [expr $segment_height * 3 + 2 * 0.54]if {abs($actual_total_height - $total_height) > 0.001} {set ury [align_to_grid [expr $lly + $actual_total_height]]}for {set i 0} {$i < 3} {incr i} {set seg_lly [align_to_grid [expr $lly + $i * ($segment_height + 0.54)]]set seg_ury [align_to_grid [expr $seg_lly + $segment_height]]dbCreateWire $net $llx $seg_lly $urx $seg_ury $layerNum 0 STRIPEset seg_rect [list $llx $seg_lly $urx $seg_ury]set new_wire [dbQuery -areas [lindex [dbShape $seg_rect SIZE -0.01] 0] -objType sWire -layers $layerNum]deselectAllselect_obj $new_wireeditChangeMask -to $pin_maskdeselectAll}} else {set cell_pin_rect [dbget [dbget [dbget [dbget $ptr.term.pins.layerShapeShapes.shapes.rect_sizex $Tleng -p2].layer.name $metallayer -p2].shapes.rect_sizex $Tleng -p1].rect]set pin_mask [dbget [dbget [dbget [dbget $ptr.term.pins.layerShapeShapes.shapes.rect_sizex $Tleng -p2].layer.name $metallayer -p2].shapes.rect_sizex $Tleng -p1].mask]puts $pin_maskset abs_pin_rect [dbTransform -inst $inst_ptr -localPt $cell_pin_rect]set stretch_rect [dbShape $abs_pin_rect SIZEY $extend_pin_length]set wire_rect [dbShape [dbShape $stretch_rect ANDNOT $macro_box] SIZEY 0.72]set net [regsub -all {{|}} [dbget $ptr.net.name] ""]puts $netif {![dbget [dbget top.nets.name $net -p].isPwrOrGnd]} {editDelete -net $net -type Regular}set original_rect [lindex $wire_rect 0]set llx [align_to_grid [lindex $original_rect 0]]set lly [align_to_grid [lindex $original_rect 1]]set urx [align_to_grid [lindex $original_rect 2]]set ury [align_to_grid [lindex $original_rect 3]]set total_width [expr $urx - $llx]set segment_width [align_to_grid [expr ($total_width - 2 * 0.54) / 3.0]]set actual_total_width [expr $segment_width * 3 + 2 * 0.54]if {abs($actual_total_width - $total_width) > 0.001} {set urx [align_to_grid [expr $llx + $actual_total_width]]}for {set i 0} {$i < 3} {incr i} {set seg_llx [align_to_grid [expr $llx + $i * ($segment_width + 0.54)]]set seg_urx [align_to_grid [expr $seg_llx + $segment_width]]dbCreateWire $net $seg_llx $lly $seg_urx $ury $layerNum 1 STRIPEset seg_rect [list $seg_llx $lly $seg_urx $ury]set new_wire [dbQuery -areas [lindex [dbShape $seg_rect SIZE -0.01] 0] -objType sWire -layers $layerNum]deselectAllselect_obj $new_wireeditChangeMask -to $pin_maskdeselectAll}}}}}
}

相关新闻

  • 2025年诚信的万级净化工程厂家推荐及采购指南:定制定做公司
  • 2025年质量好的不锈钢电力设备厂家实力及用户口碑排行榜
  • 2025年知名的低速逆止器最新TOP厂家排名

最新新闻

  • Qwen3 MOE架构与Reasoning RL技术解析及本地部署实战
  • BIND DNSSEC实战配置:从密钥生成到ad标志验证
  • 基于LLM嵌入与SVM的临床文本特征工程:创伤后癫痫预测实践
  • 2026枣庄漏水检测维修本地口碑防水商家榜单:厨卫/阳台/屋面/地下室渗漏水维修,持证施工+明码实价,防水补漏公司TOP5推荐 - 即刻修防水
  • Vue v-for原理深度解析:从数据驱动到虚拟DOM复用
  • GPT-4o替代Gemini的生产力迁移实战:上下文稳定性与提示词工程

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号