====== Create Frame View ====== create_macro_fram -library ${design_vars(mw_lib)} -cell_name ${design_vars(subblks_ics)} \ -routing_blockage_output_layer metBlk \ -extract_blockage_by_merge_with_threshold { \ m7 0 0 m8 0 0 m9 0 0} ########## make size clock ports tcl in fram/cell view ################### proc maketcl {} { global width global length set ports_file ./p.out set portslist [open $ports_file a+] foreach_in_collection sauce [filter_collection [get_attribute [get_clocks] sources -quiet] "object_class == port"] { set coord [get_attribute $sauce bbox] set low_x [expr [lindex [lindex $coord 0] 0]] set low_y [expr [lindex [lindex $coord 0] 1]] set high_x [expr [lindex [lindex $coord 1] 0]] set high_y [expr [lindex [lindex $coord 1] 1]] set direction [get_attribute [get_terminals -of $sauce] access_direction] if {$direction == "Left"} { set M3_low_y [expr $low_y - $width] set M3_high_x [expr $high_x + $length] set M3_high_y [expr $high_y + $width] puts $portslist "set_undoable_attribute \[get_terminals [get_attr $sauce name]\] bbox \"$low_x $M3_low_y $M3_high_x $M3_high_y\"" } elseif {$direction == "Right"} { set M3_low_y [expr $low_y - $width] set M3_low_x [expr $low_x - $length] set M3_high_y [expr $high_y + $width] puts $portslist "set_undoable_attribute \[get_terminals [get_attr $sauce name]\] bbox \"$M3_low_x $M3_low_y $high_x $M3_high_y\"" } elseif {$direction == "Down"} { set M4_low_x [expr $low_x - $width] set M4_high_x [expr $high_x + $width] set M4_high_y [expr $high_y + $length] puts $portslist "set_undoable_attribute \[get_terminals [get_attr $sauce name]\] bbox \"$M4_low_x $low_y $M4_high_x $M4_high_y\"" } elseif {$direction == "Top"} { set M4_low_x [expr $low_x - $width] set M4_high_x [expr $high_x + $width] set M4_low_y [expr $high_y - $length] puts $portslist "set_undoable_attribute \[get_terminals [get_attr $sauce name]\] bbox \"$M4_low_x $M4_low_y $M4_high_x $high_y\"" } } close $portslist } ############# main procedure ############################################### sh rm -rf p.out #### sizeup X4 set width 0.105 set length 0.21 maketcl #in cellview source p.out sh rm -rf p.out #### sizedown X2 set width -0.105 set length -0.21 maketcl save_mw_cel -as ${mw_topLevel} create_macro_fram -library ${mw_topLevel}.mwlib -cell_name ${mw_topLevel} \ -routing_blockage_output_layer metBlk \ -extract_blockage_by_merge_with_threshold {\ m8 0 0 m9 0 0 m10 0 0} open_mw_cel ${mw_topLevel}.FRAM #in framview source p.out save_mw_cel ${mw_topLevel}.FRAM close_mw_cel ${mw_topLevel}.FRAM #in cellview source p.out