zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    poj 3616 Milking Time
    poj 3176 Cow Bowling
    poj 2229 Sumsets
    poj 2385 Apple Catching
    poj 3280 Cheapest Palindrome
    hdu 1530 Maximum Clique
    hdu 1102 Constructing Roads
    codeforces 592B The Monster and the Squirrel
    CDOJ 1221 Ancient Go
    hdu 1151 Air Raid(二分图最小路径覆盖)
  • 原文地址:https://www.cnblogs.com/learnsure/p/12667909.html
Copyright © 2011-2022 走看看