分享

Vivado timing closure

 mzsm 2016-04-06

当使用vivado 遇到了timing violation 情况时,有什么解决办法呢?

 

1. 由于大扇出引起的违规;

  • 对于大扇出信号使用LOC or floorplan约束,或使用全局buffer

  • 复制驱动信号和设置综合工具不要优化复制逻辑;

  • 对于非控制信号,如复位、置位,时钟使能信号,在综合时设置max_fanout约束;

  • 在综合和布局布线时开启phy_opt_design功能可以优化fan-out;针对以下情况:    

  •  High fanout nets

  •  Nets with loads placed far apart

  •  High RAMB/DSP/SRL delay impact 

 

2. 由于状态机优化引起的违规;

  •   使用one-hot状态机编码,有助于优化速度;

  •   如果可能,使用综合状态机编码工具;

  •   减少输入信号的数量,尽可能提前预先解码;

  •   对输入输出信号寄存;

  •   对计数器值延时和预先解码;

  •   复制多处传输使用的状态信号,减少状态跳转信号的使用次数;

  •   使用case语句,而不是IF-ELSE语句;

     

3. 对较长carry logic chain的建议:

工程师可以使用较小的计数器来驱动其它计数器,通过级联的方式,第一级可以作为第二级的使能信号;

 

4. 对于降低逻辑深度的建议

  •   遵循状态机优化的建议;

  •   使用CASE而不是IF-ELSE语句;

  •   使用3态而不是大的mux选择器;

  •   使用移位,而不是通过两两相乘的方式;

  •   使用解码器而不是比较器;

  •   平衡设计中的逻辑和寄存器;

  •   增加pipeline的寄存器;

 

时序是FPGA设计的关键,xilinx有这样一句描述,请工程师参考! 

“Any design improvement has a bigger impact when done earlier in the flow”

 

Tips:找到设计中的high fanout 信号!





使用TCL语句能够方便定位设计中的大扇出信号;

 

 report_high_fanout_nets–load_types –max_nets 100

 

 


注:版权归“FPGA那点事儿”运营团队,转载请注明出处。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多