1)有关时序问题
学习过FPGA的都知道,FPGA能够承受的时钟和所答应的时序远远低于ASIC。这是因为ASIC时钟树与布线相对自在,故关于高速率规划处理起来相对简单。关于Xilinx FPGA而言,虽然采用了90nm工艺的Virtex-4能够支撑的功能高达500M[1],可是其时钟树和布线资源相对固定,因而一旦在编译和布局布线的时分处理不妥,就会发生时序抵触(timing violation)。发生时序抵触的成果,轻则使规划的逻辑与实践布局布线后的网表不一致,重则导致布局布线底子无法通过,然后致使验证无法进行。
2)规划进程中留意时序问题
若期望规划的产品能够在FPGA验证平台上顺畅的完结验证,在规划进程中就需求留意尽量多的运用FPGA的内部资源,如DSP48,乘法器,RAM,DCM等。 究竟IP核提供商最懂它们自己的产品。例如运用Xilinx东西时,Xilinx的ISE中配有Core Generator这个东西。通过该东西能够生成需求的乘法器。运用这些乘法器来替代一般的乘法器,能够到达满足的作用。除了乘法器,还能够运用该东西发生RAM和DCM等。这些直接生成的IP功能都非常好。
3)归纳进程处理时序问题
运用Synplicity公司的Synplify东西进行归纳,这是业界一般运用的归纳东西之一。挑选该东西最主要的原因在于它与Xilinx的FPGA合作的很好。有人做过试验,通过该东西归纳发生成果报表,再通过ISE发生实在布局布线后的报表。对这两个报表的时序估量部分进行比照,咱们发现两者之间惊人的类似,最差途径之间的不同不超越1ns。
4)布局布线阶段处理时序问题
当归纳作业完结,进入布局布线的阶段后,依然有两种办法能够改进逻辑时序问题。第一种是手动添加并调整BUFG(Global Clock Buffer)。BUFG是Xilinx的大局时钟资源,一切时钟树的起点都是BUFG,坐落FPGA的北极和南极。当布线后仍有负的slack时,有可能是某些当作时钟运用的信号没有被放上时钟树,此刻就要手动将这些信号放上BUFG。若遇到门控时钟,还应该运用BUFGMUX资源。
5)代码一致性
关于通过FPGA验证的代码而言,最忧虑的是通过验证的代码和进行流片的代码不一致。导致这个现象发生的原因是多种的,其间版别操控和因为FPGA、ASIC专用器材不一致而引起的问题是最常见的两个问题。
关于通过FPGA验证的代码,为了能够使被测代码能够顺畅的在FPGA进行验证,一般都采纳了FPGA专用的器材。这些FPGA专用器材在ASIC中是不存在的。为了处理这个问题,一般采纳"假代码"(Fake Code)处理。望文生义,"假代码"就是在代码中保存FPGA专用器材的称号和接口,可是在FPGA和ASIC中运用不同的器材内核。该器材若在FPGA下运用则运用FPGA专用器材,若在ASIC下运用,则运用自己编写的代码。虽然这种做法依然无法确保代码的完全一致,可是却最大极限的避免了代码的不同。