Fusion Compiler 中对宏单元Macro的优化方法(一) —— set_skew_macros

Fusion Compiler 中对宏单元Macro的优化方法(一) —— set_skew_macros

麦田守望者 IC Park 2020-03-24

    众所周知,在芯片后端设计中,和宏单元Macro相关的时序一般比较难满足。通常情况下,设计人员通过人为的调整Useful-Skew的方式(比如clock latency和balance point delay)来优化和Macro相关的时序。

    在Fusion Compiler(后面简称FC)中,工具为用户提供了自动优化和Macro相关时序的方法,也就是set_skew_macros这个命令。我们下面来详细介绍下这个命令的功能和用法。

    

图片

    如上图所示,是我们对有input path、output path、input register和output register的描述。那么针对Macro的useful skew优化就是通过自动调整input Regs、output Regs以及Macros的offset值达到优化input paths和output paths的目的。举个简单的例子,比如input paths的时序比较差,那么工具会通过preppone input Regs或者postpone macros的方式去优化input paths 的时序。那么在FC中如何使用这一功能呢?

    1.  首先用户需要根据需求指定需要skew优化的Macros。

            比如:set macro [get_cells Macro_A  Macro_B Macro_C]

    2.  然后使用set_skew_macros命令来优化Macro相关的时序路径。

            比如:  set_skew_macros  -bank_name *** -macros  $macro  -improve_side input

       上面的这个例子就是优化macro A、B、C的input paths。同样地,你也可以根据需求指定output paths(output)或者同时优化input paths和output path(both).


      针对以上命令的使用有以下说明:

    1.设置了set_skew_macros之后,工具在全局CCD,也就是做useful skew computation之前会优先用单独的skew优化算法来优化macro bank的input paths和output paths。因此,macro相关的path享有较高的优先级。

      当然,如果不使用macro skew的方法,默认的CCD优化也会优化macro相关的时序路径,但是优化效果不如前者。因为在默认的CCD optimization中,macro paths和non-macro paths具备同样的优先级。



    2.工具在优化input paths的同时,不会以损害output paths的时序为代价。但是会degrade outer paths(也就是和input regs和out regs相关的外部路径)。

        


            比如上图,我们需要优化Input paths,那么工具通过prepone input registers, postpone macros来提升input paths的时序。同时,为了不损害output paths,那么工具也会postpone output registers。当然,将Macro相关的timing放在较高的优先级会degrade outer paths的时序。

  3.在macro skew的基础上,用户也可以指定user skew(latency或者balance point delay)。那么max_skew = macro_skew + user_skew。

    4. 可以通过如下设置控制macro skew的优化力度:

              compile.flow.skew_macros_max_prepone   (default: 300ps)

              compile.flow.skew_macros_max_postpone   (default:  200ps)

              compile.flow.skew_macros_effort                  (default: medium)

    最后一点,也是需要特殊注意的是,Macro skew发生在FC initial_opto的CCD useful skew computation之前。因此,后续的CCD skew computation在优化outer paths的时候可能会对input registers和output registers的skew value进行改变,从而影响了对macro bank的优化。为了避免类似上述的情况发生,我们可以通过如下设置disable input registers和output registers的CCD 优化。

group_path   -name input_reg    -to [get_pins  INPUT_REG_*/D]

group_path   -name output_reg    -from [get_pins  OUTPUT_REG_*/CK]set_app_options –name ccd.skip_path_groups      –value {input_reg  output_reg}


     好了,如果读这个命令感兴趣的话,赶紧用起来吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值