一、Place and optimization command
place_opt(集成好的命令)、分步(把命令拆分,一步一步执行)
place_opt执行:
1.coarse placement(cells are not changed)
根据netlist大致摆放,cell可以重叠,也可以不在site row。
2.scan chain reording
综合时出一个scan def文件包含cell的连接关系,综合时根据cell name连接,因为综合没有物理信息,cell没有实际的物理位置。在place时,根据coarse place的物理位置去调整scan chain的连接关系。
3.high-fanout net synthesis
插BUF Tree,工具自动。
4.Optimization
解决DRC问题,优化timing。
5.legalization
解决重叠的,不在site row的cell。
二、Flow control
1.place_opt
2.create_placement
place_opt_skip_initial_placement
Place_opt | create_placement |
[-effor low/medium/high] | [-effor low/medium/high] |
[-area recovery] | [-quick] |
[-optimization_dft] | [-timing_driven] |
[-congestion] | [-congestion[-congestion_effor low/medium/high]] |
[-power] | [-check_only] |
[-cts] | [-mpc]h很少用 |
[-spg]看成def文件,记录cell的物理信息 | |
[-skip_initial_placement](coarse place) | |
[-optimize_icgs]需不需要优化icgs | |
[continue_on_missing_scandef]没有scan def需要设置 |
三、Coarse Placement
1.Description
(1) corse place 是第一步placement
(2) 是一种粗略大致的摆放,同时也考虑timing/congestion/multivoltage constraint
(3) 允许place cell overlap
(4) 大的cell,例如RAM/IP,这些hard macro在floorplan手动摆放完之后是fixed,在place的时候把这些hard macro看成placement blockage,就像一块砖不搭理它了。(工具行为)
(5) coarse placement 速度快,精准度并不高。
2.Coarse placement type
(1) Timing_Driven Placement(TDP)
优化timing,工具看2个指标:
TNS:Total Negative Slack(所有violation的path加起来)
WNS:Worst Negative Slack(最差的timing violation path)
command:create_placement -timing_driven
(2) Congestion_Driven Placement
command:create_placement -congestion -congestion -effor low/medium/high
3.Coarse placement Tips
在coarse place工具根据netlist大致摆放cell.如果low utilization,工具会把cell 均匀分布在core区域。cell分布较远,net较长,所以有时候需要手动调,以得到更好的timing,可以用placer_max_cell_density_threshold命令,控制局部cell desity高一点。
四、Scan chain reordeing
scan def得到连接关系(一个初始的,没有物理位置,是根据命名规则把cell串起来),place之后,有具体的物理信息,再把cell连在一起,可以降低绕线长度,节省绕线资源,提高timing。
-continue_on_missing_scandef
五、high fanout net Synthesis
创建buffer tree,增加驱动,解决congestion,不会牵一发而动全身,解决DRC问题。
六、Optimization
目的:1.优化timing。2.Fix logic DRC Violations 3.Power 优化 4. Area
Action: 1.size cell(小驱动变大驱动) 2.Insert buffer 3.Delete buffer 4. Minor(少量的) remap/ restruction根据逻辑功能把一个std cell拆分成多个std cell,比如一个反向的AND,拆分成AND+INV,这一步主要在综合去用。
1.Timing optimization
工具优化:place_opt -effor low/medium/high
人为优化:
(1)Create more path groups
TNS/WNS是根据path group看,如果path group越多,在看WNS指标时,需要看到越多的timing,需要越多的时间。根据path group分别去优化,工具默认一个Clock是一个path group。一般path group分成R2R、DFF to Hard Macro、From Hard Macro,优化力度更大,更加细致,更准确。
(2)Adjust path group weights(0-100)
优化path group的力度,可以设置,一般不会太大。
(3)Bounds
把想要的cell聚集在一起,net比较短,主要作用是防止cell 太分散,优化timing,power。
(4)Balance timing,congestion
(5)Balance timing,power
(6)Adjust macro position (也会优化绕线)
2.Performing Multibit Banking
一般综合会用。把2个或者多个reg组合成1个reg,作用优化空间大,面积和power利好,一般由foundry厂提供。
Debanking 拆分,如2个reg比较远,工具硬要banking,会导致timing和congestion问题,用debanking可拆分。
3.Performing Power Optimization
(1)Dynamic Power
=Internal Power + Switching Power
Internal Power:根据lib库查表input transition 和output load
switching power:与负载相关
tog rate:每个cell 翻转的频率
(2)Static Power(Leakage)
VT相关
1.Setup for Dynamic Power:
read_saif,saif文件记录cell和net的switching activity翻转活动,即翻转率。
set_scenario_options -dynamic -power true
把优化动态Power的功能打开。根据saif文件调整翻转率较高的net或cell,降低翻转率高的驱动,翻转率越高,动态power越大。
2.Setup for Leakage Power optimization
set_scenario_options -leakage_power true
set_multi_vth_constraint
eg. set_multi_vth_constraint -lvth_groups{lvt svt}
3.Perfoming Low-Power Placement
set_optimize_pre_cts_power_options -low_power_placement true
place_opt
4.Performing Leakage-Power Optimization
place_opt -power
5.Permance(驱动力):LVT>SVT>HVT
leakage:LVT>SVT>HVT