Innovus+ICC2对比7nm工艺的后端实现

Innovus与ICC2的体验对比

本次评估使用Innovus common UI,也就是stylus模式,该模式相对legacy UI更容易上手,各类设置有一定规律可循,get_db尤其好用,个人看来容易上瘾,遇事不决get_db多半没错。但也有些缺点:某些情况get_db不太直接,比如想要获取pg net连接的pin的时候,只能用get_db pins -if ".net.name==$nname",速度较慢(可能有什么好的用法我没搞清楚)。部分set_db的option仍然说明不完善,以及attribute editor弹出速度慢。同时默认设置情况下source命令有-echo,log膨胀且难看等,不过都是些小问题,无伤大雅。

与此相比,ICC2整体命令行更成体系,不同设置和命令可以在man结果中看到一定相关性,整体有一定规律可循,新版本qor有一定提升,具体的差距还要等所有结果出来才好比较。但是默认设置下很多时候与StarRC+PT的correlation也不太好,需要使用StarRC-In-Design, ICV-In-Design Metal Fill, PT delay calculation等高级功能才能较好地匹配。电源绕线在边界比较容易出drc,少数base drc会有残留,需要额外添加规则。另外就是为什么cut metal需要手动加入,一直十分不理解这里的意义?

在输入数据的准备方面,Innovus优势比较明显,lef+liberty足够简单,不像ICC2需要db+lef/gds生成ndm。但是7nm下lvf的库体积很大,导致有时候read_db速度比较慢,设置用multi thread模式有改善,但是ndm打开数据仍然更快一些。ecsm格式的库在体积上小很多,但为了避免引入过多变量,本次评估并未使用。

DRC结果对比

平心而论,两个工具剩下的DRC数量都不多,而且preroute相关的DRC数量较多,base DRC也有不同程度的剩余,都需要增加一些特定的设置才能比较好地收敛。主要出现的DRC可以分为以下几类:

a) boundary cell只能连接一个方向的rail/follow pin

b) sram的pin color在某些优化命令执行后改变

优化后的color改变会导致与之相连的VIA出现大量的color spacing,目前没有找到比较好的办法,最好是lef里面没有FIX MASK的设置,如果没有可以通过工具命令重置该cell的mask shift的值。

c) floating input pin引起的DRC(PO.R.19)

本问题是7nm常出现的DRC之一,常见的原因也就是floating 的input pin,少量原因就是绕线导致的open,数量较多的时候不太容易找到原因。

d) VIA0 enclouse问题,常出现在M1 power stripe(纵向)恰好落在row boundary附近

本问题在ICC2中看到较多,可能与tech file中的规则和signoff不匹配有关。

e) 偶数CPP规则,主要在调整boundary cell的边界时注意,尤其是sram较多的地方

主要用于决定sram等hard macro的相对位置,也正是因为这个规则导致7nm中的macro halo大概率不会完全一样,都会有或多或少的偏移,而且手动调整确实麻烦,建议写个脚本自动调整macro的位置和halo

f) TAP cell和ECO DECAP或者FILLER之间的OD spacing,该问题属于Innovus和ICC的已知问题,都可以通过swap tap的类型来解决,个人尝试ICC2 swap后相对干净一些。

replace_fillers_by_rules -replacement_rule od_tap_distance -tap_cells $tap_cells \
-right_violation_tap $right_tap -both_violation_tap $both_tap -left_violation_tap $left_tap \
-adjacent_non_od_cells $vio_cells_type -tap_distance_range {0.228 1000}

swap_well_taps -cells [get_db [get_db base_cells -if .base_name==*_TAP*] .name] -default_cell $default_tap \
        -diffusion_forbidden_spacing 0.228 \
        -violation_report swap_well_taps.violations.txt -swap_report swap_well_taps.swap.txt

g) SRAM边界的VIA常出现enclosure问题

h) SRAM范围内的metal与via出现的area/spacing等问题(Innovus较多)

具体原因不详,貌似SRAM范围内的metal与core范围内需要满足不同的规则,但是tech lef中或者工具在绕线中并没有做这种区别。

i) macro spacing:没有详细研究具体需要多少,上下左右都5um没有出现问题

j) cut metal spacing CM1B.S.1,出现在Innovus中,可以通过特殊设置规避

该设置属于reference流程中的一部分。

set_db route_design_with_trim_metal "-layer 2 \
        -mask2 {-pitch 0.24 -core_offset 0.095 -width 0.03 } \
        -mask2 {-pitch 0.24 -core_offset 0.225 -width 0.03 } \
        -mask1 {-pitch 0.24 -core_offset 0.015 -width 0.03 } \
        -mask1 {-pitch 0.24 -core_offset 0.145 -width 0.03 }"

k) ICC2写出的DEF读入Innovus中可能会有color问题,因为二者在处理color上的策略有些不同,可以在Innovus中通过update_power_vias更新multi-mask层的VIA来解决

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Innovus的28nm工艺低功耗GPU物理设计是针对GPU芯片在28纳米工艺下的功耗优化和物理布局设计的过程。在物理设计中,我们采用Innovus这个EDA工具来对GPU芯片进行各种关键步骤的优化,包括整合、布线和时钟树设计等。 首先,在整合阶段,我们会使用Innovus进行逻辑综合,将设计的RTL描述翻译成门级网表。然后,通过引入低功耗技术,例如时钟门控和电压/频率调整等,来降低芯片的功耗。在这个过程中,我们需要平衡功耗和性能,确保芯片在低功耗的同时仍能提供足够的性能和功能。 其次,在布线阶段,我们使用Innovus进行物理布局设计。通过优化布局,包括减小布线长度、降低布线阻抗和容忍度等,可以减少功耗。此外,我们还会进行其他的布局优化,如引入局部时钟网格和信号缓冲器,以优化时钟和信号传输,减少功耗和时钟偏移。 最后,在时钟树设计阶段,我们使用Innovus来设计和优化时钟树网络。通过减少时钟树延迟和功耗,可以提高芯片的性能和功耗效率。在这一阶段,我们会使用Innovus的时钟相关优化工具来优化时钟树的时延、功耗和抖动等。 综上所述,基于Innovus的28nm工艺低功耗GPU物理设计是一个综合考虑整合、布线和时钟树设计等关键步骤的过程。通过使用Innovus这个工具,我们可以对GPU芯片进行低功耗设计,以达到降低功耗并提高性能的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值