如何成功地完成ASIC原型验证
原型验证---用软件的方法来发现硬件的问题
在芯片tap-out之前,通常都会计算一下风险,例如存在一些的严重错误可能性。通常要某个人签字来确认是否去生产。这是一个艰难的决定。ASIC的产品NRE的费用持续上升。一次失败的ASIC流片将会推迟数个月的上市时间。谁愿意承担签字的责任呢? 一些BUG通过仿真和Emulation是抓不到的。传统的验证方法认为设计的功能符合功能定义就是对的。 但功能定义到底对不对呢?唯一的办法就是建立一个真实的硬件:原型。
基于FPGA的原型 --- 一个虚拟的真实环境
在密度,速度以及其他方面与ASIC的相似性使得FPGA成为原型验证的最佳选择。通常最担心的是不但不会加速设计过程,反而会延长设计周期。因为建立一个原型验证系统会耗费时间,额外的资源和需要FPGA设计的知识。因为FPGA的设计容量比ASIC小,设计通常会被划分到几块FPGA中。最困难的是决定使用几颗FPGA和他们之间的互连线如何规划。在规划过程中,划分方案一般会被多次修改。模块会被在FPGA之间移来移去,相应地FPGA之间的互连关系也要随之改变。一些象IP和存储器之类的模块需要在FPGA外面额外增加硬件。原型验证系统必须有足够的灵活性来解决这些以及更多的问题。
另一个问题是如何把ASIC的代码应用到FPGA上。把设计划分到多颗FPGA中需要改动RTL代码。划分也可能导致FPGA之间有很宽的总线,使得FPGA之间的互连线数量不够。ASIC和FPGA的结构不同可能导致严重的设计问题。IP模块,DesignWare元件,以及其他的ASIC风格的代码例如门控时钟必须被转换到FPGA上。Synplicity的Certify解决方案正好可以解决这些问题。Certify帮助设计者把ASIC的RTL代码用多颗FPGA实现。
布局的考虑
解决了逻辑实现的问题,还要考虑物理实现的问题。必须要设计一个或者几个电路板,这也不是简单的事情。设计高速的FPGA电路板的布局会带来很多问题,需要很专业的知识来解决。串扰、反射、传输损耗、地弹噪声等很多因素会影响信号完整性。高速PCB板的设计不仅需要数字电路的特性,也要考虑模拟特性的影响。
选择现有的成熟产品还是选择自己动手做
当你需要最灵活的、易于使用的、并且能重复利用的原型验证系统时,你要自己设计吗? 如果要考虑到时间和金钱的因素,那么决定是显而易见的。要建立一个原型验证系统,投资现有的成熟产品是一个聪明的选择。HAPS是专门为ASIC原型验证而设计的高速模块化电路板系统。他是商业化的产品,可配置性能使用在几乎可以适合所有的应用。配合Synplicity公司的Certify,ASIC的代码可以直接被综合并且映射到HAPS的FPGA上而不用做大的改动。
应用实例
Philips Semiconductor使用HAPS和Certify建立了验证系统来验证他们的2.5G/3G 多媒体基带处理器。验证当中他们发现了一些严重的但在仿真时却没有发现的RTL BUG。原型验证也被用来做软件的验证。这个设计除了存贮器外有200万的ASIC门。他们使用了带有四颗Virtex-II 8000 (1517脚封装) FPGA的HAPS母板。存储器利用外面的SDRAM子板。最大的挑战来自于划分,平衡各个FPGA的利用率,最佳的划分方案中两个FPGA之间有3000根互连信号。由于信号的数量超过了FPGA的I/O的数量,这造成了一些麻烦,解决的方法是使用了Certify Pin Multiplexing (CPM)。
Mihai Munteanu,瑞士苏黎世的开发工程师,参与了这项工作。他给开始做原型验证的人的建议是:分析ASIC的设计,要考虑到容量、互连线、时钟、存储器的需要。检查所有的RTL代码,尝试综合到FPGA中。要注意到ASIC的某些特性用FPGA实现很困难。尝试
用最少数目的FPGA来使流程简化。使用增量的方法,但是要注意到减少设计后一些问题可能不会冒出来。另外建议使用最新的最好的工具。
评论