FP 笔记

查询时序路径违例的报表/加载时序中出现的debug/标注违例路径 (1)report_timing -from beginpoint -to endpoint -machine_readable > ab8_vio(命名);
(2)load_timing_debug_report ab8_vio;
(3)highlight_timing_report -file ab8_vio -path 1 -color_index 2(粉色高亮)
找出并选中fan的in/out的cell select [all_fanin -to 某cell全名/*  -startpoints_only -only_cells]
select [all_fanout -from 某cell全名/*  -endpoints_only -only_cells]
输出DEF文件 defOut -netlist -routing -floorplan -earlyGlobalRoute DATA/[dbget top.name ].def.gz
输出Netlist文件  saveNetlist DATA/[dbget top.name ].v.gz
截图 ksnapshot
输出GDS文件 streamout DATA/{x x x}.gds.gz
绕线前和绕线后的DEF文件的输出 write def cmd:
#if DB before route:
defOut -earlyGlobalRoute -floorplan -netlist [dbgDesignName].20220621_V1.def.gz
#if DB after route:
defOut -routing -floorplan -netlist [dbgDesignName].20220621_V1.def.gz
Core和Standard Cell的利用率在sunmmery的报告中显示分别如右: (1)% Chip Density (Counting Std Cells and MACROs and IOs);(2) % Pure Gate Density #3 (Subtracting MACROS)
 
抓取pin的输出端的寄存器/Cell  selectInst [all_fanout -from mstr_rdata* -endpoints_only -only_cells]  
抓取全部的boundary timing /projusers/xe025ab7/RUN/clarkliu/0_COMMON/APR/common/grep_port_delay.tcl
快捷指令 ①cd
②ls -a
③gvim .cshrc
④alias h 'history'
在运行过程中发现有SDC文件填写错误,可以通过以下指令进行更换 sed -i 's:set CONS_FILE {
/projusers/xe025abm/zhaoheng/stable/smmu_top_vpe_x16rc/20220715-NETLIST/common/smmu_top_vpe_x16rc_v01_20220719.sdc} : set CONS_FILE {
/projusers/xe025abm/zhaoheng/stable/smmu_top_vpe_x16rc/20220715-NETLIST/common/SDC/smmu_top_vpe_x16rc_v02_20220902.sdc}:g' /projusers/xe025abm/zhaoheng/stable/smmu_top_vpe_x16rc/20220715-NETLIST/MMMC/T5E0_MMMC_FLAT_TIMING_PT_SI_SIGNOFF_23_20220913_postroute/5E0-MMMC_FLAT_TIMING_PT_SI_SIGNOFF_23/04_SI_STA/func_func/*/*/UniSTA_QoR.pt
在PT中查看min_period的违例 report_min_period  u_rp_x16_device/external_rams/u0_ram_radm_qbuffer_hdr_0_/u_psub_pcieip_tp1_d3236w302f1000_datacheck/u_psub_pcieip_tp1_d3236w302f1000_organize/orgnize_gen_5__genblk1_u_psub_pcieip_tp1_d3236w302f1000_ip_0/u_SYT6_HSTPSR_UL_832X152_M4B2C1W0T0P0R1/CLK -path_type full_clock_expanded -all_violators  >> list
ETM中出现未加propaagte,在run_pt里查找文件,并进行替换
sed -i -e 's:set IDEAL_OR_PROPAGATED_CLOCK “<require>”:set IDEAL_OR_PROPAGATED_CLOCK “propagated”:g' */*/ext_model.pt
在进行LEC(逻辑的等效检查)过程中,需要抓取映射点,观察是否等效抓取某个cell的指令为 dbget [dbget top.insts.cell.subClass block -p1 ].name -u
在用ECF的时候需要将这些设置设为true ANALYZE_SETUP = true

ANALYZE_DATAPATH = true
MODEL_GATED_CLOCK = true
MODEL_SEQ_MERGING = true                                MODEL_SEQ_CONSTANT = true

(1)SCAN clone MODEL_GATED_CLOCK = true
MODEL_SEQ_MERGING = true 
(2)scan reorder * Golden_pin_constraint_0       
      Revised_pin_constraint_0;                             *setting 全开;               *Delete_compared_points_file;                          *noClone
查看mapping table write_do_lec -flat DO_lec.file 做sequential merge会产生
查看mapping table dumpMultiBitFlopMappingFile -output MbitMapFile -prefix rp_x16_controller
LEC run完后会生成Mapp…..all 文件 最后你在 /tools/bin/setupfile/POWERREPLAY/utility/lec_to_siloti.pl Mapped_Report_all file <FSDB Hierarchical> 将Mapped file转为mapping_file.siloti 1.source /projusers/xe025abs/tumbler/IR/0_COMMON/GEN_LEC_MAPPING                                                                                                        2. /tools/bin/setupfile/POWERREPLAY/utility/lec_to_siloti.pl Mapped_Report_all file <FSDB file> 将Mapped file转为mapping_file.siloti
使用genus方法进行优化 1.build ticket                                                                                              2.get_innovus -uq uxe025a_apr.q -init WFM_PlaceOpt_SOCE.tcl -uv 21.1isr5 -u64 -nowin -uv_genus 21.11-s126 -log LOG -uslot 16 -umem 16                 3.->WFM_PlaceOpt_SOCE.tcl —>  #User customize script->setBetaFeature innovusGenusRestructuring 1
 
3 打开IR 的GUI的指令 get_redhawk_sc -f -uv 2022_R1.0.p1
4 使当前环境恢复到初始化设置  source /projects/uxe025a/cshrc.workflow
5 查看当前环境配置 wfm ticket query
6 配置IR环境 source /tools/bin/setupfile/REDHAWK_SC/wfm_shadow/cshrc 
7 查看Demand&Bump的current
8 1.source /projusers/xe025abl/RUN/stable/smmu_top_vpe_x2rc/20220831-NETLIST/IR/TICKET_jiguang/create_bump_ap.tcl
2.加完后检查下,是否全部都有bump ,若上半部没有bump则需要手动补打:
①首先打开该脚本,找到No.26和27,复制好后,修改其中的变量如bumpcell,起始点,pitch间距和pattern规模
起始点为最上面左一的坐标:首先选择上排左一的bump,再键入命令dbget selected.bump_shape_center得到当前坐标(88.0 748.75),补打bump第一个坐标即为(88.0 748.75+Y轴方向的pitch)
pitch间距即为(x轴间距 y轴间距),脚本中均有定义,需要换算成实际值,避免重复吃变量;
pattern规模:VDD的还差一行,则为(1 4),一行4个。
②source修改后的VDD命令加入VDD,然后给VDD赋予对应的PIN:键入assignPGBumps -nets VDD -bumps VDD_*
同样的VSS~;加完后检查bump的颜色。
9 IR的Static/dynamic的inst drop INST_DVD_QCF_av_static_simple_model.rpt
10 IR过程中命令  
 1.1 get_redhawk_sc -uv 2022_R1.0.p1 -f
 
2 IR PPT 第19页 dynamic power summary reportpath: ${IR_work_dir}/T64A-IR_RHSC/64A-IR_RHSC_2022R1/20220913_2313_scn_Reports/power_summary.rpt
3 IR PPT 第20页 peak current waveform,
 使用 <CMD> get_redhawksv  av.${top_name}.total.current.xgr 打开
图3
AC_EM路径 \twfs02ProjectUXE025A3_BE1_APR2_StableIRAC_EM
删除BUMP以及添加电源pin 8 deleteBumps -all
9 win
11 editDelete -layer {AP RV} -object_type {wire via} -net {DVDD0P75 VSS}
13 source /projusers/xe025ab7/RUN/clarkliu/0_COMMON/APR/globalconnect.tcl
14 win
15 dbget selected.box
16 selectPGPin -all
17 createPGPin VSS -geom M15 385.4205 0.0 389.8605 1304.16
18 selectPGPin -all
19 dbget selected.name
20 deselectAll
21 win
22 dbget selected.box
23 createPGPin DVDD0P75 -geom M15 391.5005 0.0 395.9405 1304.16
24 dbget selected.name
25 win
26 selectPGPin -all
27 win
28 dbget selected.name
29 selectPGPin -all
addfiller&M0 ①删除所有后缀如下(即不包含必须加用以修timing)的filler
deleteFiller -prefix GUC_DCAP_FILLER
deleteFiller -prefix GUC_FILLER
deleteFiller -prefix HSTACK_POSTFIX
deleteFiller -prefix VSTACK_POSTFIX
②将m0的dummy全部删除干净
editDelete -net _FILLS_RESERVED -shape DRCFILL -layer M0
③先添加filler:
source Script/70.60.AddFiller.cmd

④加完filler之后再加dummy。如果顺序颠倒,先加了M0的dummy,则M0层全部填满,没有办法加decap等cell。
source Script/70.91.N6_M0_Dummy_Metal.tcl

worst drop/worst% (static )worst drop=750mV*worst(%)
进入该路径下/projusers/xe025abm/zhaoheng/initial/rp_x16_controller/20220427/PV/T770_PVAIO_20220707_V1.tmp/770-PVAIO/MERGE/GDSII get_thunder DM_MERGED_rp_x16_controller_470_0713_20220713_161514.gds.gz(获取xxx.gds.gz文件) Thunder环境中
进入DM的路径下退出,然后map、tech、desplay等文件,之后进入DM环境中 载入环境后,点击communication进入calibre RVE中,到VerifyReport中查找db文件可查看DRC错误
Innovus环境中查看calibre方式 在innovus环境中查看DRC错误,并在文件中选中Calibre之后到verify report中找出db文件 Innovus环境中
修DCRC的方法(1) Share three scripts about fixing and preventing DRC

Script 1  Check whether the pin of macro on track

  /projusers/xe025abp/RUN/calf/common/Script/autockeckpin_track.tcl
 
 This script can check normal macro and TCAM macro,but can't check hard IP

 Usage: Make sure block track is right,and source script
 
  Incorrect macro will be placed in the fail_memory file
 
  If have hard IP in block , please select all macro except hard IP , then execute command from line 3

Script 2  Fix drc VIA1.EN.31.2.s.T and VIA1.S.3

 Usage: after PV flow 

  loadViolationReport -type Calibre -filename PV_path/LAYOUT_VERIFY/DRC_BE/DRC_RES.db
   
  make sure sub-block don't have VIA1.EN.31.2.s.T and VIA1.S.3 drc then ↓

  source /projusers/xe025abp/RUN/calf/common/Script/changeVia.tcl
 
  run PV flow again

Script 3 Prevent drc if your block have *TACM* macro

 Usage: at floorplan stage

  addRoutingHalo -cell  [dbGet head.topCells.insts.cell.name *TCAM*] -space 0.5 -top M5 -bottom M1

当遇到clamp cell上出现M5-M14的电源线出现short 选中其中一层blkage,将其blkage的NET TYPE——>Except PG NET
检查PG层是否有短路 verifyConnectivity -noSoftPGConnect -net {VDD VSS}
查DRC路径 okular /projects/uxe025a/TECH_LIB/20220104/TECH/DESIGN_RULE/T-N06-CL-DR-001/1_0_3/TN06CLDR001_1_0_3.pdf
 
修antenna的DRC 1.将antenna的DRC.db导入innovus,通过Mark看是哪个pin出的问题。之后按照命令加
attachDiode -pin {$inst_name $pin_name} -prefix ANT_FIX__ -diodeCell ANTENNAPADBWP240H11P57CPDLVT
eg.
attachDiode -pin {psub_vpe1_U_compressor_ScanCompression_mode/PRECTSFE_OFC101645_n372 I } -prefix ANT_FIX_0531_1 -diodeCell ANTENNAPADBWP240H11P57CPDLVT
attachDiode -pin {u0_psub_vpe1_raw/u_vpelite_wrapper/u_psub_aptx/aptx_vpe1_u_psub_bdf/u_psub_bdf_multi_ch/genblk2_3__bdf_single_channel_inst/psub_bdf_b_csr_ins/PRECTSFE_OFC219338_hdma_rd_cnt_19 I } -prefix ANT_FIX_0531_2 -diodeCell ANTENNAPADBWP240H11P57CPDLVT
2.之后将filler删除掉再refince一下新加的这两颗diode cell
deleteFiller -prefix GUC_FILLER
refinePlace -inst {u0_psub_vpe1_raw/u_vpelite_wrapper/u_psub_aptx/aptx_vpe1_u_psub_bdf/u_psub_bdf_multi_ch/genblk2_3__bdf_single_channel_inst/psub_bdf_b_csr_ins/ANT_FIX_0531_2_PRECTSFE_OFC219338_hdma_rd_cnt_19_I psub_vpe1_U_compressor_ScanCompression_mode/ANT_FIX_0531_1_PRECTSFE_OFC101645_n372_I}
LVS/ERC 出现违例时候,如果有统一的VSS、 VDD的short(open),且发生在clamp与block连接上 此时出现的open可是clamp的power作为独立电源未与block电源相连,因此需要将独立电源用最高层走线连接,保持供电.
Tweaker中使用这些指令可以解绝对应问题 set enable_partial_blockages false
set slk_fix_hold_at_sink_pin_only true
set slk_ignore_drv true
set slk_fix_hold_watch_driving_pin_slack false
set slk_fix_path_watch_timing_window_only true
set slk_fix_hold_watch_setup_timing_window true
set slk_fix_hold_watch_hold_timing_window true
set slk_fix_hold_high_effort_flow true
已关注本身的margin,插入自己选中的cell(buffer/delay) set slk_fix_hold_watch_driving_pin_slack false
保存已布局好的floorplan的pins、memory、size的位置 writeFPlanScript -sections pins -fileName DATA/pins.tcl
writeFPlanScript -sections blocks -fileName DATA/memory.tcl
writeFPlanScript -sections boundary -fileName DATA/size.tcl

 

删除Cap Filler deleteFiller -prefix guc  
删除WELLTAP
删除全部电源线 editDelete -net {VDD VSS} -type Special
重新加电源线 globalNetConnect VDD -pin VDDPE -type pgpin -override
globalNetConnect VDD -pin VDDCE -type pgpin -override
文件保存 saveDesign DATA/20220629_welltap/410_fp.enc -tcon
删除Via editSelect -via_cell name -object_type {Via}
选中cell的类型进行更改 dbset selected.status + 类型 
删除IOBuffer set insts [dbget top.insts.name GUC_attach*]
setEcoMode -refinePlace false -updateTiming false -honorDontTouch false -honorFixedStatus false
foreach inst $insts {ecoDeleteRepeater -inst $inst}
 
添加menmory周围和Pin脚周围的PlacementBlockage    setFinishFPlanMode -direction y -activeObj {core macro macroHalo hardblkg partialblkg softblkg}
finishFloorplan -fillPlaceBlockage partial 25 -density 30 -deadArea 5000
setFinishFPlanMode -direction x -activeObj {core macro macroHalo hardblkg partialblkg softblkg}
finishFloorplan -fillPlaceBlockage partial 25 -density 30 -deadArea 5000
针对某个文件tickrt时候build期间的confirm选择跳过 wfm ticket build   xxx.tivket     -skip_verify
选择相对应的module进行筛选 selectModule + cellname
出现TCIC问题 setFPlanMode -snapBlockFGrid finfetmanufacturing;(修Grid) setFPMode -snapBlockGrid LayerTrack(修Track);删除Row等再关闭pin以及layer,进行移动memory的位置,调整和Grid的网格一致
将memory各个模块的组别写成tcl脚本 1.foreach name [dbget selected.name ] {echo $name >> SRAM.group.tcl};                                                                                                2.mv SRAM.group.tcl [dbgDesignName].SRAM.group.20220727_V1.tcl
每个Iobuffer之间需要保留一些间距(IOBuffer.tcl需要添加) specifyCellPad $inPinBuf -left 10 -right 10 -bottom 1
specifyCellPad $outPinBuf -left 10 -right 10 -bottom 1
specifyCellPad $inCKPinBuf -left 10 -right 10 -bottom 1
specifyCellPad $outCKPinBuf -left 10 -right 10 -bottom 1
在添加完IOBufer之后需要进行添加partial blackage,并且保持间距 setFinishFPlanMode -direction y -activeObj {core macro macroHalo hardblkg partialblkg softblkg}
finishFloorplan -fillPlaceBlockage partial 25 -density 30 -deadArea 5000
setFinishFPlanMode -direction x -activeObj {core macro macroHalo hardblkg partialblkg softblkg}
finishFloorplan -fillPlaceBlockage partial 25 -density 30 -deadArea 5000
410阶段需要在IOBuffer脚本里添加间距的指令 添加完成后需要先添加partial blockage,然后添加45%的soft(注意一段一段的添加)
检查memory的pin在不在track上 /projusers/xe025aba/RUN/calf/trial/dpe_mep/Rel_85_V0.1/common/autockeckpin_track.tcl 
抓取模块进行分组,之后倒进TCL脚本文件里 foreach name [dbget selected.name ] {echo $name >> SRAM.group.tcl}

mv SRAM.group.tcl [dbgDesignName].SRAM.group.20220727_V1.tcl

在重启DB后会出现添加WELLTAP不成功 这个时候需要重新source  setup.tcl文件
改变size的大小 changeFloorplan -coreToEdge 2.1945 2.16 2.1945 -noSnapToGrid
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容