时序优化3

总述

在第一次跑综合时最好是在没有任何物理约束的情况下,Vivado在越少物理约束的情况下综合出来的效果越好。查看每个阶段的时序报告,将每一阶段的时序违例控制在300ps以内,尽早消除问题。有时候会发现Synthesis有时序问题而在Implementation阶段反而没问题,这是因为Vivado在Implementation阶段对时序不满足的地方倾斜了更多的资源保证时序收敛。但是忽略Synthesis的时序问题会在后期顶层模块集成占用大资源时爆发出来。

复位也是非常重要的问题。因此,官方更推荐设计采用高电平同步复位,可以降低资源的使用和功耗,有助于时序收敛。由于FPGA的初始状态是确定的,能不用复位是最好的,尤其数据路径和移位寄存器的设计中。不过使用同步复位仍需要注意控制集不能太多的问题。
时需优化练习:https://blog.csdn.net/chinkwoyu/article/details/80262288

约束 详细讲解等 比特电子工作室 https://blog.csdn.net/qq_33486907/article/details/89393007

1)setup time 建立时间问题

建立时间分为逻辑延迟和布线延迟,布线延迟。

其中逻辑延迟主要由于逻辑技术太大,

布线延迟可能由于,较大的fanout,物理位置较远(比如分属不同的pblock),SSI器件是否存在跨die信号,拥塞引起走线不正常,一般可以通过device视图中观察,如果走线路径比较扭曲,明显不是最优路径,可以考虑是由于拥塞引起,需要进一步分析该区域的congestion程序,实在不行减少BRAM,Dsp等固定元件的使用(在较大工程当中)

建立时间是工程设计中最常遇到的问题了。一般说来,导致建立时间违例主要有两个原因:逻辑级数太大或者扇出太大。

levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能容纳的logic level是不同的。假设7系列的-2速度等级250MHz的设计,电路设计的大部分levels最好不要超过8,否则会造成时序收敛困难。

针对不同的原因,修改代码。比如说,路径过长,通常检测是否代码中嵌套的if语句级数太多?(可以尝试case语句替代),又或者if的判断中有表达式(if(a>b)之类的,看能否用电平替代,if(en)等,)对于有些逻辑融合起来一个大的模块,看能否将大的逻辑块划分为若干个小逻辑块实现。

Logic level太大的处理方法就是重定时(Retiming)了,典型的重定时方法就是流水线,将过于冗长的组合逻辑增加寄存器进行打拍。

线延迟通常由高扇出引起,推荐扇出为:

降低扇出最好不要在综合设置中指定,过低的扇出限制会造成设计堵塞反而不利于时序收敛,最好的方法是根据设计中时序最差路径的扇出进行针对性的优化。如果是寄存器的输出扇出很大,可以使用max_fanout属性标记寄存器声明,也可以手动复制寄存器,具体可参考:https://blog.csdn.net/shshine/article/details/52451997

如果不是关键时序路径,而且高扇出网络直接连接到触发器,对扇出超过25K的net插入BUFG:

set_property CLOCK_BUFFER_TYPE BUFG [get_nets netName],当然,也可以在后期Implementation的物理优化设置中优化扇出。

2)hold time 保持时间问题

在实践中,我发现保持时间问题的问题往往是异步处理的问题。

对于一个信号的跨时钟域问题,一般使用双寄存器法(对于慢采快的结绳法这里不讨论)。为了降低MTBF(Mean Time Between Failures,平均无障碍时间),这两个寄存器最好位于同一个slice中。可以使用tcl语言指定,如:

set_property ASYNC_REG TRUE [get_cells [list sync0_reg sync1_reg]]

也可以直接在代码中指定:

(* ASYNC_REG = "TRUE" *) (* keep = "true" *)reg sync0_reg, sysnc1_reg;

也可以参考代码模板使用XPM模板进行处理

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值