xilinx FPGA工程移植遇到的若干问题

问题说明:将xilinx的一个系列的FPGA建立的工程迁移到另一个系列时,将会遇到由于器件不同导致的一些错误,问题讲解以K7KC705)工程迁移到S6SP605)为例。直接将工程设置改为SP605对应的器件,可直接选为SP605ISE会自动填好familydevice

问题1IP核不能使用。对于存储类的IP,对K7S6来说,其底层宏单元都是一样的,应该是可以互通的,但直接移植过来还是会出现project setting device setting不一致,也就是说生成的IP是针对K7生成的。另外,PLLIPK7内置更高级的PLL宏单元,而对于S6则没有对应的宏单元可以调用。

解决1:对于存储类IP可以用regenerate core IP进行重新生成,此时要设置为under current project setting。一定不要双击IP调用IP生成界面进行生成,否则生成的还是原来工程设置下的IP。也可以用manage coresIP进行一个集中式的regenerate。而PLLIP,一定要删掉,然后重新添加相关IP进行设置。

问题2:问题1已经提到,K7PLLS6的不同,在SP605下,生成的PLL IP不能直接输出到IO,另外由于SP605全局时钟布线的稀缺,需要对时钟做优化设计。

解决2:去掉生成PLL IP时的BUFG选项,对应的输出可以直接输出到IO;另网上还有说法:S6不推荐PLL直接输出到IOpll output -> bufg -> oddr2 -> obuf(应该也可行,没试过)。让时钟尽量走全局时钟布线,去掉低功耗设计采用的门控时钟。另外,只要在@(posedge clk)这样的位置,ISe都会推断成时钟,从而进行全局时钟布线,S6全局时钟布线资源的稀缺,需要将一些子模块的产生的分频时钟作局部布线,如使用如下命令:

PIN "iso7816_clk_c3_BUFGP/BUFG.O" CLOCK_DEDICATED_ROUTE = FALSE;

此时,对应的pin将不会推断成时钟,不会做全局布线,从而不占全局时钟布线资源。

问题3:每次修改一点点代码,重新综合又要1个小时左右,有没有可以加速的办法?

解决3ISe提供了smartguide可以实现增量编译,注意增量编译虽然会提高编译速度,但时序必然不是最优的;因此,在若干次增量编译后发现时序不满足要求或越来越差,要考虑做一下全编译了。

问题4:原工程较大无法在sp605放下。

解决4:删减不必要的模块。

问题5:删减后的工程可以放下,但资源占用很高,内部空间拥挤,增加布线难度,时序很难收敛。

解决5FPGA如果只有一个时钟,则时钟将分布到全局时钟布线资源,有利于时序优化,因此需要对时钟设计进行简化,针对ASIC的低功耗设计的latch直接简化为直通信号,不必要的分频也将其简化或者调用PLL来做分频,时钟多路器直接调用BUFGMUX原语。


 

 

你可能感兴趣的:(FPGA,Xilinx)