zoukankan      html  css  js  c++  java
  • Setup和 Hold

    setup和hold的本质来源

    ——主锁存器的锁存机制

    触发器电路图

    时序特性

    Set-up修法

    理论公式

    T - Tclk-q - Tcomb + Tskew > Tset-up
    

    从公式可以看到,修set-up可以从以下几个方面入手:
    (1)增加T,也就是降频,会损害性能,一般不推荐;
    (2)增加skew,也就是在时钟网络中引入有用的skew;
    (3)减小Tcomb,也就是优化寄存器间的组合逻辑延时;
    (4)减小Tclk-q和Tset-up,也就是更换更快的标准单元库,HVT->LVT

    具体措施

    RTL阶段

    (1)插入寄存器(pipeline)
    (2)并行化设计:基本思想是将一个大的逻辑函数分解为几个小的逻辑函数并行计算,例如将大位宽的乘法器分解为小位宽的乘法器并行计算,乘法和加法之间再插寄存器
    (3)逻辑展平:优化if……else……等优先级逻辑,展平成case语句
    (4)均衡设计:合理分配不同寄存器间组合逻辑的延时,即“寄存器配平”
    (5)优化路径或路径重组:通过优化数据流的路径来缩短 Critical Path ,提升系统性能。重新布局和 Critical Path 在一起的路径,让Critical Path上的逻辑门可以更靠近目标寄存器,即“迟滞信号后移”。如

    module randomlogic(
        output reg [7:0] Out,
        input      [7:0] A,B,C,
        input            clk,
        input            Cond1,Cond2);
        always @(posedge clk)
            if(Cond1)
                Out <= A;
            else if(Cond2&&(C<8))
                Out <= B;
            else
                Out <= C;
    endmodule
    
    //改进后
    module randomlogic(
        output reg [7:0] Out,
        input      [7:0] A,B,C,
        input            clk,
        input            Cond1,Cond2);
        wire CondB = (Cond2 &!Cond1);
        always @(posedge clk)
            if(CondB&& (C<8))
                Out <= b;
            else if(Cond1)
                Out <= A;
            else
                Out <= C;
    endmodule
    

    综合阶段

    利用DC工具本身功能
    (1)利用auto-ungroup和boundary timing优化修复,打散design中的层次;
    (2)细分group_path,将某些重要的逻辑挑出来设为一个group_path并且赋予相对高的weight;
    (3)基于DCT的flow,用物理信息做指导;
    (4)对delay比较大的组合路径加set_max_delay;
    (5)设置DRC,合理化扇出;
    利用库的特性
    (6)在不影响功能的前提下选用delay小驱动大的cell;
    (7)选用低阈值库。

    布局布线阶段

    (1)修改floorplan;
    (2)CTS时 确保holdtime时,增加时钟路径延时(useful_skew);
    (3)Route时是否因为detour造成较大线延时

    Hold 修法

    理论公式

    Tclk-q + Tcomb - Tskew > Thold
    

    从公式可以看到,修hold可以从以下几个方面入手:
    (1)减小skew,也就是在做好时钟树的balance;
    (2)增加Tcomb,也就是增加寄存器间的组合逻辑延时。

    具体措施

    RTL阶段

    好像做不了什么

    综合阶段

    将综合后的网表导入PT,利用PT命令“fix_eco_timing -type hold -buffer list {}”和“write_changes -format dctcl -output fix_hold_in_dc.tcl”生成tcl文件到DC中source,其实也是插buffer

    布局布线阶段

    (1)CTS时减小skew;
    (2)在数据路径上插buffer,增大延时。

  • 相关阅读:
    003 Rabbitmq的简单队列
    002 Rabbitmq的安装
    001 消息中间件--Rabbitmq
    013 mybatis整合
    013 Durid监控
    012 druid数据源
    011 嵌入式容器
    集成支付宝IOS
    2015起航,
    python 创建用户
  • 原文地址:https://www.cnblogs.com/wt-seu/p/12811397.html
Copyright © 2011-2022 走看看