innovus 自学小技巧之 gui小配置

摘要:
=""}{select_obj[dbgettop.insts.InstTerms.name$name]setref[dbget[dbget-p2top.insts.instTerms.name$name].cell.name]echo"Zoomtopin:$nameREF:$ref"}elseif{[dbget-etop.terms.name$name]!

1. innovus同时显示full_name和ref_name

innovus 自学小技巧之 gui小配置第1张

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

innovus 自学小技巧之 gui小配置第2张

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 1set_global timing_continue_on_error 1setMultiCpuUsage -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 falseverify_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 falsesetEcoMode -reset
setEcoMode -updateTiming false -refinePlace false  -batchMode true -honorDontUse false -honorDontTouch false -honorFixedStatus false -honorFixedNetWire falsegetEcoMode
} elseif {$value_num == "0"} {
  setEcoMode -batchMode falsesetEcoMode -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 1setEditMode -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 0setEditMode -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 {} {
foreachselectInst [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} {
     setpin_shape_box [list ]
     foreachpin $pins {
      set  pin_p [dbget -p  top.insts.instTerms.name  $pin]
      setinst_pt_x [dbget $pin_p.inst.pt_x]
      setinst_pt_y [dbget $pin_p.inst.pt_y]
      set cell_pin_layer_p  [dbget -p2 $pin_p.cellTerm.pins.layerShapeShapes.layer.name M1]


      setcell_pin_llx [dbget $cell_pin_layer_p.shapes.rect_llx]
      setcell_pin_lly [dbget $cell_pin_layer_p.shapes.rect_lly]
      setcell_pin_urx [dbget $cell_pin_layer_p.shapes.rect_urx]
      setcell_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 {} {
   setargs [uiGetCoord]
}





proc create_wrie {} {
   setnet [dbget  selected.net.name]
   setlayer [dbget  selected.layer.name]
   setEditMode -status routed  -layer $layer -net $net  -type patch  
   setargs [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{
     setcut_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 falseeditPowerVia -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.48shiftObject -side down -distance 0.16editStretch x -0.2 low -no_conn 1}





proc driver_inst {pin} {
    setobj [dbGetObjByName $pin]
    set name [dbGet [dbGet $obj.net.instTerms.isOutput 1 -p1].inst.name]
    return$name
}





proc distance {inst0 inst1} {
    setx0 [dbGet [dbGetObjByName $inst0].pt_x]
    sety0 [dbGet [dbGetObjByName $inst0].pt_y]
    setx1 [dbGet [dbGetObjByName $inst1].pt_x]
    sety1 [dbGet [dbGetObjByName $inst1].pt_y]
    set z [expr abs($x0 - $x1) + abs($y0 -$y1)]
    return$z
}








proc get_inst_x {inst} {
    setx  [dbGet [dbGetObjByName $inst].pt_x]
    return$x
}




proc get_inst_urx {inst} {
    seturx  [dbGet [dbGetObjByName $inst].box_urx]
    return$urx
}






proc get_inst_y {inst} {
    sety  [dbGet [dbGetObjByName $inst].pt_y]
    return$y
}




proc get_inst_ury {inst} {
    setury  [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 {} {
    setnet  [dbget  selected.net.name]
    return$net
}



setPreference SelectNetWhenSelectPin 0proc user_assignSigToBump {} {
setnet  [join [dbget selected.net.name]]
setinst [dbget selected.inst.name]
deselectAll
setarea [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 16deselect_bump
redraw
}
bindKey   p  "user_assignSigToBump"



proc write_assigned {tclfile} {
    set fp [open $tclfile w+]
    deselectAll
    select_bump -assigned
    foreachbump_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 1setPreference ShowCrossLineWhenSelect 0setPreference HiliteNetWhenSelectPin 0setPreference InstFlightLine 1setPreference FlightLineInMove 0setPreference FromOutputPin 1setPreference SingleConnectionColor #ffffff
setPreference InputConnectionColor #ffffff
setPreference MediumConnectionColor #aaff00
setLayerPreference pinObj -isVisible 1 -isSelectable 1setLayerPreference violation -isSelectable 0setPreference HiliteNetWhenSelectWire 0setPreference TextDisplaySize s
setPreference ShowModuleText 0setPreference 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

免责声明:文章转载自《innovus 自学小技巧之 gui小配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jenkins之定时构建vue SSR 部署详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IE下设置SELECT项不可选

因为最近在用jquery 所以JS是Jquery格式写的 代码 1<selectname="drpADAddress"id="drpADAddress">2<optionvalue="0">请选择</option>3<optionvalue="0"disabled="true">首页</option&...

Impala的安装和使用

通过本地yum源进行安装impala所有cloudera软件下载地址 http://archive.cloudera.com/cdh5/cdh/5/ http://archive.cloudera.com/cdh5/ 1、 impala的介绍imala基本介绍 impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能...

Sql Server 优化的方法

<!--StartFragment-->查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查...

union的使用

将多条select语句的结果,合并到一起,称为联合查询 使用union关键字 场景: 获取数据的条件,出现逻辑冲突,或者很难在一个逻辑内表示,就可以拆成多个逻辑,分别实现,最后将结果合并到一起 select语句 union (all 可选) select语句 如果union的结果又重复记录,会消除重复记录。 可以通过union选项all达到目的 子语句排序...

mysql数据库命令使用

1、mysql> SHOW GLOBAL STATUS LIKE'Open_files';     #当前打开文件数  2、mysql> SHOW VARIABLES LIKE'open_files_limit';       #最大打开文件数  3、解决办法: 5.6 GTID版本不支持这种语法  create table B select ...

select 无限级联动。省市县三级联动。jquery插件

   /*省市县 三级联动, 后台提取json数据<script src="http://t.zoukankan.com/res/PCASelect.js" type="text/javascript"></script><script type="text/javascript">    $(document).r...