RTL代码设计完成之后,进行TestBench平台搭建和仿真验证是必要的,特别是对于复杂功能模块或系统设计而言。经验再丰富的工程师,也不敢保证,不经过仿真验证直接上板一定没问题。
验证也是一门重要的技术,这也是为什么存在IC验证岗位,目的就是为芯片成功流片严格把关,一旦流片失败,损失重大,影响深远。
FPGA的开发设计,同样需要进行仿真验证。通常,我们可以通过算法链路产生所需激励源,通过TestBench对功能模块进行验证,并进行结果对比分析。重点解决两个问题:
一是验证逻辑时序是否存在问题,比如信号是否对齐,有无接口处理不当导致数据丢失等。
二是信号处理过程是否得当,数据位宽、精度等是否符合算法要求。
解决功能性问题后,就需要考虑性能问题。定点是否合适,与浮点算法性能的差异有多大,或者软件中的定点处理与逻辑电路定点处理,误差有多大。在不断验证过程中,优化算法设计和逻辑电路设计。
剩下的逻辑综合、实现、比特流生成和调试等环节,属于常规操作,但对于逻辑综合、实现中的时序约束和相关策略设置,也是十分重要的。
最后,用一张图总结如何从算法到RTL实现。
本文只是粗略地分析了算法到RTL代码实现之间的逻辑关系,以及从实现角度,我们应该怎么去着手。
具体到某个信号处理算法实现时,必须清楚整个信号处理过程,对算法一步一步分解,再对信号流、定点和接口进行设计。
做任何事情之前,先谋划布局,磨刀不误砍柴工,扎扎实实做好每一步,功到自然成。
---END---
更多关于5G、FPGA、数字IC、通信算法等内容,可关注微信公众号【FPGA算法工程师】。
原文标题 : 从算法到RTL实现,FPGA工程师该怎么做?