xilinx FPGA工程移植遇到的若干问题
2014-09-11 11:34
267 查看
问题说明:将xilinx的一个系列的FPGA建立的工程迁移到另一个系列时,将会遇到由于器件不同导致的一些错误,问题讲解以K7(KC705)工程迁移到S6(SP605)为例。直接将工程设置改为SP605对应的器件,可直接选为SP605,ISE会自动填好family和device。
问题1:IP核不能使用。对于存储类的IP,对K7和S6来说,其底层宏单元都是一样的,应该是可以互通的,但直接移植过来还是会出现project setting 与device setting不一致,也就是说生成的IP是针对K7生成的。另外,PLL类IP,K7内置更高级的PLL宏单元,而对于S6则没有对应的宏单元可以调用。
解决1:对于存储类IP可以用regenerate core 对IP进行重新生成,此时要设置为under current project setting。一定不要双击IP调用IP生成界面进行生成,否则生成的还是原来工程设置下的IP。也可以用manage cores对IP进行一个集中式的regenerate。而PLL类IP,一定要删掉,然后重新添加相关IP进行设置。
问题2:问题1已经提到,K7的PLL和S6的不同,在SP605下,生成的PLL IP不能直接输出到IO,另外由于SP605全局时钟布线的稀缺,需要对时钟做优化设计。
解决2:去掉生成PLL IP时的BUFG选项,对应的输出可以直接输出到IO;另网上还有说法:S6不推荐PLL直接输出到IO,pll output -> bufg -> oddr2 -> obuf(应该也可行,没试过)。让时钟尽量走全局时钟布线,去掉低功耗设计采用的门控时钟。另外,只要在@(posedge clk)这样的位置,ISe都会推断成时钟,从而进行全局时钟布线,S6全局时钟布线资源的稀缺,需要将一些子模块的产生的分频时钟作局部布线,如使用如下命令:
PIN "iso7816_clk_c3_BUFGP/BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE;
此时,对应的pin将不会推断成时钟,不会做全局布线,从而不占全局时钟布线资源。
问题3:每次修改一点点代码,重新综合又要1个小时左右,有没有可以加速的办法?
解决3:ISe提供了smartguide可以实现增量编译,注意增量编译虽然会提高编译速度,但时序必然不是最优的;因此,在若干次增量编译后发现时序不满足要求或越来越差,要考虑做一下全编译了。
问题4:原工程较大无法在sp605放下。
解决4:删减不必要的模块。
问题5:删减后的工程可以放下,但资源占用很高,内部空间拥挤,增加布线难度,时序很难收敛。
解决5:FPGA如果只有一个时钟,则时钟将分布到全局时钟布线资源,有利于时序优化,因此需要对时钟设计进行简化,针对ASIC的低功耗设计的latch直接简化为直通信号,不必要的分频也将其简化或者调用PLL来做分频,时钟多路器直接调用BUFGMUX原语。
问题1:IP核不能使用。对于存储类的IP,对K7和S6来说,其底层宏单元都是一样的,应该是可以互通的,但直接移植过来还是会出现project setting 与device setting不一致,也就是说生成的IP是针对K7生成的。另外,PLL类IP,K7内置更高级的PLL宏单元,而对于S6则没有对应的宏单元可以调用。
解决1:对于存储类IP可以用regenerate core 对IP进行重新生成,此时要设置为under current project setting。一定不要双击IP调用IP生成界面进行生成,否则生成的还是原来工程设置下的IP。也可以用manage cores对IP进行一个集中式的regenerate。而PLL类IP,一定要删掉,然后重新添加相关IP进行设置。
问题2:问题1已经提到,K7的PLL和S6的不同,在SP605下,生成的PLL IP不能直接输出到IO,另外由于SP605全局时钟布线的稀缺,需要对时钟做优化设计。
解决2:去掉生成PLL IP时的BUFG选项,对应的输出可以直接输出到IO;另网上还有说法:S6不推荐PLL直接输出到IO,pll output -> bufg -> oddr2 -> obuf(应该也可行,没试过)。让时钟尽量走全局时钟布线,去掉低功耗设计采用的门控时钟。另外,只要在@(posedge clk)这样的位置,ISe都会推断成时钟,从而进行全局时钟布线,S6全局时钟布线资源的稀缺,需要将一些子模块的产生的分频时钟作局部布线,如使用如下命令:
PIN "iso7816_clk_c3_BUFGP/BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE;
此时,对应的pin将不会推断成时钟,不会做全局布线,从而不占全局时钟布线资源。
问题3:每次修改一点点代码,重新综合又要1个小时左右,有没有可以加速的办法?
解决3:ISe提供了smartguide可以实现增量编译,注意增量编译虽然会提高编译速度,但时序必然不是最优的;因此,在若干次增量编译后发现时序不满足要求或越来越差,要考虑做一下全编译了。
问题4:原工程较大无法在sp605放下。
解决4:删减不必要的模块。
问题5:删减后的工程可以放下,但资源占用很高,内部空间拥挤,增加布线难度,时序很难收敛。
解决5:FPGA如果只有一个时钟,则时钟将分布到全局时钟布线资源,有利于时序优化,因此需要对时钟设计进行简化,针对ASIC的低功耗设计的latch直接简化为直通信号,不必要的分频也将其简化或者调用PLL来做分频,时钟多路器直接调用BUFGMUX原语。
相关文章推荐
- 基于xilinx FPGA验证ASIC可能遇到的timing问题
- VC++6.0中工程移植到VS2010中遇到的一些问题
- VC++6.0中工程移植到VS2010中遇到的一些问题
- 关于xilinx14.7 在modelsim SE 10.1a仿真中遇到的若干问题
- 关于移植工程注意事项以及遇到下载不成功查找问题思路
- 移植2.6.31遇到的问题(1):'struct uart_info' has no member named 'tty'
- windows到Linux代码移植遇到的问题
- ALV Class 应用中遇到的若干问题说明
- Hibernate应用中遇到的若干问题
- 数据库移植到sql server遇到的问题。
- 移植U-Boot过程中遇到的问题
- (上一篇的问题解决后又遇到的新问题)在eclipse中导入工程后运行任意文件出现"The selection is not within a valid module"
- 一个项目中遇到的若干问题-提出问题-分析问题-解决问题
- 这几天遇到的若干问题!
- 草稿:移植项目到Debin遇到的问题及解决 推荐
- 选debug(for KITL)编译工程遇到的奇怪问题
- 移植代码到 DLL 时遇到的一个问题
- tomcat 加载 spring 工程遇到的问题
- 移植遇到的问题
- 在MyEclipse下创建工程时,遇到的中文乱码问题及解决方案