集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 8116|回复: 24

ISDF2016经典之A5:使用英特尔SoC FPGA加速IP原型开发

[复制链接]
lcytms 发表于 2017-2-23 23:38:49 | 显示全部楼层 |阅读模式
本帖最后由 lcytms 于 2017-5-12 17:32 编辑

ISDF2016经典之A5:使用英特尔®SoC FPGA加速IP原型开发

参考链接:
https://www.altera.com.cn/events ... m/isdf-content.html

全部经典内容包括:
        K系列的主题演讲(K1~K3);
        A系列的硬件主题(A1~A12);
        B系列的软件主题(B1~B10)。


A5指的是硬件主题5。

20161108    ISDF 2016,北京
英特尔公司  William Zang
硬件主题 22’16’’

下载视频链接:
        视频文件:a5.Using-Intel®-SoC-FPGA-to-Accelerate-IP-Prototyping-William-Zang-of-FLEX-Low.mp4
        下载链接:https://www.altera.com.cn/conten ... ang-of-FLEX-Low.mp4

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-2-23 23:45:32 | 显示全部楼层
本帖最后由 lcytms 于 2017-2-23 23:47 编辑

演示文档说明
a2-ts4-hw-100.pdf

TS04-HW
        Expediting SoCFPGA Development

本文档涵盖内容:
        A5        使用英特尔®SoC FPGA加速IP原型开发                Using Intel® SoC FPGA to Accelerate IP Prototyping                        (William Zang, Intel Corporation)
        A6        NPI聚焦分布                                                              NPI Focused Distribution                                                                       (Hedy Qian, Mouser)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-2-23 23:49:05 | 显示全部楼层
本帖最后由 lcytms 于 2017-2-23 23:52 编辑

00       
        我今天要讲的主题是如何使用Intel的SOC FPGA来加速我们的IP原型验证的工作。
        我们今天的演讲内容,包括以下这些内容。
        首先的话,会给IP的原型验证介绍一些它的相关的背景知识以及如何建立起来一种混合的原型验证的方式。
        另外如何用我们的Quartus II建立起来一个有效的FPGA的Backdoor的调试的接口。
        此外我们还要介绍如何用Intel的SOC FPGA来建立起来一个全自动化的系统测试的流程。
        然后最后会对我们所完成的工作进行一个总结。
        首先我们要说的话,什么叫IP?
        我们知道,现在在我们的SOC设计里面,我们非常推崇模块化的设计。
  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-2-23 23:54:30 | 显示全部楼层
01       
        我们的SOC其实由很多不同的功能模块组成。
        这些功能模块通过我们SOC的内部组件连接在一起,形成我们最终的SOC的系统。
        这些模块的话,对于一个常用的SOC来说,会有比如像CPU啊、显卡啊、内存控制器啊、USB控制器等等。
        对于我们来说,这每一个独立的功能模块,对我们来说的话就是一个IP。
        在我们今天演讲的过程中,我们所指的IP的话,是特指我们的数字的IP,就是说,这个IP的话,是用我们的RTL代码写成的。
        此外,它是可以放在我们的FPGA的平台上进行综合的。
        现在对我们的Silicon的设计公司来说的话,我们需要在我们的SOC流片之前,找出我们所有IP的RTL里面潜在的Bug。
        因为我们知道,如果一次失败的流片,往往会消耗大量的钱以及时间,对我们公司来说是一个不能接受的事实。
        现在的话,对IP的RTL进行测试的话,我们最常用的方法,也就是做simultion的test。       
 楼主| lcytms 发表于 2017-2-23 23:57:27 | 显示全部楼层
02       
        所谓simulation的test的话,也就相当于是做了软件仿真的测试.
        软件仿真是一个测试覆盖率最高的方式,利用它我们往往可以找出来大部分RTL代码里面潜在的bug。
        但是的话,它本身也会存在一定的局限性。
        它的局限性也在于它的performance不好。
        我们知道,我们不管你是用哪一种仿真的tool,往往要完成1ms的时序仿真的话,往往需要跑超过一个小时的时间。
        正是这样的performance决定了我们的软件测试并不可能用来覆盖比如像一些性能啊、压力啊一些并发性的测试。
        此外我们的软件模拟平台的话,不能和我们的真正的硬件设备相连,以至于我们不能够完成一些端到端的全流程的测试。
        基于以上的这些缺点,我们就可以考虑用FPGA来实现IP的原型验证,对我们来说是一个很好的选择。
        我们知道,我们的FPGA的话,有不同产品线。
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-2-23 23:58:39 | 显示全部楼层
03       
        不同的产品线具有不同的FPGA的内部资源,然后基于这些不同的FPGA的内部资源,然后我们可以设计一个灵活的进行仿真的module的规模大小。
        我们可以考虑只是去仿真一个单个的IP,多个的IP的组合,甚至是去仿真我们整个SOC的系统,然后我们知道我们FPGA的性能是比较接近于我们实际的硬件。
        所以我们可以在我们FPGA的平台上进行一些,比如说压力啊,还有性能啊,这些并发行的测试。
        此外我们FPGA的平台不光是来找出我们RTL里面的一些bug,此外它可以拿给象软件啊,包括封外组使用。
        在他们没有拿到真正的silicon之前的话,可以拿我们的FPGA的平台作为他们的参考的开发平台,开发他们的软件啊、封外等等。
        我们可以看到,最右边这个是一个典型的基于FPGA的IP的protyping的一个平台。
        我们的FPGA的系统和我们的host PC之间通过front door,或者backdoor的方式连接。       
 楼主| lcytms 发表于 2017-2-24 00:01:28 | 显示全部楼层
04       
        什么叫frontdoor,或者backdoor,所谓的后门、前门?
        对于我们的Intel的SOC来说,所谓的frontdoor,主要来说呢, 是指我们的PCIe的总线,我们所要验证的DUT,这个IP的话,最终会被枚举成一个实际的设备。
        这样在我们的host PC里面,我们可以通过我们的PCIe的总线来仿真我们的IP里面的内容。
        还有所谓的backdoor,是指说在我们的host PC上面,我需要通过一些EDA的工具,比如说Quartus里面的工具,它会通过JTAG的方式来访问我们的FPGA里面的内部资源。
        我们可以看到,这个DUT是我们想要测试的一个IP,在这里的话,我们可以用,比如说USB的主机控制器,USB controller来举个例子。
        我们把这个USB controller和其他的辅助IP,比如说用来控制时钟,还有电源控制的模块,组合在一起,集成在一起,形成我们FPGA的top level。
        然后把我们的FPGA的module,和我们host PC的PCIe的总线连接在一起。       
 楼主| lcytms 发表于 2017-2-24 00:03:37 | 显示全部楼层
本帖最后由 lcytms 于 2017-2-24 00:05 编辑

05       
        此外,我们基于我们FPGA的卡,还可以扩展出来我们标准的USB的接口。
        在这个USB的接口上,我们可以插入一些,比如说我们的测试卡,甚至是真正的实际的USB的设备。
        在最终,在我们的host PC,在它的设备管理器里面,然后我们就可以看到,会有一个USB controller,以及真正的USB设备被枚举起来。
        然后基于此,我们就可以完成一个真正的端到端的测试。
        比如说我们如果插入的一个USB设备,是个U盘的话,我们可以看到,在我们最终的host PC里面,在我们的资源管理器里面,USB的U盘会被映射成真正的一个物理盘符。
        而我们在我们的Host PC里,也可以打开这个盘符进行所有的读写操作,这就是一个典型的端到端、全流程的一个测试的过程。
        下面的一个话题的话,我们会说一下,怎么用Intel的SOC FPGA建立起来一个混合的仿真模型。
        为什么我们要仿真的这个模型呢?
         

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-2-24 00:06:33 | 显示全部楼层
06       
        主要是为了解决我们实际工作中遇到的一些问题,除了我们所要去验证的IP DUT以外的话,我们还要在我们的系统里面插入一些微处理器。
        这些微处理器的话,可能是一些8051,或者是一个ARC的核,然后这个核的话是需要执行一个真正的封外的代码的。
        然后,我们用这个微处理器,控制我们的IP完成一系列特定的测试流程。
        比如说我们想测的是微处理器控制我们的IP完成一个电源控制,可以控制我们的IP进入一个休眠的状态,也可以把它唤醒,等等。
        然后我们可以选择直接的方式,就是在我们的FPGA平台上面直接去综合这个微处理器的核。
        这种方式的话,是非常接近于我们实际的硬件的结构。
        但是它的缺点是在于,如果直接去综合它的话,会占用很多FPGA的内部资源,而且最终得到的performance往往也不是很理想。       
 楼主| lcytms 发表于 2017-2-24 00:09:48 | 显示全部楼层
07       
        此外的话,是因为还由于这个微处理器的核往往是来自于第三方,我们对它做在线debug的时候,往往不是很方便。
        那我们怎样去解决我们遇到的这个问题呢?
        我们首先想到的一个方式是我们实现了一个简化版的微处理器,就是说我们用RTL Core重新写了一版,叫lite core的这个IP。
        这个IP的话,它只会去cover一些基本的功能要求。
        此外的话,它并不会执行真正的封外代码,它执行的是我们简化过的一些向量代码。
        但是它的好处是在于这种解决方案的话,它使用的资源会比较少,而且找到一个很好的performance。
        此外的话,因为这个IP是我们设计的,它可以和我们的FPGA的接口相连,和Backdoor的接口相连,很容易地实现在线的debug。
        但是它的缺点也很明显,因为它并没有运行真正的封外代码,所以它与我们的实际的硬件还是有一些差距的。
        那怎么样弥补这个差距呢?
        我们就考虑了另外一种方式。
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-23 22:22 , Processed in 0.075590 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表