前言
随着芯片性能的提高、集成越来越多的SOC、IP,芯片的复杂度也愈发复杂,给芯片验证带来了资金和时间上挑战。FPGA可以进行RTL验证、加速仿真进度、提前进行嵌入式及相关应用的研发,因此FPGA的ASIC原型验证在现在的数字芯片设计中是必不可少的。
但是,我们也要看到FPGA原型的一些限制:
- 规模限制:FPGA资源规模比较小,需要多片FPGA共同协同将芯片所有功能放进去;
- 速度限制:芯片的频率在一般1GHz以上,但是FPGA中的频率在20MHz以下,在多片FPGA的芯片验证中甚至低于5MHz;
- 功耗限制:FPGA的功耗一般在芯片的10倍以上;
- 结构限制:FPGA的结构有它特有的IO、PHY、RAM、IP,这会导致芯片的验证无法和ASIC完全相同。
在FPGA的ASIC验证中,我们需要对ASIC的代码做相应修改,以完成对应功能,甚至有些IP是无法覆盖的。
FPGA资源
下面对FPGA的ASIC的资源逐一对比,如下表格所示。除了普通的RTL逻辑和基本端口,其他的类似存储时钟DSP等,最好都手动映射,这也意味着ASIC在转为FPGA验证平台中哪些内容是需要重点关注的,并手动分配的。
Resource | Utility for prototyping | Inferred? |
---|---|---|
Logic Blocks | Very high, the essential building block | Always |
RAM Blocks | High major building block | Usually |
DSP Blocks | High, major building block | Usually |
Clock Generation | Very high, an essential but limited resource | Often(may need RTL change) |
Clock Distribution | Very high, global nets are precious resource | Usually |
General IO | Very high, an essential andprecious resource | Always(type set by attribute) |
Fast Serial IO | High, useful for prototypingstandard IP blocks | Seldom(requires IP instantiation) |
Hard IP | Very powerful blocks but utility is design dependent | Never(requires IP instantiation) |
System Monitor | High, will protect investment in FPGA hardware | Never(requires design in) |
FPGA的ASIC的原型验证步骤
- FPGA仿真平台选型
- 把ASIC转成FPGA代码
- FPGA综合分析
- 载入软件运行,调试
- 软硬件系统协同验证
FPGA仿真平台
FPGA仿真平台选型主要关心一下几个方面:
- 容量:门数按照多一倍预估、Block RAM、时钟资源尽量多
- 内置IP:首要考虑,按照需求支持PCIE、DDR4等
- 接口:IO一般来说都够用
- 速度:要求比较低
目前来看一般单颗FPGA都不能支持大的数字芯片的逻辑量,一般我们采用两种方式解决。一是逻辑拆分,单独验证。但这种方式的风险太高,也丧失了整体验证的能力,一般不使用。二是多片联合进行原型验证,这种方式就涉及到划片,划片是否合理,ASIC到FPGA的转换,这些会产生新的问题,增加了验证的难度,这也是我们现在主流的验证方式,如HAPS平台,S2C平台等。
ASIC代码转为FPGA代码
一般纯的RTL可以直接综合成对应资源,但是pad、Gate-level netlists、SOC cell、SOC Memory、特殊IP、BIST、Gated Clock、Clock无法这样做,我们需要做特殊的调整。
对于ASIC的详细修改方案,我后面会结合项目单独再写具体的实现方式与注意点。
其它
其他调试中有意思的事情,可能一个小问题耽误几星期的BUG,关于FPGA的综合、划片、上板调试,我也会单独写文章介绍。
总结
本文主要介绍了FPGA的ASIC原型验证概况、FPGA资源对比、步骤。最重要的是给自己挖了些坑,结合最近的一个大的芯片项目,会把这些坑都给填上,为了加速自己填坑,预约下两篇的内容:
- FPGA仿真平台介绍
- 划片方案分析