在智能和摩尔定律等多重因素的推动下,当前的芯片功能越来越强大,内部结构也越来越复杂。回顾今年1月份刚刚发布的苹果M2 Max芯片,内部集成了670亿个晶体管,用以实现强大的CPU(12核CPU)、GPU(38核GPU)和内存系统(96GB内存和更大的L2缓存)等功能。
图1:苹果M2 Max芯片
苹果M2 Max芯片当然是一款非常强大的产品,然而让数百亿个晶体管像人体细胞一样组成器官,然后再整体配合正常工作可不容易,因此要对功能模块和IP进行充分验证。我们都知道,这需要通过EDA工具完成芯片验证,包括架构设计、软件仿真、硬件仿真和原型验证等。
高效的验证工具能够从两个维度帮助芯片设计公司。一是降低成本,实现一次性流片成功。下一代先进SoC将采用3nm制程,根据市场研究机构International Business Strategies(IBS)的数据,3nm芯片的设计费用约达5-15亿美元,流片失败的损失将是巨大的。
其二是缩短研发周期。随着终端产品迭代速度提升,芯片成为一个真正的“风口”属性产品,需要在特定的时间周期内推出并满足市场需求,一旦延后也就失去了这颗芯片的价值。根据行业经验,验证在典型SoC项目中的工作量占比约70%。
验证的目标是获得无BUG的RTL(Register Transfer Level,电路寄存器传输级)代码,也就是在流片前的验证环节里,确保IP功能正确以及IP和功能模块的系统性功能正确。高昂的工艺成本已经不允许SoC在流片后才发现系统微码无法解决的BUG。
为了达到这一目的,芯片验证无论是从方法还是方式上都在积极创新。比如,UVM验证需要构建平台和测试用例,然而测试用例难以覆盖所有的边界情况,这样引入Formal工具的价值便体现了出来,能够以类似穷举的方式快速且全面地找到隐藏的BUG,那么就可以将有Formal工具的模块剥离出来,能够显著降低测试用例的复杂性。
图2:IP新的验证流程示意图
这就引出了一个当前验证的主流基准——覆盖率,包括功能覆盖率和代码覆盖率。其中,功能覆盖率是通过编写covergroup和coverpoint去覆盖数据、地址和控制信号,寻找在用户想要的全部功能中是否有代码遗漏;代码覆盖率包括断言(assertion)、行(line)、状态机(FSM)、分支(branch)、表达式(condition)和信号翻转(toggle),目标是评估代码质量,包括查看代码完整性以及去除不必要的冗余。
联系客服