当前位置: 首页 > 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.jsqmd.com/news/23278/

相关文章:

  • 2025年诚信的万级净化工程厂家推荐及采购指南:定制定做公司
  • 2025年口碑好的博物馆定制展柜实力厂家TOP推荐榜
  • 详细介绍:MobileNet v1:轻量化卷积
  • 2025年质量好的不锈钢电力设备厂家实力及用户口碑排行榜
  • 如何实现服务器文件自动同步,从而提升数据管理效率?
  • 2025年知名的低速逆止器最新TOP厂家排名
  • laya spine事件
  • 2025年知名的玻璃釉电位器厂家最新权威推荐排行榜
  • 2025 年集成墙板厂家最新推荐榜,深度剖析企业技术实力与市场口碑集成墙板快装 / 集成墙板全屋 / 集成墙板装饰公司推荐
  • 2025年专业的拉力机厂家选购指南与推荐
  • [java 21 scopevalue(preview) 特定作用域数据共享 v01]
  • 2025年可靠的酒店瓷砖厂家推荐及选购参考榜
  • 2025年比较大的行政律师事务所律师费
  • 2025年比较好的铁罐厂家推荐及选择指南
  • outlook大附件怎么发送?主要有哪些有效的解决方案?
  • 2025 年生态木厂家最新推荐榜,技术实力与市场口碑深度解析的优质品牌方通 / 户外地板 / 装饰线条 / 隔断 / 背景墙公司推荐
  • 2025年综合性的智能运维数据中心展采购对接
  • 【2025-10-25】连岳摘抄
  • 2025年热门的供配电智算中心展采购对接
  • CSS 实现弧形卡片的 3 种方式
  • 2025 年北京律师事务所最新推荐榜,专业能力与服务口碑深度解析及优质机构盘点
  • 使用paddleocr提取PDF和图片文本
  • 国产化Excel开发组件Spire.XLS教程:使用Python将CSV转换为XML(处理现实数据问题)
  • 2025年评价高的弥散供氧系统厂家最新推荐排行榜
  • 2025 年洗碗机厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析酒店 / 学校 / 工厂 / 全自动洗碗机公司推荐
  • css3关键字
  • 文档处理控件Aspose.Words教程:Python将Markdown转换为Word
  • 第八周物理实验:用扭摆法测量物体的转动惯量
  • 2025 年蔬菜配送服务公司最新推荐榜,聚焦企业技术实力与市场口碑深度解析含深圳 / 宝安 / 东莞等区域优质服务商
  • 【每日一面】手写防抖函数