因为内容不多,也不是很难懂,直接记录了。
传统FPGA的设计流程包含5个步骤:设计输入,设计综合,设计实现,设计调试与程序固化。
1° 在设计输入上,支持VHDL、Verilog、System Verilog或者厂商的IP,比如我最近接触的digilent的IP。同时,还应该包括管脚约束和时序约束相关文件。
2° 在设计综合上,要先认识综合的概念,综合是把HDL代码转化为了硬件电路,但还没有进行实现,也就是做了个翻译的工作。举个例子,你写的D触发器可能变成了FDRE,异或运算变成了查找表。
3° 在设计实现上,上一部综合将产生网表文件,但对应的硬件电路还没进行布局与布线,需要通过实现来完成。布局就是将各个电路元件根据约束放置在FPGA内部,布线则是完成元件之间的走线。
4° 在设计调试上,是指将实现后生成的比特流文件烧入FPGA中,并用ila或外部逻辑分析仪来验证调试功能。
5° 由于SRAM工艺的FPGA,在掉电后程序会消失,因此需要将下载程序转换为厂商要求的文件存储在片外FLASH上。以实现掉电不丢失。
除上述5个步骤外,设计验证是贯穿在FPGA整个设计流程中的,在设计输入完成时,就可利用EDA工具,结合testbeach测试文件,完成行为级仿真,该阶段只是验证功能的正确性。
而综合和实现完,可进行后仿与静态时序分析,综合后仿加入了门级延时信息,验证电路与原HDL描述电路功能是否一致,实现的后仿是在综合后仿功能上,加入走线的延时信息。
除后仿外,还有静态时序分析,这个是在时序和管脚约束下,进行时序检查和分析的,因为综合与实现后,会引入门级延时和走线延时,可能导致建立时间和保持时间不能满足FPGA器件要求,出现时序违例,因此需通过静态时序分析,保证没有时序违例。最后,设计验证是一个迭代反复的过程,有错回改,直到没错。