原型验证---用软件的方法来发现硬件的问题
在芯片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来使流程简化。使用增量的方法,但是要注意到减少设计后一些问题可能不会冒出来。另外建议使用最新的最好的工具。











