• 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
  • 相关阅读:
    前缀和
    B. Ilya and Queries
    BZOJ1652 [Usaco2006 Feb]Treats for the Cows
    NOIP2014提高组 酱油记
    NOIP初赛 BLESS ALL!
    BZOJ1096 [ZJOI2007]仓库建设
    BZOJ1036 [ZJOI2008]树的统计Count
    BZOJ1030 [JSOI2007]文本生成器
    BZOJ2749 [HAOI2012]外星人
    BZOJ1093 [ZJOI2007]最大半连通子图
  • 原文地址:https://www.cnblogs.com/learnsure/p/12667909.html
Copyright © 2020-2023  润新知