FPGA开发之时序收敛10个小技巧

5 篇文章 2 订阅

1、好的代码风格
1)代码要跟器件结构相关
2)避免异步复位,异步复位同步化,全局复位局部化
3)层次的边界要加流水寄存
\quad 例如:BRAM中有两级register,第一级在内部,第二级在外部slice里的寄器。不同功能模块内部的寄存器要求的速度也不一样,不同位置的寄存器速度不一样。如ILOGIC中的寄存器对setup要求最高(寄存器最慢),OLOGIC中的寄存器对setup的要求最低(寄存器最快)。Slice中的寄存器速度最快,所以经常在mem,clock模块输出端增加一个slice的register。
在这里插入图片描述
4)Block RAM和DRAM的选择
\quad 根据应用需求适当选择
在这里插入图片描述
4)流水线技术是提高系统频率的一种方法
在这里插入图片描述
2、精准的时序约束
\quad 精简而准确的约束是时序收敛的必要条件,Baseline基线方法是充分条件。

1)检查时序约束命令:
\quad check_timing
2)小技巧:
\quad 如果约束过紧可以用以下命令:
\quad set_clock_uncertainty –setup 0.3 [get_clocks my_CLK]

3、管理高扇出网络
\quad 高扇出网络几乎是限制FPGA设计实现更高性能的第一大障碍,所以需要严肃对待设计中的高扇出。

1)查找最大的扇出网络命令:
\quad Report_high_fanout_nets –load_types –max_nets 2 –timing
2)约束高扇出网络命令
\quad max_fanout可以限定其扇出值,让工具在实现过程中复制驱动端寄存器来优化。也可以多次物理优化phys_opt_design改善扇出。

4、层次化设计结构
\quad 自底向上的设计流程

5、跨时钟域路径的设计和约束
1)缺省模式下所有时钟域都是related
2)同步时钟跨时钟域
\quad 拥有相同的源和确定的相位关系
3)异步时钟跨时钟域
\quad 源不相同,没有确定相位关系
\quad 简单的处理方式:双register(ASYNC_REG),FIFO,握手方式同步
4)常用的约束命令
\quad 时钟约束

 set_multicycle_path:多时钟路径约束
 set_clock_groups:时钟分组,等效set_false_path
 set_false_path:伪时钟路径约束

\quad CDC结构问题检查

  report_cdc
  methodology_checks

\quad 跨时钟域问题检查

  report_clock_interation

\quad 查看时钟网络

  report_clock_networks

6、少而精的物理约束
\quad 万不得已的时候 不要手动布局LOC,如果要做也是对关键元件关键路径做。

7、选择恰当的策略
\quad 不同的工程包含不同的设计策略:性能、功耗、面积、流程
\quad 可以制订自己的策略,如:利用钩子文件,在设计前设计后调Phys_opt_design

8、共享控制信号
1)尽量整合频率相同的时钟和时钟使能信号;
2)在生成IP时选择“共享逻辑”功能,则可以在不同IP间尽可能的共享时钟资源;
3)复位
\quad a) 尽量少使用复位
\quad b) 必须复位时采用同步复位
\quad c) 用高电平有效复位
\quad d) 避免异步复位
4)常用命令
\quad report_control_sets

9、读懂日志和时序报告
1)注重critical warnings 和 errors
2)检查DRC violations
\quad methodology_checks
\quad timing_checks
3)设计分析报告
\quad Report_design_analysis(非常有用)用来报告关键路径上的潜在问题以及设计的拥塞程度。

10、充分发挥tcl的作用

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值