admin管理员组

文章数量:1598077

2024年6月7日发(作者:)

}

deselectAll

if {[dbGet -e $name] != ""} {

select_obj [dbGet $name]

set ref [dbget [dbget -p $name].]

echo "Zoom to cell: $name REF: $ref"

} elseif {[dbget -e $name] != ""} {

select_obj [dbget $name]

set ref [dbget [dbget -p2 $name].]

echo "Zoom to pin: $name REF: $ref"

} elseif {[dbget -e $name] != ""} {

selectPin [dbget $name]

echo "Zoom to port: $name"

} elseif {[dbget -e $name] != ""} {

select_obj [dbget $name]

echo "Zoom to net: $name"

} else {

echo "No objects (cell,pin,net) match to $name"

}

zoomSelected

}

proc get_selected {} {

dbget

}

proc check_open_short {} {

clearDrc

set_verify_drc_mode -disable_rules {color cut_spacing enclosure eol_spacing jog2jog_spacing min_area min_cut min_step out_of_die protrusion} -check_implant false -ignore_cell_blockage true -check_routing_halo false -check_ndr_spac

verify_connectivity -type regular -remove_old_open_vio -use_new_open_vio -no_antenna -no_unconn_pin -no_unrouted_net

verify_drc -check_only regular -exclude_pg_net

violationBrowser -short -connectivity -no_display_false -displayByLayer

set_verify_drc_mode -reset

}

proc size_cell {size_inst size_cell} {

ecoChangeCell -inst $size_inst -cell $size_cell

}

proc insert_buffer {insert_term buf_type} {

ecoAddRepeater -term $insert_term -cell $buf_type -relativeDistToSink 1

}

proc remove_buffer {buf_inst} {

ecoDeleteRepeater -inst $buf_inst

}

proc remove_net_routing {netName} {

editDelete -net $netName

}

alias s size_cell

alias i insert_buffer

proc ecomode {value_num} {

if {$value_num == "1"} {

setEcoMode -batchMode false

setEcoMode -reset

setEcoMode -updateTiming false -refinePlace false -batchMode true -honorDontUse false -honorDontTouch false -honorFixedStatus false -honorFixedNetWire false

getEcoMode

} elseif {$value_num == "0"} {

setEcoMode -batchMode false

setEcoMode -reset

getEcoMode

} else {

echo "value 0 1 needed"

}

}

proc snap {value_num} {

if {$value_num == "1"} {

setFPlanMode -snapConstraintGrid inst

setFPlanMode -snapBlockGrid inst

setFPlanMode -snapPlaceBlockageGrid inst

setEditMode -snap_objects_to_track {patch regular}

setEditMode -snap_to {pg pin}

setEditMode -via_auto_snap 1

setEditMode -disable_snap 0

} elseif {$value_num == "0"} {

setFPlanMode -snapConstraintGrid manufacturing

setFPlanMode -snapBlockGrid manufacturing

setFPlanMode -snapPlaceBlockageGrid manufacturing

setEditMode -type regular

setEditMode -snap_objects_to_track patch

setEditMode -snap_to pg

setEditMode -via_auto_snap 0

setEditMode -disable_snap 1

} else {

echo "value 0 1 needed"

}

}

#set_global timing_constraint_enable_group_path_resetting false

#set_global timing_enable_path_group_priority false

history keep 1000

set_global report_timing_format {hpin cell delay arrival slew load fanout aocv_derate user_derate}

#get_property [report_timing -collection -max_paths 10 -path_group reg2reg] slack

#set latency 0

if {0} {

set_interactive_constraint_modes func

source $func_sdc_files

set_interactive_constraint_modes bypass

source $bypass_sdc_files

set_interactive_constraint_modes scan

source $scan_sdc_files

set_interactive_constraint_modes {}

}

if {0} {

foreach CKpin [dbget inst_adrctl_write_path_tb/inst_adrctl_bit_macro_*/inst_entry*/hic_dnt_out_reg/CKN] {

set_ccopt_property insertion_delay 0.5 -pin $CKpin

Puts "set_insertion_delay $CKpin: [get_ccopt_property insertion_delay -pin $CKpin]"

}

}

proc delete_select {} {

foreach selectInst [dbget ] {

if {[dbget [dbget -p $selectInst].isPhysOnly]==1} {

deleteInst $selectInst

} else {

echo "WARN is not a physonly cell"

}

}

redraw

}

bindKey D "delete_select"

win off

proc get_pinshape_box {pins} {

set pin_shape_box [list ]

foreach pin $pins {

set pin_p [dbget -p $pin]

set inst_pt_x [dbget $pin__x]

set inst_pt_y [dbget $pin__y]

set cell_pin_layer_p [dbget -p2 $pin_ M1]

set cell_pin_llx [dbget $cell_pin_layer__llx]

set cell_pin_lly [dbget $cell_pin_layer__lly]

set cell_pin_urx [dbget $cell_pin_layer__urx]

set cell_pin_ury [dbget $cell_pin_layer__ury]

set pin_shape_llx [expr $cell_pin_llx + $inst_pt_x]

set pin_shape_lly [expr $cell_pin_lly + $inst_pt_y]

set pin_shape_urx [expr $cell_pin_urx + $inst_pt_x + 10]

set pin_shape_ury [expr $cell_pin_ury + $inst_pt_y + 10]

set pin_shape_box "$pin_shape_llx $pin_shape_lly $pin_shape_urx $pin_shape_ury"

}

return $pin_shape_box

}

proc get_coord {} {

set args [uiGetCoord]

}

proc create_wrie {} {

set net [dbget ]

set layer [dbget ]

setEditMode -status routed -layer $layer -net $net -type patch

set args [uiGetBox]

set x_start [lindex $args 0]

set y_start [lindex $args 1]

set x_end [lindex $args 2]

set y_end [lindex $args 3]

editAddRoute [concat $x_start $y_start]

editAddRoute [concat $x_end $y_end]

editCommitRoute [concat $x_end $y_end]

uiSetTool select

}

proc usereditPowerVia {} {

set layer1 [lindex [dbget ] 0]

set layer2 [lindex [dbget ] 1]

editPowerVia -skip_via_on_pin Standardcell -add_vias 1 -bottom_layer $layer1 -top_layer $layer2 -area [uiGetBox] -orthogonal_only false

}

#bindKey p "usereditPowerVia"

proc editCut {args} {

parse_proc_arguments -args $args options

if {[info exists options(-box)]} {

set cut_box "$options(-box)"

} else {

set cut_box [uiGetBox]

}

deselectAll

editCutWire -only_visible_wires -box $cut_box

set layer1 [lindex [dbget ] 0]

set layer2 [lindex [dbget ] 1]

set llx [lindex [dbget _llx] 0 ]

set lly [lindex [dbget _lly] 0 ]

set urx [lindex [dbget _urx] 0 ]

set ury [lindex [dbget _ury] 0 ]

editDelete -selected

select_obj [dbQuery -areas "[expr $llx-0.001] $lly $llx $ury " -layers "$layer1 $layer2" -objType sWire ]

select_obj [dbQuery -areas "$urx $lly [expr $urx+0.001] $ury " -layers "$layer1 $layer2" -objType sWire ]

editPowerVia -skip_via_on_pin Standardcell -delete_vias 1 -bottom_layer $layer1 -top_layer $layer2 -selected_wires true -orthogonal_only false

editPowerVia -skip_via_on_pin Standardcell -add_vias 1 -bottom_layer $layer1 -top_layer $layer2 -selected_wires true -orthogonal_only false

}

define_proc_arguments editCut

-info "editcut wire and via n"

-define_args {

{-box "{}" "Specify the lower left and upper right coordinates of the cutting" box {optional}}

}

proc size_shape {} {

dbSet [dbGet selected].width 0.48

shiftObject -side down -distance 0.16

editStretch x -0.2 low -no_conn 1

}

proc driver_inst {pin} {

set obj [dbGetObjByName $pin]

set name [dbGet [dbGet $ut 1 -p1].]

return $name

}

proc distance {inst0 inst1} {

set x0 [dbGet [dbGetObjByName $inst0].pt_x]

set y0 [dbGet [dbGetObjByName $inst0].pt_y]

set x1 [dbGet [dbGetObjByName $inst1].pt_x]

set y1 [dbGet [dbGetObjByName $inst1].pt_y]

set z [expr abs($x0 - $x1) + abs($y0 - $y1)]

return $z

}

proc get_inst_x {inst} {

set x [dbGet [dbGetObjByName $inst].pt_x]

return $x

}

proc get_inst_urx {inst} {

set urx [dbGet [dbGetObjByName $inst].box_urx]

return $urx

}

proc get_inst_y {inst} {

set y [dbGet [dbGetObjByName $inst].pt_y]

return $y

}

proc get_inst_ury {inst} {

set ury [dbGet [dbGetObjByName $inst].box_ury]

return $ury

}

proc get_inst_h {inst} {

set h [dbGet [dbGet -p $inst]._x]

return $h

}

proc get_pin_net {pin} {

set net [dbget [dbGet -p $pin].]

return $net

}

proc get_select_pin_net {} {

set net [dbget ]

return $net

}

setPreference SelectNetWhenSelectPin 0

proc user_assignSigToBump {} {

set net [join [dbget ]]

set inst [dbget ]

deselectAll

set area [uiGetBox]

set bump_name [dbget [dbQuery -areas $area -objType bump].name]

assignSigToBump -bumps $bump_name -net $net

addBumpConnectTargetConstraint -netName $net -bump $bump_name -instName $inst

select_bump -bumps $bump_name

fcroute -selected_bump -layerChangeTopLayer AP -layerChangeBotLayer AP -type signal -routeWidth 16

deselect_bump

redraw

}

bindKey p "user_assignSigToBump"

proc write_assigned {tclfile} {

set fp [open $tclfile w+]

deselectAll

select_bump -assigned

foreach bump_name [dbget ] {

set net_name [dbget [dbget $bump_name -p].]

puts $fp "assignSigToBump -bumps $bump_name -net $net_name"

}

close $fp

deselectAll

}

proc restore_design {dbs} {

regexp -all {dbs(S+.)(.*enc)} $dbs i match_topname k

regsub {..*} $match_topname "" topname

restoreDesign ${dbs}.dat $topname -noTiming

}

setPreference InstanceText InstanceMaster

setLayerPreference stdCell -color {#d28cf0} -stipple none

setLayerPreference io -stipple none

setLayerPreference areaIo -stipple none

setPreference ShowUnplacedInst 1

setPreference ShowCrossLineWhenSelect 0

setPreference HiliteNetWhenSelectPin 0

setPreference InstFlightLine 1

setPreference FlightLineInMove 0

setPreference FromOutputPin 1

setPreference SingleConnectionColor #ffffff

setPreference InputConnectionColor #ffffff

setPreference MediumConnectionColor #aaff00

setLayerPreference pinObj -isVisible 1 -isSelectable 1

setLayerPreference violation -isSelectable 0

setPreference HiliteNetWhenSelectWire 0

setPreference TextDisplaySize s

setPreference ShowModuleText 0

setPreference SelectNetWhenSelectPin 1

setLayerPreference hinst -color #000000 -stipple none

setLayerPreference guide -color green -stipple none

setLayerPreference fence -color yellow -stipple none

setLayerPreference region -color red -stipple none

setLayerPreference text -color {#d28cf0}

setPreference ShowFlightLineTermMark 0

本文标签: 技巧自学配置