- 绪论
- 平台意义
- 整体功能框图
- 相关功能模块简略描述
写个文章证明我还在,已经很久没有写文章了,眨眼间已经工作了两年了,但是工作已经换了两三家,并不能说有什么大的工作成就,离自己理想中的生活依旧有很大的差距,太多遗憾,太多错过的美好岁月已埋在了过去。
好了,废话不多说,开始正文。
下文将写到一个基于Python和FPGA的IC验证平台搭建,并非什么专业的文章,只是总结过去IC验证或FPGA原型验证的的一些工作经验构想的验证平台(还没搭建完成,后续还会有更新)。
- 该平台旨在用CPU时间、FPGA时间换取人工时间,同时也将更多地实验室时间搬移到个人PC的办公时间。
- 另外,通过这个自动化(大概半自动吧)验证平台,对FPGA功能覆盖率的验证也大有帮助。
先放一个图片(原文件在另一台电脑,懒得再画,先放个图片)
整体功能包含FPGA验证激励产生规则转换为激励;FPGA与上位机的通信与控制;DUT输出采集和结果判断;验证覆盖率报告。涉及的搭建平台需要的知识点如下:
- 基于Python的Excel处理 ,这一块其实是属于Python数据分析的内容,为什么用Python,嘿嘿,懂的都懂。在平台中主要是用Python处理用户输入的激励产生规则,转换为FPGA输入端的数据格式,其实就是处理成一个能被串口通信工具用的激励文件;
- 基于Python的串口通信工具 这一块呢其实用一些开源的串口工具助手差不多也能实现,但是毕竟这个平台也不是我一个人用的,UI界面相当不友好,而且通用的串口工具UI界面也实在是太过简单,我自己用久了其实也不是很舒服的嘛,所以我选择自己DIY一个,相当于做成一个APP,DIY的工具助手能集成处理Excel的Python代码,还能做一些简单的控制FPGA的界面,真是个相当好的点子;
- FPGA端的接口控制模块,首先是串口模块,用来实现与上位机之间的通信,解析串口信息,将串口信息给到控制模块,控制与DUT之间的通信;串口与DUT之间的时钟域是不一样的,所以要做快慢时钟域处理,我的做法是使用SRAM,当然,也可以用FIFO等其他手段;
-------------------------华丽的分割线--------------------------
额,时间又到了,在星巴克写的这篇文章,得回去做核酸了,先这样,后续接着这里写。
接上文:
- FPGA端输出波形采集,因为是高度定制的所以,信号采集时钟直接使用输出信号的驱动时钟经过一定相移的时钟,采集到的信号存放到SRAM(同样是因为与串口通信是异步时钟做的处理),然后通过控制模块,将波形文件通过串口传回给本地PC,方便做下一步的分析。
- 输出波形分析,通过上一步,本地PC经过处理串口接收的数据,获得了FPGA输出的波形文件,我们使用Python中的numpy和pandas结合输出波形的规则,做一个波形分析的小程序,虽然每个项目的判断规则都不太一样,但关键是我们有了这样的一个平台。
以上大致就是这个验证平台的简单介绍了。下期将从上述功能模块中一一解析该平台如何搭建。



