当前位置: 首页 > news >正文

IO出pin

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}}}}}
}
http://www.rkmt.cn/news/31430.html

相关文章:

  • 2025年诚信的万级净化工程厂家推荐及采购指南:定制定做公司
  • 2025年质量好的不锈钢电力设备厂家实力及用户口碑排行榜
  • 2025年知名的低速逆止器最新TOP厂家排名
  • laya spine事件
  • 2025 年集成墙板厂家最新推荐榜,深度剖析企业技术实力与市场口碑集成墙板快装 / 集成墙板全屋 / 集成墙板装饰公司推荐
  • 国产化Excel开发组件Spire.XLS教程:使用Python将CSV转换为XML(处理现实数据问题)
  • 2025 年洗碗机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析酒店 / 学校 / 工厂 / 全自动洗碗机公司推荐
  • 文档处理控件Aspose.Words教程:Python将Markdown转换为Word
  • 2025年10月北京写字楼装修公司推荐榜:筑垒领衔五强对比
  • 苏联复变函数论专家和教育家Б. В. 沙巴特
  • 2025年蕾蒂蔻品牌深度解析:渐进式自然美学下的科研质控全景
  • 指针的用法,函数,结构体,以及部分解释
  • 2025年蕾蒂蔻产品深度解析:械字号轻医美供应链安全全景拆解
  • 2025年10月绩效管理咨询公司推荐:实力榜对比评价
  • 告别 “专业壁垒”:MyEMS 如何让一线操作工也能看懂能耗、发现浪费?
  • 打破 “封闭垄断”:MyEMS 开源生态如何有效控制企业能源管理成本
  • 2025年10月北京商业工装设计公司推荐榜:五强对比评测
  • 0282-KVS-使用 anyhow 处理错误
  • 2025年口碑好的搜荐系统公司、2025年搜荐系统服务商、专业的搜荐系统平台、搜荐系统公司推荐、搜荐系统服务口碑推荐全面解析
  • Playwright for Python 的基本使用与常用交互API-使用笔记
  • 5款能帮你自动做PPT的AI工具,我全都试过了,最好用的是它!
  • 大模型训练
  • 2025 年无缝钢管厂家最新推荐榜,技术实力与市场口碑深度解析Q355E/20G/12Cr1MoVG/15CrMoG/20CrMnTi/16MnDG 无缝钢管公司推荐
  • 2025年北京离婚房产律所权威推荐榜单:婚姻/离婚/离婚事务所专业律师团队精选
  • 魔改最短路
  • 解决 c# 同步方法调用异步方法,使用 .Result 导致死锁问题
  • 2025 年路灯厂家最新推荐榜单:结合照明电器协会测评数据,精选市政 / 景观 / 太阳能等多场景优质路灯企业
  • 2025年想降本?项目进度管理软件至少帮你省20%人力成本!
  • 何为受控组件(controlledcomponent) ?
  • Java 开发开篇