跳至内容
Python 俱乐部
用户工具
登录
站点工具
搜索
工具
显示页面
修订记录
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
vlsi:icc:port-location
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== Set Port Location ====== ===== Using ICC set_port_location ===== <code tcl> proc place_ports_1 {} { set unplaced_ports [get_ports {*sms* LSI* *bist* }] set y_start [expr 14.995 + 0.36*2] set y $y_start set dy 0.36 foreach_in_collection port $unplaced_ports { set direction [get_attribute $port direction] set_port_location -coordinate "0 $y" -layer_name M5 -layer_area "0 $y 0.07 [expr $y + 0.07]" $port set_attribute $port direction $direction set y [expr $y + $dy] change_selection $port break } } </code> ===== Using floorplan methods ===== If you using write_floor_plan command to write port location, you will see commands like following: <code tcl> set obj [get_terminal {"psroBaseAddress[12]"}] set_attribute -quiet $obj layer M2 set_attribute -quiet $obj owner_port {psroBaseAddress[12]} set_attribute -quiet $obj bbox {{0.925 0.000} {0.995 0.070}} set_attribute -quiet $obj status Unplaced set_attribute -quiet $obj access_direction Down set_attribute -quiet $obj direction input set_attribute -quiet $obj eeq_class 0 </code> Based on above command, we can place port using the similar commands. <code tcl> proc place_ports {} { set unplaced_ports [get_ports {*sms* LSI* *bist* }] set y_start [expr 14.995 + 0.36*2] set y $y_start set dy 0.36 foreach_in_collection port $unplaced_ports { set icccmd "" set terminal [ get_terminals -of $port ] set direction [get_attribute $port direction] set icccmd "set obj \[get_terminal \{\"[get_attribute $terminal name]\"\}\] \n" set icccmd "$icccmd set_attribute -quiet \$obj layer M5 \n" set icccmd "$icccmd set_attribute -quiet \$obj owner_port \{[get_attribute $port name]\} \n" set icccmd "$icccmd set_attribute -quiet \$obj bbox \{\{0 $y\} \{0.07 [expr $y+0.07]\}\} \n" set icccmd "$icccmd set_attribute -quiet \$obj status Unplaced \n" set icccmd "$icccmd set_attribute -quiet \$obj access_direction Left \n" set icccmd "$icccmd set_attribute -quiet \$obj direction $direction \n" set icccmd "$icccmd set_attribute -quiet \$obj eeq_class 0 \n" #echo $icccmd eval $icccmd set y [expr $y + $dy] } } </code> ===== Place Ports in Equal distance without change order ===== <code tcl> set ports [ get_ports -filter "layer==M3 || layer==M5 || layer==M7 && bbox_lly < 10" ] set sports [ sort_collection $ports bbox_llx ] set location_list [list] array set location_array {} set prellx 0 foreach_in_collection p $sports { set llx [ get_attribute $p bbox_llx ] if { $prellx == $llx } { } else { set location_array($llx) 0 lappend location_list $llx echo $llx } set prellx $llx } #set location_list [ lsort $location_list ] set index 0 foreach llx $location_list { if { $index == 0} { set new_location $llx } else { set new_location [expr $new_location + 0.27] } set index [ expr $index + 1] #echo $index $llx $new_location set location_array($llx) $new_location } foreach_in_collection p $sports { set llx [get_attribute $p bbox_llx] set new_llx $location_array($llx) set dx [expr $new_llx -$llx] move_objects -delta "$dx 0" $p #echo $llx $new_llx $dx } </code>
vlsi/icc/port-location.txt
· 最后更改: 2011/11/30 06:44 (外部编辑)
页面工具
显示页面
修订记录
反向链接
回到顶部