开发FPGA 项目需要强大的技术能力以及探索项目的协作精神。以下是我为众多FPGA项目提供外包服务的经验。
1. 与他人合作。
例如,对于我们的硬件工程师来说,测试通常需要软件配合。对于硬件来说可能非常复杂的任务对于软件工程师来说只是几行代码。因此,你需要与他人合作并听取他们的意见。这不可避免地会产生新的专业知识并加快测试和开发速度。 2. 测试还是需要别人来做。
开发人员以他们看待自己的方式看待他们的产品,但大多数人没有勇气挑剔。一是出于自豪,二是为了避免额外的工作。所以即使你有问题,如果不严重,你也可以隐藏它。然而,这对于该项目来说是不可行的,因此测试和验证必须由其他人完成。 3.给自己更多的时间思考。
如果遇到问题,不要急于解决。您需要考虑可能的原因,并在考虑清楚后使用调试引脚或芯片示波器来发现这些可能的原因。
4. 小心重用现有的调试引脚。
通常,在测试过程中会产生大量的测试信号,但随着时间的推移我们会忘记重用它们。事实上,当出现问题时,你可能只需重复观察现有的调试引脚就可以找到问题的根本原因,而不是引入新的引脚并在综合和PAR上浪费时间。
5. 您所需要的只是模拟和计时。
基于时钟同步设计原理,通过仿真验证数字电路的功能。仿真结果与PAR后生成的FPGA图像完全等效。当然,FPGA必须遵循相同的设计原则:时钟同步。因此,对于PAR结果,首先要检查时钟同步特性。这反映在寄存器之间的路径必须在一个时钟周期内完成这一事实。 (当然,其他约束也有例外。)同时,还必须满足FPGA 器件的建立和保持要求。当出现定时错误时,该错误的存在意味着时钟同步的基本前提被打破,因此需要通过多种途径解决该错误。这时候仿真得到的结果并不等同于FPGA。继续测试是没有意义的。 6、小心不可控的接口部分。
您可以在PAR 报告中检查FPGA 内寄存器之间的时序,看看是否存在任何问题。但与外界的接口却充满疑问。通常,您通过预期的输入和输出延迟来约束接口部分。由于从一开始就假定存在延迟,因此即使没有计时错误,结果也值得怀疑。我当前正在运行的一个测试示例是,模块内部的环回测试完全正常,但一旦通过电缆发送到另一个FPGA,我就会收到一堆位错误。如果仿真没问题,那么一定是假设之一有问题,尤其是时钟同步假设。此时,您必须尽一切可能使界面满足您的假设,或者调整设计,使非理想界面适应理想界面。
7. 向您的直接主管报告情况并尽可能寻求许可。
如果你没有向你的直属上级汇报,导致进度或结果有出入,一切都由你负责。如果你提前向老板报告情况并得到许可,你就可以控制一切结果。例如,如果你在繁忙的时候得到一份新工作,你不能简单地接受它。你应该向老板解释困难,并提前想出可能的解决方案来帮助他。 8. 外部接口是最大的障碍。
如前所述,如果FPGA 内不存在内部时序问题,结果通常会与仿真结果相符。问题是外部接口,包括电缆连接等,不在您的精确控制范围内。例如,延迟特性在40Mhz 以下仍然正常,但在80Mhz 时您可能会遇到意外行为。因此,请尝试使用经过验证的“电缆和频率”组合。或者通过设备测量检查外部接口的延迟特性。这样可以进行有针对性的调整。我最近的教训是,我花了一个月的时间调整和测试内部结构,但仍然失败。原来,由于电缆的问题,80Mhz信号(数据+使能+其他)无法并行传输。如果你切换到40Mhz 信号,它就会通过。 9. 综合PR后的结果应与代码等效。
前面提到,这里的假设是PR结果和原始代码必须是等价的。要检查这一点,您需要了解syn 和pr 进程中的所有警告和错误,并且不能完全忽略它们。综合报告中要特别注意以下内容:未使用的端口、冗余逻辑去除、锁存器推断、仿真不匹配等。只需在报告中输入关键字并进行搜索即可。