Intel FPGA高速设计代码原则总结
1 FIFO(reconvery )
使用Intel FPGA做项目开发,timing优化的时候发现双端口fifo 异步复位端口出现reconvery 不满足的warning
1.1 问题解决方法
查看了Intel fifo ug,有如下一段描述:
通过描述修改fifo设置参数,重新generate fifo ip,重新对项目工程进行版本综合,问题得到解决
1.2 fifo timing 优化配置选型,以下配置对fifo performance有一定改善
- 输出latency设置
- fifo protection disable设置
2 M20K blocks
使用M20k来设计存储单元是以下几点对timing的收敛有比较大的帮助。
2.1 IP设置注意
2.2 Be careful when creating large memories
2.3 Memory读写总线pipelining优化
2.4 Memory输出逻辑优化
3 DSP
3.1 DSP架构
3.2 DSP设计示例
4 Routing Congestion
a10的FPGA布线资源和xilinx同级片子相比稍逊,实际项目中Alms:50%;dsp:97%;m20k:60%;出现Routing Congestion,最终逻辑裁剪到45%,才解决routing问题。以下几点需要注意:
4.1 Fitter: Routing Utilization
4.2 A10布线限制
4.3 缓解routing方法
1)控制信号fanout优化到1000以内
2)减少不必要的异步复位
3)代码实现结构修改,减少连线
4)增加pipeline优化
5)降低资源利用率:包括删减代码逻辑使用,更换逻辑资源更丰富的片子
5 附带一些quartus中timing问题其它解决办法(A10)
-
A10 Timing Closure Solutions
1)Increase Compilation Efforts.
2) Modify the clock type.
3)Set max delay for setup timing violation.
4) Set min delay for hold timing violation.
5) 检查ram/dsp是否使用reg输入输出,输出无reg时tco相差1.4ns
The usage is same as set_max_delay.
- quartus工具设置