lcytms
发表于 2017-2-26 22:17:24
18
所以怎么样把这个步骤也弄成一个自动化的流程,就是我们现在要说的一个问题。
我们可以看到,最简单的方法就是说我们依然考虑,可以是在一台host PC上用一个自动化的脚本,来完成这些工作。
这个自动化的版本,可以在每天的特定时间,去我的server端去下载最新的FPGA的image,以及包括相关的测试用例。
它可以把这个FPGA的image,download到我们FPGA的板子上,然后通过这种frontdoor或者backdoor的方式控制我们这个IP,然后来完成一系列的系统测试的流程。
当这个测试流程完成后,这个Host PC还会把测试结果自动上传到server上。
但是对于有一些IP来说,就比如我刚才说的,有一些我们被测的IP,它本身并不是一个PCIe的设备,也就是说,它不需要与我们host PC通过PCIe的总线相连。
也就是说没有所谓这地方frontdoor的这种连接。
lcytms
发表于 2017-2-26 22:19:41
19
而对于这种case的话,我们可以考虑省掉这里面的这个host PC,用我们SOC FPGA里面的那个ARM硬核来完成相同的工作。
这就是我们做的,我们可以看到,这个结构与前面非常类似,我们只是用了我们的HPS,ARM的硬核完成这样一系列的工作。
这样的话,对于我们整个资源,然后整个的cost的话降级会有很好的帮助。
后面的话,我们会对我们已经完成的一些IP,prototyping的结果做一些总结。
我们现在的话,IP原型验证的话主要是基于两个平台,第一个平台是基于Intel的Cyclone V SOC FPGA。
我们知道这一款的FPGA,它本身的系统资源并不是很多,所以我们选择在上面去仿真一个比较小size的这种IP。
我们可以看到最终综合完以后,它占用的ALM的话大概是28k左右,然后最终的话,我们的总线时序可以跑到116M。
lcytms
发表于 2017-2-26 22:20:57
20
因为它是一个SOC的FPGA,所以我们在上面使用了我们之前说的那种混合仿真的方式。
我们用我们的HPS,ARM的硬核来控制我们的IP,完成我们的电源控制,power control的flow。
然后我们控制这个IP进入一个休眠或者唤醒的状态。
而第二个验证平台的话,我们是基于Intel的Arria 10 FPGA,它本身的系统资源较多,所以我们可以去仿真一个更大size的IP。
我们可以看到,最终的时候,综合完以后,ALM的话是278k,基本上是前面一个IP的10倍左右。
而它的总线时序最高可以跑到155M。
因为我们并没有拿到Arria 10的SOC的版本,所以在这个板子上我们采用的并不是我们之前说的混合的那种验证模型。
我们使用了我们之前说的那种lite code的方式。
lcytms
发表于 2017-2-26 22:23:01
21
就是用我们的RTL实现一个简化版的微处理器,然后通过这个微处理器,同样控制我们被测的IP,完成一系列power control的工程,让它进入一个唤醒以及休眠的状态。
最后的话,是对我们整个今天讲演的内容进行一个总结。
今天的讲演中,我们就说到了,为什么我们要基于FPGA来做这个原型验证?
主要是因为,一个我们可以找出RTL里面的bug,然后还有一个的话,可以拿给软件还有封外组进行开发。
另外的话就是说,怎么样基于SOC FPGA去设置这个混合编程模型,主要是说我们是用在我们的软核或者硬核上,跑一个我们这种守护程序,然后和我们的adapter一起工作,完成这种混合模式。
这个Quartus软件的话,我们主要用了Quartus软件里面的一个in system probe editor,以及system console两个实现了我们FPGA这个backdoor,然后进行调试的一种方法。
lcytms
发表于 2017-2-26 22:23:49
22
最后的话,就是说我们是考虑使用Intel SOC FPGA里面的ARM硬核跑一个全自动化的测试脚本,来完成我们整个自动化系统测试的流程。
好了,我今天的讲演就是这些,谢谢大家!