• GRO和GRE


    ICC2这几年更新速度飞快,各种新的feature出现,目的是使用户更轻松,更快速的达到极致的PPA。而其中大多数的feature都是on by default。可能你用上了,但你还不知道。

    今天分享两个feature,GRO和GRE,对频率提升效果很好:

    GRO:

    GRO已经有了好几年了,是Global Route Optimization的缩写。

    是啥意思呢?就是基于global route做优化。貌似还是不懂?

    我们先回忆一下传统的流程:

    1 place_opt

    2 build_clock_tree & route_clock_tree

    3 post-cts optimization

    4 route_auto(route_global+route_track+route_detail)

    5 route_opt

    其中第三步,是时钟树之后的timing优化(同时也做area,power,ldrc等优化)。此时,除了clock nets,signal nets还没有绕线。所以,optimization是基于virtual route来做优化的。所谓“基于virtual route”,是指用virtual route的RC来计算timing然后优化。

    问题来了,对于7nm以下的先进工艺,virtual route和实际绕线(detail route)的RC是有区别的。那基于vitual route的优化不那么精确的话,那怎么办?

    办法一:

    做完时钟树后,直接绕signal nets(route_auto),此时有了实际绕线了,直接做route_opt来优化。还省了很多时间

    听起来不错,但实际效果很差。为啥?

    因为一旦绕线了,优化的空间和策略,相比绕线前,相当有限。

    略举数例:

    - route_opt插buffer时,只会在route shape的下面(或者附件一个较小的范围)插buffer,而绕线前的优化范围则很大。

    - 绕线后,route shape的layer比较难改变,只能通过size cell/insert buffer等来改进时序。而绕线前还可以做layer promotioin/demotion等优化策略。

    - 绕线前做buffer tree的rebuffering比较容易,绕线后则很困难。

    - 另外,post-cts optimization还会做incremental的placement来改进timing和congestion。

    ……

    总之:post-cts optimization这一步非常重要,万万省不得。

    办法二: 

    基于global route做优化。这个流程如下:

    1 place_opt

    2 build_clock_tree & route_clock_tree

    3 post-cts optimization

    4 route_global + optimization

    5 route_track+route_detail

    6 route_opt

    和传统流程的区别是,做完global route后再做一次优化!这样做有何益处呢?

    好处是,它能很好的结合pre-route optimization和post-route optimization的优点!

    为啥?

    一:刚讲了,post-route的优点是,RC是最精确的。而global route的RC和detail route的RC又是非常接近的,比virtual route要准确很多。基于global route的优化,和post-route optimization在RC比较接近了。

    二:除了RC用global route的,算法本身还是pre-route optimization的算法,所以优化策略非常的灵活。

    用法:

    很简单,就是把原来的route_auto拆一下。

    传统的route_auto flow:

    route_auto 或者

    route_global+route_track +route_detail

    GRO的flow:

    set_app_options -list {clock_opt.flow.enable_global_route_opt true}

    clock_opt -from global_route_opt

    route_track

    route_detail

    GRE:

    在PPA的追求上,现代人是永无止境的。所以GRE又诞生了。什么是GRE呢?它是Global Route Everywhere的缩写。

    什么意思呢?就是到处都有global route。

    还是不懂

    上文提到,GRO是利用Global Route的RC来做优化。

    注意,注意,问题来了:既然已经做了global route,但GRO只利用了它的RC!Global route信息丰富,已经有了完整的走线路径,via信息,还有在每一层具体走多长线等信息。所以,GRE更上一层楼,不仅利用了GR的RC,还利用了GR的routing topology来优化。

    那如何利用routing topology来优化?有啥好处呢?

    略举数例:

    一:若发现critical net的走线不在高层(高层R小),会做layer promotion到高层。

    二:若发现critical net的GR路线不合理,可以调整GR路线,得到更好的timing

    三:可以按照global route来做rebuffering,得到更好的面积和时序。

    四:优化时可以看到congestion,不会恶化congestion。

    ……

    故optimizer利用上routing topology后,如虎添翼,好处颇多。

    用法:

    由于GRE是GRO的升级,所以用法和GRO一模一样。只不过要用2019.03-SP4及其以后的版本才可以。2019.03-SP4之前的版本是GRO。

  • 相关阅读:
    WebUpLoder 能自动预览,能多实例,包括后台demo
    ajax请求总是进入Error里
    c#_1:后台post请求
    Echarts_1:水平柱体
    Hello World!
    python正则表达式
    python web.py出现ValueError: need more than 1 value to unpack
    web.py端口被占用的错误
    github commit时出现 Please tell me who you are.以及项目名称管理
    打飞机小游戏 python+pygame
  • 原文地址:https://www.cnblogs.com/lelin/p/12586361.html
Copyright © 2020-2023  润新知