1.TSMC PPNN的特点:delay比普通的cell要小一些,但是周围自带blockage,导致area增大,要注意其与其他cell的drc问题
2.saveNetlist的命令
保存的netlist用于PT
保存的Netlist用于lvs
产生的hcell文件可以简化图形与layout的层次,减少lvs的时间
保存的netlist用于low power/带PG的 FM
3.checkPlace检查三个问题
core区域外的cell;overlap;placed inst;density
4.r/gets/regsub的使用
set ff [open ./M1.def r]
set FF [opne ./M2.def w]
while {[gets $ff line] != -1} {
regsub "M1" $line "M2" line
regsub "M2 64" $line "M2 144" line
puts $FF $line
}
close $ff
close $FF
5.module avial/module unload ***/module load
6.string match:用于模式匹配
用法:string match pattern string pattern:匹配模式,可以包含通配符;string :要进行匹配的变量。
例子:string match “TAPCELL*” $cell 若匹配成功,则返回1
7.report_constraint命令
innovus:
report_constraint -drv_violation_type max_transition
PT:
report_constraint -all_violators -max_delay
-max_transition -min_transition
-max_capacitance -min_capacitance
-max_fanout -min_fanout
-max_delay -min_delay
-clock_gating_setup -clock_gating_hold
report_timing :(PT)
-nets选项在路径报告中显示每个单元的扇出,而-capacitance 和-transition_ time 选项分别报告连线上的总电容和每个驱动或负载引脚的转换时间(摆率)。
8.得到某一pin的transition
report_property [get_pins $pin]
报告得到的slew_max即为该pin的transiton time
9.高亮某一类cell
highlight -color red [get_cells spr_1/spr_gate*]
10.将dbget 得到的内容写入一个文件
redirect dont_touch_insts.rpt {puts [dbget [dbget top.insts.dontTouch true -p ].name]}
将dontTouch设为size_only
dbSet [dbGetInstByCell $inst].dontTouch sizeOK
11.得到rblkg的坐标:dbget top.fPlan.rBlkgs.shape.rect
选中一条net的shielding: dbSelectObj [dbget [dbget [dbget top.nets.name $net -p ].shielNets.name VSS -p ].sWires.shieldNet.name $net -p2]
12.查看lib是否完整可以使用cmd:checkTimingLibrary
在init.log中定位到Reading verilog查看是否缺少lef
13.find 的使用
set out_file [exec find $path -type f -name "*tt85*"]
foreach line $out_file {
puts "\"$line\","
}
14.setNanoRouteMode -earlyGlobalSupplyScaleFactor 1
调为0.85会使得overflo变大
15.插入buf的方法:ecoAddRepeater -net *** -loc {} -cell ***
新的inst的名字前缀由setEcoMode -prefixName决定。
更换VT类型及size cell:ecoChangeCell -inst $inst_name(更换前的inst的name) -cell $cell (更换后的cell的base name)
16.T12工艺
PG nets:M1-M2,M10-M11,M3/M6/M9均有
clock:M3-M9
signal net :M3-M9
17.PT中在report_timing 中加上“input_pins”即可查看net delay(在输入pin下)
18.抽取lef,主要可以知道三个东西
高层PG;pin的位置;fp的形状
19.innovus中调取calibre
source /tools/mentor/calibre_2020.1/aoi_cal_2020.1_17.9/lib/cal_enc.tcl
20.选出所有的ICG cell :filter_collection [all_registers] "is_intergrated_clock_gating_cell==true"
21.history keep 200
需要在开始的时候就设置好
22.grep的使用
在指定的目录下查找指定的内容:grep -r “aaa” */*/user.tcl
23.gvim操作命令
:v//d 不删除含有/ /的行,删除其他行
:g//d 删除含有/ /的行
:%s/^/"/ 在行首加“
:%s/$/",/ 在行末加”,
24.三种删除线
(1)editDelete 删除线,线上的孔和vio,不影响逻辑链接
(2)deleteNet:删除逻辑链接,慎重删除
(3)手动删除:选中删除,命令“deleteSelectedFromFPlan”
25.如果在PT中加入一些cell。再使用report_annoted -list_not_annoted -pin_to_pins,会报告出pin_to_pins的net未反标。
26.info exists varName
if {[info exists x]} {
27.diff -b(忽略空格) -i(忽略大小写)
28.TCL中等于与不等于变量操作符
if{$vars(STD_CELL_TRACK) eq "6T"}
不等于为ne
29.specifyCellEdgeSpacing EDFQD2BWP_R OAI32D2BWP_L 0.096
specifyCellEdgeType -cell OAI32D2BWP... -left OAI32D2BWP_L
解释:对cell OAI32D2BWP...类的cell的左侧赋予OAI32D2BWP_L的DRC_rule,即OAI32D2BWP_L的左侧与EDFQD2BWP_R的右侧的距离不能超过0.096
30.将IO buff设为dontTouch
dbSet [dbget top.insts.name *iobuffer* -p ].dontTouch true
31.获取design中所有的ICG enable pin
get_pins -quiet -hierarchical -filter "is_clock_gating_enable==true"
32.python中获取当前路径
os.getcwd()
33.IR drop的dirty net概念
MF:missing Frequency 无clock信息,如IO buffer的load net。Tie cell的load net(只有Z pin情况下)
MDM:missinf driver model 仅有Zpin的tie cell的load net
MTT:missing transition time IObuffer 的output port的net
34.setEcoMode的batchMode选项设置成true是开启批量处理模式,所以run time会降很多。比如在timing eco阶段读入eco脚本时都要开启这个,否则你读入一万行的脚本可能要执行10个小时。 而且做eco时除了设置batchMode 外,还需要设置refinePlace和updateTiming为false。读入脚本成功后必须reset这个eco mode。 记住这个ecoMode仅仅用在读取eco脚本时。执行时序优化和绕线时必须reset。
35.fix via
修复PG net上的via vio。包括short/mincut/minstep。在verify_drc后可以使用以下命令修复:
fixVia -minstep
fixVia -short
fixVia -mincut
脚本修复drc的思路:
set drc_boxes [dbget [dbget top.markers.SubType Minstep -p ].box]
foreach box $drc_boxes {
deselectAll
select_obj [dbQuery -areas $box -objType sViaInst]
editeDelete -selected
}
最后再ecoRoute
36.TCL中glob的用法
glob pattern :用于匹配文件名的模式
例子:glob *.tcl / glob /home/user/*.tcl
返回当前目录或指定目录下以.tcl结尾的文件
37.设置绕线的次数
setNanoRoute -drouteEndInteration 20
38.get_db insts -if {.is_buffer || .is_inverter}
如果还想继续加上运算符,可以在外面嵌套一层
get_db [get_db insts -if {.is_buffer==true || .is_inverter==true}] -if .is_combinational==true