innovus 自学小技巧之 gui小配置

1. innovus同时显示full_name和ref_name

2.innovus的std cell显示的颜色配置成icc颜色一样

3.innovus配置快捷键成和Icc一样

d  删除     

 bindKey d  "deleteSelectedFromFPlan"

esc 退出当前编辑状态   

bindKey esc "uiSetTool select"

m 移动

bindKey m  "uiSetTool move"

set enc_source_continue_on_error 1
#set enc_source_verbose 1
set_global timing_continue_on_error 1
setMultiCpuUsage -localCpu 4




proc zto {coor_x  coor_y} {
zoomBox  $coor_x  $coor_y [expr $coor_x + 0.01]  [expr $coor_y + 0.01]
}


alias  zbx  zoomBox




bindKey Escape "uiSetTool select"
bindKey m  "uiSetTool move"
bindKey d  "deleteSelectedFromFPlan"






proc chg {name} {
    if {[llength $name] > 1} {
        echo "parameter errer,more than one input parameter "
    }
    deselectAll
    if {[dbGet -e top.insts.name  $name] != ""} {
        select_obj [dbGet  top.insts.name  $name]
        set ref [dbget [dbget -p  top.insts.name $name].cell.name]
        echo "Zoom to cell: $name REF: $ref"
    } elseif {[dbget -e  top.insts.InstTerms.name $name] != ""} { 
        select_obj [dbget top.insts.InstTerms.name $name]
        set ref [dbget [dbget -p2  top.insts.instTerms.name $name].cell.name]
        echo "Zoom to pin: $name REF: $ref"
    } elseif {[dbget -e  top.terms.name $name] != ""} {
        selectPin [dbget top.terms.name $name]
        echo "Zoom to port: $name"
    } elseif {[dbget -e  top.nets.name $name] != ""} {
        select_obj [dbget top.nets.name $name]
        echo "Zoom to net: $name"
    } else {
        echo "No objects (cell,pin,net) match to $name"
    }

    zoomSelected
}
















proc get_selected {} {
dbget  selected.name 
}



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_spacing false
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 top.insts.instTerms.name 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 selected.name ] {
   if {[dbget [dbget -p top.insts.name  $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  top.insts.instTerms.name  $pin]
      set inst_pt_x [dbget $pin_p.inst.pt_x]
      set inst_pt_y [dbget $pin_p.inst.pt_y]
      set cell_pin_layer_p  [dbget -p2 $pin_p.cellTerm.pins.layerShapeShapes.layer.name M1]


      set cell_pin_llx [dbget $cell_pin_layer_p.shapes.rect_llx]
      set cell_pin_lly [dbget $cell_pin_layer_p.shapes.rect_lly]
      set cell_pin_urx [dbget $cell_pin_layer_p.shapes.rect_urx]
      set cell_pin_ury [dbget $cell_pin_layer_p.shapes.rect_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  selected.net.name]
   set layer [dbget  selected.layer.name]
   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 selected.layer.name]  0]
set layer2  [lindex [dbget selected.layer.name]  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 selected.layer.name]  0]
set layer2  [lindex [dbget selected.layer.name]  1]
set llx [lindex [dbget  selected.box_llx] 0 ]
set lly [lindex [dbget selected.box_lly]  0 ]
set urx [lindex [dbget selected.box_urx]  0 ]
set ury [lindex [dbget selected.box_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 
" 
  -define_args {
    {-box "{<x1 y1 x2 y2>}"  "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 $obj.net.instTerms.isOutput 1 -p1].inst.name]
    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 top.insts.name $inst].cell.size_x]
    return $h
}


proc get_pin_net {pin} {
    set net  [dbget [dbGet  -p  top.insts.instTerms.name  $pin].net.name]
    return $net
}


proc get_select_pin_net {} {
    set net  [dbget  selected.net.name]
    return $net
}



setPreference SelectNetWhenSelectPin 0
proc user_assignSigToBump {} {
set net  [join [dbget selected.net.name]]
set inst [dbget selected.inst.name]
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 selected.name] {
    set net_name [dbget [dbget top.bumps.name $bump_name -p].net.name]
    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
原文地址:https://www.cnblogs.com/learnsure/p/12667909.html