论文部分内容阅读
随着半导体产业的持续发展,集成电路的设计规模和复杂度在不断提升,目前一款主流手机基带芯片中集成了数亿只晶体管。为了能在更短时间内对芯片功能进行充分的验证,工程界广泛使用由功能覆盖率驱动的验证流程。但由于芯片验证过程中使用的各仿真验证平台对SystemVerilog语言的支持度不同,只有仿真器(simulator)平台上可使用功能覆盖率来衡量验证的进度和完备性,其它仿真平台上功能覆盖率的缺失问题可能会导致流片过程中存在风险。目前业界对跨平台功能覆盖率收集和复用没有成熟的解决方案。本文基于对芯片验证流程及SystemVerilog覆盖率机制的研究,比较DPI(直接编程接口)调用SV内置方法和给设计中插入监测模块这两种跨平台收集功能覆盖率的方式。最终选用第二种方式,并据此提出一套可综合覆盖率的解决方案。首先基于对SystemVerilog语言内置功能覆盖率收集机制研究,设计一个通用的硬件监测模块来对设计中的关键功能覆盖点进行监控。该监测模块中包括存储仓触发信息的存储区域、记录仓触发次数的计数模块以及一个全局的采样报告模块。通过配置计数模块宽度和采样周期,能够均衡覆盖率数据精度和对原有设计面积性能的影响。为了提高项目中定义和收集可综合覆盖率的效率,根据上述监测模块特点定义了可综合覆盖率的参数宏、覆盖规范文件以及一套基于Python脚本和Mako模板的全局监测模块代码自动生成系统。验证人员在覆盖规范文件中编写可综合覆盖率的参数宏,再使用脚本编译覆盖规范文件后即可生成全局的监测模块代码。将可综合覆盖率应用于项目中MTM模块的验证,首先在simulator上分别收集MTM模块的原生功能覆盖率和插入监测模块后新MTM模块的可综合覆盖率,比较发现两种覆盖率结果非常相近。然后使用DC工具分别对原有MTM设计、插入不同位宽监测模块后的新MTM设计进行综合。结果显示插入10位监测模块后原有设计面积增加2.55%,插入1位监测模块后原有设计面积仅增加0.94%。本论文设计了一套可综合覆盖率的解决方案,该方案包括可插入设计且通用的监测模块和一套全局监测模块代码自动生成系统,解决了现有芯片验证流程中不能跨平台收集功能覆盖率的问题。使用可综合覆盖率可以衡量在不同仿真平台上的验证进度,并能实现功能覆盖率在模块级到系统级垂直复用和不同仿真平台上跨平台复用。