Xilinx ISE Map过程时间过长的解决



最近在Kintex 7上开发新的项目,骤然发现曾经在Virtex 5和Spartan 6上移植过来的成熟算法,综合布线时出现Map时间非常漫长的现象。

这个漫长不是一般的长,打个比方,以前在Virtex 5下同一个算法完成全部综合布线仅用10分钟,在Kintex 7下却耗时长达7~8个小时。从console窗看,常常卡在7.8 或8.8 global placement这一步,后面有很多..................,不知什么时候是个头,常常电脑跑通宵,第二天早上看结果,但这样几乎一天只能跑两次,太可怕了。

没法儿了,算法代码上没有可改动的可能(很成熟了,且不是他的问题),只能从属性设置上入手,进行一些修改。调整之前都是默认设置,调整后结果还是很明显的,时间大大缩短了,这才松了一口气。

可尝试的方法有几种,下面慢慢道来:

1、effort level

在map上点右键属性Process Properties,advance高级设置第一条就是这个,这个默认是high,这种情况下完成耗时是7~8个钟头。这里可以修改成standard,实际测试情况,时序稳定性没有出现影响,综合布线时间缩短到了2小时。已经有很大进步了,不过还能更快。

2、smart guide

这个叫做“增量编译”,也就是在以前综合布线的基础上,ISE在布线时只新增加或修改的部分,这样时间势必减少。(可以按C/C++语言的增量编译原理来理解)

这个设置在你的顶层文件(比如top.v)上点“右键”,菜单栏中会有“Smart Guide ...”,单击,出来的对话框有一个勾选框,勾上即可。

详细介绍可参考这篇博客

http://www.eetop.cn/blog/html/01/7901-46470.html

设置完后,第一次的综合布线还是要很长时间的,但第二次起,神奇的事情就发生了,以后小改代码,整个布线过程只需要10分钟!!!这就是福音所在

3、其他

还是Process Properties属性中的一些修改,这里原理我也暂时说不清,尝试中发现好使就记录下来了,供大家借鉴试一试。

有一次,很简单的程序调试中,加了一个divider的IP核,map耗时突然从原来的几分钟,增长到很长(具体多长我没有等待了,果断终止了,总之是趴着睡了一个大觉醒来还在global placement  。。。)

Process Properties-Map Properties

Register Duplication 由off改成on

Register Ordering 由4改成8

Enable Multi-Treading 由off改成2

改完之后,又恢复到10分钟左右完成布线了,欣喜!


先写这么多,希望能对有过同样苦恼的同仁有帮助


2016年8月补充

经过一年的尝试,百试不爽,此修改不会引起什么额外时序问题(当然代码风格一定要好),事半功倍,工作效率大大提高。

补充截图以便大家配置:

Xilinx ISE Map过程时间过长的解决_第1张图片


Xilinx ISE Map过程时间过长的解决_第2张图片

你可能感兴趣的:(FPGA)