Design Complexity、congestion、Timing,congestion

随着FPGA规模越来越大,设计本身的复杂度也同样增加。Xilinx UFDM中也经常提到了Design Complexity这样一个概念。Timing/Complexity/congestion是每一个大的设计都需要考虑和均衡的三要素。

什么样的设计会产生Design Complexity引起congestion问题?
设计本身具有多次迭代则很容易产生,例如通信中复杂度很高的纠错码LDPC等,如果加上多次软判决和多通道,则复杂度会急剧提升。

这里需要明确,资源占用率和congestion 并不是必然联系。当出现congestion时,替换成更大的器件并不一定有效,这一点已经在客户有验证结论。

FPGA中如何衡量Complexity ?
FPGA内部逻辑互联度,vivado中有rent 这个参数代表。

Vivado中的Complexity
通常工具遇到Complexity引起的congestion问题都会运行非常长的布线时间,最终报错 ERROR: [Route-3] Design is not routable as itscongestion level is 7. 7目前是最高的级别了,因为工具中level N代表2的N次方范围内都存在阻塞问题。

如果出现了阻塞问题,可以通过report_design_analysis –congestion 查看工具给出的东南西北CLB坐标,方便工程师定位。

所以当工程出现运行时间明显拉长,工程师可以提前考虑是否由于复杂度提升引起的阻塞问题。

出现阻塞时的建议解决办法
1. 建议首先找出设计中的大扇出信号,想办法减少fanout;
2. 尝试vivado中不同的针对阻塞优化策略;
3. 优化代码的系统设计,减少复位信号,优化coding style;
4. 模块之间多级pipeline ,relax关键路径。
5. 尝试使用大器件看是否能够解决;
6.尝试relax timing 看是否能够解决;
7.综合时关闭LUT combining;

相关推荐

相关文章